@layerzerolabs/lz-sui-oft-sdk-v2 3.0.127-sui.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -0
- package/dist/index.cjs +980 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +506 -0
- package/dist/index.d.ts +506 -0
- package/dist/index.mjs +967 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +58 -0
- package/src/bcs/oft.ts +55 -0
- package/src/index.ts +8 -0
- package/src/modules/oft-composer-registry.ts +128 -0
- package/src/modules/oft-ptb-builder.ts +59 -0
- package/src/modules/oft.ts +978 -0
- package/src/types.ts +31 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/bcs/oft.ts","../src/modules/oft.ts","../src/modules/oft-composer-registry.ts","../src/modules/oft-ptb-builder.ts","../src/types.ts"],"names":["bcs","asBytes","asU32","asU16","asObject","asBytes32","asAddress","asBool","asU64","isTransactionArgument","asArgWithTx","tx","asArgWithTxAsync","executeSimulate","Transaction","target_fn"],"mappings":"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","file":"index.cjs","sourcesContent":["import { bcs } from '@mysten/sui/bcs'\n\nimport { OFTFeeDetail, OFTLimit, OFTReceipt } from '../types'\n\n// OFTLimit struct BCS definition\nexport const OFTLimitBcs = bcs.struct('OFTLimit', {\n min_amount_ld: bcs.U64,\n max_amount_ld: bcs.U64,\n})\n\n// OFTFeeDetail struct BCS definition\nexport const OFTFeeDetailBcs = bcs.struct('OFTFeeDetail', {\n fee_amount_ld: bcs.U64,\n is_reward: bcs.Bool,\n description: bcs.String,\n})\n\n// OFTReceipt struct BCS definition\nexport const OFTReceiptBcs = bcs.struct('OFTReceipt', {\n amount_sent_ld: bcs.U64,\n amount_received_ld: bcs.U64,\n})\n\n// Helper function to parse OFTLimit\nexport function parseOFTLimit(data: Uint8Array): OFTLimit {\n const parsed = OFTLimitBcs.parse(data)\n return {\n minAmountLd: BigInt(parsed.min_amount_ld),\n maxAmountLd: BigInt(parsed.max_amount_ld),\n }\n}\n\n// Helper function to parse OFTFeeDetail array\nexport function parseOFTFeeDetails(data: Uint8Array): OFTFeeDetail[] {\n // Parse as vector of OFTFeeDetail\n const vectorBcs = bcs.vector(OFTFeeDetailBcs)\n const parsed = vectorBcs.parse(data)\n\n return parsed.map(\n (detail: { fee_amount_ld: string | number | bigint; is_reward: boolean; description: string }) => ({\n feeAmountLd: BigInt(detail.fee_amount_ld),\n isReward: detail.is_reward,\n description: detail.description,\n })\n )\n}\n\n// Helper function to parse OFTReceipt\nexport function parseOFTReceipt(data: Uint8Array): OFTReceipt {\n const parsed = OFTReceiptBcs.parse(data)\n return {\n amountSentLd: BigInt(parsed.amount_sent_ld),\n amountReceivedLd: BigInt(parsed.amount_received_ld),\n }\n}\n","import { bcs } from '@mysten/sui/bcs'\nimport { SuiClient } from '@mysten/sui/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@mysten/sui/transactions'\n\nimport {\n SDK,\n asAddress,\n asArgWithTx,\n asArgWithTxAsync,\n asBool,\n asBytes,\n asBytes32,\n asObject,\n asU16,\n asU32,\n asU64,\n executeSimulate,\n isTransactionArgument,\n} from '@layerzerolabs/lz-sui-sdk-v2'\nimport type { MessagingFee, ObjectOptions } from '@layerzerolabs/lz-sui-sdk-v2'\n\nimport { parseOFTFeeDetails, parseOFTLimit, parseOFTReceipt } from '../bcs/oft'\nimport { OFTFeeDetail, OFTLimit, OFTReceipt, SendParam } from '../types'\n\nconst MODULE_NAME = 'oft'\n\n// ==========================================\n// ERROR CODES\n// ==========================================\n// Standard error codes that may be returned by OFT operations\n\nexport const OFTErrorCode = {\n // OFT related errors\n OFT_EComposeMsgNotAllowed: 1,\n OFT_EComposeMsgRequired: 2,\n OFT_EInvalidComposeQueue: 3,\n OFT_EInvalidLocalDecimals: 4,\n OFT_EPaused: 5,\n OFT_EPauseUnchanged: 6,\n OFT_ESlippageExceeded: 7,\n OFT_EInsufficientBalance: 8,\n} as const\n\n/**\n * OFT (Omnichain Fungible Token) Class\n *\n * The OFT class provides a comprehensive interface for interacting with LayerZero's\n * Omnichain Fungible Token standard on the Sui blockchain. OFTs enable seamless\n * cross-chain token transfers while maintaining fungibility across multiple networks.\n *\n * @example\n * ```typescript\n * // Initialize OFT instance\n * const oft = new OFT(protocolSDK, corePackageId, packageId, oftObjectId, coinType, adminCapId);\n *\n * // Send tokens cross-chain\n * const tx = new Transaction();\n * const coin = await oft.splitCoinMoveCall(tx, sender, amount);\n * await oft.sendMoveCall(tx, sender, coin, sendParam, nativeFee, zroFee, refundAddress, messagingChannel);\n * tx.transferObjects([coin], sender);\n * ...\n *\n * // Quote transfer fees\n * const fees = await oft.quoteSend(sender, sendParam, payInZro);\n * ```\n */\nexport class OFT {\n /** Sui client for blockchain interactions */\n public readonly client: SuiClient\n /** The package ID of the OFT implementation (specific token contract) */\n public packageId: string\n /** The package ID of the core OFT framework (shared OFT functionality) */\n public corePackageId: string\n /** LayerZero protocol object references (endpoint, messaging channels, etc.) */\n private readonly objects: ObjectOptions\n /** The unique object ID of this OFT instance on Sui */\n private readonly oftObjectId: string\n /** Admin capability object ID for privileged operations (optional for read-only usage) */\n private readonly adminCapId?: string\n /** The Sui coin type this OFT represents (e.g., \"0x123::mycoin::MYCOIN\") */\n private readonly coinType: string\n /** Reference to the LayerZero protocol SDK for cross-chain operations */\n private readonly protocolSDK: SDK\n\n /**\n * Creates a new OFT instance for interacting with an Omnichain Fungible Token\n *\n * @param protocolSDK - The LayerZero protocol SDK instance providing core cross-chain functionality\n * @param corePackageId - The package ID of the core OFT framework (shared across all OFT implementations)\n * @param packageId - The package ID of the specific OFT token implementation\n * @param oftObjectId - The unique object ID of this OFT instance\n * @param coinType - The Sui coin type string (e.g., \"0x123::mycoin::MYCOIN\")\n * @param adminCapId - Optional admin capability object ID for privileged operations (required for admin functions)\n */\n constructor(\n protocolSDK: SDK,\n corePackageId: string, // the OFT package id\n packageId: string, // the Implementation's package id\n oftObjectId: string,\n coinType: string,\n adminCapId?: string\n ) {\n this.protocolSDK = protocolSDK\n this.packageId = packageId\n this.corePackageId = corePackageId\n this.client = protocolSDK.client\n this.objects = protocolSDK.objects\n this.oftObjectId = oftObjectId\n this.adminCapId = adminCapId\n this.coinType = coinType\n }\n\n // ==========================================\n // ADMIN FUNCTIONS\n // ==========================================\n // These functions require admin privileges and are used for OFT configuration\n // and management. They require the adminCapId to be provided during construction.\n\n /**\n * Register OFT as an OApp with LayerZero endpoint\n * @param tx - The transaction to add the move call to\n * @param lzReceiveInfo - PTB Builder lzReceiveInfoMoveCall result, used for protocol SDK to dynamically build the PTB\n * for OFT's lzReceive operation\n */\n registerOAppMoveCall(tx: Transaction, lzReceiveInfo: Uint8Array | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('register_oapp'),\n typeArguments: [this.coinType],\n arguments: [\n tx.object(this.oftObjectId),\n tx.object(this.#adminCapId()),\n tx.object(this.objects.endpointV2),\n asBytes(tx, lzReceiveInfo),\n ],\n })\n }\n\n /**\n * Set enforced options for OFT messaging to a destination\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID\n * @param msgType - Message type (SEND or SEND_AND_CALL)\n * @param options - Enforced options as bytes\n */\n setEnforcedOptionsMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n msgType: number | TransactionArgument,\n options: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_enforced_options'),\n typeArguments: [this.coinType],\n arguments: [\n tx.object(this.oftObjectId),\n tx.object(this.#adminCapId()),\n asU32(tx, eid),\n asU16(tx, msgType),\n asBytes(tx, options),\n ],\n })\n }\n\n /**\n * Set peer OFT on another chain\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID\n * @param eid - Peer endpoint ID\n * @param peer - Peer OFT address as bytes\n */\n setPeerMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n eid: number | TransactionArgument,\n peer: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_peer'),\n typeArguments: [this.coinType],\n arguments: [\n tx.object(this.oftObjectId),\n tx.object(this.#adminCapId()),\n tx.object(this.objects.endpointV2),\n asObject(tx, messagingChannel),\n asU32(tx, eid),\n asBytes32(tx, peer, this.protocolSDK.getUtils()),\n ],\n })\n }\n\n /**\n * Set delegate for OFT\n * @param tx - The transaction to add the move call to\n * @param newDelegate - The new delegate address\n */\n setDelegateMoveCall(tx: Transaction, newDelegate: string | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_delegate'),\n typeArguments: [this.coinType],\n arguments: [\n tx.object(this.oftObjectId),\n tx.object(this.#adminCapId()),\n tx.object(this.objects.endpointV2),\n asAddress(tx, newDelegate),\n ],\n })\n }\n\n /**\n * Set pause state for OFT operations\n * @param tx - The transaction to add the move call to\n * @param pause - Whether to pause or unpause operations\n */\n setPauseMoveCall(tx: Transaction, pause: boolean | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_pause'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), tx.object(this.#adminCapId()), asBool(tx, pause)],\n })\n }\n\n // ==========================================\n // FEE MANAGEMENT ADMIN FUNCTIONS\n // ==========================================\n // Configure fee collection and distribution for OFT transfers\n\n /**\n * Set fee deposit address for OFT fees\n * @param tx - The transaction to add the move call to\n * @param feeDepositAddress - The new fee deposit address\n */\n setFeeDepositAddressMoveCall(tx: Transaction, feeDepositAddress: string | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_fee_deposit_address'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), tx.object(this.#adminCapId()), asAddress(tx, feeDepositAddress)],\n })\n }\n\n /**\n * Set fee basis points for OFT transfers\n * @param tx - The transaction to add the move call to\n * @param feeBps - The fee in basis points\n */\n setFeeBpsMoveCall(tx: Transaction, feeBps: bigint | number | string | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_fee_bps'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), tx.object(this.#adminCapId()), asU64(tx, feeBps)],\n })\n }\n\n // ==========================================\n // RATE LIMITER ADMIN FUNCTIONS\n // ==========================================\n // Configure transfer rate limits for security and compliance\n\n /**\n * Set rate limit for OFT transfers\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID\n * @param inbound - Whether this is for inbound or outbound transfers\n * @param rateLimit - Rate limit amount\n * @param windowSeconds - Time window in seconds\n */\n setRateLimitMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n inbound: boolean | TransactionArgument,\n rateLimit: bigint | number | string | TransactionArgument,\n windowSeconds: bigint | number | string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_rate_limit'),\n typeArguments: [this.coinType],\n arguments: [\n tx.object(this.oftObjectId),\n tx.object(this.#adminCapId()),\n asU32(tx, eid),\n asBool(tx, inbound),\n asU64(tx, rateLimit),\n asU64(tx, windowSeconds),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Remove rate limit for OFT transfers\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID\n * @param inbound - Whether this is for inbound or outbound transfers\n */\n unsetRateLimitMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n inbound: boolean | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('unset_rate_limit'),\n typeArguments: [this.coinType],\n arguments: [\n tx.object(this.oftObjectId),\n tx.object(this.#adminCapId()),\n asU32(tx, eid),\n asBool(tx, inbound),\n ],\n })\n }\n\n // ==========================================\n // CORE FUNCTIONS\n // ==========================================\n // Primary OFT operations for token transfers and coin management\n\n /**\n * Splits specified amount of coins from user's wallet\n * @param tx - The transaction to add the move call to\n * @param owner - Address of the user whose coins to split\n * @param amount - Amount of coins to split (in smallest units)\n * @param limit - Maximum total number of coins to collect across all pages (default: 200)\n * @param pageSize - Maximum number of coins to fetch per page (default: 50)\n * @returns Promise resolving to split coin as TransactionResult\n * @throws Error if insufficient coins balance or no coins found\n */\n async splitCoinMoveCall(\n tx: Transaction,\n owner: string,\n amount: bigint,\n limit = 200,\n pageSize = 50\n ): Promise<TransactionResult> {\n return this.protocolSDK.getUtils().splitCoinMoveCall(tx, this.coinType, owner, amount, limit, pageSize)\n }\n\n /**\n * Send OFT tokens to destination chain\n * @param tx - The transaction to add the move call to\n * @param sender - Sender address for ZRO token operations\n * @param coinProvided - Coin object ID or transaction result to send\n * @param messagingChannel - The messaging channel object ID\n * @param sendParam - Send parameters including destination and amounts\n * @param nativeFee - Native token fee amount\n * @param zroFee - ZRO token fee amount\n * @param refundAddress - Address for fee refunds\n * @returns Promise<TransactionResult> - Transaction result containing send operation and receipt objects\n */\n async sendMoveCall(\n tx: Transaction,\n sender: string,\n coinProvided: string | TransactionArgument,\n sendParam: SendParam | TransactionArgument,\n nativeFee: bigint | TransactionArgument,\n zroFee: bigint | TransactionArgument,\n refundAddress: string | TransactionArgument,\n messagingChannel?: string | undefined\n ): Promise<void> {\n const sendParamArg = isTransactionArgument(sendParam) ? sendParam : this.#buildSendParam(tx, sendParam)\n const messagingChannelArg =\n messagingChannel ?? (await this.protocolSDK.getEndpoint().getMessagingChannel(this.packageId))\n\n // The oft::send returns a tuple (Call<EndpointSendParam, MessagingReceipt>, OFTReceipt)\n const transactionResult = tx.moveCall({\n target: this.#target('send'),\n typeArguments: [this.coinType],\n arguments: [\n tx.object(this.oftObjectId),\n asObject(tx, coinProvided),\n tx.object(this.objects.endpointV2),\n tx.object(messagingChannelArg),\n sendParamArg,\n asArgWithTx(tx, nativeFee, (tx, val) => tx.splitCoins(tx.gas, [asU64(tx, val)])[0]),\n await asArgWithTxAsync(tx, zroFee, async (tx, val) =>\n this.protocolSDK.getZro().splitOptionZroTokenMoveCall(tx, sender, val)\n ),\n asAddress(tx, refundAddress),\n tx.object.clock(),\n ],\n })\n const endpointCall = transactionResult[0]\n\n await this.protocolSDK\n .getEndpoint()\n .populateSendTransaction(tx, endpointCall as unknown as TransactionResult, sender)\n\n tx.moveCall({\n target: this.#target('confirm_send'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), endpointCall],\n })\n }\n\n // ==========================================\n // QUOTE FUNCTIONS\n // ==========================================\n // Calculate fees, limits, and receipts before executing operations\n\n /**\n * Quote OFT sending operation with detailed fee breakdown\n * @param sendParam - Send parameters for the OFT operation\n * @returns Promise with limit, fee details, and receipt information\n */\n async quoteOft(\n sendParam: SendParam | TransactionArgument\n ): Promise<{ limit: OFTLimit; feeDetails: OFTFeeDetail[]; receipt: OFTReceipt }> {\n return executeSimulate(\n this.client,\n (tx) => {\n const sendParamArg = isTransactionArgument(sendParam) ? sendParam : this.#buildSendParam(tx, sendParam)\n tx.moveCall({\n target: this.#target('quote_oft'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), sendParamArg, tx.object.clock()],\n })\n },\n (result) => {\n return {\n limit: parseOFTLimit(result[0].value),\n feeDetails: parseOFTFeeDetails(result[1].value),\n receipt: parseOFTReceipt(result[2].value),\n }\n }\n )\n }\n\n /**\n * Quote messaging fees for OFT sending\n * @param sender - Sender address\n * @param sendParam - Send parameters for the OFT operation\n * @param payInZro - Whether to pay in ZRO tokens\n * @returns Promise<MessagingFee> - The calculated messaging fees\n */\n async quoteSend(\n sender: string | TransactionArgument,\n sendParam: SendParam | TransactionArgument,\n payInZro: boolean | TransactionArgument\n ): Promise<MessagingFee> {\n const tx = new Transaction()\n const sendParamArg = isTransactionArgument(sendParam) ? sendParam : this.#buildSendParam(tx, sendParam)\n\n const quoteCall = tx.moveCall({\n target: this.#target('quote_send'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), asAddress(tx, sender), sendParamArg, asBool(tx, payInZro)],\n })\n\n return this.protocolSDK.getEndpoint().quote(tx, quoteCall)\n }\n\n // ==========================================\n // VIEW FUNCTIONS\n // ==========================================\n // Read-only functions to query OFT state and configuration\n\n /**\n * Get OFT version information\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing version information\n */\n oftVersionMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('oft_version'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId)],\n })\n }\n\n /**\n * Get OFT version information\n * @returns Promise<{ major: number; minor: number }> - The OFT version\n */\n async oftVersion(): Promise<{ major: number; minor: number }> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.oftVersionMoveCall(tx)\n },\n (result) => {\n const major = Number(bcs.U64.parse(result[0].value))\n const minor = Number(bcs.U64.parse(result[1].value))\n return { major, minor }\n }\n )\n }\n\n /**\n * Get coin metadata address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing coin metadata address\n */\n coinMetadataMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('coin_metadata'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId)],\n })\n }\n\n /**\n * Get coin metadata address\n * @returns Promise<string> - The coin metadata address\n */\n async coinMetadata(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.coinMetadataMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get OFT admin address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the admin address\n */\n adminMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('admin'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId)],\n })\n }\n\n /**\n * Get OFT admin address\n * @returns Promise<string> - The admin address\n */\n async admin(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.adminMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get shared decimals for cross-chain compatibility\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing shared decimals\n */\n sharedDecimalsMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('shared_decimals'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId)],\n })\n }\n\n /**\n * Get shared decimals for cross-chain compatibility\n * @returns Promise<number> - The shared decimal precision\n */\n async sharedDecimals(): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.sharedDecimalsMoveCall(tx)\n },\n (result) => bcs.U8.parse(result[0].value)\n )\n }\n\n /**\n * Check if OFT is paused\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the paused status\n */\n isPausedMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_paused'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId)],\n })\n }\n\n /**\n * Check if OFT is paused\n * @returns Promise<boolean> - True if OFT is paused\n */\n async isPaused(): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isPausedMoveCall(tx)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if this OFT is an adapter (wraps existing token)\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the adapter status\n */\n isAdapterMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_adapter'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId)],\n })\n }\n\n /**\n * Check if this OFT is an adapter (wraps existing token)\n * @returns Promise<boolean> - True if this is an OFT adapter\n */\n async isAdapter(): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isAdapterMoveCall(tx)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n // ==========================================\n // FEE VIEW FUNCTIONS\n // ==========================================\n // Query current fee configuration and settings\n\n /**\n * Get fee basis points for OFT transfers\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the fee basis points\n */\n feeBpsMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('fee_bps'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId)],\n })\n }\n\n /**\n * Get fee basis points for OFT transfers\n * @returns Promise<bigint> - The fee in basis points\n */\n async feeBps(): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.feeBpsMoveCall(tx)\n },\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get fee deposit address for OFT\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the fee deposit address\n */\n feeDepositAddressMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('fee_deposit_address'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId)],\n })\n }\n\n /**\n * Get fee deposit address for OFT\n * @returns Promise<string> - The fee deposit address\n */\n async feeDepositAddress(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.feeDepositAddressMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n // ==========================================\n // RATE LIMITER VIEW FUNCTIONS\n // ==========================================\n // Query current rate limiting configuration and status\n\n /**\n * Get rate limit configuration for an endpoint\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID\n * @param inbound - Whether this is for inbound or outbound transfers\n * @returns Transaction result containing rate limit configuration\n */\n rateLimitConfigMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n inbound: boolean | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('rate_limit_config'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), asU32(tx, eid), asBool(tx, inbound)],\n })\n }\n\n /**\n * Get rate limit configuration for an endpoint\n * @param eid - Endpoint ID\n * @param inbound - Whether this is for inbound or outbound transfers\n * @returns Promise<{ limit: bigint; windowSeconds: bigint }> - Rate limit configuration\n */\n async rateLimitConfig(eid: number, inbound: boolean): Promise<{ limit: bigint; windowSeconds: bigint }> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.rateLimitConfigMoveCall(tx, eid, inbound)\n },\n (result) => {\n const limit = BigInt(bcs.U64.parse(result[0].value))\n const windowSeconds = BigInt(bcs.U64.parse(result[1].value))\n return { limit, windowSeconds }\n }\n )\n }\n\n /**\n * Get current in-flight amount for rate limiting\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID\n * @param inbound - Whether this is for inbound or outbound transfers\n * @returns Transaction result containing in-flight amount\n */\n rateLimitInFlightMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n inbound: boolean | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('rate_limit_in_flight'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), asU32(tx, eid), asBool(tx, inbound), tx.object.clock()],\n })\n }\n\n /**\n * Get current in-flight amount for rate limiting\n * @param eid - Endpoint ID\n * @param inbound - Whether this is for inbound or outbound transfers\n * @returns Promise<bigint> - Current in-flight amount\n */\n async rateLimitInFlight(eid: number, inbound: boolean): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.rateLimitInFlightMoveCall(tx, eid, inbound)\n },\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get rate limit capacity (remaining available amount)\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID\n * @param inbound - Whether this is for inbound or outbound transfers\n * @returns Transaction result containing rate limit capacity\n */\n rateLimitCapacityMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n inbound: boolean | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('rate_limit_capacity'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), asU32(tx, eid), asBool(tx, inbound), tx.object.clock()],\n })\n }\n\n /**\n * Get rate limit capacity (remaining available amount)\n * @param eid - Endpoint ID\n * @param inbound - Whether this is for inbound or outbound transfers\n * @returns Promise<bigint> - Remaining rate limit capacity\n */\n async rateLimitCapacity(eid: number, inbound: boolean): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.rateLimitCapacityMoveCall(tx, eid, inbound)\n },\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Combine enforced options with extra options\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID\n * @param msgType - Message type\n * @param extraOptions - Extra options to combine with enforced options\n * @returns Transaction result containing the combined options\n */\n combineOptionsMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n msgType: number | TransactionArgument,\n extraOptions: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('combine_options'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), asU32(tx, eid), asU16(tx, msgType), asBytes(tx, extraOptions)],\n })\n }\n\n /**\n * Combine enforced options with extra options\n * @param eid - Endpoint ID\n * @param msgType - Message type\n * @param extraOptions - Extra options to combine with enforced options\n * @returns Promise<Uint8Array> - The combined options as bytes\n */\n async combineOptions(eid: number, msgType: number, extraOptions: Uint8Array): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.combineOptionsMoveCall(tx, eid, msgType, extraOptions)\n },\n (result) => new Uint8Array(bcs.vector(bcs.u8()).parse(result[0].value))\n )\n }\n\n /**\n * Get enforced options for OFT messaging\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID\n * @param msgType - Message type\n * @returns Transaction result containing the enforced options\n */\n getEnforcedOptionsMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n msgType: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_enforced_options'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), asU32(tx, eid), asU16(tx, msgType)],\n })\n }\n\n /**\n * Get enforced options for OFT messaging\n * @param eid - Endpoint ID\n * @param msgType - Message type\n * @returns Promise<Uint8Array> - The enforced options as bytes\n */\n async getEnforcedOptions(eid: number, msgType: number): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getEnforcedOptionsMoveCall(tx, eid, msgType)\n },\n (result) => new Uint8Array(bcs.vector(bcs.u8()).parse(result[0].value))\n )\n }\n\n /**\n * Check if OFT has a peer on specific endpoint\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID\n * @returns Transaction result containing the peer existence status\n */\n hasPeerMoveCall(tx: Transaction, eid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('has_peer'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), asU32(tx, eid)],\n })\n }\n\n /**\n * Check if OFT has a peer on specific endpoint\n * @param eid - Endpoint ID\n * @returns Promise<boolean> - True if peer exists on the endpoint\n */\n async hasPeer(eid: number): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.hasPeerMoveCall(tx, eid)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get peer OFT address on specific endpoint\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID\n * @returns Transaction result containing the peer address\n */\n getPeerMoveCall(tx: Transaction, eid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_peer'),\n typeArguments: [this.coinType],\n arguments: [tx.object(this.oftObjectId), asU32(tx, eid)],\n })\n }\n\n /**\n * Get peer OFT address on specific endpoint\n * @param eid - Endpoint ID\n * @returns Promise<Uint8Array> - The peer address as bytes32\n */\n async getPeer(eid: number): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getPeerMoveCall(tx, eid)\n },\n (result) => {\n // Assuming Bytes32 is returned as vector<u8>\n return new Uint8Array(bcs.vector(bcs.u8()).parse(result[0].value))\n }\n )\n }\n\n // ==========================================\n // PRIVATE HELPER FUNCTIONS\n // ==========================================\n // Internal utility functions for OFT operations\n\n /**\n * Build SendParam struct for OFT operations\n * @param tx - The transaction to add the move call to\n * @param param - Send parameters to build\n * @returns Transaction result containing the SendParam struct\n * @private\n */\n #buildSendParam(tx: Transaction, param: SendParam): TransactionResult {\n return tx.moveCall({\n target: this.#target('create', 'send_param'),\n arguments: [\n asU32(tx, param.dstEid),\n asBytes32(tx, param.to, this.protocolSDK.getUtils()),\n asU64(tx, param.amountLd),\n asU64(tx, param.minAmountLd),\n asBytes(tx, param.extraOptions),\n asBytes(tx, param.composeMsg),\n asBytes(tx, param.oftCmd),\n ],\n })\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to 'oft')\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.corePackageId}::${module_name}::${name}`\n }\n\n /**\n * Get the admin capability ID, throwing an error if not available\n * @returns The admin capability ID\n * @throws Error if admin capability ID was not provided during construction\n * @private\n */\n #adminCapId(): string {\n if (this.adminCapId === undefined) {\n throw new Error('Admin cap ID not found')\n }\n return this.adminCapId\n }\n}\n","import { bcs } from '@mysten/sui/bcs'\nimport { SuiClient } from '@mysten/sui/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@mysten/sui/transactions'\n\nimport { SDK, asAddress, asBytes32, asObject, executeSimulate } from '@layerzerolabs/lz-sui-sdk-v2'\n\nexport const OFTComposerRegistryErrorCode = {\n // OFT Composer Registry related errors\n EComposeTransferNotFound: 1,\n EDepositAddressNotFound: 2,\n} as const\n\n/**\n * OFT Composer Registry\n *\n * This class manages the registry for OFT Composer operations, including\n * deposit addresses and compose transfer routing for cross-chain composition.\n */\nexport class OFTComposerRegistry {\n public packageId: string\n public readonly client: SuiClient\n public readonly registryObjectId: string\n private readonly protocolSDK: SDK\n\n constructor(protocolSDK: SDK, packageId: string, registryObjectId: string) {\n this.client = protocolSDK.client\n this.protocolSDK = protocolSDK\n this.packageId = packageId\n this.registryObjectId = registryObjectId\n }\n\n // === Set Functions ===\n\n /**\n * Set deposit address for OFT composer\n * @param tx - The transaction to add the move call to\n * @param composerCallCap - The composer call capability transaction result\n * @param depositAddress - The new deposit address\n * @returns Transaction result containing the set operation\n */\n setDepositAddressMoveCall(\n tx: Transaction,\n composerCallCap: string | TransactionArgument,\n depositAddress: string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('set_deposit_address'),\n arguments: [tx.object(this.registryObjectId), asObject(tx, composerCallCap), asAddress(tx, depositAddress)],\n })\n }\n\n // === View Functions ===\n\n /**\n * Get deposit address for a composer\n * @param tx - The transaction to add the move call to\n * @param composer - The composer address\n * @returns Transaction result containing the deposit address\n */\n getDepositAddressMoveCall(tx: Transaction, composer: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_deposit_address'),\n arguments: [tx.object(this.registryObjectId), asAddress(tx, composer)],\n })\n }\n\n /**\n * Get compose transfer object for composition operations\n * @param tx - The transaction to add the move call to\n * @param from - The sender address\n * @param guid - The GUID transaction result\n * @param composer - The composer address\n * @returns Transaction result containing the compose transfer object\n */\n getComposeTransferMoveCall(\n tx: Transaction,\n from: string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n composer: string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_compose_transfer'),\n arguments: [\n tx.object(this.registryObjectId),\n asAddress(tx, from),\n asBytes32(tx, guid, this.protocolSDK.getUtils()),\n asAddress(tx, composer),\n ],\n })\n }\n\n /**\n * Get compose transfer object address\n * @param from - The sender address\n * @param guid - The GUID as number array\n * @param composer - The composer address\n * @returns Promise<string> - The compose transfer object address\n */\n async getComposeTransfer(from: string, guid: Uint8Array, composer: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n return this.getComposeTransferMoveCall(\n tx,\n from,\n asBytes32(tx, guid, this.protocolSDK.getUtils()),\n composer\n )\n },\n (result) => {\n const parsed = bcs.Address.parse(result[0].value)\n return parsed\n }\n )\n }\n\n // === Private Functions ===\n\n /**\n * Generate the full target path for move calls\n * @param func - The function name to call\n * @returns The full module path for the move call\n * @private\n */\n #target(func: string): string {\n return `${this.packageId}::oft_composer_registry::${func}`\n }\n}\n","import { SuiClient } from '@mysten/sui/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@mysten/sui/dist/cjs/transactions'\n\nimport { ObjectOptions, SDK, asObject } from '@layerzerolabs/lz-sui-sdk-v2'\n\n/**\n * OFT PTB (Programmable Transaction Block) Builder\n *\n * This class provides utility functions for building programmable transactions\n * for OFT operations, particularly for LayerZero receive operations.\n */\nexport class OFTPtbBuilder {\n public packageId: string\n public objectId: string\n public readonly client: SuiClient\n public readonly coinType: string\n public readonly oftObjectId: string\n public readonly objects: ObjectOptions\n\n constructor(\n protocolSDK: SDK,\n packageId: string,\n objectId: string,\n client: SuiClient,\n coinType: string,\n oftObjectId: string\n ) {\n this.objects = protocolSDK.objects\n this.packageId = packageId\n this.objectId = objectId\n this.client = client\n this.coinType = coinType\n this.oftObjectId = oftObjectId\n }\n\n /**\n * Get LayerZero receive information for OFT registration\n *\n * This function prepares the necessary metadata for registering an OFT\n * with the LayerZero endpoint, enabling it to receive cross-chain messages.\n *\n * @param tx - The transaction to add the move call to\n * @param composerRegistry - The composer registry object ID for routing compose transfers\n * @returns TransactionResult containing serialized execution metadata for endpoint registration\n */\n lzReceiveInfoMoveCall(tx: Transaction, composerRegistry: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::oft_ptb_builder::lz_receive_info`,\n typeArguments: [this.coinType],\n arguments: [\n tx.object(this.objectId),\n tx.object(this.oftObjectId),\n tx.object(this.objects.endpointV2),\n asObject(tx, composerRegistry),\n tx.object.clock(),\n ],\n })\n }\n}\n","// Constants\nexport const OFTMsgType = {\n SEND: 1,\n SEND_AND_CALL: 2,\n} as const\n\n// Type Definitions\nexport interface SendParam {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n extraOptions: Uint8Array\n composeMsg: Uint8Array\n oftCmd: Uint8Array\n}\n\nexport interface OFTLimit {\n minAmountLd: bigint\n maxAmountLd: bigint\n}\n\nexport interface OFTFeeDetail {\n feeAmountLd: bigint\n description: string\n}\n\nexport interface OFTReceipt {\n amountSentLd: bigint\n amountReceivedLd: bigint\n}\n"]}
|