@layerzerolabs/lz-sui-sdk-v2 3.0.73 → 3.0.75
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/CHANGELOG.md +16 -0
- package/dist/index.cjs +1169 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +353 -24
- package/dist/index.d.ts +353 -24
- package/dist/index.mjs +1138 -32
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -4
- package/src/bcs/index.ts +1 -0
- package/src/bcs/messaging-fee.ts +6 -0
- package/src/index.ts +5 -1
- package/src/modules/counter.ts +239 -0
- package/src/modules/endpoint.ts +303 -0
- package/src/modules/index.ts +5 -0
- package/src/modules/simple-message-lib.ts +240 -0
- package/src/modules/utils.ts +390 -0
- package/src/modules/zro.ts +38 -0
- package/src/sdk.ts +233 -0
- package/src/types.ts +89 -0
- package/src/utils.ts +69 -0
- package/src/endpoint.ts +0 -38
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/endpoint.ts"],"names":[],"mappings":";;;;;;;AAAA,IAAA,gBAAA,GAAA;AAAA,QAAA,CAAA,gBAAA,EAAA;AAAA,EAAA,GAAA,EAAA,MAAA,GAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,4BAAA,EAAA,MAAA,4BAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,4BAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAEA,eAAsB,OAAgC,GAAA;AAClD,EAAM,MAAA,IAAI,MAAM,iBAAiB,CAAA;AACrC;AAIA,eAAsB,GAAuB,GAAA;AAEzC,EAAO,OAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAC5B;AAEA,eAAsB,cAAA,CAAe,QAAgB,OAAkC,EAAA;AACnF,EAAM,MAAA,IAAI,MAAM,iBAAiB,CAAA;AACrC;AAEA,eAAsB,SAA6B,GAAA;AAC/C,EAAM,MAAA,IAAI,MAAM,iBAAiB,CAAA;AACrC;AAIA,eAAsB,yBAAyB,EAAgC,EAAA;AAE/E;AAEA,eAAsB,wBAAwB,EAAgC,EAAA;AAE9E;AAEA,eAAsB,6BAA6B,EAAgC,EAAA;AAEnF;AAEA,eAAsB,6BAA6B,EAAgC,EAAA;AAEnF","file":"index.mjs","sourcesContent":["import { Transaction } from '@mysten/sui/transactions'\n\nexport async function initEid(): Promise<Transaction> {\n throw new Error('Not implemented')\n}\n\n// TODO: add more mutate functions here\n\nexport async function eid(): Promise<number> {\n // TODO: implement\n return Promise.resolve(1)\n}\n\nexport async function getSendLibrary(sender: string, dst_eid: number): Promise<string> {\n throw new Error('Not implemented')\n}\n\nexport async function getConfig(): Promise<string> {\n throw new Error('Not implemented')\n}\n\n// TODO: more view functions to be added here\n\nexport async function populateQuoteTransaction(tx: Transaction): Promise<void> {\n // TODO: implement\n}\n\nexport async function populateSendTransaction(tx: Transaction): Promise<void> {\n // TODO: implement\n}\n\nexport async function populateGetConfigTransaction(tx: Transaction): Promise<void> {\n // TODO: implement\n}\n\nexport async function populateSetConfigTransaction(tx: Transaction): Promise<void> {\n // TODO: implement\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/modules/simple-message-lib.ts","../src/modules/endpoint.ts","../src/bcs/messaging-fee.ts","../src/modules/counter.ts","../src/modules/utils.ts","../src/modules/zro.ts","../src/sdk.ts"],"names":["Transaction","bcs"],"mappings":"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","file":"index.mjs","sourcesContent":["import * as fs from 'fs'\nimport * as path from 'path'\n\nimport { SuiClient, SuiExecutionResult, SuiTransactionBlockResponse } from '@mysten/sui/client'\nimport { Keypair } from '@mysten/sui/cryptography'\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'\nimport { Transaction } from '@mysten/sui/transactions'\n\nexport async function devInspectTransaction(\n suiClient: SuiClient,\n tx: Transaction,\n sender: string\n): Promise<SuiExecutionResult[] | null | undefined> {\n const { results, error } = await suiClient.devInspectTransactionBlock({\n transactionBlock: tx,\n sender: sender,\n })\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (error != undefined && error != null) {\n throw new Error(error)\n }\n\n return results\n}\n\nexport async function moveView(\n suiClient: SuiClient,\n tx: Transaction,\n sender?: string\n): Promise<SuiExecutionResult | null | undefined> {\n if (sender === undefined) {\n sender = Ed25519Keypair.generate().toSuiAddress()\n }\n const result = await devInspectTransaction(suiClient, tx, sender)\n return result ? result[result.length - 1] : null\n}\n\nexport function readAddressFromDeployment(network: string, name: string): string | undefined {\n const deploymentPath = path.join(__dirname, '..', 'deployments', network, `${name}.json`)\n if (!fs.existsSync(deploymentPath)) {\n return undefined\n }\n const deployment = JSON.parse(fs.readFileSync(deploymentPath, 'utf8')) as { address: string }\n return deployment.address\n}\n\nexport async function validateTransaction(\n client: SuiClient,\n signer: Keypair,\n tx: Transaction\n): Promise<SuiTransactionBlockResponse> {\n tx.setSenderIfNotSet(signer.getPublicKey().toSuiAddress())\n const result = await client.signAndExecuteTransaction({\n signer,\n transaction: tx,\n options: {\n showEffects: true,\n showObjectChanges: true,\n showEvents: true,\n },\n })\n\n if (result.effects?.status.status !== 'success') {\n throw new Error(result.effects?.status.error)\n }\n\n await client.waitForTransaction({ digest: result.digest })\n return result\n}\n","import { bcs } from '@mysten/sui/bcs'\nimport { SuiClient } from '@mysten/sui/client'\nimport { Transaction, TransactionResult } from '@mysten/sui/transactions'\n\nimport { Context, ObjectOptions } from '../types'\nimport { moveView } from '../utils'\n\nexport class SimpleMessageLib {\n public packageId: string\n public readonly client: SuiClient\n private readonly objects: Pick<\n ObjectOptions,\n 'simple_message_lib' | 'endpoint_admin_cap' | 'endpoint_v2' | 'discovery'\n >\n\n constructor(\n packageId: string,\n client: SuiClient,\n objects: Pick<ObjectOptions, 'simple_message_lib' | 'endpoint_admin_cap' | 'endpoint_v2' | 'discovery'>,\n private readonly context: Context\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n\n // Validate that required objects are not empty strings\n if (this.objects.simple_message_lib.trim() === '') {\n throw new Error('simple_message_lib object cannot be empty')\n }\n if (this.objects.endpoint_admin_cap.trim() === '') {\n throw new Error('admin_cap object cannot be empty')\n }\n if (this.objects.endpoint_v2.trim() === '') {\n throw new Error('endpoint_v2 object cannot be empty')\n }\n }\n\n populateInitializeTransaction(): Transaction {\n const tx = new Transaction()\n\n tx.moveCall({\n target: `${this.packageId}::simple_message_lib::initialize`,\n typeArguments: [],\n arguments: [tx.object(this.objects.endpoint_admin_cap), tx.object(this.objects.endpoint_v2)],\n })\n return tx\n }\n\n // === View Functions ===\n\n async getNativeFee(): Promise<string> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::simple_message_lib::get_native_fee`,\n typeArguments: [],\n arguments: [tx.object(this.objects.simple_message_lib)],\n })\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n return bcs.U64.parse(bytes)\n }\n\n async getZroFee(): Promise<string> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::simple_message_lib::get_zro_fee`,\n typeArguments: [],\n arguments: [tx.object(this.objects.simple_message_lib)],\n })\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n return bcs.U64.parse(bytes)\n }\n\n async getFeeRecipient(): Promise<string> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::simple_message_lib::get_fee_recipient`,\n typeArguments: [],\n arguments: [tx.object(this.objects.simple_message_lib)],\n })\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n return bcs.Address.parse(bytes)\n }\n\n async isRegistered(): Promise<boolean> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::simple_message_lib::is_registered`,\n typeArguments: [],\n arguments: [tx.object(this.objects.simple_message_lib), tx.object(this.objects.endpoint_v2)],\n })\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n return bcs.Bool.parse(bytes)\n }\n\n // === Admin Functions ===\n\n populateRegisterLibraryTransaction(): Transaction {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::simple_message_lib::register_library`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.simple_message_lib),\n tx.object(this.objects.endpoint_admin_cap),\n tx.object(this.objects.endpoint_v2),\n ],\n })\n return tx\n }\n\n populateSetMessagingFeeTransaction(zroFee: number, nativeFee: number): Transaction {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::simple_message_lib::set_messaging_fee`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.simple_message_lib),\n tx.object(this.objects.endpoint_admin_cap),\n tx.pure.u64(zroFee),\n tx.pure.u64(nativeFee),\n ],\n })\n return tx\n }\n\n populateSetDefaultConfigTransaction(eid: number, configType: number, config: Uint8Array): Transaction {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::simple_message_lib::set_default_config`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.simple_message_lib),\n tx.object(this.objects.endpoint_admin_cap),\n tx.pure.u32(eid),\n tx.pure.u32(configType),\n tx.pure(bcs.vector(bcs.u8()).serialize(config)),\n ],\n })\n return tx\n }\n\n populateSetFeeRecipientTransaction(feeRecipient: string): Transaction {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::simple_message_lib::set_fee_recipient`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.simple_message_lib),\n tx.object(this.objects.endpoint_admin_cap),\n tx.pure.address(feeRecipient),\n ],\n })\n return tx\n }\n\n // === Endpoint Validation ===\n\n populateValidatePacketTransaction(packetHeader: Uint8Array, payloadHash: Uint8Array): Transaction {\n const tx = new Transaction()\n const payloadHashBytes32 = this.context.utils.fromBytesMoveCall(tx, payloadHash)\n tx.moveCall({\n target: `${this.packageId}::simple_message_lib::validate_packet`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.simple_message_lib),\n tx.object(this.objects.endpoint_v2),\n tx.object(this.objects.endpoint_admin_cap),\n tx.pure(bcs.vector(bcs.u8()).serialize(packetHeader)),\n payloadHashBytes32,\n tx.object('0x6'), // Clock Object TODO try to get it from the client or sdk\n ],\n })\n return tx\n }\n\n // === Protocol Discovery ===\n\n populateRegisterMessageLibDiscoveryTransaction(): Transaction {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::simple_message_lib::register_message_lib_discovery`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.simple_message_lib),\n tx.object(this.objects.endpoint_admin_cap),\n tx.object(this.objects.endpoint_v2),\n tx.object(this.objects.discovery),\n ],\n })\n return tx\n }\n\n quoteMoveCall(tx: Transaction, quoteCall: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::simple_message_lib::quote`,\n typeArguments: [],\n arguments: [tx.object(this.objects.simple_message_lib), quoteCall],\n })\n }\n\n sendMoveCall(tx: Transaction, sendCall: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::simple_message_lib::send`,\n typeArguments: [],\n arguments: [tx.object(this.objects.simple_message_lib), tx.object(this.objects.endpoint_v2), sendCall],\n })\n }\n\n // === TODO: Core Message Lib Functions ===\n // These functions are called by the endpoint and require specific parameter types\n // that need to be implemented based on the endpoint_v2 module interfaces\n\n populateQuoteTransaction(tx: Transaction): void {\n // TODO: implement quote functionality\n // This requires Call<QuoteParam> parameter from endpoint_v2\n }\n\n populateSendTransaction(tx: Transaction): void {\n // TODO: implement send functionality\n // This requires Call<SendParam> parameter from endpoint_v2\n }\n\n populateSetConfigTransaction(tx: Transaction): void {\n // TODO: implement set_config functionality\n // This requires Call<SetConfigParam> parameter from endpoint_v2\n }\n\n populateGetConfigTransaction(tx: Transaction): void {\n // TODO: implement get_config functionality\n // This requires Call<GetConfigParam> parameter from endpoint_v2\n }\n}\n","import { bcs } from '@mysten/sui/bcs'\nimport { SuiClient } from '@mysten/sui/client'\nimport { Transaction, TransactionResult } from '@mysten/sui/transactions'\n\nimport { Context, ObjectOptions } from '../types'\nimport { moveView } from '../utils'\n\nexport class Endpoint {\n public packageId: string\n public readonly client: SuiClient\n private readonly objects: Pick<ObjectOptions, 'endpoint_v2' | 'endpoint_admin_cap'>\n\n constructor(\n packageId: string,\n client: SuiClient,\n objects: Pick<ObjectOptions, 'endpoint_v2' | 'endpoint_admin_cap'>,\n private readonly context: Context\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n\n // Validate that required objects are not empty strings\n if (this.objects.endpoint_v2.trim() === '') {\n throw new Error('endpoint_v2 object cannot be empty')\n }\n if (this.objects.endpoint_admin_cap.trim() === '') {\n throw new Error('endpoint_admin_cap object cannot be empty')\n }\n }\n\n async eid(): Promise<number> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::eid`,\n typeArguments: [],\n arguments: [tx.object(this.objects.endpoint_v2)],\n })\n try {\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n return bcs.U32.parse(bytes)\n } catch (e) {\n //TODO need to handle error properly\n return 0\n }\n }\n\n populateInitEidTransaction(eid: number): Transaction {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::init_eid`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.endpoint_v2),\n tx.object(this.objects.endpoint_admin_cap),\n tx.pure.u32(eid),\n ],\n })\n return tx\n }\n\n async getDefaultSendLibrary(srcEid: number): Promise<string> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::get_default_send_library`,\n typeArguments: [],\n arguments: [tx.object(this.objects.endpoint_v2), tx.pure.u32(srcEid)],\n })\n try {\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n return bcs.Address.parse(bytes)\n } catch (error) {\n //TODO need to handle error properly\n return '0x0'\n }\n }\n\n populateSetDefaultSendLibraryTransaction(dstEid: number, newLib: string): Transaction {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::set_default_send_library`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.endpoint_v2),\n tx.object(this.objects.endpoint_admin_cap),\n tx.pure.u32(dstEid),\n tx.pure.address(newLib),\n ],\n })\n return tx\n }\n\n async getDefaultReceiveLibrary(srcEid: number): Promise<string> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::get_default_receive_library`,\n typeArguments: [],\n arguments: [tx.object(this.objects.endpoint_v2), tx.pure.u32(srcEid)],\n })\n try {\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n return bcs.Address.parse(bytes)\n } catch (error) {\n return '0x'\n }\n }\n\n populateSetDefaultReceiveLibraryTransaction(srcEid: number, newLib: string, gracePeriod: number): Transaction {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::set_default_receive_library`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.endpoint_v2),\n tx.object(this.objects.endpoint_admin_cap),\n tx.pure.u32(srcEid),\n tx.pure.address(newLib),\n tx.pure.u64(gracePeriod),\n tx.object('0x6'), // Clock Object TODO try to get it from the client or sdk\n ],\n })\n return tx\n }\n\n confirmQuoteMoveCall(tx: Transaction, executedCall: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::endpoint_v2::confirm_quote`,\n typeArguments: [],\n arguments: [tx.object(this.objects.endpoint_v2), executedCall],\n })\n }\n\n confirmSendMoveCall(tx: Transaction, executedCall: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::endpoint_v2::confirm_send`,\n typeArguments: [],\n arguments: [tx.object(this.objects.endpoint_v2), executedCall],\n })\n }\n\n // === Worker Endpoint Required Methods ===\n\n async getSendLibrary(sender: string, dstEid: number): Promise<[string, boolean]> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::get_send_library`,\n typeArguments: [],\n arguments: [tx.object(this.objects.endpoint_v2), tx.pure.address(sender), tx.pure.u32(dstEid)],\n })\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n const lib = bcs.Address.parse(bytes)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const isDefaultBytes = new Uint8Array(result?.returnValues![1][0]!)\n const isDefault = bcs.Bool.parse(isDefaultBytes)\n return [lib, isDefault]\n }\n\n async getReceiveLibrary(receiver: string, srcEid: number): Promise<[string, boolean]> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::get_receive_library`,\n typeArguments: [],\n arguments: [tx.object(this.objects.endpoint_v2), tx.pure.address(receiver), tx.pure.u32(srcEid)],\n })\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n const lib = bcs.Address.parse(bytes)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const isDefaultBytes = new Uint8Array(result?.returnValues![1][0]!)\n const isDefault = bcs.Bool.parse(isDefaultBytes)\n return [lib, isDefault]\n }\n\n async getInboundNonce(receiver: string, srcEid: number, sender: Uint8Array): Promise<bigint> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::get_inbound_nonce`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.endpoint_v2),\n tx.pure.address(receiver),\n tx.pure.u32(srcEid),\n tx.pure(bcs.vector(bcs.u8()).serialize(sender)),\n ],\n })\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n return BigInt(bcs.U64.parse(bytes))\n }\n\n async getLazyInboundNonce(receiver: string, srcEid: number, sender: Uint8Array): Promise<bigint> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::get_lazy_inbound_nonce`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.endpoint_v2),\n tx.pure.address(receiver),\n tx.pure.u32(srcEid),\n tx.pure(bcs.vector(bcs.u8()).serialize(sender)),\n ],\n })\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n return BigInt(bcs.U64.parse(bytes))\n }\n\n async getOutboundNonce(sender: string, dstEid: number, receiver: Uint8Array): Promise<bigint> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::get_outbound_nonce`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.endpoint_v2),\n tx.pure.address(sender),\n tx.pure.u32(dstEid),\n tx.pure(bcs.vector(bcs.u8()).serialize(receiver)),\n ],\n })\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n return BigInt(bcs.U64.parse(bytes))\n }\n\n async getInboundPayloadHash(\n receiver: string,\n srcEid: number,\n sender: Uint8Array,\n nonce: bigint\n ): Promise<Uint8Array | null> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::get_inbound_payload_hash`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.endpoint_v2),\n tx.pure.address(receiver),\n tx.pure.u32(srcEid),\n tx.pure(bcs.vector(bcs.u8()).serialize(sender)),\n tx.pure.u64(nonce),\n ],\n })\n try {\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n const parsed = bcs.vector(bcs.u8()).parse(bytes)\n return Buffer.from(parsed)\n } catch (error) {\n //TODO need to handle error properly\n return null\n }\n }\n\n async getComposeMessageHash(from: string, to: string, guid: Uint8Array, index: number): Promise<Uint8Array> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::endpoint_v2::get_compose_message_hash`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.endpoint_v2),\n tx.pure.address(from),\n tx.pure.address(to),\n tx.pure(bcs.vector(bcs.u8()).serialize(guid)),\n tx.pure.u16(index),\n ],\n })\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n const parsed = bcs.vector(bcs.u8()).parse(bytes)\n return Buffer.from(parsed)\n }\n\n // TODO: more view functions to be added here\n populateQuoteTransaction(tx: Transaction): void {\n // TODO: implement\n }\n\n populateSendTransaction(tx: Transaction): void {\n // TODO: implement\n }\n\n populateGetConfigTransaction(tx: Transaction): void {\n // TODO: implement\n }\n\n populateSetConfigTransaction(tx: Transaction): void {\n // TODO: implement\n }\n}\n","import { bcs } from '@mysten/sui/bcs'\n\nexport const MessagingFeeBcs = bcs.struct('MessagingFee', {\n native_fee: bcs.U64,\n zro_fee: bcs.U64,\n})\n","import { bcs } from '@mysten/sui/bcs'\nimport { SuiClient, SuiTransactionBlockResponse } from '@mysten/sui/client'\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'\nimport { Transaction } from '@mysten/sui/transactions'\n\nimport { EndpointId } from '@layerzerolabs/lz-definitions'\n\nimport { MessagingFeeBcs } from '../bcs'\nimport { Context, ObjectOptions } from '../types'\nimport { moveView, validateTransaction } from '../utils'\n\nexport class Counter {\n public packageId: string\n public utilsPkgId: string\n public readonly client: SuiClient\n private readonly objects: Pick<\n ObjectOptions,\n 'counter' | 'counter_admin_cap' | 'endpoint_v2' | 'simple_message_lib'\n >\n\n constructor(\n packageId: string,\n utilsPkgId: string,\n client: SuiClient,\n objects: Pick<ObjectOptions, 'counter' | 'counter_admin_cap' | 'endpoint_v2' | 'simple_message_lib'>,\n private readonly context: Context\n ) {\n this.packageId = packageId\n this.utilsPkgId = utilsPkgId\n this.client = client\n this.objects = objects\n\n // Validate that required objects are not empty strings\n // if (this.objects.counter.trim() === '') {\n // throw new Error('counter object cannot be empty')\n // }\n // if (this.objects.counter_admin_cap.trim() === '') {\n // throw new Error('counter_admin_cap object cannot be empty')\n // }\n // if (this.objects.endpoint_v2.trim() === '') {\n // throw new Error('endpoint_v2 object cannot be empty')\n // }\n }\n\n async getPeer(dstEid: number): Promise<string> {\n const tx = new Transaction()\n const peerBytes32 = tx.moveCall({\n target: `${this.packageId}::counter::get_peer`,\n typeArguments: [],\n arguments: [tx.object(this.objects.counter), tx.pure.u32(dstEid)],\n })\n tx.moveCall({\n target: `${this.utilsPkgId}::bytes32::to_address`,\n typeArguments: [],\n arguments: [peerBytes32],\n })\n try {\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n return bcs.Address.parse(bytes)\n } catch (e) {\n //TODO handle error properly\n return ''\n }\n }\n\n async getCount(): Promise<number> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::counter::get_count`,\n typeArguments: [],\n arguments: [tx.object(this.objects.counter)],\n })\n try {\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n const counterStr = bcs.U64.parse(bytes)\n return Number(counterStr)\n } catch (e) {\n //TODO handle error properly\n return 0\n }\n }\n\n async getComposedCount(): Promise<number> {\n const tx = new Transaction()\n tx.moveCall({\n target: `${this.packageId}::counter::get_composed_count`,\n typeArguments: [],\n arguments: [tx.object(this.objects.counter)],\n })\n try {\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n const counterStr = bcs.U64.parse(bytes)\n return Number(counterStr)\n } catch (e) {\n //TODO handle error properly\n return 0\n }\n }\n\n populateSetPeerTransaction(dstEid: number, peer: Uint8Array): Transaction {\n const tx = new Transaction()\n const peerBytes32 = tx.moveCall({\n target: `${this.utilsPkgId}::bytes32::from_bytes`,\n typeArguments: [],\n arguments: [tx.pure(bcs.vector(bcs.u8()).serialize(peer))],\n })\n tx.moveCall({\n target: `${this.packageId}::counter::set_peer`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.counter),\n tx.object(this.objects.counter_admin_cap),\n tx.object(this.objects.endpoint_v2),\n tx.pure.u32(dstEid),\n peerBytes32,\n ],\n })\n return tx\n }\n\n /**\n * Builds a transaction for calling the lz_receive function on the counter contract.\n *\n * @param srcEid - The source endpoint ID\n * @param sender - The sender address as Bytes32\n * @param nonce - The nonce\n * @param guid - The GUID as Bytes32\n * @param message - The message as vector<u8>\n * @param value - The value to be sent (Coin<SUI>)\n * @param extraData - Extra data as vector<u8>\n * @returns A Transaction object ready to be executed\n */\n populateLzReceiveTransaction(\n srcEid: number,\n sender: Uint8Array,\n nonce: bigint,\n guid: Uint8Array,\n message: Uint8Array,\n value: bigint,\n extraData: Uint8Array = new Uint8Array()\n ): Transaction {\n const tx = new Transaction()\n\n // Convert sender to Bytes32 format\n const senderBytes32 = this.context.utils.fromBytesMoveCall(tx, sender)\n\n // Convert guid to Bytes32 format\n const guidBytes32 = this.context.utils.fromBytesMoveCall(tx, guid)\n\n // Split the SUI coin to get the required value\n const coin = tx.splitCoins(tx.gas, [tx.pure.u64(value)])\n\n // Call the lz_receive function\n tx.moveCall({\n target: `${this.packageId}::counter::lz_receive`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.counter),\n tx.object(this.objects.endpoint_v2),\n tx.pure.u32(srcEid),\n senderBytes32,\n tx.pure.u64(nonce),\n guidBytes32,\n tx.pure(bcs.vector(bcs.u8()).serialize(message)),\n coin,\n tx.pure(bcs.vector(bcs.u8()).serialize(extraData)),\n ],\n })\n\n return tx\n }\n\n async quote(\n dstEid: EndpointId,\n msgType: number,\n options: Uint8Array,\n payInZero: boolean\n ): Promise<[bigint, bigint]> {\n const tx = new Transaction()\n const quoteCall = tx.moveCall({\n target: `${this.packageId}::counter::quote`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.counter),\n tx.object(this.objects.endpoint_v2),\n tx.pure.u32(dstEid),\n tx.pure.u8(msgType),\n tx.pure(bcs.vector(bcs.u8()).serialize(options)),\n tx.pure.bool(payInZero),\n ],\n })\n const executedCall = this.context.simpleMessageLib.quoteMoveCall(tx, quoteCall)\n this.context.endpoint.confirmQuoteMoveCall(tx, executedCall)\n const result = await moveView(this.client, tx)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const bytes = new Uint8Array(result?.returnValues![0][0]!)\n const messageFee = MessagingFeeBcs.parse(bytes)\n return [BigInt(messageFee.native_fee), BigInt(messageFee.zro_fee)]\n }\n\n async send(\n sender: Ed25519Keypair,\n dstEid: EndpointId,\n msgType: number,\n options: Uint8Array,\n sendValue: string,\n nativeFee: string,\n zroFee: string\n ): Promise<SuiTransactionBlockResponse> {\n const tx = new Transaction()\n const [nativeToken] = tx.splitCoins(tx.gas, [tx.pure.u64(nativeFee)])\n const zroToken = this.context.zro.noneOptionMoveCall(tx)\n const incrementCall = tx.moveCall({\n target: `${this.packageId}::counter::increment`,\n typeArguments: [],\n arguments: [\n tx.object(this.objects.counter),\n tx.object(this.objects.endpoint_v2),\n tx.pure.u32(dstEid),\n tx.pure.u8(msgType),\n tx.pure(bcs.vector(bcs.u8()).serialize(options)),\n nativeToken,\n zroToken,\n tx.pure.u64(sendValue),\n tx.pure.address(sender.toSuiAddress()),\n ],\n })\n\n const executedCall = this.context.simpleMessageLib.sendMoveCall(tx, incrementCall)\n this.context.endpoint.confirmSendMoveCall(tx, executedCall)\n return validateTransaction(this.client, sender, tx)\n }\n}\n","import { bcs } from '@mysten/sui/bcs'\nimport { SuiClient } from '@mysten/sui/client'\nimport { Transaction, TransactionResult } from '@mysten/sui/transactions'\n\nimport { Context } from '../types'\n\nexport class Utils {\n public packageId: string\n public readonly client: SuiClient\n private readonly context: Context\n\n constructor(packageId: string, client: SuiClient, context: Context) {\n this.packageId = packageId\n this.client = client\n this.context = context\n\n // Validate that package ID is not empty\n if (this.packageId.trim() === '') {\n throw new Error('utils package ID cannot be empty')\n }\n }\n\n // === bytes32 Functions ===\n\n fromBytesMoveCall(tx: Transaction, peer: Uint8Array): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::from_bytes`,\n typeArguments: [],\n arguments: [tx.pure(bcs.vector(bcs.u8()).serialize(peer))],\n })\n }\n\n fromBytesLeftPaddedMoveCall(tx: Transaction, bytes: Uint8Array): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::from_bytes_left_padded`,\n typeArguments: [],\n arguments: [tx.pure(bcs.vector(bcs.u8()).serialize(bytes))],\n })\n }\n\n fromBytesRightPaddedMoveCall(tx: Transaction, bytes: Uint8Array): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::from_bytes_right_padded`,\n typeArguments: [],\n arguments: [tx.pure(bcs.vector(bcs.u8()).serialize(bytes))],\n })\n }\n\n fromAddressMoveCall(tx: Transaction, address: string): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::from_address`,\n typeArguments: [],\n arguments: [tx.pure.address(address)],\n })\n }\n\n fromIdMoveCall(tx: Transaction, id: string): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::from_id`,\n typeArguments: [],\n arguments: [tx.object(id)],\n })\n }\n\n zeroBytes32MoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::zero_bytes32`,\n typeArguments: [],\n arguments: [],\n })\n }\n\n ffBytes32MoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::ff_bytes32`,\n typeArguments: [],\n arguments: [],\n })\n }\n\n isZeroMoveCall(tx: Transaction, bytes32: string): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::is_zero`,\n typeArguments: [],\n arguments: [tx.object(bytes32)],\n })\n }\n\n isFfMoveCall(tx: Transaction, bytes32: string): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::is_ff`,\n typeArguments: [],\n arguments: [tx.object(bytes32)],\n })\n }\n\n toBytesMoveCall(tx: Transaction, bytes32: string): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::to_bytes`,\n typeArguments: [],\n arguments: [tx.object(bytes32)],\n })\n }\n\n toAddressMoveCall(tx: Transaction, bytes32: string): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::to_address`,\n typeArguments: [],\n arguments: [tx.object(bytes32)],\n })\n }\n\n toIdMoveCall(tx: Transaction, bytes32: string): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::bytes32::to_id`,\n typeArguments: [],\n arguments: [tx.object(bytes32)],\n })\n }\n\n // === Buffer Functions ===\n\n newReaderMoveCall(tx: Transaction, buffer: Uint8Array): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::new_reader`,\n typeArguments: [],\n arguments: [tx.pure(bcs.vector(bcs.u8()).serialize(buffer))],\n })\n }\n\n newWriterMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::new_writer`,\n typeArguments: [],\n arguments: [],\n })\n }\n\n createWriterMoveCall(tx: Transaction, buffer: Uint8Array): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::create_writer`,\n typeArguments: [],\n arguments: [tx.pure(bcs.vector(bcs.u8()).serialize(buffer))],\n })\n }\n\n // Reader functions\n positionMoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::position`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n remainingLengthMoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::remaining_length`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n skipMoveCall(tx: Transaction, reader: TransactionResult, len: number): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::skip`,\n typeArguments: [],\n arguments: [reader, tx.pure.u64(len)],\n })\n }\n\n setPositionMoveCall(tx: Transaction, reader: TransactionResult, position: number): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::set_position`,\n typeArguments: [],\n arguments: [reader, tx.pure.u64(position)],\n })\n }\n\n rewindMoveCall(tx: Transaction, reader: TransactionResult, len: number): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::rewind`,\n typeArguments: [],\n arguments: [reader, tx.pure.u64(len)],\n })\n }\n\n readU8MoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::read_u8`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n readU16MoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::read_u16`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n readU32MoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::read_u32`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n readU64MoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::read_u64`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n readU128MoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::read_u128`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n readU256MoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::read_u256`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n readBytes32MoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::read_bytes32`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n readAddressMoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::read_address`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n readFixedLenBytesMoveCall(tx: Transaction, reader: TransactionResult, len: number): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::read_fixed_len_bytes`,\n typeArguments: [],\n arguments: [reader, tx.pure.u64(len)],\n })\n }\n\n readBytesUntilEndMoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::read_bytes_until_end`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n readerBufferLengthMoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::reader_buffer_length`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n readerToBytesMoveCall(tx: Transaction, reader: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::reader_to_bytes`,\n typeArguments: [],\n arguments: [reader],\n })\n }\n\n // Writer functions\n writerBufferLengthMoveCall(tx: Transaction, writer: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::writer_buffer_length`,\n typeArguments: [],\n arguments: [writer],\n })\n }\n\n writerToBytesMoveCall(tx: Transaction, writer: TransactionResult): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::writer_to_bytes`,\n typeArguments: [],\n arguments: [writer],\n })\n }\n\n writeU8MoveCall(tx: Transaction, writer: TransactionResult, value: number): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::write_u8`,\n typeArguments: [],\n arguments: [writer, tx.pure.u8(value)],\n })\n }\n\n writeU16MoveCall(tx: Transaction, writer: TransactionResult, value: number): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::write_u16`,\n typeArguments: [],\n arguments: [writer, tx.pure.u16(value)],\n })\n }\n\n writeU32MoveCall(tx: Transaction, writer: TransactionResult, value: number): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::write_u32`,\n typeArguments: [],\n arguments: [writer, tx.pure.u32(value)],\n })\n }\n\n writeU64MoveCall(tx: Transaction, writer: TransactionResult, value: number): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::write_u64`,\n typeArguments: [],\n arguments: [writer, tx.pure.u64(value)],\n })\n }\n\n writeU128MoveCall(tx: Transaction, writer: TransactionResult, value: string): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::write_u128`,\n typeArguments: [],\n arguments: [writer, tx.pure.u128(value)],\n })\n }\n\n writeU256MoveCall(tx: Transaction, writer: TransactionResult, value: string): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::write_u256`,\n typeArguments: [],\n arguments: [writer, tx.pure.u256(value)],\n })\n }\n\n writeBytesMoveCall(tx: Transaction, writer: TransactionResult, bytes: Uint8Array): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::write_bytes`,\n typeArguments: [],\n arguments: [writer, tx.pure(bcs.vector(bcs.u8()).serialize(bytes))],\n })\n }\n\n writeAddressMoveCall(tx: Transaction, writer: TransactionResult, address: string): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::write_address`,\n typeArguments: [],\n arguments: [writer, tx.pure.address(address)],\n })\n }\n\n writeBytes32MoveCall(tx: Transaction, writer: TransactionResult, bytes32: string): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::buffer::write_bytes32`,\n typeArguments: [],\n arguments: [writer, tx.object(bytes32)],\n })\n }\n\n // === Hash Functions ===\n\n blake2b256MoveCall(tx: Transaction, bytes: Uint8Array): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::hash::blake2b256`,\n typeArguments: [],\n arguments: [tx.pure(bcs.vector(bcs.u8()).serialize(bytes))],\n })\n }\n\n keccak256MoveCall(tx: Transaction, bytes: Uint8Array): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::hash::keccak256`,\n typeArguments: [],\n arguments: [tx.pure(bcs.vector(bcs.u8()).serialize(bytes))],\n })\n }\n}\n","import { SuiClient } from '@mysten/sui/client'\nimport { Transaction, TransactionResult } from '@mysten/sui/transactions'\n\nimport { Context } from '../types'\n\nexport class Zro {\n public packageId: string\n public readonly client: SuiClient\n\n constructor(\n packageId: string,\n client: SuiClient,\n private readonly context: Context\n ) {\n this.packageId = packageId\n this.client = client\n }\n\n zeroOptionMoveCall(tx: Transaction): TransactionResult {\n const zroToken = tx.moveCall({\n target: `0x2::coin::zero`,\n typeArguments: [`${this.packageId}::zro::ZRO`],\n })\n const zroOption = tx.moveCall({\n target: `0x1::option::some`,\n typeArguments: [`0x2::coin::Coin<${this.packageId}::zro::ZRO>`],\n arguments: [zroToken],\n })\n return zroOption\n }\n\n noneOptionMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: `0x1::option::none`,\n typeArguments: [`0x2::coin::Coin<${this.packageId}::zro::ZRO>`],\n })\n }\n}\n","import { SuiClient } from '@mysten/sui/client'\n\nimport { Provider } from '@layerzerolabs/lz-core'\nimport { SuiProvider } from '@layerzerolabs/lz-corekit-sui'\nimport { Chain, Stage, chainAndStageToNetwork } from '@layerzerolabs/lz-definitions'\n\nimport { Counter } from './modules/counter'\nimport { Endpoint } from './modules/endpoint'\nimport { SimpleMessageLib } from './modules/simple-message-lib'\nimport { Utils } from './modules/utils'\nimport { Zro } from './modules/zro'\nimport { Context, ObjectOptions, PackageOptions } from './types'\nimport { readAddressFromDeployment } from './utils'\n\n/**\n * Asserts that the given provider is an instance of SuiProvider.\n *\n * @param {unknown} provider - The provider to check.\n * @throws {Error} If the provider is not an instance of SuiProvider.\n */\nfunction assertSuiProvider(provider: Provider): asserts provider is SuiProvider {\n if (!(provider instanceof SuiProvider)) {\n throw new Error('Invalid provider')\n }\n}\n\n/**\n * Creates an instance of the SDK from the given provider.\n *\n * @param {unknown} provider - The provider of the current chain.\n * @param {Stage} [stage] - The stage of the SDK. {@link Stage}\n * @returns {SDK} The initialized SDK instance.\n */\nexport function getSDKFromProvider(provider: Provider, stage?: Stage): SDK {\n assertSuiProvider(provider)\n const client = provider.native\n\n return new SDK({\n client,\n stage,\n })\n}\n\n/**\n * Options for initializing the SDK.\n */\nexport interface SdkOptions {\n /**\n * The chain for the SDK (optional).\n * default value is Chain.SUI\n */\n chain?: Chain\n /**\n * The Sui client for the SDK.\n */\n client: SuiClient\n\n /**\n * The stage of the SDK (optional).\n * default value is Stage.SANDBOX\n */\n stage?: Stage\n\n /**\n * The package options for the SDK.\n */\n packages?: Partial<PackageOptions>\n\n /**\n * The object options for the SDK.\n */\n objects?: Partial<ObjectOptions>\n}\n\n/**\n * The SDK class provides methods to interact with LayerZero on Sui.\n * It initializes all modules at once and provides access to them.\n */\nexport class SDK {\n chain: Chain\n stage: Stage\n client: SuiClient\n public readonly packages: PackageOptions\n public readonly objects: ObjectOptions\n\n // Module instances\n endpoint: Endpoint\n counter: Counter\n simpleMessageLib: SimpleMessageLib\n utils: Utils\n zro: Zro\n\n /**\n * Creates an instance of the SDK.\n *\n * @param {SdkOptions} options - The SDK options.\n */\n constructor(options: SdkOptions) {\n this.chain = options.chain ?? Chain.PLACEHOLDER0\n this.stage = options.stage ?? Stage.SANDBOX\n this.client = options.client\n const network = chainAndStageToNetwork(this.chain, this.stage, this.stage === Stage.SANDBOX)\n const defaultPackages = {\n utils: readAddressFromDeployment(network, 'utils')!,\n endpoint_v2: readAddressFromDeployment(network, 'endpoint_v2')!,\n counter_v2: readAddressFromDeployment(network, 'counter')!,\n simple_message_lib: readAddressFromDeployment(network, 'simple_message_lib')!,\n zro: readAddressFromDeployment(network, 'zro')!,\n }\n this.packages = {\n ...defaultPackages,\n ...options.packages,\n }\n const defaultObjects = {\n endpoint_v2: readAddressFromDeployment(network, 'object-EndpointV2')!,\n simple_message_lib: readAddressFromDeployment(network, 'object-SimpleMessageLib')!,\n uln_302: readAddressFromDeployment(network, 'object-ULN302')!,\n blocked_message_lib: readAddressFromDeployment(network, 'object-BlockedMessageLib')!,\n discovery: readAddressFromDeployment(network, 'object-Discovery')!,\n counter: readAddressFromDeployment(network, 'object-Counter')!,\n counter_admin_cap: readAddressFromDeployment(network, 'object-CounterAdminCap')!,\n endpoint_admin_cap: readAddressFromDeployment(network, 'object-EndpointV2AdminCap')!,\n oapp_core: readAddressFromDeployment(network, 'object-OAppCore')!,\n }\n this.objects = {\n ...defaultObjects,\n ...options.objects,\n }\n const context: Context = {} as unknown as Context\n // Initialize all modules\n this.endpoint = new Endpoint(this.packages.endpoint_v2, this.client, this.objects, context)\n\n this.counter = new Counter(this.packages.counter_v2, this.packages.utils, this.client, this.objects, context)\n\n this.simpleMessageLib = new SimpleMessageLib(\n this.packages.simple_message_lib,\n this.client,\n this.objects,\n context\n )\n\n this.utils = new Utils(this.packages.utils, this.client, context)\n\n this.zro = new Zro(this.packages.zro, this.client, context)\n\n context.endpoint = this.endpoint\n context.counter = this.counter\n context.simpleMessageLib = this.simpleMessageLib\n context.utils = this.utils\n context.zro = this.zro\n }\n\n /**\n * Gets the Sui client.\n *\n * @returns {SuiClient} The Sui client.\n */\n getSuiClient(): SuiClient {\n return this.client\n }\n\n /**\n * Gets the chain.\n *\n * @returns {Chain} The chain.\n */\n getChain(): Chain {\n return this.chain\n }\n\n /**\n * Gets the stage.\n *\n * @returns {Stage} The stage.\n */\n getStage(): Stage {\n return this.stage\n }\n\n /**\n * Gets the package options.\n *\n * @returns {PackageOptions} The package options.\n */\n getPackages(): PackageOptions {\n return this.packages\n }\n\n /**\n * Gets the object options.\n *\n * @returns {ObjectOptions} The object options.\n */\n getObjects(): ObjectOptions {\n return this.objects\n }\n\n /**\n * Gets the endpoint module.\n *\n * @returns {Endpoint} The endpoint module.\n */\n getEndpoint(): Endpoint {\n return this.endpoint\n }\n\n /**\n * Gets the counter module.\n *\n * @returns {Counter} The counter module.\n */\n getCounter(): Counter {\n return this.counter\n }\n\n /**\n * Gets the simple message library module.\n *\n * @returns {SimpleMessageLib} The simple message library module.\n */\n getSimpleMessageLib(): SimpleMessageLib {\n return this.simpleMessageLib\n }\n\n /**\n * Gets the utils module.\n *\n * @returns {Utils} The utils module.\n */\n getUtils(): Utils {\n return this.utils\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/lz-sui-sdk-v2",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.75",
|
|
4
4
|
"license": "BUSL-1.1",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -33,12 +33,15 @@
|
|
|
33
33
|
"typecheck": "tsc --noEmit"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
+
"@layerzerolabs/lz-core": "^3.0.110",
|
|
37
|
+
"@layerzerolabs/lz-corekit-sui": "^3.0.95",
|
|
38
|
+
"@layerzerolabs/lz-definitions": "^3.0.110",
|
|
39
|
+
"@mysten/sui": "^1.33.0",
|
|
36
40
|
"tiny-invariant": "^1.3.1"
|
|
37
41
|
},
|
|
38
42
|
"devDependencies": {
|
|
39
|
-
"@layerzerolabs/tsup-config-next": "^3.0.
|
|
40
|
-
"@layerzerolabs/typescript-config-next": "^3.0.
|
|
41
|
-
"@mysten/sui": "^1.33.0",
|
|
43
|
+
"@layerzerolabs/tsup-config-next": "^3.0.110",
|
|
44
|
+
"@layerzerolabs/typescript-config-next": "^3.0.110",
|
|
42
45
|
"@types/chai": "^4.3.11",
|
|
43
46
|
"@types/chai-as-promised": "^7.1.0",
|
|
44
47
|
"@types/mocha": "^10.0.6",
|
package/src/bcs/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './messaging-fee'
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { bcs } from '@mysten/sui/bcs'
|
|
2
|
+
import { SuiClient, SuiTransactionBlockResponse } from '@mysten/sui/client'
|
|
3
|
+
import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'
|
|
4
|
+
import { Transaction } from '@mysten/sui/transactions'
|
|
5
|
+
|
|
6
|
+
import { EndpointId } from '@layerzerolabs/lz-definitions'
|
|
7
|
+
|
|
8
|
+
import { MessagingFeeBcs } from '../bcs'
|
|
9
|
+
import { Context, ObjectOptions } from '../types'
|
|
10
|
+
import { moveView, validateTransaction } from '../utils'
|
|
11
|
+
|
|
12
|
+
export class Counter {
|
|
13
|
+
public packageId: string
|
|
14
|
+
public utilsPkgId: string
|
|
15
|
+
public readonly client: SuiClient
|
|
16
|
+
private readonly objects: Pick<
|
|
17
|
+
ObjectOptions,
|
|
18
|
+
'counter' | 'counter_admin_cap' | 'endpoint_v2' | 'simple_message_lib'
|
|
19
|
+
>
|
|
20
|
+
|
|
21
|
+
constructor(
|
|
22
|
+
packageId: string,
|
|
23
|
+
utilsPkgId: string,
|
|
24
|
+
client: SuiClient,
|
|
25
|
+
objects: Pick<ObjectOptions, 'counter' | 'counter_admin_cap' | 'endpoint_v2' | 'simple_message_lib'>,
|
|
26
|
+
private readonly context: Context
|
|
27
|
+
) {
|
|
28
|
+
this.packageId = packageId
|
|
29
|
+
this.utilsPkgId = utilsPkgId
|
|
30
|
+
this.client = client
|
|
31
|
+
this.objects = objects
|
|
32
|
+
|
|
33
|
+
// Validate that required objects are not empty strings
|
|
34
|
+
// if (this.objects.counter.trim() === '') {
|
|
35
|
+
// throw new Error('counter object cannot be empty')
|
|
36
|
+
// }
|
|
37
|
+
// if (this.objects.counter_admin_cap.trim() === '') {
|
|
38
|
+
// throw new Error('counter_admin_cap object cannot be empty')
|
|
39
|
+
// }
|
|
40
|
+
// if (this.objects.endpoint_v2.trim() === '') {
|
|
41
|
+
// throw new Error('endpoint_v2 object cannot be empty')
|
|
42
|
+
// }
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async getPeer(dstEid: number): Promise<string> {
|
|
46
|
+
const tx = new Transaction()
|
|
47
|
+
const peerBytes32 = tx.moveCall({
|
|
48
|
+
target: `${this.packageId}::counter::get_peer`,
|
|
49
|
+
typeArguments: [],
|
|
50
|
+
arguments: [tx.object(this.objects.counter), tx.pure.u32(dstEid)],
|
|
51
|
+
})
|
|
52
|
+
tx.moveCall({
|
|
53
|
+
target: `${this.utilsPkgId}::bytes32::to_address`,
|
|
54
|
+
typeArguments: [],
|
|
55
|
+
arguments: [peerBytes32],
|
|
56
|
+
})
|
|
57
|
+
try {
|
|
58
|
+
const result = await moveView(this.client, tx)
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
60
|
+
const bytes = new Uint8Array(result?.returnValues![0][0]!)
|
|
61
|
+
return bcs.Address.parse(bytes)
|
|
62
|
+
} catch (e) {
|
|
63
|
+
//TODO handle error properly
|
|
64
|
+
return ''
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async getCount(): Promise<number> {
|
|
69
|
+
const tx = new Transaction()
|
|
70
|
+
tx.moveCall({
|
|
71
|
+
target: `${this.packageId}::counter::get_count`,
|
|
72
|
+
typeArguments: [],
|
|
73
|
+
arguments: [tx.object(this.objects.counter)],
|
|
74
|
+
})
|
|
75
|
+
try {
|
|
76
|
+
const result = await moveView(this.client, tx)
|
|
77
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
78
|
+
const bytes = new Uint8Array(result?.returnValues![0][0]!)
|
|
79
|
+
const counterStr = bcs.U64.parse(bytes)
|
|
80
|
+
return Number(counterStr)
|
|
81
|
+
} catch (e) {
|
|
82
|
+
//TODO handle error properly
|
|
83
|
+
return 0
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
async getComposedCount(): Promise<number> {
|
|
88
|
+
const tx = new Transaction()
|
|
89
|
+
tx.moveCall({
|
|
90
|
+
target: `${this.packageId}::counter::get_composed_count`,
|
|
91
|
+
typeArguments: [],
|
|
92
|
+
arguments: [tx.object(this.objects.counter)],
|
|
93
|
+
})
|
|
94
|
+
try {
|
|
95
|
+
const result = await moveView(this.client, tx)
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
97
|
+
const bytes = new Uint8Array(result?.returnValues![0][0]!)
|
|
98
|
+
const counterStr = bcs.U64.parse(bytes)
|
|
99
|
+
return Number(counterStr)
|
|
100
|
+
} catch (e) {
|
|
101
|
+
//TODO handle error properly
|
|
102
|
+
return 0
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
populateSetPeerTransaction(dstEid: number, peer: Uint8Array): Transaction {
|
|
107
|
+
const tx = new Transaction()
|
|
108
|
+
const peerBytes32 = tx.moveCall({
|
|
109
|
+
target: `${this.utilsPkgId}::bytes32::from_bytes`,
|
|
110
|
+
typeArguments: [],
|
|
111
|
+
arguments: [tx.pure(bcs.vector(bcs.u8()).serialize(peer))],
|
|
112
|
+
})
|
|
113
|
+
tx.moveCall({
|
|
114
|
+
target: `${this.packageId}::counter::set_peer`,
|
|
115
|
+
typeArguments: [],
|
|
116
|
+
arguments: [
|
|
117
|
+
tx.object(this.objects.counter),
|
|
118
|
+
tx.object(this.objects.counter_admin_cap),
|
|
119
|
+
tx.object(this.objects.endpoint_v2),
|
|
120
|
+
tx.pure.u32(dstEid),
|
|
121
|
+
peerBytes32,
|
|
122
|
+
],
|
|
123
|
+
})
|
|
124
|
+
return tx
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Builds a transaction for calling the lz_receive function on the counter contract.
|
|
129
|
+
*
|
|
130
|
+
* @param srcEid - The source endpoint ID
|
|
131
|
+
* @param sender - The sender address as Bytes32
|
|
132
|
+
* @param nonce - The nonce
|
|
133
|
+
* @param guid - The GUID as Bytes32
|
|
134
|
+
* @param message - The message as vector<u8>
|
|
135
|
+
* @param value - The value to be sent (Coin<SUI>)
|
|
136
|
+
* @param extraData - Extra data as vector<u8>
|
|
137
|
+
* @returns A Transaction object ready to be executed
|
|
138
|
+
*/
|
|
139
|
+
populateLzReceiveTransaction(
|
|
140
|
+
srcEid: number,
|
|
141
|
+
sender: Uint8Array,
|
|
142
|
+
nonce: bigint,
|
|
143
|
+
guid: Uint8Array,
|
|
144
|
+
message: Uint8Array,
|
|
145
|
+
value: bigint,
|
|
146
|
+
extraData: Uint8Array = new Uint8Array()
|
|
147
|
+
): Transaction {
|
|
148
|
+
const tx = new Transaction()
|
|
149
|
+
|
|
150
|
+
// Convert sender to Bytes32 format
|
|
151
|
+
const senderBytes32 = this.context.utils.fromBytesMoveCall(tx, sender)
|
|
152
|
+
|
|
153
|
+
// Convert guid to Bytes32 format
|
|
154
|
+
const guidBytes32 = this.context.utils.fromBytesMoveCall(tx, guid)
|
|
155
|
+
|
|
156
|
+
// Split the SUI coin to get the required value
|
|
157
|
+
const coin = tx.splitCoins(tx.gas, [tx.pure.u64(value)])
|
|
158
|
+
|
|
159
|
+
// Call the lz_receive function
|
|
160
|
+
tx.moveCall({
|
|
161
|
+
target: `${this.packageId}::counter::lz_receive`,
|
|
162
|
+
typeArguments: [],
|
|
163
|
+
arguments: [
|
|
164
|
+
tx.object(this.objects.counter),
|
|
165
|
+
tx.object(this.objects.endpoint_v2),
|
|
166
|
+
tx.pure.u32(srcEid),
|
|
167
|
+
senderBytes32,
|
|
168
|
+
tx.pure.u64(nonce),
|
|
169
|
+
guidBytes32,
|
|
170
|
+
tx.pure(bcs.vector(bcs.u8()).serialize(message)),
|
|
171
|
+
coin,
|
|
172
|
+
tx.pure(bcs.vector(bcs.u8()).serialize(extraData)),
|
|
173
|
+
],
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
return tx
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
async quote(
|
|
180
|
+
dstEid: EndpointId,
|
|
181
|
+
msgType: number,
|
|
182
|
+
options: Uint8Array,
|
|
183
|
+
payInZero: boolean
|
|
184
|
+
): Promise<[bigint, bigint]> {
|
|
185
|
+
const tx = new Transaction()
|
|
186
|
+
const quoteCall = tx.moveCall({
|
|
187
|
+
target: `${this.packageId}::counter::quote`,
|
|
188
|
+
typeArguments: [],
|
|
189
|
+
arguments: [
|
|
190
|
+
tx.object(this.objects.counter),
|
|
191
|
+
tx.object(this.objects.endpoint_v2),
|
|
192
|
+
tx.pure.u32(dstEid),
|
|
193
|
+
tx.pure.u8(msgType),
|
|
194
|
+
tx.pure(bcs.vector(bcs.u8()).serialize(options)),
|
|
195
|
+
tx.pure.bool(payInZero),
|
|
196
|
+
],
|
|
197
|
+
})
|
|
198
|
+
const executedCall = this.context.simpleMessageLib.quoteMoveCall(tx, quoteCall)
|
|
199
|
+
this.context.endpoint.confirmQuoteMoveCall(tx, executedCall)
|
|
200
|
+
const result = await moveView(this.client, tx)
|
|
201
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
202
|
+
const bytes = new Uint8Array(result?.returnValues![0][0]!)
|
|
203
|
+
const messageFee = MessagingFeeBcs.parse(bytes)
|
|
204
|
+
return [BigInt(messageFee.native_fee), BigInt(messageFee.zro_fee)]
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
async send(
|
|
208
|
+
sender: Ed25519Keypair,
|
|
209
|
+
dstEid: EndpointId,
|
|
210
|
+
msgType: number,
|
|
211
|
+
options: Uint8Array,
|
|
212
|
+
sendValue: string,
|
|
213
|
+
nativeFee: string,
|
|
214
|
+
zroFee: string
|
|
215
|
+
): Promise<SuiTransactionBlockResponse> {
|
|
216
|
+
const tx = new Transaction()
|
|
217
|
+
const [nativeToken] = tx.splitCoins(tx.gas, [tx.pure.u64(nativeFee)])
|
|
218
|
+
const zroToken = this.context.zro.noneOptionMoveCall(tx)
|
|
219
|
+
const incrementCall = tx.moveCall({
|
|
220
|
+
target: `${this.packageId}::counter::increment`,
|
|
221
|
+
typeArguments: [],
|
|
222
|
+
arguments: [
|
|
223
|
+
tx.object(this.objects.counter),
|
|
224
|
+
tx.object(this.objects.endpoint_v2),
|
|
225
|
+
tx.pure.u32(dstEid),
|
|
226
|
+
tx.pure.u8(msgType),
|
|
227
|
+
tx.pure(bcs.vector(bcs.u8()).serialize(options)),
|
|
228
|
+
nativeToken,
|
|
229
|
+
zroToken,
|
|
230
|
+
tx.pure.u64(sendValue),
|
|
231
|
+
tx.pure.address(sender.toSuiAddress()),
|
|
232
|
+
],
|
|
233
|
+
})
|
|
234
|
+
|
|
235
|
+
const executedCall = this.context.simpleMessageLib.sendMoveCall(tx, incrementCall)
|
|
236
|
+
this.context.endpoint.confirmSendMoveCall(tx, executedCall)
|
|
237
|
+
return validateTransaction(this.client, sender, tx)
|
|
238
|
+
}
|
|
239
|
+
}
|