On this page

OFT compatibility

Use the standard IOFT quote and send surface on each asset's local facade. Do not treat that facade as an independently administered LayerZero OApp.

SurfaceOmnisea behaviorIntegration rule
quoteOFT / quoteSend / sendStandard IOFT call shapesCall the local adapter or OFT, not router.send
token()Underlying ERC-20 on origin; OFT itself remotelyUse it for balances and approvals
approvalRequired()True on adapter, false on remote OFTApprove underlying to adapter only
Native paymentIncludes LayerZero cost and flat asset feePay quoteSend.nativeFee once, plus transaction gas
payInLzTokenUnsupportedAlways false; lzTokenFee must be zero
oftCmdEmpty or exactly 32 bytes naming a destination restorerDo not put unrelated route commands here
extraOptionsCombined with router defaultsEmpty for plain transfers; include compose gas for compose
peers(eid)Informational predicted EVM facade; zero for non-EVM peersNot proof of deployment; messaging peers live on the router
owner()Permanent EVM creator, not an OApp administratorUse creator() for canonical bytes32 identity
Per-token admin settersRevert UnsupportedNo setPeer, setDelegate, setEnforcedOptions, ownership transfer or renounce
Compose callback _fromDestination asset facadeAuthenticate that facade, not the shared router
Packet sender/receiverShared routersTrack router GUIDs; do not expect per-OFT PacketSent addresses

Amounts and precision

Parse source amounts using the token's local decimals. Shared precision is at most six decimals; dust remains with the sender. Percentage fees are deducted before destination credit. Use quoteOFT receipt amounts for your minimum and UI, not a handwritten percentage calculation. quoteSend needs the real sender as its call account.

Existing OFT integrations

A wallet that uses only token, approvalRequired, quoteOFT, quoteSend and send can reuse that flow with the above constraints. Tools that configure OApp delegates, peers, security stacks or ownership need an Omnisea-specific management path. The standard interface is not a promise that every OFT extension exists here.

The LayerZero OFT quickstart is useful background for the IOFT transfer and compose shapes. Omnisea's own release ABIs, shared-router semantics and recovery rules are authoritative for this integration.

Future non-EVM routes

The wire format uses bytes32 identities, but only the EVM implementation is supplied today. Do not truncate a non-EVM creator to an address. owner() returning zero for such an identity would not imply renounced ownership. Use the wire specification and test vectors when building a new VM implementation; EVM compose and compliance calls do not automatically translate to another VM.