@layerzerolabs/lz-solana-sdk-v2 2.1.23 → 2.1.25

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/pda-deriver.ts","../src/oapp-base.ts","../src/endpoint.ts","../src/generated/endpoint/index.ts","../src/generated/endpoint/accounts/index.ts","../src/generated/endpoint/accounts/EndpointSettings.ts","../src/generated/endpoint/accounts/MessageLibAuthority.ts","../src/generated/endpoint/accounts/MessageState.ts","../src/generated/endpoint/accounts/Nonce.ts","../src/generated/endpoint/accounts/PendingInboundNonce.ts","../src/generated/endpoint/accounts/ReceiveLibraryConfig.ts","../src/generated/endpoint/types/ReceiveLibraryTimeout.ts","../src/generated/endpoint/accounts/SendLibraryConfig.ts","../src/generated/endpoint/errors/index.ts","../src/generated/endpoint/instructions/index.ts","../src/generated/endpoint/instructions/clear.ts","../src/generated/endpoint/types/ClearParams.ts","../src/generated/endpoint/instructions/clearComposedMessage.ts","../src/generated/endpoint/types/ClearComposedMessageParams.ts","../src/generated/endpoint/instructions/deliver.ts","../src/generated/endpoint/types/DeliverParams.ts","../src/generated/endpoint/instructions/deliverComposedMessage.ts","../src/generated/endpoint/types/DeliverComposedMessageParams.ts","../src/generated/endpoint/instructions/initConfig.ts","../src/generated/endpoint/types/InitConfigParams.ts","../src/generated/endpoint/instructions/initDefaultReceiveLibrary.ts","../src/generated/endpoint/types/InitDefaultReceiveLibraryParams.ts","../src/generated/endpoint/instructions/initDefaultSendLibrary.ts","../src/generated/endpoint/types/InitDefaultSendLibraryParams.ts","../src/generated/endpoint/instructions/initEndpoint.ts","../src/generated/endpoint/types/InitEndpointParams.ts","../src/generated/endpoint/instructions/initNonce.ts","../src/generated/endpoint/types/InitNonceParams.ts","../src/generated/endpoint/instructions/initReceiveLibrary.ts","../src/generated/endpoint/types/InitReceiveLibraryParams.ts","../src/generated/endpoint/instructions/initSendLibrary.ts","../src/generated/endpoint/types/InitSendLibraryParams.ts","../src/generated/endpoint/instructions/log.ts","../src/generated/endpoint/types/EndpointEvent.ts","../src/generated/endpoint/instructions/quote.ts","../src/generated/endpoint/types/QuoteParams.ts","../src/generated/endpoint/instructions/registerLibrary.ts","../src/generated/endpoint/instructions/resetConfig.ts","../src/generated/endpoint/types/ResetConfigParams.ts","../src/generated/endpoint/instructions/send.ts","../src/generated/endpoint/types/SendParams.ts","../src/generated/endpoint/instructions/setConfig.ts","../src/generated/endpoint/types/SetConfigParams.ts","../src/generated/endpoint/instructions/setDefaultReceiveLibrary.ts","../src/generated/endpoint/types/SetDefaultReceiveLibraryParams.ts","../src/generated/endpoint/instructions/setDefaultReceiveLibraryTimeout.ts","../src/generated/endpoint/types/SetDefaultReceiveLibraryTimeoutParams.ts","../src/generated/endpoint/instructions/setDefaultSendLibrary.ts","../src/generated/endpoint/types/SetDefaultSendLibraryParams.ts","../src/generated/endpoint/instructions/setLayerzeroToken.ts","../src/generated/endpoint/types/SetLayerzeroTokenParams.ts","../src/generated/endpoint/instructions/setReceiveLibrary.ts","../src/generated/endpoint/types/SetReceiveLibraryParams.ts","../src/generated/endpoint/instructions/setReceiveLibraryTimeout.ts","../src/generated/endpoint/types/SetReceiveLibraryTimeoutParams.ts","../src/generated/endpoint/instructions/setSendLibrary.ts","../src/generated/endpoint/types/SetSendLibraryParams.ts","../src/generated/endpoint/instructions/skip.ts","../src/generated/endpoint/types/SkipParams.ts","../src/generated/endpoint/instructions/snapshotConfig.ts","../src/generated/endpoint/types/SnapshotConfigParams.ts","../src/generated/endpoint/instructions/transferAdmin.ts","../src/generated/endpoint/types/TransferAdminParams.ts","../src/generated/endpoint/types/index.ts","../src/generated/endpoint/types/MessageLibQuoteParams.ts","../src/generated/endpoint/types/PacketForQuote.ts","../src/generated/endpoint/types/MessageLibResetConfigParams.ts","../src/generated/endpoint/types/MessageLibSendParams.ts","../src/generated/endpoint/types/Packet.ts","../src/generated/endpoint/types/MessageLibSetConfigParams.ts","../src/generated/endpoint/types/MessageLibSnapshotConfigParams.ts","../src/generated/endpoint/types/MessagingFee.ts","../src/generated/endpoint/types/MessagingReceipt.ts","../src/simple-message-lib.ts","../src/generated/simple_messagelib/accounts/index.ts","../src/generated/simple_messagelib/accounts/MessageLib.ts","../src/generated/simple_messagelib/instructions/index.ts","../src/generated/simple_messagelib/instructions/initMessageLib.ts","../src/generated/simple_messagelib/types/InitMessageLibParams.ts","../src/generated/simple_messagelib/instructions/quote.ts","../src/generated/simple_messagelib/types/MessageLibQuoteParams.ts","../src/generated/simple_messagelib/types/PacketForQuote.ts","../src/generated/simple_messagelib/instructions/send.ts","../src/generated/simple_messagelib/types/MessageLibSendParams.ts","../src/generated/simple_messagelib/types/Packet.ts","../src/generated/simple_messagelib/instructions/setFee.ts","../src/generated/simple_messagelib/types/SetFeeParams.ts","../src/generated/simple_messagelib/instructions/setWlCaller.ts","../src/generated/simple_messagelib/types/SetWlCallerParams.ts","../src/generated/simple_messagelib/instructions/transferAdmin.ts","../src/generated/simple_messagelib/types/TransferAdminParams.ts","../src/generated/simple_messagelib/instructions/validatePacket.ts","../src/generated/simple_messagelib/types/ValidatePacketParams.ts","../src/generated/simple_messagelib/types/index.ts","../src/generated/simple_messagelib/types/InitConfigParams.ts","../src/generated/simple_messagelib/types/MessageLibResetConfigParams.ts","../src/generated/simple_messagelib/types/MessageLibSetConfigParams.ts","../src/generated/simple_messagelib/types/MessageLibSnapshotConfigParams.ts","../src/generated/simple_messagelib/types/MessagingFee.ts","../src/generated/simple_messagelib/types/MessagingReceipt.ts","../src/uln.ts","../src/generated/uln/accounts/index.ts","../src/generated/uln/accounts/Confirmations.ts","../src/generated/uln/accounts/DefaultOptions.ts","../src/generated/uln/accounts/UlnConfigStore.ts","../src/generated/uln/accounts/UlnSettings.ts","../src/generated/uln/types/Treasury.ts","../src/generated/uln/types/LzTokenTreasury.ts","../src/generated/uln/accounts/WorkerConfig.ts","../src/generated/uln/types/WorkerId.ts","../src/generated/uln/types/Acl.ts","../src/generated/uln/types/PriceFeed.ts","../src/generated/uln/types/Price.ts","../src/generated/uln/types/ArbitrumPriceExt.ts","../src/generated/uln/types/WorkerExtConfig.ts","../src/generated/uln/types/ExecutorDstConfig.ts","../src/generated/uln/types/OracleDstConfig.ts","../src/generated/uln/instructions/index.ts","../src/generated/uln/instructions/deliver.ts","../src/generated/uln/types/DeliverParams.ts","../src/generated/uln/instructions/initConfig.ts","../src/generated/uln/types/InitConfigParams.ts","../src/generated/uln/instructions/initDefaultOptions.ts","../src/generated/uln/types/InitDefaultOptionsParams.ts","../src/generated/uln/instructions/initDefaultUlnConfig.ts","../src/generated/uln/types/InitDefaultUlnConfigParams.ts","../src/generated/uln/types/UlnConfig.ts","../src/generated/uln/instructions/initUln.ts","../src/generated/uln/types/InitUlnParams.ts","../src/generated/uln/instructions/log.ts","../src/generated/uln/types/UlnEvent.ts","../src/generated/uln/instructions/quote.ts","../src/generated/uln/types/MessageLibQuoteParams.ts","../src/generated/uln/types/PacketForQuote.ts","../src/generated/uln/instructions/registerWorker.ts","../src/generated/uln/types/RegisterWorkerParams.ts","../src/generated/uln/instructions/resetConfig.ts","../src/generated/uln/types/MessageLibResetConfigParams.ts","../src/generated/uln/instructions/send.ts","../src/generated/uln/types/MessageLibSendParams.ts","../src/generated/uln/types/Packet.ts","../src/generated/uln/instructions/sendWithLzToken.ts","../src/generated/uln/instructions/setAdmin.ts","../src/generated/uln/types/SetAdminParams.ts","../src/generated/uln/instructions/setAllowlist.ts","../src/generated/uln/types/SetAllowlistParams.ts","../src/generated/uln/instructions/setConfig.ts","../src/generated/uln/types/MessageLibSetConfigParams.ts","../src/generated/uln/instructions/setDefaultMultiplierBps.ts","../src/generated/uln/types/SetDefaultMultiplierBpsParams.ts","../src/generated/uln/instructions/setDefaultOptions.ts","../src/generated/uln/types/SetDefaultOptionsParams.ts","../src/generated/uln/instructions/setDefaultUlnConfig.ts","../src/generated/uln/types/SetDefaultUlnConfigParams.ts","../src/generated/uln/instructions/setDenylist.ts","../src/generated/uln/types/SetDenylistParams.ts","../src/generated/uln/instructions/setDstConfig.ts","../src/generated/uln/types/SetDstConfigParams.ts","../src/generated/uln/types/DstConfig.ts","../src/generated/uln/instructions/setPaused.ts","../src/generated/uln/types/SetPausedParams.ts","../src/generated/uln/instructions/setPrice.ts","../src/generated/uln/types/SetPriceParams.ts","../src/generated/uln/types/PriceParams.ts","../src/generated/uln/instructions/setQuorum.ts","../src/generated/uln/types/SetQuorumParams.ts","../src/generated/uln/instructions/setTreasury.ts","../src/generated/uln/types/SetTreasuryParams.ts","../src/generated/uln/instructions/sign.ts","../src/generated/uln/types/SignParams.ts","../src/generated/uln/instructions/snapshotConfig.ts","../src/generated/uln/types/MessageLibSnapshotConfigParams.ts","../src/generated/uln/instructions/transferAdmin.ts","../src/generated/uln/types/TransferAdminParams.ts","../src/generated/uln/instructions/withdrawFee.ts","../src/generated/uln/types/WithdrawFeeParams.ts","../src/generated/uln/types/index.ts","../src/generated/uln/types/MessagingFee.ts","../src/generated/uln/types/MessagingReceipt.ts","../src/utility.ts","../src/config.ts","../src/deployment.ts","../src/generated/blocked_messagelib/index.ts","../src/generated/blocked_messagelib/accounts/MessageLib.ts","../src/generated/blocked_messagelib/accounts/index.ts","../src/generated/blocked_messagelib/instructions/initMessageLib.ts","../idl/endpoint.json","../src/index.ts"],"names":["BN","PublicKey","web3","BeetArgsStruct","FixableBeetArgsStruct","array","bool","bytes","u32","u64","u8","uniformFixedSizeArray","beetSolana","TransactionInstruction","TransactionMessage","VersionedTransaction","beet","oappIDPDA","messageLibInfo","timeout","MessageType","accounts_exports","instructions_exports","types_exports","PacketV1Codec","accountProviders","createQuoteInstruction","createSendInstruction","createTransferAdminInstruction","quoteInstructionDiscriminator","quoteStruct","sendInstructionDiscriminator","sendStruct","transferAdminInstructionDiscriminator","transferAdminStruct","packetForQuoteBeet","messageLibQuoteParamsBeet","packetBeet","messageLibSendParamsBeet","transferAdminParamsBeet","initConfigParamsBeet","messageLibResetConfigParamsBeet","messageLibSetConfigParamsBeet","messageLibSnapshotConfigParamsBeet","messagingFeeBeet","messagingReceiptBeet","TOKEN_PROGRAM_ID","WorkerId","createDeliverInstruction","createInitConfigInstruction","createLogInstruction","createResetConfigInstruction","createSetConfigInstruction","createSnapshotConfigInstruction","deliverInstructionDiscriminator","deliverStruct","initConfigInstructionDiscriminator","initConfigStruct","logInstructionDiscriminator","logStruct","resetConfigInstructionDiscriminator","resetConfigStruct","setConfigInstructionDiscriminator","setConfigStruct","snapshotConfigInstructionDiscriminator","snapshotConfigStruct","deliverParamsBeet","SetConfigType","SystemProgram","MessageLib","PROGRAM_ADDRESS","PROGRAM_ID","createInitMessageLibInstruction","initMessageLibInstructionDiscriminator","initMessageLibStruct","messageLibBeet","messageLibDiscriminator"],"mappings":"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","sourcesContent":["import { BN } from '@coral-xyz/anchor'\nimport { PublicKey } from '@solana/web3.js'\n\nimport { oappIDPDA } from './oapp-base'\n\nexport const ENDPOINT_SEED = 'Endpoint'\nexport const MESSAGE_LIB_SEED = 'MessageLib'\nexport const SEND_MESSAGE_LIB_SEED = 'SendMessageLib'\nexport const RECEIVE_MESSAGE_LIB_SEED = 'ReceiveMessageLib'\nexport const NONCE_SEED = 'Nonce'\nexport const PENDING_NONCE_SEED = 'PendingNonce'\nexport const PAYLOAD_HASH_SEED = 'PayloadHash'\nexport const COMPOSED_MESSAGE_HASH_SEED = 'ComposedMessageHash'\n\nexport const COUNT_SEED = 'Count'\nexport const REMOTE_SEED = 'Remote'\nexport const LZ_RECEIVE_TYPES_SEED = 'LzReceiveTypes'\nexport const LZ_COMPOSE_TYPES_SEED = 'LzComposeTypes'\n\nexport const ULN_SEED = 'MessageLib'\nexport const ULN_CONFIG_SEED = 'UlnConfig'\nexport const OPTIONS_SEED = 'Options'\nexport const CONFIRMATIONS_SEED = 'Confirmations'\nexport const WORKER_SEED = 'Worker'\n\n/**\n * derive address for endpoint program\n */\nexport class EndpointPDADeriver {\n program: PublicKey\n\n constructor(program: PublicKey) {\n this.program = program\n }\n\n setting(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(ENDPOINT_SEED, 'utf8')], this.program)\n }\n\n defaultSendLibrary(dstEndpointId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEND_MESSAGE_LIB_SEED, 'utf8'),\n // U32 to Uint8Array([0,0,0,0])\n new BN(dstEndpointId).toArrayLike(Buffer, 'be', 4),\n ],\n this.program\n )\n }\n\n sendLibrary(sender: PublicKey, dstEndpointId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEND_MESSAGE_LIB_SEED, 'utf8'),\n sender.toBytes(),\n // U32 to Uint8Array([0,0,0,0])\n new BN(dstEndpointId).toArrayLike(Buffer, 'be', 4),\n ],\n this.program\n )\n }\n\n /**\n * @param messageLibrary PDA(derive by message lib program)\n */\n messageLibraryAuthority(messageLibrary: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, 'utf8'), messageLibrary.toBytes()],\n this.program\n )\n }\n\n defaultReceiveLibrary(srcEndpointId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(RECEIVE_MESSAGE_LIB_SEED, 'utf8'),\n // U32 to Uint8Array([0,0,0,0])\n new BN(srcEndpointId).toArrayLike(Buffer, 'be', 4),\n ],\n this.program\n )\n }\n\n receiveLibrary(receiver: PublicKey, srcEndpointId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(RECEIVE_MESSAGE_LIB_SEED, 'utf8'),\n receiver.toBytes(),\n // U32 to Uint8Array([0,0,0,0])\n new BN(srcEndpointId).toArrayLike(Buffer, 'be', 4),\n ],\n this.program\n )\n }\n\n receiveLibraryTimeout(dstEndpointId: number): [PublicKey, number] {\n // todo: @zzz find the address of receive library timeout config\n // if it is default config, then get the address of default timeout config\n // otherwise, get the address of the custom one\n return [this.program, 0]\n }\n\n defaultMessageLib(): [PublicKey, number] {\n return this.messageLibraryAuthority(PublicKey.default)\n }\n\n blockMessageLib(blockMsgLib: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, 'utf8'), blockMsgLib.toBytes()],\n this.program\n )\n }\n\n /**\n * @param remoteOapp [u8; 32] remote oapp address\n */\n nonce(localOapp: PublicKey, remoteChainId: number, remoteOapp: Uint8Array): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(NONCE_SEED, 'utf8'),\n localOapp.toBytes(),\n // U32 to Uint8Array([0,0,0,0])\n new BN(remoteChainId).toArrayLike(Buffer, 'be', 4),\n remoteOapp,\n ],\n this.program\n )\n }\n\n pendingNonce(receiver: PublicKey, srcEid: number, sender: Uint8Array): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(PENDING_NONCE_SEED, 'utf8'),\n receiver.toBytes(),\n // U32 to Uint8Array([0,0,0,0])\n new BN(srcEid).toArrayLike(Buffer, 'be', 4),\n sender,\n ],\n this.program\n )\n }\n\n /***\n * @param receiver\n * @param srcEid\n * @param sender\n * @param nonce\n * @param payloadHash\n * @srcChainId u32 to Uint8Array([0,0,0,0])\n * @sender [u8; 32] sender Address\n * @nonce u64 to Uint8Array([0,0,0,0,0,0,0,0])\n * @payloadHash [u8; 32]\n */\n payloadHash(\n receiver: PublicKey,\n srcEid: number,\n sender: Uint8Array,\n nonce: number,\n payloadHash: Uint8Array\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(PAYLOAD_HASH_SEED, 'utf8'),\n receiver.toBytes(),\n new BN(srcEid).toArrayLike(Buffer, 'be', 4),\n sender,\n new BN(nonce).toArrayLike(Buffer, 'be', 8),\n payloadHash,\n ],\n this.program\n )\n }\n\n composedMessage(\n receiver: PublicKey,\n guid: Uint8Array,\n composer: PublicKey,\n messageHash: Uint8Array\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(COMPOSED_MESSAGE_HASH_SEED, 'utf8'),\n receiver.toBytes(),\n guid,\n composer.toBytes(),\n messageHash,\n ],\n this.program\n )\n }\n}\n\n/***\n * derive address by message lib program\n */\nexport class MessageLibPDADeriver {\n program: PublicKey\n\n constructor(program: PublicKey) {\n this.program = program\n }\n\n messageLib(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(MESSAGE_LIB_SEED, 'utf8')], this.program)\n }\n}\n\nexport class UlnPDADeriver extends MessageLibPDADeriver {\n constructor(program: PublicKey) {\n super(program)\n }\n\n setting(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(ULN_SEED, 'utf8')], this.program)\n }\n\n config(eid: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(ULN_CONFIG_SEED, 'utf8'), new BN(eid).toArrayLike(Buffer, 'be', 4)],\n this.program\n )\n }\n\n options(eit: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(OPTIONS_SEED, 'utf8'), new BN(eit).toArrayLike(Buffer, 'be', 4)],\n this.program\n )\n }\n\n oappConfig(oappID: PublicKey, eid: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(ULN_CONFIG_SEED, 'utf8'), new BN(eid).toArrayLike(Buffer, 'be', 4), oappID.toBuffer()],\n this.program\n )\n }\n\n workerConfig(worker: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(WORKER_SEED, 'utf8'), worker.toBuffer()], this.program)\n }\n\n confirmations(headerHash: Uint8Array, payloadHash: Uint8Array, oracle: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(CONFIRMATIONS_SEED, 'utf8'), headerHash, payloadHash, oracle.toBytes()],\n this.program\n )\n }\n}\n\n/**\n * derive address by base oapp program\n */\nexport class OAppBasePDADeriver {\n program: PublicKey\n\n constructor(program: PublicKey) {\n this.program = program\n }\n\n remote(dstChainId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(REMOTE_SEED), new BN(dstChainId).toArrayLike(Buffer, 'be', 4)],\n this.program\n )\n }\n\n lzReceiveTypesAccounts(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_RECEIVE_TYPES_SEED, 'utf8')], this.program)\n }\n\n lzComposeTypesAccounts(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_COMPOSE_TYPES_SEED, 'utf8')], this.program)\n }\n}\n\n/**\n * derive address by omnicounter program\n */\nexport class OmniCounterPDADeriver extends OAppBasePDADeriver {\n constructor(\n program: PublicKey,\n public counterId: number\n ) {\n super(program)\n }\n\n count(): [PublicKey, number] {\n // return PublicKey.findProgramAddressSync([Buffer.from(COUNT_SEED, 'utf8')], this.program)\n return oappIDPDA(this.program, COUNT_SEED, this.counterId)\n }\n\n remote(dstChainId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(REMOTE_SEED), this.count()[0].toBytes(), new BN(dstChainId).toArrayLike(Buffer, 'be', 4)],\n this.program\n )\n }\n\n lzReceiveTypesAccounts(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(LZ_RECEIVE_TYPES_SEED, 'utf8'), this.count()[0].toBytes()],\n this.program\n )\n }\n\n lzComposeTypesAccounts(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(LZ_COMPOSE_TYPES_SEED, 'utf8'), this.count()[0].toBytes()],\n this.program\n )\n }\n}\n","import { BN, web3 } from '@coral-xyz/anchor'\nimport {\n BeetArgsStruct,\n FixableBeetArgsStruct,\n array,\n bignum,\n bool,\n bytes,\n u32,\n u64,\n u8,\n uniformFixedSizeArray,\n} from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport {\n AccountInfo,\n AccountMeta,\n Connection,\n PublicKey,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n} from '@solana/web3.js'\nimport { sha256 } from 'ethers/lib/utils'\n\nimport * as EndpointProgram from './endpoint'\nimport {\n COUNT_SEED,\n EndpointPDADeriver,\n LZ_COMPOSE_TYPES_SEED,\n LZ_RECEIVE_TYPES_SEED,\n MessageLibPDADeriver,\n OAppBasePDADeriver,\n} from './pda-deriver'\n\n// TODO - replace default seed to a convention ID Seed\nexport function oappIDPDA(program: PublicKey, seed = COUNT_SEED, id?: number): [PublicKey, number] {\n if (id != undefined) {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(seed, 'utf8'), new BN(id).toArrayLike(Buffer, 'be', 1)],\n program\n )\n } else {\n return PublicKey.findProgramAddressSync([Buffer.from(seed, 'utf8')], program)\n }\n}\n\nexport function deriveLzReceiveTypesAccountsPDA(program: PublicKey, oappId?: PublicKey): [PublicKey, number] {\n if (oappId != undefined) {\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_RECEIVE_TYPES_SEED, 'utf8'), oappId.toBytes()], program)\n }\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_RECEIVE_TYPES_SEED, 'utf8')], program)\n}\n\nexport function deriveLzComposeTypesAccountsPDA(program: PublicKey, oappId?: PublicKey): [PublicKey, number] {\n if (oappId != undefined) {\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_COMPOSE_TYPES_SEED, 'utf8'), oappId.toBytes()], program)\n }\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_COMPOSE_TYPES_SEED, 'utf8')], program)\n}\n\nconst AddressType = uniformFixedSizeArray(u8, 32)\n\nexport const MSG_TYPE_OFFSET = 0\n\nexport enum MessageType {\n VANILLA = 1,\n COMPOSED_TYPE = 2,\n}\n\nexport type LzReceiveParams = {\n srcEid: number\n sender: number[] /* size: 32 */\n nonce: bignum\n guid: number[] /* size: 32 */\n message: Uint8Array\n extraData: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const lzReceiveParamsBeet = new FixableBeetArgsStruct<LzReceiveParams>(\n [\n ['srcEid', u32],\n ['sender', uniformFixedSizeArray(u8, 32)],\n ['nonce', u64],\n ['guid', uniformFixedSizeArray(u8, 32)],\n ['message', bytes],\n ['extraData', bytes],\n ],\n 'LzReceiveParams'\n)\n\nexport type LzComposeParams = {\n receiver: PublicKey\n guid: number[] /* size: 32 */\n message: Uint8Array\n extraData: Uint8Array\n}\n\nexport const LzComposeParamsBeet = new FixableBeetArgsStruct<LzComposeParams>(\n [\n ['receiver', beetSolana.publicKey],\n ['guid', uniformFixedSizeArray(u8, 32)],\n ['message', bytes],\n ['extraData', bytes],\n ],\n 'LzComposeParams'\n)\n\nexport type LzReceiveAccount = {\n pubkey: web3.PublicKey\n isSigner: boolean\n isWritable: boolean\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const lzReceiveAccountBeet = new BeetArgsStruct<LzReceiveAccount>(\n [\n ['pubkey', beetSolana.publicKey],\n ['isSigner', bool],\n ['isWritable', bool],\n ],\n 'LzReceiveAccount'\n)\n\nexport class OAppBase {\n endpointDeriver: EndpointPDADeriver\n oappBaseDeriver: OAppBasePDADeriver\n\n constructor(\n public program: PublicKey,\n public endpointProgram: PublicKey\n ) {\n this.endpointDeriver = new EndpointPDADeriver(endpointProgram)\n this.oappBaseDeriver = new OAppBasePDADeriver(program)\n }\n\n async queryIDPDAInfo(\n connection: Connection,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<AccountInfo<Buffer> | null> {\n return this.queryPDAInfo(connection, this.idPDA()[0], commitmentOrConfig)\n }\n\n async queryPDAInfo(\n connection: Connection,\n pda: PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<AccountInfo<Buffer> | null> {\n return connection.getAccountInfo(pda, commitmentOrConfig)\n }\n\n idPDA(): [PublicKey, number] {\n return oappIDPDA(this.program)\n }\n\n async getRemote(\n connection: Connection,\n dstEid: number,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<Uint8Array | null> {\n const [remotePDA] = this.oappBaseDeriver.remote(dstEid)\n const info = await this.queryPDAInfo(connection, remotePDA, commitmentOrConfig)\n if (info) {\n // the first 8 bytes is account discriminator, so skip it. After that, the next 32 bytes is the address.\n const result = AddressType.read(info.data, 8)\n return Uint8Array.from(result)\n }\n return null\n }\n\n async updateSendLibrary(\n connection: Connection,\n newSendLibProgram: PublicKey,\n dstEid: number,\n instructionAccounts?: AccountMeta[],\n instructionData?: Buffer,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [idPDA] = this.idPDA()\n const endpoint = new EndpointProgram.Endpoint(this.endpointProgram)\n const sendLibrary = await endpoint.getSendLibrary(connection, idPDA, dstEid, commitmentOrConfig)\n if (!sendLibrary) {\n throw new Error('please call endpoint.initSendLibrary first')\n }\n if (!instructionAccounts || !instructionData) {\n throw new Error('instructionAccounts or instructionData is undefined')\n }\n const [newSendLib] = new MessageLibPDADeriver(newSendLibProgram).messageLib()\n // If the newSendLibrary not equal sendLibrary, then set the newSendLibProgram as the send library.\n if (!sendLibrary.msgLib.equals(newSendLib)) {\n return this.updateSendLibraryWithoutChecking(\n newSendLibProgram,\n dstEid,\n instructionAccounts,\n instructionData\n )\n } else {\n console.log('sendLibrary is not changed')\n return null\n }\n }\n\n async updateSendLibraryWithoutChecking(\n newSendLibProgram: PublicKey,\n dstEid: number,\n instructionAccounts?: AccountMeta[],\n instructionData?: Buffer\n ): Promise<TransactionInstruction> {\n const [idPDA] = this.idPDA()\n const [newSendLib] = new MessageLibPDADeriver(newSendLibProgram).messageLib()\n const [sendLibraryPDA] = this.endpointDeriver.sendLibrary(idPDA, dstEid)\n const [sendLibraryAuthority] = this.endpointDeriver.messageLibraryAuthority(newSendLib)\n\n // This code is used to get the cpi(Cross-Program-invocation) accounts.\n // We can then add these accounts to the original instruction accounts.\n const endpointSetSendLibraryIx = EndpointProgram.instructions.createSetSendLibraryInstruction(\n <EndpointProgram.instructions.SetSendLibraryInstructionAccounts>{\n sender: idPDA,\n sendLibraryConfig: sendLibraryPDA,\n messageLibAuthority: sendLibraryAuthority,\n },\n /// Fake value. params is useless.\n <EndpointProgram.instructions.SetSendLibraryInstructionArgs>{\n params: <EndpointProgram.types.SetSendLibraryParams>{\n eid: 0,\n newLib: this.endpointProgram,\n },\n },\n this.endpointProgram\n )\n const endpointSetSendLibraryAccounts = [\n <AccountMeta>{\n pubkey: this.endpointProgram,\n isSigner: false,\n isWritable: false,\n },\n ].concat(endpointSetSendLibraryIx.keys)\n endpointSetSendLibraryAccounts[1].isSigner = false\n return new web3.TransactionInstruction({\n programId: this.program,\n keys: instructionAccounts.concat(endpointSetSendLibraryAccounts),\n data: instructionData,\n })\n }\n\n async updateReceiveLibrary(\n connection: Connection,\n newReceiveLibProgram: PublicKey,\n srcEid: number,\n instructionAccounts?: Array<AccountMeta>,\n instructionData?: Buffer,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [idPDA] = this.idPDA()\n const endpoint = new EndpointProgram.Endpoint(this.endpointProgram)\n const receiveLibrary = await endpoint.getReceiveLibrary(connection, idPDA, srcEid, commitmentOrConfig)\n if (!receiveLibrary) {\n throw new Error('please call endpoint.initReceiveLibrary first')\n }\n if (!instructionAccounts || !instructionData) {\n throw new Error('instructionAccounts or instructionData is undefined')\n }\n // TODO: Check if the new send library has been registered at the endpoint.\n const [newReceiveLib] = new MessageLibPDADeriver(newReceiveLibProgram).messageLib()\n // If the newReceiveLibrary not equal receiveLibrary, then set the newReceiveLibProgram as the receive library.\n if (!receiveLibrary.msgLib.equals(newReceiveLib)) {\n return this.updateReceiveLibraryWithoutChecking(\n newReceiveLibProgram,\n srcEid,\n instructionAccounts,\n instructionData\n )\n } else {\n console.log('receiveLibrary is not changed')\n return null\n }\n }\n\n async updateReceiveLibraryWithoutChecking(\n newReceiveLibProgram: PublicKey,\n srcEid: number,\n instructionAccounts?: Array<AccountMeta>,\n instructionData?: Buffer\n ): Promise<TransactionInstruction> {\n if (!instructionAccounts || !instructionData) {\n throw new Error('instructionAccounts or instructionData is null')\n }\n\n const [idPDA] = this.idPDA()\n const [newReceiveLib] = new MessageLibPDADeriver(newReceiveLibProgram).messageLib()\n const [receiveLibraryPDA] = this.endpointDeriver.receiveLibrary(idPDA, srcEid)\n const [receiveLibraryAuthority] = this.endpointDeriver.messageLibraryAuthority(newReceiveLib)\n\n // This code is used to get the cpi(Cross-Program-invocation) accounts.\n // We can then add these accounts to the original instruction accounts.\n const endpointSetReceiveLibraryIx = EndpointProgram.instructions.createSetReceiveLibraryInstruction(\n <EndpointProgram.instructions.SetReceiveLibraryInstructionAccounts>{\n receiver: idPDA,\n receiveLibraryConfig: receiveLibraryPDA,\n messageLibAuthority: receiveLibraryAuthority,\n },\n /// Fake value. params is useless.\n <EndpointProgram.instructions.SetReceiveLibraryInstructionArgs>{\n params: <EndpointProgram.types.SetReceiveLibraryParams>{\n eid: 0,\n newLib: this.endpointProgram,\n },\n },\n this.endpointProgram\n )\n const endpointSetReceiveLibraryAccounts = [\n <AccountMeta>{\n pubkey: this.endpointProgram,\n isSigner: false,\n isWritable: false,\n },\n ].concat(endpointSetReceiveLibraryIx.keys)\n endpointSetReceiveLibraryAccounts[1].isSigner = false\n\n return new web3.TransactionInstruction({\n programId: this.program,\n keys: instructionAccounts.concat(endpointSetReceiveLibraryAccounts),\n data: instructionData,\n })\n }\n\n async getLzReceiveAccountMeta(\n connection: Connection,\n payer: PublicKey,\n packet: {\n sender: Uint8Array\n receiver: PublicKey\n srcEid: number\n guid: Uint8Array\n message: Uint8Array\n nonce: string\n },\n extraData: Uint8Array = Uint8Array.from([0, 0]),\n commitmentOrConfig: web3.Commitment | web3.GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<AccountMeta>> {\n const appIDPDA = packet.receiver\n const appIDPDAInfo = await connection.getParsedAccountInfo(appIDPDA, commitmentOrConfig)\n const appProgram = new PublicKey((appIDPDAInfo.value as AccountInfo<Buffer>).owner)\n\n const [lzReceiveTypesAccountsPDA] = deriveLzReceiveTypesAccountsPDA(appProgram, appIDPDA)\n const guid = packet.guid\n const message = packet.message\n\n const lzReceiveTypesAccounts: AccountMeta[] = []\n // Get the lzReceiveTypesAccounts. Deserialize the AccountInfo.data to get the lzReceiveTypesAccounts.\n const info = await connection.getAccountInfo(lzReceiveTypesAccountsPDA, commitmentOrConfig)\n if (info) {\n const buffer = Buffer.from(info.data)\n const len = buffer.length - 8\n if (len % 32 !== 0) {\n throw new Error(\n `Invalid length of AccountInfo.data. The length must be a multiple of 32 plus 8.(n*32+8). Current length is ${buffer.length}`\n )\n }\n for (let i = 8; i < len; i += 32) {\n const address = AddressType.read(buffer, i)\n lzReceiveTypesAccounts.push({\n pubkey: new PublicKey(address),\n isSigner: false,\n isWritable: false,\n })\n }\n }\n\n const instructionDiscriminator = Buffer.from(\n sha256(Buffer.from('global:lz_receive_types')).substring(2),\n 'hex'\n ).subarray(0, 8)\n const params: LzReceiveParams = {\n srcEid: packet.srcEid,\n sender: Array.from(packet.sender),\n guid: Array.from(guid),\n message,\n extraData,\n nonce: parseInt(packet.nonce),\n }\n const [data] = lzReceiveParamsBeet.serialize(params)\n const lzReceiveTypesIx = new web3.TransactionInstruction({\n programId: appProgram,\n keys: lzReceiveTypesAccounts,\n data: Buffer.concat([instructionDiscriminator, data]),\n })\n\n let keys: AccountMeta[]\n const tx = new VersionedTransaction(\n new TransactionMessage({\n instructions: [lzReceiveTypesIx],\n payerKey: payer,\n recentBlockhash: (await connection.getLatestBlockhash()).blockhash,\n }).compileToV0Message()\n )\n const simulateResp = await connection.simulateTransaction(tx, { sigVerify: false })\n const returnPrefix = `Program return: ${appProgram} `\n const returnLog = simulateResp.value.logs?.find((l) => l.startsWith(returnPrefix))\n if (!returnLog) {\n console.error('error logs', simulateResp.value.logs)\n throw new Error('View expected return log')\n } else {\n const buffer = Buffer.from(returnLog.slice(returnPrefix.length), 'base64')\n const result = array(lzReceiveAccountBeet)\n const fixedBeet = result.toFixedFromData(buffer, 0)\n const results = fixedBeet.read(buffer, 0)\n keys = results.map((r) => {\n if (r.pubkey.toBase58() == PublicKey.default.toBase58() && r.isSigner) {\n return <AccountMeta>{\n pubkey: payer,\n isSigner: true,\n isWritable: r.isWritable,\n }\n } else {\n return <AccountMeta>{\n pubkey: r.pubkey,\n isSigner: r.isSigner,\n isWritable: r.isWritable,\n }\n }\n })\n }\n return keys\n }\n\n async getLzComposeAccountMeta(\n connection: Connection,\n payer: PublicKey,\n packet: { receiver: PublicKey; guid: Uint8Array; message: Uint8Array },\n extraData: Uint8Array = Uint8Array.from([0, 0]),\n commitmentOrConfig: web3.Commitment | web3.GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<AccountMeta>> {\n const appIDPDA = packet.receiver\n const appIDPDAInfo = await connection.getParsedAccountInfo(appIDPDA, commitmentOrConfig)\n const appProgram = new PublicKey((appIDPDAInfo.value as AccountInfo<Buffer>).owner)\n\n const [lzComposeTypesAccountsPDA] = deriveLzComposeTypesAccountsPDA(appProgram, appIDPDA)\n\n const lzComposeTypesAccounts: AccountMeta[] = []\n // Get the lzComposeTypesAccounts. Deserialize the AccountInfo.data to get the lzComposeTypesAccounts.\n const info = await connection.getAccountInfo(lzComposeTypesAccountsPDA, commitmentOrConfig)\n if (info) {\n const buffer = Buffer.from(info.data)\n const len = buffer.length - 8\n if (len % 32 !== 0) {\n throw new Error(\n `Invalid length of AccountInfo.data. The length must be a multiple of 32 plus 8.(n*32+8). Current length is ${buffer.length}`\n )\n }\n for (let i = 8; i < len; i += 32) {\n const address = AddressType.read(buffer, i)\n lzComposeTypesAccounts.push({\n pubkey: new PublicKey(address),\n isSigner: false,\n isWritable: false,\n })\n }\n }\n\n const instructionDiscriminator = Buffer.from(\n sha256(Buffer.from('global:lz_compose_types')).substring(2),\n 'hex'\n ).subarray(0, 8)\n const params: LzComposeParams = {\n receiver: appIDPDA,\n guid: Array.from(packet.guid),\n message: packet.message,\n extraData,\n }\n const [data] = LzComposeParamsBeet.serialize(params)\n const lzComposeTypesIx = new web3.TransactionInstruction({\n programId: appProgram,\n keys: lzComposeTypesAccounts,\n data: Buffer.concat([instructionDiscriminator, data]),\n })\n\n let keys: AccountMeta[]\n const tx = new VersionedTransaction(\n new TransactionMessage({\n instructions: [lzComposeTypesIx],\n payerKey: payer,\n recentBlockhash: (await connection.getLatestBlockhash()).blockhash,\n }).compileToV0Message()\n )\n const simulateResp = await connection.simulateTransaction(tx, { sigVerify: false })\n const returnPrefix = `Program return: ${appProgram} `\n const returnLog = simulateResp.value.logs?.find((l) => l.startsWith(returnPrefix))\n if (!returnLog) {\n console.error('error logs', simulateResp.value.logs)\n throw new Error('View expected return log')\n } else {\n const buffer = Buffer.from(returnLog.slice(returnPrefix.length), 'base64')\n const result = array(lzReceiveAccountBeet)\n const fixedBeet = result.toFixedFromData(buffer, 0)\n const results = fixedBeet.read(buffer, 0)\n keys = results.map((r) => {\n if (r.pubkey.toBase58() == PublicKey.default.toBase58() && r.isSigner) {\n return <AccountMeta>{\n pubkey: payer,\n isSigner: true,\n isWritable: r.isWritable,\n }\n } else {\n return <AccountMeta>{\n pubkey: r.pubkey,\n isSigner: r.isSigner,\n isWritable: r.isWritable,\n }\n }\n })\n }\n return keys\n }\n\n async lzCompose(\n connection: Connection,\n payer: PublicKey,\n accountMetas: Array<AccountMeta> | null,\n packet: { receiver: PublicKey; guid: Uint8Array; message: Uint8Array },\n extraData: Uint8Array = Uint8Array.from([0, 0]),\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n if (accountMetas == null) {\n accountMetas = await this.getLzComposeAccountMeta(connection, payer, packet, extraData, commitmentOrConfig)\n }\n const receiver = packet.receiver\n\n const instructionDiscriminator = Buffer.from(\n sha256(Buffer.from('global:lz_compose')).substring(2),\n 'hex'\n ).subarray(0, 8)\n\n const receiverInfo = await connection.getParsedAccountInfo(receiver, commitmentOrConfig)\n const appProgram = new PublicKey((receiverInfo.value as AccountInfo<Buffer>).owner)\n const params: LzComposeParams = {\n receiver: receiver,\n guid: Array.from(packet.guid),\n message: packet.message,\n extraData,\n }\n const [data] = LzComposeParamsBeet.serialize(params)\n return new TransactionInstruction({\n programId: appProgram,\n keys: accountMetas,\n data: Buffer.concat([instructionDiscriminator, data]),\n })\n }\n\n /**\n * @param payer. If the msgType is COMPOSED_TYPE, then the payer is required to pay for initializing the account.\n */\n public async lzReceive(\n connection: Connection,\n payer: PublicKey,\n accountMetas: Array<AccountMeta> | null,\n packet: {\n sender: Uint8Array\n receiver: PublicKey\n srcEid: number\n guid: Uint8Array\n message: Uint8Array\n nonce: string\n },\n extraData: Uint8Array = Uint8Array.from([0, 0]),\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n if (accountMetas == null) {\n accountMetas = await this.getLzReceiveAccountMeta(connection, payer, packet, extraData, commitmentOrConfig)\n }\n\n const appIDPDA = packet.receiver\n\n const srcEid = packet.srcEid\n const sender = packet.sender\n const msgType = packet.message[MSG_TYPE_OFFSET]\n if (msgType !== MessageType.COMPOSED_TYPE && msgType !== MessageType.VANILLA) {\n throw new Error(`Invalid message type ${msgType}`)\n }\n const params: LzReceiveParams = {\n srcEid: srcEid,\n sender: Array.from(sender),\n guid: Array.from(packet.guid),\n message: packet.message,\n extraData,\n nonce: parseInt(packet.nonce),\n }\n\n const instructionDiscriminator = Buffer.from(\n sha256(Buffer.from('global:lz_receive')).substring(2),\n 'hex'\n ).subarray(0, 8)\n const [data] = lzReceiveParamsBeet.serialize(params)\n const appIDPDAInfo = await connection.getParsedAccountInfo(appIDPDA, commitmentOrConfig)\n const appProgram = new PublicKey((appIDPDAInfo.value as AccountInfo<Buffer>).owner)\n return new TransactionInstruction({\n programId: appProgram,\n keys: accountMetas,\n data: Buffer.concat([instructionDiscriminator, data]),\n })\n }\n}\n","import {\n AccountMeta,\n Commitment,\n ComputeBudgetProgram,\n Connection,\n GetAccountInfoConfig,\n PublicKey,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n} from '@solana/web3.js'\nimport { arrayify, keccak256 } from 'ethers/lib/utils'\n\nimport { PacketV1Codec, addressToBytes32 } from '@layerzerolabs/lz-v2-utilities'\n\nimport {\n EndpointSettings,\n MessageLibAuthority,\n MessageState,\n ReceiveLibraryConfig,\n SendLibraryConfig,\n createSetLayerzeroTokenInstruction,\n} from './generated/endpoint'\nimport * as accounts from './generated/endpoint/accounts'\nimport * as errors from './generated/endpoint/errors'\nimport * as instructions from './generated/endpoint/instructions'\nimport * as types from './generated/endpoint/types'\nimport * as pdaDeriver from './pda-deriver'\n\nimport { SimpleMessageLibProgram, UlnProgram } from '.'\n\nexport { accounts, errors, instructions, types }\n\nexport const LogDiscriminator = '8de6d6f209d1cfaa' // hash(global:log)\n\nexport const DefaultMessageLib = PublicKey.default // [0u8; 32]\n\nexport class Endpoint {\n endpointDeriver: pdaDeriver.EndpointPDADeriver\n\n constructor(public program: PublicKey) {\n this.endpointDeriver = new pdaDeriver.EndpointPDADeriver(program)\n }\n\n /**\n * init endpoint settings, including eid, admin, it also registers the blocked message lib\n */\n async initEndpoint(\n connection: Connection,\n endpointId: number,\n payer: PublicKey,\n admin: PublicKey,\n blockMsgLibProgram: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [blockMsgLib] = this.endpointDeriver.blockMessageLib(blockMsgLibProgram)\n const [defaultMsgLib] = this.endpointDeriver.defaultMessageLib()\n const [settingPDA] = this.endpointDeriver.setting()\n const info = await connection.getAccountInfo(settingPDA, commitmentOrConfig)\n\n if (!info) {\n return instructions.createInitEndpointInstruction(\n <instructions.InitEndpointInstructionAccounts>{\n payer,\n endpoint: settingPDA,\n blockedMessageLibAuthority: blockMsgLib,\n defaultMessageLibAuthority: defaultMsgLib,\n },\n <instructions.InitEndpointInstructionArgs>{\n params: <types.InitEndpointParams>{\n eid: endpointId,\n admin,\n blockedMessageLib: blockMsgLibProgram,\n },\n },\n this.program\n )\n } else {\n console.warn('endpoint already initialized')\n return null\n }\n }\n\n // async initOrUpdateConfig(connection:Connection,)\n\n /***\n * call this function after endpoint initialized. Only admin can call this function.\n */\n async registerLibrary(\n connection: Connection,\n admin: PublicKey,\n messageLibProgram: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n const info = await connection.getAccountInfo(msgLibAuthority, commitmentOrConfig)\n if (info) {\n console.warn('library already registered')\n return null\n }\n\n const [settingPDA] = this.endpointDeriver.setting()\n return instructions.createRegisterLibraryInstruction(\n <instructions.RegisterLibraryInstructionAccounts>{\n admin,\n endpoint: settingPDA,\n messageLib: msgLib,\n messageLibAuthority: msgLibAuthority,\n },\n this.program\n )\n }\n\n async setDefaultSendLibrary(\n connection: Connection,\n admin: PublicKey,\n messageLibProgram: PublicKey,\n dstEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const [defaultSendLib] = this.endpointDeriver.defaultSendLibrary(dstEid)\n const [settingPDA] = this.endpointDeriver.setting()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n const info = await connection.getAccountInfo(defaultSendLib, commitmentOrConfig)\n if (!info) {\n return instructions.createInitDefaultSendLibraryInstruction(\n <instructions.InitDefaultSendLibraryInstructionAccounts>{\n admin,\n endpoint: settingPDA,\n defaultSendLibraryConfig: defaultSendLib,\n messageLibAuthority: msgLibAuthority,\n },\n <instructions.InitDefaultSendLibraryInstructionArgs>{\n params: <types.InitDefaultSendLibraryParams>{\n eid: dstEid,\n newLib: msgLib,\n },\n },\n this.program\n )\n } else {\n return instructions.createSetDefaultSendLibraryInstruction(\n <instructions.SetDefaultSendLibraryInstructionAccounts>{\n admin,\n endpoint: settingPDA,\n defaultSendLibraryConfig: defaultSendLib,\n messageLibAuthority: msgLibAuthority,\n },\n <instructions.SetDefaultSendLibraryInstructionArgs>{\n params: <types.SetDefaultSendLibraryParams>{\n eid: dstEid,\n newLib: msgLib,\n },\n },\n this.program\n )\n }\n }\n\n async setDefaultReceiveLibrary(\n connection: Connection,\n admin: PublicKey,\n messageLibProgram: PublicKey,\n srcEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const [defaultReceiveLib] = this.endpointDeriver.defaultReceiveLibrary(srcEid)\n const [settingPDA] = this.endpointDeriver.setting()\n const [defaultMsgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n const info = await connection.getAccountInfo(defaultReceiveLib, commitmentOrConfig)\n if (!info) {\n return instructions.createInitDefaultReceiveLibraryInstruction(\n <instructions.InitDefaultReceiveLibraryInstructionAccounts>{\n admin,\n endpoint: settingPDA,\n defaultReceiveLibraryConfig: defaultReceiveLib,\n messageLibAuthority: defaultMsgLibAuthority,\n },\n <instructions.InitDefaultReceiveLibraryInstructionArgs>{\n params: <types.InitDefaultReceiveLibraryParams>{\n eid: srcEid,\n newLib: msgLib,\n },\n },\n this.program\n )\n } else {\n return instructions.createSetDefaultReceiveLibraryInstruction(\n <instructions.SetDefaultReceiveLibraryInstructionAccounts>{\n admin,\n endpoint: settingPDA,\n defaultReceiveLibraryConfig: defaultReceiveLib,\n messageLibAuthority: defaultMsgLibAuthority,\n },\n <instructions.SetDefaultReceiveLibraryInstructionArgs>{\n params: <types.SetDefaultReceiveLibraryParams>{\n eid: srcEid,\n newLib: msgLib,\n },\n },\n this.program\n )\n }\n }\n\n async setLayerZeroToken(\n connection: Connection,\n admin: PublicKey,\n tokenProgram: PublicKey | null,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [setting] = this.endpointDeriver.setting()\n const settingInfo = await connection.getAccountInfoAndContext(setting, commitmentOrConfig)\n if (!settingInfo) {\n console.warn('please init endpoint first')\n return null\n }\n return createSetLayerzeroTokenInstruction(\n <instructions.SetLayerzeroTokenInstructionAccounts>{\n admin,\n endpoint: setting,\n },\n <instructions.SetLayerzeroTokenInstructionArgs>{\n params: <types.SetLayerzeroTokenParams>{\n lzToken: tokenProgram,\n },\n },\n this.program\n )\n }\n\n async initOappConfig(\n msgLibProgram: PublicKey,\n payer: PublicKey,\n oappID: PublicKey,\n eid: number,\n msgLibPrograms: { simpleMsgLib: PublicKey; uln: PublicKey }\n ): Promise<TransactionInstruction> {\n if (msgLibPrograms.simpleMsgLib.toBase58() === msgLibProgram.toBase58()) {\n throw new Error('not implemented')\n }\n const uln = new UlnProgram.Uln(msgLibProgram)\n const [msgLib] = uln.ulnDeriver.messageLib()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n // if (!(await connection.getAccountInfo(setting, commitmentOrConfig))) {\n // console.warn('please register ULN to endpoint first')\n // return null\n // }\n // if (!(await uln.getOappConfig(connection, oappID, eid, commitmentOrConfig))) {\n // init oapp config\n return instructions.createInitConfigInstruction(\n <instructions.InitConfigInstructionAccounts>{\n messageLib: msgLib,\n messageLibAuthority: msgLibAuthority,\n anchorRemainingAccounts: await uln.getInitConfigIXAccountMetaForCPI(this.program, payer, oappID, eid),\n },\n <instructions.InitConfigInstructionArgs>{\n params: <types.InitConfigParams>{\n eid: eid,\n oapp: oappID,\n },\n },\n this.program\n )\n }\n\n async initOappNonce(\n payer: PublicKey,\n dstEid: number,\n oappIDPDA: PublicKey,\n remoteOappAddr: Uint8Array\n ): Promise<TransactionInstruction> {\n const [nonce] = this.endpointDeriver.nonce(oappIDPDA, dstEid, remoteOappAddr)\n const [pendingNonce] = this.endpointDeriver.pendingNonce(oappIDPDA, dstEid, remoteOappAddr)\n // const info = await connection.getAccountInfo(nonce, commitmentOrConfig)\n // if (!info) {\n return instructions.createInitNonceInstruction(\n <instructions.InitNonceInstructionAccounts>{\n payer,\n nonce,\n pendingNonce,\n },\n <instructions.InitNonceInstructionArgs>{\n params: <types.InitNonceParams>{\n localOapp: oappIDPDA,\n remoteOapp: Array.from(remoteOappAddr),\n remoteEid: dstEid,\n },\n },\n this.program\n )\n // }\n // return null\n }\n\n async initSendLibrary(\n connection: Connection,\n payer: PublicKey,\n sender: PublicKey,\n dstEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [sendLibraryPDA] = this.endpointDeriver.sendLibrary(sender, dstEid)\n const info = await connection.getAccountInfo(sendLibraryPDA, commitmentOrConfig)\n if (!info) {\n return instructions.createInitSendLibraryInstruction(\n <instructions.InitSendLibraryInstructionAccounts>{\n payer,\n sendLibraryConfig: sendLibraryPDA,\n },\n <instructions.InitSendLibraryInstructionArgs>{\n params: <types.InitSendLibraryParams>{\n sender,\n eid: dstEid,\n },\n },\n this.program\n )\n }\n return null\n }\n\n async initReceiveLibrary(\n connection: Connection,\n payer: PublicKey,\n receiver: PublicKey,\n srcEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [receiveLibraryPDA] = this.endpointDeriver.receiveLibrary(receiver, srcEid)\n const info = await connection.getAccountInfo(receiveLibraryPDA, commitmentOrConfig)\n if (!info) {\n return instructions.createInitReceiveLibraryInstruction(\n <instructions.InitReceiveLibraryInstructionAccounts>{\n payer,\n receiveLibraryConfig: receiveLibraryPDA,\n },\n <instructions.InitReceiveLibraryInstructionArgs>{\n params: <types.InitReceiveLibraryParams>{\n receiver,\n eid: srcEid,\n },\n },\n this.program\n )\n }\n return null\n }\n\n /// send a simulated transaction to the endpoint to get the fee for sending a message\n /***\n *\n * caculate the fee for sending a message with ULN:\n * 1. executorFee: feeForGas + feeForOptionType\n * * feeForGas: ((gas + gasForCalldata) * gasPriceInUnit * priceRatio / priceRatioDenominator) * multiplier_bps / 10000\n * * feeForOptionType: nativeDrop/lzReceive/lzCompose\n * 2. oracleFee: feeForGas\n * * feeForGas: same above\n *\n * The priceRatioDenominator is 10^20\n * totalFee = executorFee + oracleFee * numOracles(requiredOracles + optionalOracles)\n */\n async getMessageFee(\n connection: Connection,\n payer: PublicKey,\n oappIDPDA: PublicKey,\n dstEid: number,\n options: Uint8Array,\n payInLzToken: boolean,\n msgLibPrograms: { simpleMsgLib: PublicKey; uln: PublicKey },\n commitment?: Commitment\n ): Promise<types.MessagingFee> {\n const { msgLib, owner } = await this.getSendLibrary(connection, oappIDPDA, dstEid)\n const remainingAccounts = await (async () => {\n if (msgLibPrograms.simpleMsgLib.toBase58() === owner.toBase58()) {\n const simpleMsgLib = new SimpleMessageLibProgram.SimpleMessageLib(msgLibPrograms.simpleMsgLib)\n return simpleMsgLib.getQuoteIXAccountMetaForCPI(payInLzToken)\n } else if (msgLibPrograms.uln.toBase58() === owner.toBase58()) {\n const uln = new UlnProgram.Uln(msgLibPrograms.uln)\n return await uln.getQuoteIXAccountMetaForCPI(connection, oappIDPDA, dstEid, payInLzToken, commitment)\n } else {\n throw new Error('invalid msgLibProgram')\n }\n })()\n\n const [setting] = this.endpointDeriver.setting()\n const [defaultSendLibrary] = this.endpointDeriver.defaultSendLibrary(dstEid)\n const [sendLibrary] = this.endpointDeriver.sendLibrary(oappIDPDA, dstEid)\n const [sendLibraryAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n const message = Uint8Array.from(Buffer.from('counter')) //TODO: dummy message\n\n const quoteFeeIx = instructions.createQuoteInstruction(\n <instructions.QuoteInstructionAccounts>{\n sendLibrary: msgLib,\n sendLibraryConfig: sendLibrary,\n defaultSendLibraryConfig: defaultSendLibrary,\n sendLibraryAuthority: sendLibraryAuthority,\n endpoint: setting,\n anchorRemainingAccounts: remainingAccounts,\n },\n <instructions.QuoteInstructionArgs>{\n params: <types.QuoteParams>{\n sender: oappIDPDA,\n dstEid,\n message,\n payInLzToken,\n options,\n },\n },\n this.program\n )\n //TODO: how to get the correct compute units?\n const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({\n units: 1000000,\n })\n const tx = new VersionedTransaction(\n new TransactionMessage({\n instructions: [modifyComputeUnits, quoteFeeIx],\n payerKey: payer,\n recentBlockhash: (await connection.getLatestBlockhash()).blockhash,\n }).compileToV0Message()\n )\n const simulateResp = await connection.simulateTransaction(tx, {\n sigVerify: false,\n commitment: commitment ?? 'confirmed',\n })\n const returnPrefix = `Program return: ${this.program} `\n const returnLog = simulateResp.value.logs.find((l) => l.startsWith(returnPrefix))\n if (!returnLog) {\n console.error('error logs', simulateResp.value.logs)\n throw new Error('View expected return log')\n } else {\n const buffer = Buffer.from(returnLog.slice(returnPrefix.length), 'base64')\n const fee = types.messagingFeeBeet.read(buffer, 0)\n return fee\n }\n }\n\n /***\n * Get the account meta of the send instruction for CPI(Cross-Program Invocation )\n */\n async getSendIXAccountMetaForCPI(\n connection: Connection,\n payer: PublicKey,\n oappIDPDA: PublicKey,\n remoteOapp: Uint8Array,\n eid: number,\n payInLzToken: boolean,\n mint: PublicKey | null,\n msgLibPrograms: { simpleMsgLib: PublicKey; uln: PublicKey },\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const { msgLib: sendLibrary, owner } = await (async (): Promise<{ msgLib: PublicKey; owner: PublicKey }> => {\n const sendLib = await this.getSendLibrary(connection, oappIDPDA, eid, commitmentOrConfig)\n if (!sendLib) {\n throw new Error('default send library not initialized')\n } else {\n return sendLib\n }\n })()\n\n const endpointProgram = this.program\n\n async function getAccountMetaFromMsgLib(): Promise<Array<AccountMeta>> {\n if (owner.toBase58() === msgLibPrograms.simpleMsgLib.toBase58()) {\n const program = new SimpleMessageLibProgram.SimpleMessageLib(owner)\n return await program.getSendIXAccountMetaForCPI(endpointProgram, payer)\n } else if (owner.toBase58() === msgLibPrograms.uln.toBase58() && !payInLzToken) {\n const program = new UlnProgram.Uln(owner)\n return await program.getSendIXAccountMetaForCPI(\n connection,\n endpointProgram,\n payer,\n oappIDPDA,\n eid,\n commitmentOrConfig\n )\n } else if (owner.toBase58() === msgLibPrograms.uln.toBase58() && payInLzToken && mint) {\n const program = new UlnProgram.Uln(owner)\n return await program.getSendWithLzTokenIXAccountMetaForCPI(\n connection,\n endpointProgram,\n mint,\n payer,\n oappIDPDA,\n eid,\n commitmentOrConfig\n )\n } else {\n throw new Error('unknown msgLibType')\n }\n }\n\n const [defaultSendLibrary] = this.endpointDeriver.defaultSendLibrary(eid)\n const [sendLibraryConfig] = this.endpointDeriver.sendLibrary(oappIDPDA, eid)\n const [nonce] = this.endpointDeriver.nonce(oappIDPDA, eid, remoteOapp)\n const [sendLibraryAuthority] = this.endpointDeriver.messageLibraryAuthority(sendLibrary)\n const ix = instructions.createSendInstruction(\n <instructions.SendInstructionAccounts>{\n sender: oappIDPDA, //signer\n sendLibrary,\n /// this account shoud be derived from message lib\n sendLibraryConfig,\n defaultSendLibraryConfig: defaultSendLibrary,\n sendLibraryAuthority: sendLibraryAuthority,\n endpoint: this.endpointDeriver.setting()[0],\n // messageLibAuthority: auth,\n endpointProgram: this.program,\n nonce: nonce,\n anchorRemainingAccounts: await getAccountMetaFromMsgLib(),\n },\n /// Fake value. params is useless.\n <instructions.SendInstructionArgs>{\n params: <types.SendParams>{\n dstEid: eid,\n receiver: Array.from(oappIDPDA.toBytes()),\n message: Uint8Array.from(Buffer.from('test')),\n options: Uint8Array.from(Buffer.from('test')),\n nativeFee: 0,\n lzTokenFee: 0,\n },\n },\n this.program\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n async getDeliverIXAccountMetaForCPI(\n connection: Connection,\n payer: PublicKey,\n packet: PacketV1Codec,\n receiveLibrary: PublicKey\n ): Promise<Array<AccountMeta>> {\n const receiver = new PublicKey(Buffer.from(packet.receiver().slice(2), 'hex'))\n const srcEid = packet.srcEid()\n const sender = addressToBytes32(packet.sender())\n\n const payloadHashBytes = Uint8Array.from(Buffer.from(packet.payloadHash().slice(2), 'hex'))\n const [payloadHash] = this.endpointDeriver.payloadHash(\n receiver,\n srcEid,\n sender,\n parseInt(packet.nonce()),\n payloadHashBytes\n )\n const [defaultReceiveLibrary] = this.endpointDeriver.defaultReceiveLibrary(srcEid)\n const [receiveLibraryConfig] = this.endpointDeriver.receiveLibrary(receiver, srcEid)\n\n const [nonce] = this.endpointDeriver.nonce(receiver, srcEid, sender)\n const [pendingNonce] = this.endpointDeriver.pendingNonce(receiver, srcEid, sender)\n const [receiveLibTimeout] = this.endpointDeriver.receiveLibraryTimeout(srcEid)\n const [endpoint] = this.endpointDeriver.setting()\n const ix = instructions.createDeliverInstruction(\n <instructions.DeliverInstructionAccounts>{\n payer,\n receiveLibraryTimeoutConfig: receiveLibTimeout,\n receiveLibrary: receiveLibrary,\n receiveLibraryConfig: receiveLibraryConfig,\n defaultReceiveLibraryConfig: defaultReceiveLibrary,\n nonce: nonce,\n pendingNonce: pendingNonce,\n payloadHash: payloadHash,\n endpointProgram: this.program,\n endpoint: endpoint,\n },\n // Fake params\n <instructions.DeliverInstructionArgs>{\n params: <types.DeliverParams>{\n srcEid,\n sender: Array.from(addressToBytes32(packet.sender())),\n receiver,\n nonce: 1,\n payloadHash: Array.from(addressToBytes32(packet.sender())),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n /***\n * setConfig is only supported by ULN\n */\n async getSetConfigIXAccountMetaForCPI(\n connection: Connection,\n msgLibProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig: Commitment | GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<AccountMeta>> {\n const uln = new UlnProgram.Uln(msgLibProgram)\n const [msgLib] = uln.ulnDeriver.messageLib()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n\n const ix = instructions.createSetConfigInstruction(\n <instructions.SetConfigInstructionAccounts>{\n oapp: oappID,\n messageLibAuthority: msgLibAuthority,\n messageLib: msgLib,\n anchorRemainingAccounts: await uln.getSetConfigIXAccountMetaForCPI(\n connection,\n this.program,\n oappID,\n eid,\n commitmentOrConfig\n ),\n },\n // Fake params. Just to get the ix.keys\n <instructions.SetConfigInstructionArgs>{\n params: <types.SetConfigParams>{\n eid: eid,\n messageLib: msgLib,\n configType: 1,\n config: Uint8Array.from([]),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n /***\n * resetConfig is only supported by ULN\n */\n async getResetConfigIXAccountMetaForCPI(\n connection: Connection,\n msgLibProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig: Commitment | GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<AccountMeta>> {\n const uln = new UlnProgram.Uln(msgLibProgram)\n const [msgLib] = uln.ulnDeriver.messageLib()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n\n const ix = instructions.createResetConfigInstruction(\n <instructions.ResetConfigInstructionAccounts>{\n oapp: oappID,\n messageLibAuthority: msgLibAuthority,\n messageLib: msgLib,\n anchorRemainingAccounts: await uln.getResetConfigIXAccountMetaForCPI(\n connection,\n this.program,\n oappID,\n eid,\n commitmentOrConfig\n ),\n },\n // Fake params. Just to get the ix.keys\n <instructions.ResetConfigInstructionArgs>{\n params: <types.ResetConfigParams>{\n eid: eid,\n messageLib: msgLib,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n /**\n * snapshotConfig is only supported by ULN\n */\n async getSnapshotConfigIXAccountMetaForCPI(\n connection: Connection,\n msgLibProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig: Commitment | GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<AccountMeta>> {\n const uln = new UlnProgram.Uln(msgLibProgram)\n const [msgLib] = uln.ulnDeriver.messageLib()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n\n const ix = instructions.createSnapshotConfigInstruction(\n <instructions.SnapshotConfigInstructionAccounts>{\n oapp: oappID,\n messageLibAuthority: msgLibAuthority,\n messageLib: msgLib,\n anchorRemainingAccounts: await uln.getSnapshotConfigIXAccountMetaForCPI(\n connection,\n this.program,\n oappID,\n eid,\n commitmentOrConfig\n ),\n },\n // Fake params. Just to get the ix.keys\n <instructions.SnapshotConfigInstructionArgs>{\n params: <types.SnapshotConfigParams>{\n eid: eid,\n messageLib: msgLib,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n /**\n * @param composer. The composer is usually the PDA of the app's ID. It depends on the oapp's implementation.\n */\n getDeliverComposedMessageIXAccountMetaForCPI(\n payer: PublicKey,\n composer: PublicKey,\n packet: PacketV1Codec\n ): Array<AccountMeta> {\n const receiver = new PublicKey(Buffer.from(packet.receiver().slice(2), 'hex'))\n const guid = Uint8Array.from(Buffer.from(packet.guid().slice(2), 'hex'))\n const message = arrayify(keccak256(packet.message()))\n const ix = instructions.createDeliverComposedMessageInstruction(\n <instructions.DeliverComposedMessageInstructionAccounts>{\n payer,\n receiver,\n composedMessage: this.endpointDeriver.composedMessage(receiver, guid, composer, message)[0],\n endpoint: this.endpointDeriver.setting()[0],\n endpointProgram: this.program,\n },\n // Fake params. Just to get the ix.keys\n <instructions.DeliverComposedMessageInstructionArgs>{\n params: <types.DeliverComposedMessageParams>{\n composer: payer,\n guid: Array.from(guid),\n message: Uint8Array.from([]),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n /**\n * @param composer. The composer is usually the PDA of the app's ID. It depends on the oapp's implementation.\n */\n getClearComposedMessageIXAccountMetaForCPI(composer: PublicKey, packet: PacketV1Codec): Array<AccountMeta> {\n const receiver = new PublicKey(Buffer.from(packet.receiver().slice(2), 'hex'))\n const guid = Uint8Array.from(Buffer.from(packet.guid().slice(2), 'hex'))\n const message = arrayify(keccak256(packet.message()))\n const ix = instructions.createClearComposedMessageInstruction(\n <instructions.ClearComposedMessageInstructionAccounts>{\n composer,\n composedMessage: this.endpointDeriver.composedMessage(receiver, guid, composer, message)[0],\n endpoint: this.endpointDeriver.setting()[0],\n endpointProgram: this.program,\n },\n // Fake params. Just to get the ix.keys\n <instructions.ClearComposedMessageInstructionArgs>{\n params: <types.ClearComposedMessageParams>{\n receiver: composer,\n guid: Array.from(guid),\n message: Uint8Array.from([]),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n getSkipIxAccountMetaForCPI(receiver: PublicKey, sender: Uint8Array, srcEid: number, nonce: number) {\n const [noncePDA] = this.endpointDeriver.nonce(receiver, srcEid, sender)\n const [pendingNonce] = this.endpointDeriver.pendingNonce(receiver, srcEid, sender)\n const ix = instructions.createSkipInstruction(\n <instructions.SkipInstructionAccounts>{\n receiver,\n nonce: noncePDA,\n pendingNonce,\n },\n <instructions.SkipInstructionArgs>{\n params: <types.SkipParams>{\n srcEid,\n sender: Array.from(sender),\n nonce,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n async isDefaultSendLibrary(\n connection: Connection,\n messageLibProgram: PublicKey,\n dstEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<boolean> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const info = await this.getDefaultSendLibrary(connection, dstEid, commitmentOrConfig)\n if (info) {\n // const [defaultSendLib] = new MessageLibPDADeriver(messageLibProgram).messageLib()\n return info.messageLib.equals(msgLib)\n }\n return false\n }\n\n async isDefaultReceiveLibrary(\n connection: Connection,\n messageLibProgram: PublicKey,\n srcEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<boolean> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const info = await this.getDefaultReceiveLibrary(connection, srcEid, commitmentOrConfig)\n if (info) {\n // const [defaultReceiveLib] = new MessageLibPDADeriver(messageLibProgram).messageLib()\n return info.messageLib.equals(msgLib)\n }\n return false\n }\n\n // all of below functions are retrieving accounts state\n async getSetting(\n connection: Connection,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<EndpointSettings | null> {\n const [setting] = this.endpointDeriver.setting()\n try {\n return await accounts.EndpointSettings.fromAccountAddress(connection, setting, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n /**\n *\n * @param messageLib It is a PDA of the message library program\n */\n async getMessageLibAuthority(\n connection: Connection,\n messageLibProgram: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<MessageLibAuthority | null> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const [messageLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n try {\n return await accounts.MessageLibAuthority.fromAccountAddress(\n connection,\n messageLibAuthority,\n commitmentOrConfig\n )\n } catch (e) {\n return null\n }\n }\n\n async getDefaultReceiveLibrary(\n connection: Connection,\n srcEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<ReceiveLibraryConfig | null> {\n const [defaultReceiveLib] = this.endpointDeriver.defaultReceiveLibrary(srcEid)\n try {\n return await accounts.ReceiveLibraryConfig.fromAccountAddress(\n connection,\n defaultReceiveLib,\n commitmentOrConfig\n )\n } catch (e) {\n return null\n }\n }\n\n async getDefaultSendLibrary(\n connection: Connection,\n dstEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<SendLibraryConfig | null> {\n const [defaultSendLib] = this.endpointDeriver.defaultSendLibrary(dstEid)\n try {\n return await accounts.SendLibraryConfig.fromAccountAddress(connection, defaultSendLib, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n /**\n * get app configured send library\n */\n async getSendLibrary(\n connection: Connection,\n oappPda: PublicKey,\n dstEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<{ msgLib: PublicKey; owner: PublicKey; isDefault: boolean } | null> {\n const [sendLibPda] = this.endpointDeriver.sendLibrary(oappPda, dstEid)\n const accountInfo = await connection.getAccountInfo(sendLibPda, commitmentOrConfig)\n if (accountInfo == null) {\n // throw new Error(`Unable to find MessageLibConfig account at ${sendLibPda}`)\n return null\n }\n const info = accounts.SendLibraryConfig.fromAccountInfo(accountInfo, 0)[0]\n if (info.messageLib.toString() == DefaultMessageLib.toString()) {\n // use default message lib\n const [defaultSendLibPda] = this.endpointDeriver.defaultSendLibrary(dstEid)\n const defaultInfo = await accounts.SendLibraryConfig.fromAccountAddress(\n connection,\n defaultSendLibPda,\n commitmentOrConfig\n )\n const messageLibInfo = await connection.getAccountInfo(defaultInfo.messageLib, commitmentOrConfig)\n return {\n owner: messageLibInfo.owner,\n msgLib: defaultInfo.messageLib,\n isDefault: true,\n }\n }\n const messageLibInfo = await connection.getAccountInfo(info.messageLib, commitmentOrConfig)\n return {\n owner: messageLibInfo.owner,\n msgLib: info.messageLib,\n isDefault: false,\n }\n }\n\n /**\n * get app configured receive library\n */\n async getReceiveLibrary(\n connection: Connection,\n oappPda: PublicKey,\n srcEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<{\n msgLib: PublicKey\n owner: PublicKey\n isDefault: boolean\n timeout: { msgLib: PublicKey; isValid: boolean } | null\n } | null> {\n const [receiveLibPda] = this.endpointDeriver.receiveLibrary(oappPda, srcEid)\n const accountInfo = await connection.getAccountInfo(receiveLibPda, commitmentOrConfig)\n if (accountInfo == null) {\n // throw new Error(`Unable to find MessageLibConfig account at ${sendLibPda}`)\n return null\n }\n const info = accounts.ReceiveLibraryConfig.fromAccountInfo(accountInfo, 0)[0]\n if (info.messageLib.toString() == DefaultMessageLib.toString()) {\n // use default message lib\n const [defaultReceiveLibPda] = this.endpointDeriver.defaultReceiveLibrary(srcEid)\n const defaultInfo = await accounts.ReceiveLibraryConfig.fromAccountAddress(\n connection,\n defaultReceiveLibPda,\n commitmentOrConfig\n )\n const messageLibInfo = await connection.getAccountInfo(defaultInfo.messageLib, commitmentOrConfig)\n const timeout = defaultInfo.timeout\n if (timeout) {\n const slot = await connection.getSlot()\n const timestamp = await connection.getBlockTime(slot)\n const isValid = timeout.expiry > timestamp\n return {\n owner: messageLibInfo.owner,\n msgLib: defaultInfo.messageLib,\n isDefault: true,\n timeout: { msgLib: timeout.messageLib, isValid },\n }\n }\n return {\n owner: messageLibInfo.owner,\n msgLib: defaultInfo.messageLib,\n isDefault: true,\n timeout: null,\n }\n }\n const messageLibInfo = await connection.getAccountInfo(info.messageLib, commitmentOrConfig)\n const timeout = info.timeout\n if (timeout) {\n const slot = await connection.getSlot()\n const timestamp = await connection.getBlockTime(slot)\n const isValid = timeout.expiry > timestamp\n return {\n owner: messageLibInfo.owner,\n msgLib: info.messageLib,\n isDefault: false,\n timeout: { msgLib: timeout.messageLib, isValid },\n }\n }\n return { owner: messageLibInfo.owner, msgLib: info.messageLib, isDefault: false, timeout: null }\n }\n\n // rename to a more generic name\n async getInboundPayloadHash(\n connection: Connection,\n receiver: PublicKey,\n srcEid: number,\n sender: Uint8Array,\n nonce: number,\n payloadHash: Uint8Array,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<MessageState | null> {\n const [payloadHashPDA] = this.endpointDeriver.payloadHash(receiver, srcEid, sender, nonce, payloadHash)\n const accountInfo = await connection.getAccountInfo(payloadHashPDA, commitmentOrConfig)\n if (!accountInfo) {\n return null\n }\n return MessageState.fromAccountInfo(accountInfo, 0)[0]\n }\n\n async getComposedMessageState(\n connection: Connection,\n receiver: PublicKey,\n params: types.DeliverComposedMessageParams,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<MessageState | null> {\n const message = arrayify(keccak256(params.message))\n const [composedMessagePDA] = this.endpointDeriver.composedMessage(\n receiver,\n Uint8Array.from(params.guid),\n params.composer,\n message\n )\n const accountInfo = await connection.getAccountInfo(composedMessagePDA, commitmentOrConfig)\n if (!accountInfo) {\n return null\n }\n return MessageState.fromAccountInfo(accountInfo, 0)[0]\n }\n\n async getNonce(\n connection: Connection,\n oappIDPDA: PublicKey,\n remoteEid: number,\n remoteOappAddr: Uint8Array,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.Nonce | null> {\n const [nonce] = this.endpointDeriver.nonce(oappIDPDA, remoteEid, remoteOappAddr)\n try {\n return await accounts.Nonce.fromAccountAddress(connection, nonce, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getPendingInboundNonce(\n connection: Connection,\n receiver: PublicKey,\n srcEid: number,\n sender: Uint8Array,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.PendingInboundNonce | null> {\n const [nonce] = this.endpointDeriver.pendingNonce(receiver, srcEid, sender)\n try {\n return await accounts.PendingInboundNonce.fromAccountAddress(connection, nonce, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n}\n","import { PublicKey } from '@solana/web3.js'\nexport * from './accounts'\nexport * from './errors'\nexport * from './instructions'\nexport * from './types'\n\n/**\n * Program address\n *\n * @category constants\n * @category generated\n */\nexport const PROGRAM_ADDRESS = '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n\n/**\n * Program public key\n *\n * @category constants\n * @category generated\n */\nexport const PROGRAM_ID = new PublicKey(PROGRAM_ADDRESS)\n","export * from './EndpointSettings'\nexport * from './MessageLibAuthority'\nexport * from './MessageState'\nexport * from './Nonce'\nexport * from './PendingInboundNonce'\nexport * from './ReceiveLibraryConfig'\nexport * from './SendLibraryConfig'\n\nimport { EndpointSettings } from './EndpointSettings'\nimport { MessageLibAuthority } from './MessageLibAuthority'\nimport { SendLibraryConfig } from './SendLibraryConfig'\nimport { ReceiveLibraryConfig } from './ReceiveLibraryConfig'\nimport { Nonce } from './Nonce'\nimport { PendingInboundNonce } from './PendingInboundNonce'\nimport { MessageState } from './MessageState'\n\nexport const accountProviders = {\n EndpointSettings,\n MessageLibAuthority,\n SendLibraryConfig,\n ReceiveLibraryConfig,\n Nonce,\n PendingInboundNonce,\n MessageState,\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link EndpointSettings}\n * @category Accounts\n * @category generated\n */\nexport type EndpointSettingsArgs = {\n eid: number\n blockedMessageLib: web3.PublicKey\n bump: number\n admin: web3.PublicKey\n lzToken: beet.COption<web3.PublicKey>\n}\n\nexport const endpointSettingsDiscriminator = [221, 232, 73, 56, 10, 66, 72, 14]\n/**\n * Holds the data for the {@link EndpointSettings} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class EndpointSettings implements EndpointSettingsArgs {\n private constructor(\n readonly eid: number,\n readonly blockedMessageLib: web3.PublicKey,\n readonly bump: number,\n readonly admin: web3.PublicKey,\n readonly lzToken: beet.COption<web3.PublicKey>\n ) {}\n\n /**\n * Creates a {@link EndpointSettings} instance from the provided args.\n */\n static fromArgs(args: EndpointSettingsArgs) {\n return new EndpointSettings(\n args.eid,\n args.blockedMessageLib,\n args.bump,\n args.admin,\n args.lzToken\n )\n }\n\n /**\n * Deserializes the {@link EndpointSettings} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [EndpointSettings, number] {\n return EndpointSettings.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link EndpointSettings} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<EndpointSettings> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find EndpointSettings account at ${address}`)\n }\n return EndpointSettings.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, endpointSettingsBeet)\n }\n\n /**\n * Deserializes the {@link EndpointSettings} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [EndpointSettings, number] {\n return endpointSettingsBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link EndpointSettings} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return endpointSettingsBeet.serialize({\n accountDiscriminator: endpointSettingsDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link EndpointSettings} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: EndpointSettingsArgs) {\n const instance = EndpointSettings.fromArgs(args)\n return endpointSettingsBeet.toFixedFromValue({\n accountDiscriminator: endpointSettingsDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link EndpointSettings} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: EndpointSettingsArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n EndpointSettings.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link EndpointSettings} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n eid: this.eid,\n blockedMessageLib: this.blockedMessageLib.toBase58(),\n bump: this.bump,\n admin: this.admin.toBase58(),\n lzToken: this.lzToken,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const endpointSettingsBeet = new beet.FixableBeetStruct<\n EndpointSettings,\n EndpointSettingsArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['eid', beet.u32],\n ['blockedMessageLib', beetSolana.publicKey],\n ['bump', beet.u8],\n ['admin', beetSolana.publicKey],\n ['lzToken', beet.coption(beetSolana.publicKey)],\n ],\n EndpointSettings.fromArgs,\n 'EndpointSettings'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link MessageLibAuthority}\n * @category Accounts\n * @category generated\n */\nexport type MessageLibAuthorityArgs = {\n bump: number\n}\n\nexport const messageLibAuthorityDiscriminator = [\n 153, 245, 224, 52, 225, 224, 186, 40,\n]\n/**\n * Holds the data for the {@link MessageLibAuthority} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class MessageLibAuthority implements MessageLibAuthorityArgs {\n private constructor(readonly bump: number) {}\n\n /**\n * Creates a {@link MessageLibAuthority} instance from the provided args.\n */\n static fromArgs(args: MessageLibAuthorityArgs) {\n return new MessageLibAuthority(args.bump)\n }\n\n /**\n * Deserializes the {@link MessageLibAuthority} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [MessageLibAuthority, number] {\n return MessageLibAuthority.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link MessageLibAuthority} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<MessageLibAuthority> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(\n `Unable to find MessageLibAuthority account at ${address}`\n )\n }\n return MessageLibAuthority.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, messageLibAuthorityBeet)\n }\n\n /**\n * Deserializes the {@link MessageLibAuthority} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [MessageLibAuthority, number] {\n return messageLibAuthorityBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link MessageLibAuthority} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return messageLibAuthorityBeet.serialize({\n accountDiscriminator: messageLibAuthorityDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link MessageLibAuthority}\n */\n static get byteSize() {\n return messageLibAuthorityBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link MessageLibAuthority} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n MessageLibAuthority.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link MessageLibAuthority} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === MessageLibAuthority.byteSize\n }\n\n /**\n * Returns a readable version of {@link MessageLibAuthority} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const messageLibAuthorityBeet = new beet.BeetStruct<\n MessageLibAuthority,\n MessageLibAuthorityArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ],\n MessageLibAuthority.fromArgs,\n 'MessageLibAuthority'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link MessageState}\n * @category Accounts\n * @category generated\n */\nexport type MessageStateArgs = {\n received: boolean\n bump: number\n}\n\nexport const messageStateDiscriminator = [197, 165, 251, 177, 41, 114, 136, 150]\n/**\n * Holds the data for the {@link MessageState} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class MessageState implements MessageStateArgs {\n private constructor(readonly received: boolean, readonly bump: number) {}\n\n /**\n * Creates a {@link MessageState} instance from the provided args.\n */\n static fromArgs(args: MessageStateArgs) {\n return new MessageState(args.received, args.bump)\n }\n\n /**\n * Deserializes the {@link MessageState} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [MessageState, number] {\n return MessageState.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link MessageState} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<MessageState> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find MessageState account at ${address}`)\n }\n return MessageState.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, messageStateBeet)\n }\n\n /**\n * Deserializes the {@link MessageState} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [MessageState, number] {\n return messageStateBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link MessageState} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return messageStateBeet.serialize({\n accountDiscriminator: messageStateDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link MessageState}\n */\n static get byteSize() {\n return messageStateBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link MessageState} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n MessageState.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link MessageState} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === MessageState.byteSize\n }\n\n /**\n * Returns a readable version of {@link MessageState} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n received: this.received,\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const messageStateBeet = new beet.BeetStruct<\n MessageState,\n MessageStateArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['received', beet.bool],\n ['bump', beet.u8],\n ],\n MessageState.fromArgs,\n 'MessageState'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link Nonce}\n * @category Accounts\n * @category generated\n */\nexport type NonceArgs = {\n bump: number\n inboundNonce: beet.bignum\n outboundNonce: beet.bignum\n}\n\nexport const nonceDiscriminator = [143, 197, 147, 95, 106, 165, 50, 43]\n/**\n * Holds the data for the {@link Nonce} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class Nonce implements NonceArgs {\n private constructor(\n readonly bump: number,\n readonly inboundNonce: beet.bignum,\n readonly outboundNonce: beet.bignum\n ) {}\n\n /**\n * Creates a {@link Nonce} instance from the provided args.\n */\n static fromArgs(args: NonceArgs) {\n return new Nonce(args.bump, args.inboundNonce, args.outboundNonce)\n }\n\n /**\n * Deserializes the {@link Nonce} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [Nonce, number] {\n return Nonce.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link Nonce} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<Nonce> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find Nonce account at ${address}`)\n }\n return Nonce.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, nonceBeet)\n }\n\n /**\n * Deserializes the {@link Nonce} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [Nonce, number] {\n return nonceBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link Nonce} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return nonceBeet.serialize({\n accountDiscriminator: nonceDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link Nonce}\n */\n static get byteSize() {\n return nonceBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link Nonce} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n Nonce.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link Nonce} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === Nonce.byteSize\n }\n\n /**\n * Returns a readable version of {@link Nonce} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n inboundNonce: (() => {\n const x = <{ toNumber: () => number }>this.inboundNonce\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n outboundNonce: (() => {\n const x = <{ toNumber: () => number }>this.outboundNonce\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const nonceBeet = new beet.BeetStruct<\n Nonce,\n NonceArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ['inboundNonce', beet.u64],\n ['outboundNonce', beet.u64],\n ],\n Nonce.fromArgs,\n 'Nonce'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link PendingInboundNonce}\n * @category Accounts\n * @category generated\n */\nexport type PendingInboundNonceArgs = {\n bump: number\n nonces: beet.bignum[]\n}\n\nexport const pendingInboundNonceDiscriminator = [\n 170, 176, 95, 240, 120, 231, 241, 218,\n]\n/**\n * Holds the data for the {@link PendingInboundNonce} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class PendingInboundNonce implements PendingInboundNonceArgs {\n private constructor(readonly bump: number, readonly nonces: beet.bignum[]) {}\n\n /**\n * Creates a {@link PendingInboundNonce} instance from the provided args.\n */\n static fromArgs(args: PendingInboundNonceArgs) {\n return new PendingInboundNonce(args.bump, args.nonces)\n }\n\n /**\n * Deserializes the {@link PendingInboundNonce} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [PendingInboundNonce, number] {\n return PendingInboundNonce.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link PendingInboundNonce} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<PendingInboundNonce> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(\n `Unable to find PendingInboundNonce account at ${address}`\n )\n }\n return PendingInboundNonce.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, pendingInboundNonceBeet)\n }\n\n /**\n * Deserializes the {@link PendingInboundNonce} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [PendingInboundNonce, number] {\n return pendingInboundNonceBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link PendingInboundNonce} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return pendingInboundNonceBeet.serialize({\n accountDiscriminator: pendingInboundNonceDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link PendingInboundNonce} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: PendingInboundNonceArgs) {\n const instance = PendingInboundNonce.fromArgs(args)\n return pendingInboundNonceBeet.toFixedFromValue({\n accountDiscriminator: pendingInboundNonceDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link PendingInboundNonce} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: PendingInboundNonceArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n PendingInboundNonce.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link PendingInboundNonce} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n nonces: this.nonces,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const pendingInboundNonceBeet = new beet.FixableBeetStruct<\n PendingInboundNonce,\n PendingInboundNonceArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ['nonces', beet.array(beet.u64)],\n ],\n PendingInboundNonce.fromArgs,\n 'PendingInboundNonce'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport {\n ReceiveLibraryTimeout,\n receiveLibraryTimeoutBeet,\n} from '../types/ReceiveLibraryTimeout'\n\n/**\n * Arguments used to create {@link ReceiveLibraryConfig}\n * @category Accounts\n * @category generated\n */\nexport type ReceiveLibraryConfigArgs = {\n messageLib: web3.PublicKey\n timeout: beet.COption<ReceiveLibraryTimeout>\n bump: number\n}\n\nexport const receiveLibraryConfigDiscriminator = [\n 142, 226, 251, 138, 1, 206, 91, 193,\n]\n/**\n * Holds the data for the {@link ReceiveLibraryConfig} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class ReceiveLibraryConfig implements ReceiveLibraryConfigArgs {\n private constructor(\n readonly messageLib: web3.PublicKey,\n readonly timeout: beet.COption<ReceiveLibraryTimeout>,\n readonly bump: number\n ) {}\n\n /**\n * Creates a {@link ReceiveLibraryConfig} instance from the provided args.\n */\n static fromArgs(args: ReceiveLibraryConfigArgs) {\n return new ReceiveLibraryConfig(args.messageLib, args.timeout, args.bump)\n }\n\n /**\n * Deserializes the {@link ReceiveLibraryConfig} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [ReceiveLibraryConfig, number] {\n return ReceiveLibraryConfig.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link ReceiveLibraryConfig} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<ReceiveLibraryConfig> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(\n `Unable to find ReceiveLibraryConfig account at ${address}`\n )\n }\n return ReceiveLibraryConfig.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, receiveLibraryConfigBeet)\n }\n\n /**\n * Deserializes the {@link ReceiveLibraryConfig} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [ReceiveLibraryConfig, number] {\n return receiveLibraryConfigBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link ReceiveLibraryConfig} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return receiveLibraryConfigBeet.serialize({\n accountDiscriminator: receiveLibraryConfigDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link ReceiveLibraryConfig} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: ReceiveLibraryConfigArgs) {\n const instance = ReceiveLibraryConfig.fromArgs(args)\n return receiveLibraryConfigBeet.toFixedFromValue({\n accountDiscriminator: receiveLibraryConfigDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link ReceiveLibraryConfig} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: ReceiveLibraryConfigArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n ReceiveLibraryConfig.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link ReceiveLibraryConfig} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n messageLib: this.messageLib.toBase58(),\n timeout: this.timeout,\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const receiveLibraryConfigBeet = new beet.FixableBeetStruct<\n ReceiveLibraryConfig,\n ReceiveLibraryConfigArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['messageLib', beetSolana.publicKey],\n ['timeout', beet.coption(receiveLibraryTimeoutBeet)],\n ['bump', beet.u8],\n ],\n ReceiveLibraryConfig.fromArgs,\n 'ReceiveLibraryConfig'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type ReceiveLibraryTimeout = {\n messageLib: web3.PublicKey\n expiry: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const receiveLibraryTimeoutBeet =\n new beet.BeetArgsStruct<ReceiveLibraryTimeout>(\n [\n ['messageLib', beetSolana.publicKey],\n ['expiry', beet.i64],\n ],\n 'ReceiveLibraryTimeout'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\n\n/**\n * Arguments used to create {@link SendLibraryConfig}\n * @category Accounts\n * @category generated\n */\nexport type SendLibraryConfigArgs = {\n messageLib: web3.PublicKey\n bump: number\n}\n\nexport const sendLibraryConfigDiscriminator = [\n 61, 238, 31, 72, 251, 117, 66, 176,\n]\n/**\n * Holds the data for the {@link SendLibraryConfig} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class SendLibraryConfig implements SendLibraryConfigArgs {\n private constructor(\n readonly messageLib: web3.PublicKey,\n readonly bump: number\n ) {}\n\n /**\n * Creates a {@link SendLibraryConfig} instance from the provided args.\n */\n static fromArgs(args: SendLibraryConfigArgs) {\n return new SendLibraryConfig(args.messageLib, args.bump)\n }\n\n /**\n * Deserializes the {@link SendLibraryConfig} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [SendLibraryConfig, number] {\n return SendLibraryConfig.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link SendLibraryConfig} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<SendLibraryConfig> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find SendLibraryConfig account at ${address}`)\n }\n return SendLibraryConfig.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, sendLibraryConfigBeet)\n }\n\n /**\n * Deserializes the {@link SendLibraryConfig} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [SendLibraryConfig, number] {\n return sendLibraryConfigBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link SendLibraryConfig} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return sendLibraryConfigBeet.serialize({\n accountDiscriminator: sendLibraryConfigDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link SendLibraryConfig}\n */\n static get byteSize() {\n return sendLibraryConfigBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link SendLibraryConfig} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n SendLibraryConfig.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link SendLibraryConfig} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === SendLibraryConfig.byteSize\n }\n\n /**\n * Returns a readable version of {@link SendLibraryConfig} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n messageLib: this.messageLib.toBase58(),\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const sendLibraryConfigBeet = new beet.BeetStruct<\n SendLibraryConfig,\n SendLibraryConfigArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['messageLib', beetSolana.publicKey],\n ['bump', beet.u8],\n ],\n SendLibraryConfig.fromArgs,\n 'SendLibraryConfig'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\ntype ErrorWithCode = Error & { code: number }\ntype MaybeErrorWithCode = ErrorWithCode | null | undefined\n\nconst createErrorFromCodeLookup: Map<number, () => ErrorWithCode> = new Map()\nconst createErrorFromNameLookup: Map<string, () => ErrorWithCode> = new Map()\n\n/**\n * InvalidArgument: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidArgumentError extends Error {\n readonly code: number = 0x11770\n readonly name: string = 'InvalidArgument'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidArgumentError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11770, () => new InvalidArgumentError())\ncreateErrorFromNameLookup.set(\n 'InvalidArgument',\n () => new InvalidArgumentError()\n)\n\n/**\n * OnlyRegistered: ''\n *\n * @category Errors\n * @category generated\n */\nexport class OnlyRegisteredError extends Error {\n readonly code: number = 0x11771\n readonly name: string = 'OnlyRegistered'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, OnlyRegisteredError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11771, () => new OnlyRegisteredError())\ncreateErrorFromNameLookup.set('OnlyRegistered', () => new OnlyRegisteredError())\n\n/**\n * InvalidAmount: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidAmountError extends Error {\n readonly code: number = 0x11773\n readonly name: string = 'InvalidAmount'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidAmountError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11773, () => new InvalidAmountError())\ncreateErrorFromNameLookup.set('InvalidAmount', () => new InvalidAmountError())\n\n/**\n * InvalidNonce: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidNonceError extends Error {\n readonly code: number = 0x11774\n readonly name: string = 'InvalidNonce'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidNonceError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11774, () => new InvalidNonceError())\ncreateErrorFromNameLookup.set('InvalidNonce', () => new InvalidNonceError())\n\n/**\n * InsufficientFee: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InsufficientFeeError extends Error {\n readonly code: number = 0x11775\n readonly name: string = 'InsufficientFee'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InsufficientFeeError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11775, () => new InsufficientFeeError())\ncreateErrorFromNameLookup.set(\n 'InsufficientFee',\n () => new InsufficientFeeError()\n)\n\n/**\n * Unsorted: ''\n *\n * @category Errors\n * @category generated\n */\nexport class UnsortedError extends Error {\n readonly code: number = 0x11776\n readonly name: string = 'Unsorted'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, UnsortedError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11776, () => new UnsortedError())\ncreateErrorFromNameLookup.set('Unsorted', () => new UnsortedError())\n\n/**\n * InvalidOptionsFormatType: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidOptionsFormatTypeError extends Error {\n readonly code: number = 0x11778\n readonly name: string = 'InvalidOptionsFormatType'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidOptionsFormatTypeError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(\n 0x11778,\n () => new InvalidOptionsFormatTypeError()\n)\ncreateErrorFromNameLookup.set(\n 'InvalidOptionsFormatType',\n () => new InvalidOptionsFormatTypeError()\n)\n\n/**\n * InvalidSize: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidSizeError extends Error {\n readonly code: number = 0x11779\n readonly name: string = 'InvalidSize'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidSizeError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11779, () => new InvalidSizeError())\ncreateErrorFromNameLookup.set('InvalidSize', () => new InvalidSizeError())\n\n/**\n * OutOfRange: ''\n *\n * @category Errors\n * @category generated\n */\nexport class OutOfRangeError extends Error {\n readonly code: number = 0x21770\n readonly name: string = 'OutOfRange'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, OutOfRangeError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x21770, () => new OutOfRangeError())\ncreateErrorFromNameLookup.set('OutOfRange', () => new OutOfRangeError())\n\n/**\n * InvalidState: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidStateError extends Error {\n readonly code: number = 0x31770\n readonly name: string = 'InvalidState'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidStateError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x31770, () => new InvalidStateError())\ncreateErrorFromNameLookup.set('InvalidState', () => new InvalidStateError())\n\n/**\n * PermissionDenied: ''\n *\n * @category Errors\n * @category generated\n */\nexport class PermissionDeniedError extends Error {\n readonly code: number = 0x51770\n readonly name: string = 'PermissionDenied'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, PermissionDeniedError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x51770, () => new PermissionDeniedError())\ncreateErrorFromNameLookup.set(\n 'PermissionDenied',\n () => new PermissionDeniedError()\n)\n\n/**\n * NotFound: ''\n *\n * @category Errors\n * @category generated\n */\nexport class NotFoundError extends Error {\n readonly code: number = 0x61770\n readonly name: string = 'NotFound'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, NotFoundError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x61770, () => new NotFoundError())\ncreateErrorFromNameLookup.set('NotFound', () => new NotFoundError())\n\n/**\n * NotImplemented: ''\n *\n * @category Errors\n * @category generated\n */\nexport class NotImplementedError extends Error {\n readonly code: number = 0xc1770\n readonly name: string = 'NotImplemented'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, NotImplementedError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0xc1770, () => new NotImplementedError())\ncreateErrorFromNameLookup.set('NotImplemented', () => new NotImplementedError())\n\n/**\n * Unavailable: ''\n *\n * @category Errors\n * @category generated\n */\nexport class UnavailableError extends Error {\n readonly code: number = 0xd1770\n readonly name: string = 'Unavailable'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, UnavailableError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0xd1770, () => new UnavailableError())\ncreateErrorFromNameLookup.set('Unavailable', () => new UnavailableError())\n\n/**\n * LzTokenUnavailable: ''\n *\n * @category Errors\n * @category generated\n */\nexport class LzTokenUnavailableError extends Error {\n readonly code: number = 0xd1773\n readonly name: string = 'LzTokenUnavailable'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, LzTokenUnavailableError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0xd1773, () => new LzTokenUnavailableError())\ncreateErrorFromNameLookup.set(\n 'LzTokenUnavailable',\n () => new LzTokenUnavailableError()\n)\n\n/**\n * Attempts to resolve a custom program error from the provided error code.\n * @category Errors\n * @category generated\n */\nexport function errorFromCode(code: number): MaybeErrorWithCode {\n const createError = createErrorFromCodeLookup.get(code)\n return createError != null ? createError() : null\n}\n\n/**\n * Attempts to resolve a custom program error from the provided error name, i.e. 'Unauthorized'.\n * @category Errors\n * @category generated\n */\nexport function errorFromName(name: string): MaybeErrorWithCode {\n const createError = createErrorFromNameLookup.get(name)\n return createError != null ? createError() : null\n}\n","export * from './clear'\nexport * from './clearComposedMessage'\nexport * from './deliver'\nexport * from './deliverComposedMessage'\nexport * from './initConfig'\nexport * from './initDefaultReceiveLibrary'\nexport * from './initDefaultSendLibrary'\nexport * from './initEndpoint'\nexport * from './initNonce'\nexport * from './initReceiveLibrary'\nexport * from './initSendLibrary'\nexport * from './log'\nexport * from './quote'\nexport * from './registerLibrary'\nexport * from './resetConfig'\nexport * from './send'\nexport * from './setConfig'\nexport * from './setDefaultReceiveLibrary'\nexport * from './setDefaultReceiveLibraryTimeout'\nexport * from './setDefaultSendLibrary'\nexport * from './setLayerzeroToken'\nexport * from './setReceiveLibrary'\nexport * from './setReceiveLibraryTimeout'\nexport * from './setSendLibrary'\nexport * from './skip'\nexport * from './snapshotConfig'\nexport * from './transferAdmin'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { ClearParams, clearParamsBeet } from '../types/ClearParams'\n\n/**\n * @category Instructions\n * @category Clear\n * @category generated\n */\nexport type ClearInstructionArgs = {\n params: ClearParams\n}\n/**\n * @category Instructions\n * @category Clear\n * @category generated\n */\nexport const clearStruct = new beet.FixableBeetArgsStruct<\n ClearInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', clearParamsBeet],\n ],\n 'ClearInstructionArgs'\n)\n/**\n * Accounts required by the _clear_ instruction\n *\n * @property [**signer**] receiver\n * @property [] nonce\n * @property [_writable_] payloadHash\n * @property [] endpoint\n * @property [] endpointProgram\n * @category Instructions\n * @category Clear\n * @category generated\n */\nexport type ClearInstructionAccounts = {\n receiver: web3.PublicKey\n nonce: web3.PublicKey\n payloadHash: web3.PublicKey\n endpoint: web3.PublicKey\n endpointProgram: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const clearInstructionDiscriminator = [\n 250, 39, 28, 213, 123, 163, 133, 5,\n]\n\n/**\n * Creates a _Clear_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Clear\n * @category generated\n */\nexport function createClearInstruction(\n accounts: ClearInstructionAccounts,\n args: ClearInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = clearStruct.serialize({\n instructionDiscriminator: clearInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.receiver,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.nonce,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.payloadHash,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointProgram,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type ClearParams = {\n srcEid: number\n sender: number[] /* size: 32 */\n nonce: beet.bignum\n guid: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const clearParamsBeet = new beet.FixableBeetArgsStruct<ClearParams>(\n [\n ['srcEid', beet.u32],\n ['sender', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['nonce', beet.u64],\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'ClearParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n ClearComposedMessageParams,\n clearComposedMessageParamsBeet,\n} from '../types/ClearComposedMessageParams'\n\n/**\n * @category Instructions\n * @category ClearComposedMessage\n * @category generated\n */\nexport type ClearComposedMessageInstructionArgs = {\n params: ClearComposedMessageParams\n}\n/**\n * @category Instructions\n * @category ClearComposedMessage\n * @category generated\n */\nexport const clearComposedMessageStruct = new beet.FixableBeetArgsStruct<\n ClearComposedMessageInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', clearComposedMessageParamsBeet],\n ],\n 'ClearComposedMessageInstructionArgs'\n)\n/**\n * Accounts required by the _clearComposedMessage_ instruction\n *\n * @property [**signer**] composer\n * @property [_writable_] composedMessage\n * @property [] endpoint\n * @property [] endpointProgram\n * @category Instructions\n * @category ClearComposedMessage\n * @category generated\n */\nexport type ClearComposedMessageInstructionAccounts = {\n composer: web3.PublicKey\n composedMessage: web3.PublicKey\n endpoint: web3.PublicKey\n endpointProgram: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const clearComposedMessageInstructionDiscriminator = [\n 18, 231, 148, 207, 84, 195, 146, 251,\n]\n\n/**\n * Creates a _ClearComposedMessage_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category ClearComposedMessage\n * @category generated\n */\nexport function createClearComposedMessageInstruction(\n accounts: ClearComposedMessageInstructionAccounts,\n args: ClearComposedMessageInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = clearComposedMessageStruct.serialize({\n instructionDiscriminator: clearComposedMessageInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.composer,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.composedMessage,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointProgram,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type ClearComposedMessageParams = {\n receiver: web3.PublicKey\n guid: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const clearComposedMessageParamsBeet =\n new beet.FixableBeetArgsStruct<ClearComposedMessageParams>(\n [\n ['receiver', beetSolana.publicKey],\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'ClearComposedMessageParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { DeliverParams, deliverParamsBeet } from '../types/DeliverParams'\n\n/**\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport type DeliverInstructionArgs = {\n params: DeliverParams\n}\n/**\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport const deliverStruct = new beet.BeetArgsStruct<\n DeliverInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', deliverParamsBeet],\n ],\n 'DeliverInstructionArgs'\n)\n/**\n * Accounts required by the _deliver_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [**signer**] receiveLibrary\n * @property [] receiveLibraryConfig\n * @property [] defaultReceiveLibraryConfig\n * @property [_writable_] nonce\n * @property [_writable_] pendingNonce\n * @property [_writable_] payloadHash\n * @property [] endpoint\n * @property [] endpointProgram\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport type DeliverInstructionAccounts = {\n payer: web3.PublicKey\n receiveLibrary: web3.PublicKey\n receiveLibraryConfig: web3.PublicKey\n defaultReceiveLibraryConfig: web3.PublicKey\n nonce: web3.PublicKey\n pendingNonce: web3.PublicKey\n payloadHash: web3.PublicKey\n endpoint: web3.PublicKey\n endpointProgram: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const deliverInstructionDiscriminator = [\n 250, 131, 222, 57, 211, 229, 209, 147,\n]\n\n/**\n * Creates a _Deliver_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport function createDeliverInstruction(\n accounts: DeliverInstructionAccounts,\n args: DeliverInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = deliverStruct.serialize({\n instructionDiscriminator: deliverInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibrary,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultReceiveLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.nonce,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.pendingNonce,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.payloadHash,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointProgram,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type DeliverParams = {\n srcEid: number\n sender: number[] /* size: 32 */\n receiver: web3.PublicKey\n nonce: beet.bignum\n payloadHash: number[] /* size: 32 */\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const deliverParamsBeet = new beet.BeetArgsStruct<DeliverParams>(\n [\n ['srcEid', beet.u32],\n ['sender', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['receiver', beetSolana.publicKey],\n ['nonce', beet.u64],\n ['payloadHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ],\n 'DeliverParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n DeliverComposedMessageParams,\n deliverComposedMessageParamsBeet,\n} from '../types/DeliverComposedMessageParams'\n\n/**\n * @category Instructions\n * @category DeliverComposedMessage\n * @category generated\n */\nexport type DeliverComposedMessageInstructionArgs = {\n params: DeliverComposedMessageParams\n}\n/**\n * @category Instructions\n * @category DeliverComposedMessage\n * @category generated\n */\nexport const deliverComposedMessageStruct = new beet.FixableBeetArgsStruct<\n DeliverComposedMessageInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', deliverComposedMessageParamsBeet],\n ],\n 'DeliverComposedMessageInstructionArgs'\n)\n/**\n * Accounts required by the _deliverComposedMessage_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [**signer**] receiver\n * @property [_writable_] composedMessage\n * @property [] endpoint\n * @property [] endpointProgram\n * @category Instructions\n * @category DeliverComposedMessage\n * @category generated\n */\nexport type DeliverComposedMessageInstructionAccounts = {\n payer: web3.PublicKey\n receiver: web3.PublicKey\n composedMessage: web3.PublicKey\n endpoint: web3.PublicKey\n endpointProgram: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const deliverComposedMessageInstructionDiscriminator = [\n 171, 153, 14, 101, 137, 75, 246, 220,\n]\n\n/**\n * Creates a _DeliverComposedMessage_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category DeliverComposedMessage\n * @category generated\n */\nexport function createDeliverComposedMessageInstruction(\n accounts: DeliverComposedMessageInstructionAccounts,\n args: DeliverComposedMessageInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = deliverComposedMessageStruct.serialize({\n instructionDiscriminator: deliverComposedMessageInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.receiver,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.composedMessage,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointProgram,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type DeliverComposedMessageParams = {\n composer: web3.PublicKey\n guid: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const deliverComposedMessageParamsBeet =\n new beet.FixableBeetArgsStruct<DeliverComposedMessageParams>(\n [\n ['composer', beetSolana.publicKey],\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'DeliverComposedMessageParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitConfigParams,\n initConfigParamsBeet,\n} from '../types/InitConfigParams'\n\n/**\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport type InitConfigInstructionArgs = {\n params: InitConfigParams\n}\n/**\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport const initConfigStruct = new beet.BeetArgsStruct<\n InitConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initConfigParamsBeet],\n ],\n 'InitConfigInstructionArgs'\n)\n/**\n * Accounts required by the _initConfig_ instruction\n *\n * @property [] messageLibAuthority\n * @property [] messageLib\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport type InitConfigInstructionAccounts = {\n messageLibAuthority: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initConfigInstructionDiscriminator = [\n 23, 235, 115, 232, 168, 96, 1, 231,\n]\n\n/**\n * Creates a _InitConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport function createInitConfigInstruction(\n accounts: InitConfigInstructionAccounts,\n args: InitConfigInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initConfigStruct.serialize({\n instructionDiscriminator: initConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initConfigParamsBeet = new beet.BeetArgsStruct<InitConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'InitConfigParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitDefaultReceiveLibraryParams,\n initDefaultReceiveLibraryParamsBeet,\n} from '../types/InitDefaultReceiveLibraryParams'\n\n/**\n * @category Instructions\n * @category InitDefaultReceiveLibrary\n * @category generated\n */\nexport type InitDefaultReceiveLibraryInstructionArgs = {\n params: InitDefaultReceiveLibraryParams\n}\n/**\n * @category Instructions\n * @category InitDefaultReceiveLibrary\n * @category generated\n */\nexport const initDefaultReceiveLibraryStruct = new beet.BeetArgsStruct<\n InitDefaultReceiveLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initDefaultReceiveLibraryParamsBeet],\n ],\n 'InitDefaultReceiveLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _initDefaultReceiveLibrary_ instruction\n *\n * @property [_writable_, **signer**] admin\n * @property [] endpoint\n * @property [_writable_] defaultReceiveLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category InitDefaultReceiveLibrary\n * @category generated\n */\nexport type InitDefaultReceiveLibraryInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n defaultReceiveLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initDefaultReceiveLibraryInstructionDiscriminator = [\n 32, 202, 76, 22, 42, 249, 227, 109,\n]\n\n/**\n * Creates a _InitDefaultReceiveLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitDefaultReceiveLibrary\n * @category generated\n */\nexport function createInitDefaultReceiveLibraryInstruction(\n accounts: InitDefaultReceiveLibraryInstructionAccounts,\n args: InitDefaultReceiveLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initDefaultReceiveLibraryStruct.serialize({\n instructionDiscriminator: initDefaultReceiveLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultReceiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitDefaultReceiveLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initDefaultReceiveLibraryParamsBeet =\n new beet.BeetArgsStruct<InitDefaultReceiveLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ],\n 'InitDefaultReceiveLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitDefaultSendLibraryParams,\n initDefaultSendLibraryParamsBeet,\n} from '../types/InitDefaultSendLibraryParams'\n\n/**\n * @category Instructions\n * @category InitDefaultSendLibrary\n * @category generated\n */\nexport type InitDefaultSendLibraryInstructionArgs = {\n params: InitDefaultSendLibraryParams\n}\n/**\n * @category Instructions\n * @category InitDefaultSendLibrary\n * @category generated\n */\nexport const initDefaultSendLibraryStruct = new beet.BeetArgsStruct<\n InitDefaultSendLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initDefaultSendLibraryParamsBeet],\n ],\n 'InitDefaultSendLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _initDefaultSendLibrary_ instruction\n *\n * @property [_writable_, **signer**] admin\n * @property [] endpoint\n * @property [_writable_] defaultSendLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category InitDefaultSendLibrary\n * @category generated\n */\nexport type InitDefaultSendLibraryInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n defaultSendLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initDefaultSendLibraryInstructionDiscriminator = [\n 120, 187, 15, 31, 174, 97, 138, 58,\n]\n\n/**\n * Creates a _InitDefaultSendLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitDefaultSendLibrary\n * @category generated\n */\nexport function createInitDefaultSendLibraryInstruction(\n accounts: InitDefaultSendLibraryInstructionAccounts,\n args: InitDefaultSendLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initDefaultSendLibraryStruct.serialize({\n instructionDiscriminator: initDefaultSendLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultSendLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitDefaultSendLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initDefaultSendLibraryParamsBeet =\n new beet.BeetArgsStruct<InitDefaultSendLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ],\n 'InitDefaultSendLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitEndpointParams,\n initEndpointParamsBeet,\n} from '../types/InitEndpointParams'\n\n/**\n * @category Instructions\n * @category InitEndpoint\n * @category generated\n */\nexport type InitEndpointInstructionArgs = {\n params: InitEndpointParams\n}\n/**\n * @category Instructions\n * @category InitEndpoint\n * @category generated\n */\nexport const initEndpointStruct = new beet.BeetArgsStruct<\n InitEndpointInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initEndpointParamsBeet],\n ],\n 'InitEndpointInstructionArgs'\n)\n/**\n * Accounts required by the _initEndpoint_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] endpoint\n * @property [_writable_] blockedMessageLibAuthority\n * @property [_writable_] defaultMessageLibAuthority\n * @category Instructions\n * @category InitEndpoint\n * @category generated\n */\nexport type InitEndpointInstructionAccounts = {\n payer: web3.PublicKey\n endpoint: web3.PublicKey\n blockedMessageLibAuthority: web3.PublicKey\n defaultMessageLibAuthority: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initEndpointInstructionDiscriminator = [\n 178, 30, 29, 207, 120, 225, 246, 134,\n]\n\n/**\n * Creates a _InitEndpoint_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitEndpoint\n * @category generated\n */\nexport function createInitEndpointInstruction(\n accounts: InitEndpointInstructionAccounts,\n args: InitEndpointInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initEndpointStruct.serialize({\n instructionDiscriminator: initEndpointInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.blockedMessageLibAuthority,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultMessageLibAuthority,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitEndpointParams = {\n eid: number\n admin: web3.PublicKey\n blockedMessageLib: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initEndpointParamsBeet =\n new beet.BeetArgsStruct<InitEndpointParams>(\n [\n ['eid', beet.u32],\n ['admin', beetSolana.publicKey],\n ['blockedMessageLib', beetSolana.publicKey],\n ],\n 'InitEndpointParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { InitNonceParams, initNonceParamsBeet } from '../types/InitNonceParams'\n\n/**\n * @category Instructions\n * @category InitNonce\n * @category generated\n */\nexport type InitNonceInstructionArgs = {\n params: InitNonceParams\n}\n/**\n * @category Instructions\n * @category InitNonce\n * @category generated\n */\nexport const initNonceStruct = new beet.BeetArgsStruct<\n InitNonceInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initNonceParamsBeet],\n ],\n 'InitNonceInstructionArgs'\n)\n/**\n * Accounts required by the _initNonce_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] nonce\n * @property [_writable_] pendingNonce\n * @category Instructions\n * @category InitNonce\n * @category generated\n */\nexport type InitNonceInstructionAccounts = {\n payer: web3.PublicKey\n nonce: web3.PublicKey\n pendingNonce: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initNonceInstructionDiscriminator = [\n 204, 171, 16, 214, 182, 191, 27, 196,\n]\n\n/**\n * Creates a _InitNonce_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitNonce\n * @category generated\n */\nexport function createInitNonceInstruction(\n accounts: InitNonceInstructionAccounts,\n args: InitNonceInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initNonceStruct.serialize({\n instructionDiscriminator: initNonceInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.nonce,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.pendingNonce,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type InitNonceParams = {\n localOapp: web3.PublicKey\n remoteEid: number\n remoteOapp: number[] /* size: 32 */\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initNonceParamsBeet = new beet.BeetArgsStruct<InitNonceParams>(\n [\n ['localOapp', beetSolana.publicKey],\n ['remoteEid', beet.u32],\n ['remoteOapp', beet.uniformFixedSizeArray(beet.u8, 32)],\n ],\n 'InitNonceParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitReceiveLibraryParams,\n initReceiveLibraryParamsBeet,\n} from '../types/InitReceiveLibraryParams'\n\n/**\n * @category Instructions\n * @category InitReceiveLibrary\n * @category generated\n */\nexport type InitReceiveLibraryInstructionArgs = {\n params: InitReceiveLibraryParams\n}\n/**\n * @category Instructions\n * @category InitReceiveLibrary\n * @category generated\n */\nexport const initReceiveLibraryStruct = new beet.BeetArgsStruct<\n InitReceiveLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initReceiveLibraryParamsBeet],\n ],\n 'InitReceiveLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _initReceiveLibrary_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] receiveLibraryConfig\n * @category Instructions\n * @category InitReceiveLibrary\n * @category generated\n */\nexport type InitReceiveLibraryInstructionAccounts = {\n payer: web3.PublicKey\n receiveLibraryConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initReceiveLibraryInstructionDiscriminator = [\n 197, 114, 81, 100, 45, 233, 36, 230,\n]\n\n/**\n * Creates a _InitReceiveLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitReceiveLibrary\n * @category generated\n */\nexport function createInitReceiveLibraryInstruction(\n accounts: InitReceiveLibraryInstructionAccounts,\n args: InitReceiveLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initReceiveLibraryStruct.serialize({\n instructionDiscriminator: initReceiveLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type InitReceiveLibraryParams = {\n receiver: web3.PublicKey\n eid: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initReceiveLibraryParamsBeet =\n new beet.BeetArgsStruct<InitReceiveLibraryParams>(\n [\n ['receiver', beetSolana.publicKey],\n ['eid', beet.u32],\n ],\n 'InitReceiveLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitSendLibraryParams,\n initSendLibraryParamsBeet,\n} from '../types/InitSendLibraryParams'\n\n/**\n * @category Instructions\n * @category InitSendLibrary\n * @category generated\n */\nexport type InitSendLibraryInstructionArgs = {\n params: InitSendLibraryParams\n}\n/**\n * @category Instructions\n * @category InitSendLibrary\n * @category generated\n */\nexport const initSendLibraryStruct = new beet.BeetArgsStruct<\n InitSendLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initSendLibraryParamsBeet],\n ],\n 'InitSendLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _initSendLibrary_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] sendLibraryConfig\n * @category Instructions\n * @category InitSendLibrary\n * @category generated\n */\nexport type InitSendLibraryInstructionAccounts = {\n payer: web3.PublicKey\n sendLibraryConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initSendLibraryInstructionDiscriminator = [\n 156, 24, 235, 120, 73, 193, 144, 19,\n]\n\n/**\n * Creates a _InitSendLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitSendLibrary\n * @category generated\n */\nexport function createInitSendLibraryInstruction(\n accounts: InitSendLibraryInstructionAccounts,\n args: InitSendLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initSendLibraryStruct.serialize({\n instructionDiscriminator: initSendLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.sendLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type InitSendLibraryParams = {\n sender: web3.PublicKey\n eid: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initSendLibraryParamsBeet =\n new beet.BeetArgsStruct<InitSendLibraryParams>(\n [\n ['sender', beetSolana.publicKey],\n ['eid', beet.u32],\n ],\n 'InitSendLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { EndpointEvent, endpointEventBeet } from '../types/EndpointEvent'\n\n/**\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport type LogInstructionArgs = {\n events: EndpointEvent\n}\n/**\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport const logStruct = new beet.FixableBeetArgsStruct<\n LogInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['events', endpointEventBeet],\n ],\n 'LogInstructionArgs'\n)\n/**\n * Accounts required by the _log_ instruction\n *\n * @property [] endpoint\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport type LogInstructionAccounts = {\n endpoint: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const logInstructionDiscriminator = [\n 141, 230, 214, 242, 9, 209, 207, 170,\n]\n\n/**\n * Creates a _Log_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport function createLogInstruction(\n accounts: LogInstructionAccounts,\n args: LogInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = logStruct.serialize({\n instructionDiscriminator: logInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n/**\n * This type is used to derive the {@link EndpointEvent} type as well as the de/serializer.\n * However don't refer to it in your code but use the {@link EndpointEvent} type instead.\n *\n * @category userTypes\n * @category enums\n * @category generated\n * @private\n */\nexport type EndpointEventRecord = {\n PacketSent: {\n encodedPacket: Uint8Array\n options: Uint8Array\n sendLibrary: web3.PublicKey\n }\n PacketDelivered: {\n srcEid: number\n sender: number[] /* size: 32 */\n receiver: web3.PublicKey\n nonce: beet.bignum\n payloadHash: number[] /* size: 32 */\n receiveLibrary: web3.PublicKey\n }\n PacketReceived: {\n srcEid: number\n sender: number[] /* size: 32 */\n receiver: web3.PublicKey\n nonce: beet.bignum\n payloadHash: number[] /* size: 32 */\n }\n ComposedMessageDelivered: {\n receiver: web3.PublicKey\n composer: web3.PublicKey\n guid: number[] /* size: 32 */\n message: Uint8Array\n }\n ComposedMessageReceived: {\n receiver: web3.PublicKey\n composer: web3.PublicKey\n guid: number[] /* size: 32 */\n messageHash: number[] /* size: 32 */\n }\n}\n\n/**\n * Union type respresenting the EndpointEvent data enum defined in Rust.\n *\n * NOTE: that it includes a `__kind` property which allows to narrow types in\n * switch/if statements.\n * Additionally `isEndpointEvent*` type guards are exposed below to narrow to a specific variant.\n *\n * @category userTypes\n * @category enums\n * @category generated\n */\nexport type EndpointEvent = beet.DataEnumKeyAsKind<EndpointEventRecord>\n\nexport const isEndpointEventPacketSent = (\n x: EndpointEvent\n): x is EndpointEvent & { __kind: 'PacketSent' } => x.__kind === 'PacketSent'\nexport const isEndpointEventPacketDelivered = (\n x: EndpointEvent\n): x is EndpointEvent & { __kind: 'PacketDelivered' } =>\n x.__kind === 'PacketDelivered'\nexport const isEndpointEventPacketReceived = (\n x: EndpointEvent\n): x is EndpointEvent & { __kind: 'PacketReceived' } =>\n x.__kind === 'PacketReceived'\nexport const isEndpointEventComposedMessageDelivered = (\n x: EndpointEvent\n): x is EndpointEvent & { __kind: 'ComposedMessageDelivered' } =>\n x.__kind === 'ComposedMessageDelivered'\nexport const isEndpointEventComposedMessageReceived = (\n x: EndpointEvent\n): x is EndpointEvent & { __kind: 'ComposedMessageReceived' } =>\n x.__kind === 'ComposedMessageReceived'\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const endpointEventBeet = beet.dataEnum<EndpointEventRecord>([\n [\n 'PacketSent',\n new beet.FixableBeetArgsStruct<EndpointEventRecord['PacketSent']>(\n [\n ['encodedPacket', beet.bytes],\n ['options', beet.bytes],\n ['sendLibrary', beetSolana.publicKey],\n ],\n 'EndpointEventRecord[\"PacketSent\"]'\n ),\n ],\n\n [\n 'PacketDelivered',\n new beet.BeetArgsStruct<EndpointEventRecord['PacketDelivered']>(\n [\n ['srcEid', beet.u32],\n ['sender', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['receiver', beetSolana.publicKey],\n ['nonce', beet.u64],\n ['payloadHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['receiveLibrary', beetSolana.publicKey],\n ],\n 'EndpointEventRecord[\"PacketDelivered\"]'\n ),\n ],\n\n [\n 'PacketReceived',\n new beet.BeetArgsStruct<EndpointEventRecord['PacketReceived']>(\n [\n ['srcEid', beet.u32],\n ['sender', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['receiver', beetSolana.publicKey],\n ['nonce', beet.u64],\n ['payloadHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ],\n 'EndpointEventRecord[\"PacketReceived\"]'\n ),\n ],\n\n [\n 'ComposedMessageDelivered',\n new beet.FixableBeetArgsStruct<\n EndpointEventRecord['ComposedMessageDelivered']\n >(\n [\n ['receiver', beetSolana.publicKey],\n ['composer', beetSolana.publicKey],\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'EndpointEventRecord[\"ComposedMessageDelivered\"]'\n ),\n ],\n\n [\n 'ComposedMessageReceived',\n new beet.BeetArgsStruct<EndpointEventRecord['ComposedMessageReceived']>(\n [\n ['receiver', beetSolana.publicKey],\n ['composer', beetSolana.publicKey],\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['messageHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ],\n 'EndpointEventRecord[\"ComposedMessageReceived\"]'\n ),\n ],\n]) as beet.FixableBeet<EndpointEvent, EndpointEvent>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { QuoteParams, quoteParamsBeet } from '../types/QuoteParams'\n\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionArgs = {\n params: QuoteParams\n}\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport const quoteStruct = new beet.FixableBeetArgsStruct<\n QuoteInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', quoteParamsBeet],\n ],\n 'QuoteInstructionArgs'\n)\n/**\n * Accounts required by the _quote_ instruction\n *\n * @property [] sendLibrary\n * @property [] sendLibraryConfig\n * @property [] defaultSendLibraryConfig\n * @property [] sendLibraryAuthority\n * @property [] endpoint\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionAccounts = {\n sendLibrary: web3.PublicKey\n sendLibraryConfig: web3.PublicKey\n defaultSendLibraryConfig: web3.PublicKey\n sendLibraryAuthority: web3.PublicKey\n endpoint: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const quoteInstructionDiscriminator = [\n 149, 42, 109, 247, 134, 146, 213, 123,\n]\n\n/**\n * Creates a _Quote_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport function createQuoteInstruction(\n accounts: QuoteInstructionAccounts,\n args: QuoteInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = quoteStruct.serialize({\n instructionDiscriminator: quoteInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.sendLibrary,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.sendLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultSendLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.sendLibraryAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type QuoteParams = {\n sender: web3.PublicKey\n dstEid: number\n message: Uint8Array\n payInLzToken: boolean\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const quoteParamsBeet = new beet.FixableBeetArgsStruct<QuoteParams>(\n [\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['message', beet.bytes],\n ['payInLzToken', beet.bool],\n ['options', beet.bytes],\n ],\n 'QuoteParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\n\n/**\n * @category Instructions\n * @category RegisterLibrary\n * @category generated\n */\nexport const registerLibraryStruct = new beet.BeetArgsStruct<{\n instructionDiscriminator: number[] /* size: 8 */\n}>(\n [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],\n 'RegisterLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _registerLibrary_ instruction\n *\n * @property [_writable_, **signer**] admin\n * @property [] endpoint\n * @property [] messageLib\n * @property [_writable_] messageLibAuthority\n * @category Instructions\n * @category RegisterLibrary\n * @category generated\n */\nexport type RegisterLibraryInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n messageLib: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const registerLibraryInstructionDiscriminator = [\n 23, 171, 28, 116, 111, 193, 238, 142,\n]\n\n/**\n * Creates a _RegisterLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @category Instructions\n * @category RegisterLibrary\n * @category generated\n */\nexport function createRegisterLibraryInstruction(\n accounts: RegisterLibraryInstructionAccounts,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = registerLibraryStruct.serialize({\n instructionDiscriminator: registerLibraryInstructionDiscriminator,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n ResetConfigParams,\n resetConfigParamsBeet,\n} from '../types/ResetConfigParams'\n\n/**\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport type ResetConfigInstructionArgs = {\n params: ResetConfigParams\n}\n/**\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport const resetConfigStruct = new beet.BeetArgsStruct<\n ResetConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', resetConfigParamsBeet],\n ],\n 'ResetConfigInstructionArgs'\n)\n/**\n * Accounts required by the _resetConfig_ instruction\n *\n * @property [**signer**] oapp\n * @property [] messageLibAuthority\n * @property [] messageLib\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport type ResetConfigInstructionAccounts = {\n oapp: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const resetConfigInstructionDiscriminator = [\n 81, 97, 49, 46, 19, 200, 8, 99,\n]\n\n/**\n * Creates a _ResetConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport function createResetConfigInstruction(\n accounts: ResetConfigInstructionAccounts,\n args: ResetConfigInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = resetConfigStruct.serialize({\n instructionDiscriminator: resetConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.oapp,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type ResetConfigParams = {\n messageLib: web3.PublicKey\n eid: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const resetConfigParamsBeet = new beet.BeetArgsStruct<ResetConfigParams>(\n [\n ['messageLib', beetSolana.publicKey],\n ['eid', beet.u32],\n ],\n 'ResetConfigParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SendParams, sendParamsBeet } from '../types/SendParams'\n\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionArgs = {\n params: SendParams\n}\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport const sendStruct = new beet.FixableBeetArgsStruct<\n SendInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', sendParamsBeet],\n ],\n 'SendInstructionArgs'\n)\n/**\n * Accounts required by the _send_ instruction\n *\n * @property [**signer**] sender\n * @property [_writable_] sendLibrary\n * @property [] sendLibraryConfig\n * @property [] defaultSendLibraryConfig\n * @property [] sendLibraryAuthority\n * @property [] endpoint\n * @property [] endpointProgram\n * @property [_writable_] nonce\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionAccounts = {\n sender: web3.PublicKey\n sendLibrary: web3.PublicKey\n sendLibraryConfig: web3.PublicKey\n defaultSendLibraryConfig: web3.PublicKey\n sendLibraryAuthority: web3.PublicKey\n endpoint: web3.PublicKey\n endpointProgram: web3.PublicKey\n nonce: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const sendInstructionDiscriminator = [102, 251, 20, 187, 65, 75, 12, 69]\n\n/**\n * Creates a _Send_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport function createSendInstruction(\n accounts: SendInstructionAccounts,\n args: SendInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = sendStruct.serialize({\n instructionDiscriminator: sendInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.sender,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.sendLibrary,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.sendLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultSendLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.sendLibraryAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointProgram,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.nonce,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SendParams = {\n dstEid: number\n receiver: number[] /* size: 32 */\n message: Uint8Array\n options: Uint8Array\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const sendParamsBeet = new beet.FixableBeetArgsStruct<SendParams>(\n [\n ['dstEid', beet.u32],\n ['receiver', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ['options', beet.bytes],\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'SendParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetConfigParams, setConfigParamsBeet } from '../types/SetConfigParams'\n\n/**\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport type SetConfigInstructionArgs = {\n params: SetConfigParams\n}\n/**\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport const setConfigStruct = new beet.FixableBeetArgsStruct<\n SetConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setConfigParamsBeet],\n ],\n 'SetConfigInstructionArgs'\n)\n/**\n * Accounts required by the _setConfig_ instruction\n *\n * @property [**signer**] oapp\n * @property [] messageLibAuthority\n * @property [] messageLib\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport type SetConfigInstructionAccounts = {\n oapp: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setConfigInstructionDiscriminator = [\n 108, 158, 154, 175, 212, 98, 52, 66,\n]\n\n/**\n * Creates a _SetConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport function createSetConfigInstruction(\n accounts: SetConfigInstructionAccounts,\n args: SetConfigInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setConfigStruct.serialize({\n instructionDiscriminator: setConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.oapp,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetConfigParams = {\n messageLib: web3.PublicKey\n eid: number\n configType: number\n config: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setConfigParamsBeet =\n new beet.FixableBeetArgsStruct<SetConfigParams>(\n [\n ['messageLib', beetSolana.publicKey],\n ['eid', beet.u32],\n ['configType', beet.u32],\n ['config', beet.bytes],\n ],\n 'SetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultReceiveLibraryParams,\n setDefaultReceiveLibraryParamsBeet,\n} from '../types/SetDefaultReceiveLibraryParams'\n\n/**\n * @category Instructions\n * @category SetDefaultReceiveLibrary\n * @category generated\n */\nexport type SetDefaultReceiveLibraryInstructionArgs = {\n params: SetDefaultReceiveLibraryParams\n}\n/**\n * @category Instructions\n * @category SetDefaultReceiveLibrary\n * @category generated\n */\nexport const setDefaultReceiveLibraryStruct = new beet.BeetArgsStruct<\n SetDefaultReceiveLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultReceiveLibraryParamsBeet],\n ],\n 'SetDefaultReceiveLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultReceiveLibrary_ instruction\n *\n * @property [**signer**] admin\n * @property [] endpoint\n * @property [_writable_] defaultReceiveLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetDefaultReceiveLibrary\n * @category generated\n */\nexport type SetDefaultReceiveLibraryInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n defaultReceiveLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultReceiveLibraryInstructionDiscriminator = [\n 14, 162, 167, 212, 13, 20, 151, 129,\n]\n\n/**\n * Creates a _SetDefaultReceiveLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultReceiveLibrary\n * @category generated\n */\nexport function createSetDefaultReceiveLibraryInstruction(\n accounts: SetDefaultReceiveLibraryInstructionAccounts,\n args: SetDefaultReceiveLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setDefaultReceiveLibraryStruct.serialize({\n instructionDiscriminator: setDefaultReceiveLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultReceiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetDefaultReceiveLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n gracePeriod: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultReceiveLibraryParamsBeet =\n new beet.BeetArgsStruct<SetDefaultReceiveLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ['gracePeriod', beet.u64],\n ],\n 'SetDefaultReceiveLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultReceiveLibraryTimeoutParams,\n setDefaultReceiveLibraryTimeoutParamsBeet,\n} from '../types/SetDefaultReceiveLibraryTimeoutParams'\n\n/**\n * @category Instructions\n * @category SetDefaultReceiveLibraryTimeout\n * @category generated\n */\nexport type SetDefaultReceiveLibraryTimeoutInstructionArgs = {\n params: SetDefaultReceiveLibraryTimeoutParams\n}\n/**\n * @category Instructions\n * @category SetDefaultReceiveLibraryTimeout\n * @category generated\n */\nexport const setDefaultReceiveLibraryTimeoutStruct = new beet.BeetArgsStruct<\n SetDefaultReceiveLibraryTimeoutInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultReceiveLibraryTimeoutParamsBeet],\n ],\n 'SetDefaultReceiveLibraryTimeoutInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultReceiveLibraryTimeout_ instruction\n *\n * @property [**signer**] admin\n * @property [] endpoint\n * @property [_writable_] defaultReceiveLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetDefaultReceiveLibraryTimeout\n * @category generated\n */\nexport type SetDefaultReceiveLibraryTimeoutInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n defaultReceiveLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultReceiveLibraryTimeoutInstructionDiscriminator = [\n 118, 32, 94, 51, 25, 247, 16, 232,\n]\n\n/**\n * Creates a _SetDefaultReceiveLibraryTimeout_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultReceiveLibraryTimeout\n * @category generated\n */\nexport function createSetDefaultReceiveLibraryTimeoutInstruction(\n accounts: SetDefaultReceiveLibraryTimeoutInstructionAccounts,\n args: SetDefaultReceiveLibraryTimeoutInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setDefaultReceiveLibraryTimeoutStruct.serialize({\n instructionDiscriminator:\n setDefaultReceiveLibraryTimeoutInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultReceiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetDefaultReceiveLibraryTimeoutParams = {\n eid: number\n lib: web3.PublicKey\n expiry: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultReceiveLibraryTimeoutParamsBeet =\n new beet.BeetArgsStruct<SetDefaultReceiveLibraryTimeoutParams>(\n [\n ['eid', beet.u32],\n ['lib', beetSolana.publicKey],\n ['expiry', beet.i64],\n ],\n 'SetDefaultReceiveLibraryTimeoutParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultSendLibraryParams,\n setDefaultSendLibraryParamsBeet,\n} from '../types/SetDefaultSendLibraryParams'\n\n/**\n * @category Instructions\n * @category SetDefaultSendLibrary\n * @category generated\n */\nexport type SetDefaultSendLibraryInstructionArgs = {\n params: SetDefaultSendLibraryParams\n}\n/**\n * @category Instructions\n * @category SetDefaultSendLibrary\n * @category generated\n */\nexport const setDefaultSendLibraryStruct = new beet.BeetArgsStruct<\n SetDefaultSendLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultSendLibraryParamsBeet],\n ],\n 'SetDefaultSendLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultSendLibrary_ instruction\n *\n * @property [**signer**] admin\n * @property [] endpoint\n * @property [_writable_] defaultSendLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetDefaultSendLibrary\n * @category generated\n */\nexport type SetDefaultSendLibraryInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n defaultSendLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultSendLibraryInstructionDiscriminator = [\n 220, 215, 110, 127, 237, 178, 215, 170,\n]\n\n/**\n * Creates a _SetDefaultSendLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultSendLibrary\n * @category generated\n */\nexport function createSetDefaultSendLibraryInstruction(\n accounts: SetDefaultSendLibraryInstructionAccounts,\n args: SetDefaultSendLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setDefaultSendLibraryStruct.serialize({\n instructionDiscriminator: setDefaultSendLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultSendLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetDefaultSendLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultSendLibraryParamsBeet =\n new beet.BeetArgsStruct<SetDefaultSendLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ],\n 'SetDefaultSendLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetLayerzeroTokenParams,\n setLayerzeroTokenParamsBeet,\n} from '../types/SetLayerzeroTokenParams'\n\n/**\n * @category Instructions\n * @category SetLayerzeroToken\n * @category generated\n */\nexport type SetLayerzeroTokenInstructionArgs = {\n params: SetLayerzeroTokenParams\n}\n/**\n * @category Instructions\n * @category SetLayerzeroToken\n * @category generated\n */\nexport const setLayerzeroTokenStruct = new beet.FixableBeetArgsStruct<\n SetLayerzeroTokenInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setLayerzeroTokenParamsBeet],\n ],\n 'SetLayerzeroTokenInstructionArgs'\n)\n/**\n * Accounts required by the _setLayerzeroToken_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] endpoint\n * @category Instructions\n * @category SetLayerzeroToken\n * @category generated\n */\nexport type SetLayerzeroTokenInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setLayerzeroTokenInstructionDiscriminator = [\n 53, 136, 83, 234, 245, 223, 194, 248,\n]\n\n/**\n * Creates a _SetLayerzeroToken_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetLayerzeroToken\n * @category generated\n */\nexport function createSetLayerzeroTokenInstruction(\n accounts: SetLayerzeroTokenInstructionAccounts,\n args: SetLayerzeroTokenInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setLayerzeroTokenStruct.serialize({\n instructionDiscriminator: setLayerzeroTokenInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetLayerzeroTokenParams = {\n lzToken: beet.COption<web3.PublicKey>\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setLayerzeroTokenParamsBeet =\n new beet.FixableBeetArgsStruct<SetLayerzeroTokenParams>(\n [['lzToken', beet.coption(beetSolana.publicKey)]],\n 'SetLayerzeroTokenParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetReceiveLibraryParams,\n setReceiveLibraryParamsBeet,\n} from '../types/SetReceiveLibraryParams'\n\n/**\n * @category Instructions\n * @category SetReceiveLibrary\n * @category generated\n */\nexport type SetReceiveLibraryInstructionArgs = {\n params: SetReceiveLibraryParams\n}\n/**\n * @category Instructions\n * @category SetReceiveLibrary\n * @category generated\n */\nexport const setReceiveLibraryStruct = new beet.BeetArgsStruct<\n SetReceiveLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setReceiveLibraryParamsBeet],\n ],\n 'SetReceiveLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _setReceiveLibrary_ instruction\n *\n * @property [**signer**] receiver\n * @property [_writable_] receiveLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetReceiveLibrary\n * @category generated\n */\nexport type SetReceiveLibraryInstructionAccounts = {\n receiver: web3.PublicKey\n receiveLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setReceiveLibraryInstructionDiscriminator = [\n 223, 172, 180, 105, 165, 161, 147, 228,\n]\n\n/**\n * Creates a _SetReceiveLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetReceiveLibrary\n * @category generated\n */\nexport function createSetReceiveLibraryInstruction(\n accounts: SetReceiveLibraryInstructionAccounts,\n args: SetReceiveLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setReceiveLibraryStruct.serialize({\n instructionDiscriminator: setReceiveLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.receiver,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetReceiveLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n gracePeriod: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setReceiveLibraryParamsBeet =\n new beet.BeetArgsStruct<SetReceiveLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ['gracePeriod', beet.u64],\n ],\n 'SetReceiveLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetReceiveLibraryTimeoutParams,\n setReceiveLibraryTimeoutParamsBeet,\n} from '../types/SetReceiveLibraryTimeoutParams'\n\n/**\n * @category Instructions\n * @category SetReceiveLibraryTimeout\n * @category generated\n */\nexport type SetReceiveLibraryTimeoutInstructionArgs = {\n params: SetReceiveLibraryTimeoutParams\n}\n/**\n * @category Instructions\n * @category SetReceiveLibraryTimeout\n * @category generated\n */\nexport const setReceiveLibraryTimeoutStruct = new beet.BeetArgsStruct<\n SetReceiveLibraryTimeoutInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setReceiveLibraryTimeoutParamsBeet],\n ],\n 'SetReceiveLibraryTimeoutInstructionArgs'\n)\n/**\n * Accounts required by the _setReceiveLibraryTimeout_ instruction\n *\n * @property [**signer**] receiver\n * @property [_writable_] receiveLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetReceiveLibraryTimeout\n * @category generated\n */\nexport type SetReceiveLibraryTimeoutInstructionAccounts = {\n receiver: web3.PublicKey\n receiveLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setReceiveLibraryTimeoutInstructionDiscriminator = [\n 33, 159, 29, 53, 218, 156, 41, 192,\n]\n\n/**\n * Creates a _SetReceiveLibraryTimeout_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetReceiveLibraryTimeout\n * @category generated\n */\nexport function createSetReceiveLibraryTimeoutInstruction(\n accounts: SetReceiveLibraryTimeoutInstructionAccounts,\n args: SetReceiveLibraryTimeoutInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setReceiveLibraryTimeoutStruct.serialize({\n instructionDiscriminator: setReceiveLibraryTimeoutInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.receiver,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetReceiveLibraryTimeoutParams = {\n eid: number\n lib: web3.PublicKey\n expiry: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setReceiveLibraryTimeoutParamsBeet =\n new beet.BeetArgsStruct<SetReceiveLibraryTimeoutParams>(\n [\n ['eid', beet.u32],\n ['lib', beetSolana.publicKey],\n ['expiry', beet.i64],\n ],\n 'SetReceiveLibraryTimeoutParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetSendLibraryParams,\n setSendLibraryParamsBeet,\n} from '../types/SetSendLibraryParams'\n\n/**\n * @category Instructions\n * @category SetSendLibrary\n * @category generated\n */\nexport type SetSendLibraryInstructionArgs = {\n params: SetSendLibraryParams\n}\n/**\n * @category Instructions\n * @category SetSendLibrary\n * @category generated\n */\nexport const setSendLibraryStruct = new beet.BeetArgsStruct<\n SetSendLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setSendLibraryParamsBeet],\n ],\n 'SetSendLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _setSendLibrary_ instruction\n *\n * @property [**signer**] sender\n * @property [_writable_] sendLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetSendLibrary\n * @category generated\n */\nexport type SetSendLibraryInstructionAccounts = {\n sender: web3.PublicKey\n sendLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setSendLibraryInstructionDiscriminator = [\n 251, 118, 78, 158, 134, 149, 129, 5,\n]\n\n/**\n * Creates a _SetSendLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetSendLibrary\n * @category generated\n */\nexport function createSetSendLibraryInstruction(\n accounts: SetSendLibraryInstructionAccounts,\n args: SetSendLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setSendLibraryStruct.serialize({\n instructionDiscriminator: setSendLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.sender,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.sendLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetSendLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setSendLibraryParamsBeet =\n new beet.BeetArgsStruct<SetSendLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ],\n 'SetSendLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SkipParams, skipParamsBeet } from '../types/SkipParams'\n\n/**\n * @category Instructions\n * @category Skip\n * @category generated\n */\nexport type SkipInstructionArgs = {\n params: SkipParams\n}\n/**\n * @category Instructions\n * @category Skip\n * @category generated\n */\nexport const skipStruct = new beet.BeetArgsStruct<\n SkipInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', skipParamsBeet],\n ],\n 'SkipInstructionArgs'\n)\n/**\n * Accounts required by the _skip_ instruction\n *\n * @property [**signer**] receiver\n * @property [_writable_] nonce\n * @property [_writable_] pendingNonce\n * @category Instructions\n * @category Skip\n * @category generated\n */\nexport type SkipInstructionAccounts = {\n receiver: web3.PublicKey\n nonce: web3.PublicKey\n pendingNonce: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const skipInstructionDiscriminator = [154, 63, 181, 53, 19, 26, 117, 45]\n\n/**\n * Creates a _Skip_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Skip\n * @category generated\n */\nexport function createSkipInstruction(\n accounts: SkipInstructionAccounts,\n args: SkipInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = skipStruct.serialize({\n instructionDiscriminator: skipInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.receiver,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.nonce,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.pendingNonce,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SkipParams = {\n srcEid: number\n sender: number[] /* size: 32 */\n nonce: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const skipParamsBeet = new beet.BeetArgsStruct<SkipParams>(\n [\n ['srcEid', beet.u32],\n ['sender', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['nonce', beet.u64],\n ],\n 'SkipParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SnapshotConfigParams,\n snapshotConfigParamsBeet,\n} from '../types/SnapshotConfigParams'\n\n/**\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport type SnapshotConfigInstructionArgs = {\n params: SnapshotConfigParams\n}\n/**\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport const snapshotConfigStruct = new beet.BeetArgsStruct<\n SnapshotConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', snapshotConfigParamsBeet],\n ],\n 'SnapshotConfigInstructionArgs'\n)\n/**\n * Accounts required by the _snapshotConfig_ instruction\n *\n * @property [**signer**] oapp\n * @property [] messageLibAuthority\n * @property [] messageLib\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport type SnapshotConfigInstructionAccounts = {\n oapp: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const snapshotConfigInstructionDiscriminator = [\n 11, 153, 235, 114, 93, 177, 208, 119,\n]\n\n/**\n * Creates a _SnapshotConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport function createSnapshotConfigInstruction(\n accounts: SnapshotConfigInstructionAccounts,\n args: SnapshotConfigInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = snapshotConfigStruct.serialize({\n instructionDiscriminator: snapshotConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.oapp,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SnapshotConfigParams = {\n messageLib: web3.PublicKey\n eid: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const snapshotConfigParamsBeet =\n new beet.BeetArgsStruct<SnapshotConfigParams>(\n [\n ['messageLib', beetSolana.publicKey],\n ['eid', beet.u32],\n ],\n 'SnapshotConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n TransferAdminParams,\n transferAdminParamsBeet,\n} from '../types/TransferAdminParams'\n\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionArgs = {\n params: TransferAdminParams\n}\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport const transferAdminStruct = new beet.BeetArgsStruct<\n TransferAdminInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', transferAdminParamsBeet],\n ],\n 'TransferAdminInstructionArgs'\n)\n/**\n * Accounts required by the _transferAdmin_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] endpoint\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const transferAdminInstructionDiscriminator = [\n 42, 242, 66, 106, 228, 10, 111, 156,\n]\n\n/**\n * Creates a _TransferAdmin_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport function createTransferAdminInstruction(\n accounts: TransferAdminInstructionAccounts,\n args: TransferAdminInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = transferAdminStruct.serialize({\n instructionDiscriminator: transferAdminInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type TransferAdminParams = {\n admin: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const transferAdminParamsBeet =\n new beet.BeetArgsStruct<TransferAdminParams>(\n [['admin', beetSolana.publicKey]],\n 'TransferAdminParams'\n )\n","export * from './ClearComposedMessageParams'\nexport * from './ClearParams'\nexport * from './DeliverComposedMessageParams'\nexport * from './DeliverParams'\nexport * from './EndpointEvent'\nexport * from './InitConfigParams'\nexport * from './InitDefaultReceiveLibraryParams'\nexport * from './InitDefaultSendLibraryParams'\nexport * from './InitEndpointParams'\nexport * from './InitNonceParams'\nexport * from './InitReceiveLibraryParams'\nexport * from './InitSendLibraryParams'\nexport * from './MessageLibQuoteParams'\nexport * from './MessageLibResetConfigParams'\nexport * from './MessageLibSendParams'\nexport * from './MessageLibSetConfigParams'\nexport * from './MessageLibSnapshotConfigParams'\nexport * from './MessagingFee'\nexport * from './MessagingReceipt'\nexport * from './Packet'\nexport * from './PacketForQuote'\nexport * from './QuoteParams'\nexport * from './ReceiveLibraryTimeout'\nexport * from './ResetConfigParams'\nexport * from './SendParams'\nexport * from './SetConfigParams'\nexport * from './SetDefaultReceiveLibraryParams'\nexport * from './SetDefaultReceiveLibraryTimeoutParams'\nexport * from './SetDefaultSendLibraryParams'\nexport * from './SetLayerzeroTokenParams'\nexport * from './SetReceiveLibraryParams'\nexport * from './SetReceiveLibraryTimeoutParams'\nexport * from './SetSendLibraryParams'\nexport * from './SkipParams'\nexport * from './SnapshotConfigParams'\nexport * from './TransferAdminParams'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { PacketForQuote, packetForQuoteBeet } from './PacketForQuote'\nexport type MessageLibQuoteParams = {\n packet: PacketForQuote\n payInLzToken: boolean\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibQuoteParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibQuoteParams>(\n [\n ['packet', packetForQuoteBeet],\n ['payInLzToken', beet.bool],\n ['options', beet.bytes],\n ],\n 'MessageLibQuoteParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type PacketForQuote = {\n sender: web3.PublicKey\n dstEid: number\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetForQuoteBeet =\n new beet.FixableBeetArgsStruct<PacketForQuote>(\n [\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['message', beet.bytes],\n ],\n 'PacketForQuote'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibResetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibResetConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibResetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibResetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Packet, packetBeet } from './Packet'\nexport type MessageLibSendParams = {\n guid: number[] /* size: 32 */\n packet: Packet\n options: Uint8Array\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSendParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSendParams>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['packet', packetBeet],\n ['options', beet.bytes],\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessageLibSendParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type Packet = {\n nonce: beet.bignum\n srcEid: number\n sender: web3.PublicKey\n dstEid: number\n receiver: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetBeet = new beet.FixableBeetArgsStruct<Packet>(\n [\n ['nonce', beet.u64],\n ['srcEid', beet.u32],\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['receiver', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'Packet'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n configType: number\n config: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSetConfigParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ['configType', beet.u32],\n ['config', beet.bytes],\n ],\n 'MessageLibSetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSnapshotConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSnapshotConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibSnapshotConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibSnapshotConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type MessagingFee = {\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingFeeBeet = new beet.BeetArgsStruct<MessagingFee>(\n [\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessagingFee'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { MessagingFee, messagingFeeBeet } from './MessagingFee'\nexport type MessagingReceipt = {\n guid: number[] /* size: 32 */\n nonce: beet.bignum\n fee: MessagingFee\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingReceiptBeet = new beet.BeetArgsStruct<MessagingReceipt>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['nonce', beet.u64],\n ['fee', messagingFeeBeet],\n ],\n 'MessagingReceipt'\n)\n","import {\n AccountMeta,\n Commitment,\n Connection,\n GetAccountInfoConfig,\n PublicKey,\n TransactionInstruction,\n} from '@solana/web3.js'\n\nimport { PacketV1Codec } from '@layerzerolabs/lz-v2-utilities'\n\nimport * as accounts from './generated/simple_messagelib/accounts'\nimport * as instructions from './generated/simple_messagelib/instructions'\nimport * as types from './generated/simple_messagelib/types'\nimport { EndpointPDADeriver, MessageLibPDADeriver } from './pda-deriver'\n\nimport { EndpointProgram } from '.'\n\nexport { accounts, instructions, types }\n\nexport class SimpleMessageLib {\n messageLibDeriver: MessageLibPDADeriver\n\n constructor(public program: PublicKey) {\n this.messageLibDeriver = new MessageLibPDADeriver(program)\n }\n\n async initSimpleMessageLib(\n connection: Connection,\n endpointProgram: PublicKey,\n payer: PublicKey,\n admin: PublicKey,\n eid: number,\n nativeFee: number\n ): Promise<TransactionInstruction | null> {\n const [messageLib] = this.messageLibDeriver.messageLib()\n const info = await connection.getAccountInfo(messageLib)\n if (!info) {\n const [endpointAuth] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(messageLib)\n return instructions.createInitMessageLibInstruction(\n <instructions.InitMessageLibInstructionAccounts>{\n payer,\n messageLib,\n },\n {\n params: <types.InitMessageLibParams>{\n endpoint: endpointAuth,\n eid,\n admin,\n fee: nativeFee,\n },\n },\n this.program\n )\n }\n return null\n }\n\n async setWhitelistCaller(admin: PublicKey, newCaller: PublicKey): Promise<TransactionInstruction> {\n const [messageLibPDA] = this.messageLibDeriver.messageLib()\n return instructions.createSetWlCallerInstruction(\n <instructions.SetWlCallerInstructionAccounts>{\n admin,\n messageLib: messageLibPDA,\n },\n <instructions.SetWlCallerInstructionArgs>{\n params: <types.SetWlCallerParams>{\n newCaller,\n },\n },\n this.program\n )\n }\n\n async isWhiteListed(\n connection: Connection,\n caller: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<boolean> {\n try {\n const exceptedCaller = await this.getWhiteListCaller(connection, commitmentOrConfig)\n return exceptedCaller.equals(caller)\n } catch (e) {\n return false\n }\n }\n\n async getWhiteListCaller(\n connection: Connection,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<PublicKey> {\n const [messageLibPDA] = this.messageLibDeriver.messageLib()\n const messageLibInfo = await accounts.MessageLib.fromAccountAddress(\n connection,\n messageLibPDA,\n commitmentOrConfig\n )\n return messageLibInfo.wlCaller\n }\n\n async validatePacket(\n connection: Connection,\n endpointProgram: PublicKey,\n payer: PublicKey,\n encodedPacket: Uint8Array\n ): Promise<TransactionInstruction> {\n const packet = PacketV1Codec.fromBytes(encodedPacket)\n const [receiveLibrary] = this.messageLibDeriver.messageLib()\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return instructions.createValidatePacketInstruction(\n <instructions.ValidatePacketInstructionAccounts>{\n payer: payer,\n receiveLibrary,\n anchorRemainingAccounts: await endpoint.getDeliverIXAccountMetaForCPI(\n connection,\n payer,\n packet,\n receiveLibrary\n ),\n },\n <instructions.ValidatePacketInstructionArgs>{\n params: <types.ValidatePacketParams>{ packet: encodedPacket },\n },\n this.program\n )\n }\n\n /***\n * Get the account meta of the send instruction for CPI(Cross-Program Invocation )\n */\n async getSendIXAccountMetaForCPI(endpointProgram: PublicKey, payer: PublicKey): Promise<Array<AccountMeta>> {\n const [msgLib] = this.messageLibDeriver.messageLib()\n const [endpointAuth] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n const ix = instructions.createSendInstruction(\n <instructions.SendInstructionAccounts>{\n endpoint: endpointAuth, //signer\n messageLib: msgLib,\n payer,\n },\n /// Fake value. params is useless.\n <instructions.SendInstructionArgs>{\n params: <types.MessageLibSendParams>{\n guid: Array.from(endpointProgram.toBytes()),\n packet: <types.Packet>{\n nonce: 0,\n srcEid: 0,\n sender: endpointProgram,\n dstEid: 0,\n receiver: Array.from(endpointProgram.toBytes()),\n message: Uint8Array.from(Buffer.from('test')),\n },\n options: Uint8Array.from(Buffer.from('test')),\n nativeFee: 0,\n lzTokenFee: 0,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n async getQuoteIXAccountMetaForCPI(payInLzToken: boolean): Promise<Array<AccountMeta>> {\n const [msgLib] = this.messageLibDeriver.messageLib()\n const ix = instructions.createQuoteInstruction(\n <instructions.QuoteInstructionAccounts>{\n messageLib: msgLib,\n },\n // Fake params, just to get ix.keys\n <instructions.QuoteInstructionArgs>{\n params: <types.MessageLibQuoteParams>{\n packet: <types.PacketForQuote>{\n sender: msgLib,\n dstEid: 1,\n message: Uint8Array.from([]),\n },\n payInLzToken,\n options: Uint8Array.from([]),\n },\n }\n )\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n}\n","export * from './MessageLib'\n\nimport { MessageLib } from './MessageLib'\n\nexport const accountProviders = { MessageLib }\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link MessageLib}\n * @category Accounts\n * @category generated\n */\nexport type MessageLibArgs = {\n eid: number\n endpoint: web3.PublicKey\n bump: number\n admin: web3.PublicKey\n treasury: web3.PublicKey\n fee: beet.bignum\n wlCaller: web3.PublicKey\n}\n\nexport const messageLibDiscriminator = [141, 191, 244, 48, 52, 174, 199, 209]\n/**\n * Holds the data for the {@link MessageLib} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class MessageLib implements MessageLibArgs {\n private constructor(\n readonly eid: number,\n readonly endpoint: web3.PublicKey,\n readonly bump: number,\n readonly admin: web3.PublicKey,\n readonly treasury: web3.PublicKey,\n readonly fee: beet.bignum,\n readonly wlCaller: web3.PublicKey\n ) {}\n\n /**\n * Creates a {@link MessageLib} instance from the provided args.\n */\n static fromArgs(args: MessageLibArgs) {\n return new MessageLib(\n args.eid,\n args.endpoint,\n args.bump,\n args.admin,\n args.treasury,\n args.fee,\n args.wlCaller\n )\n }\n\n /**\n * Deserializes the {@link MessageLib} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [MessageLib, number] {\n return MessageLib.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link MessageLib} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<MessageLib> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find MessageLib account at ${address}`)\n }\n return MessageLib.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, messageLibBeet)\n }\n\n /**\n * Deserializes the {@link MessageLib} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [MessageLib, number] {\n return messageLibBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link MessageLib} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return messageLibBeet.serialize({\n accountDiscriminator: messageLibDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link MessageLib}\n */\n static get byteSize() {\n return messageLibBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link MessageLib} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n MessageLib.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link MessageLib} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === MessageLib.byteSize\n }\n\n /**\n * Returns a readable version of {@link MessageLib} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n eid: this.eid,\n endpoint: this.endpoint.toBase58(),\n bump: this.bump,\n admin: this.admin.toBase58(),\n treasury: this.treasury.toBase58(),\n fee: (() => {\n const x = <{ toNumber: () => number }>this.fee\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n wlCaller: this.wlCaller.toBase58(),\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const messageLibBeet = new beet.BeetStruct<\n MessageLib,\n MessageLibArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['eid', beet.u32],\n ['endpoint', beetSolana.publicKey],\n ['bump', beet.u8],\n ['admin', beetSolana.publicKey],\n ['treasury', beetSolana.publicKey],\n ['fee', beet.u64],\n ['wlCaller', beetSolana.publicKey],\n ],\n MessageLib.fromArgs,\n 'MessageLib'\n)\n","export * from './initMessageLib'\nexport * from './quote'\nexport * from './send'\nexport * from './setFee'\nexport * from './setWlCaller'\nexport * from './transferAdmin'\nexport * from './validatePacket'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitMessageLibParams,\n initMessageLibParamsBeet,\n} from '../types/InitMessageLibParams'\n\n/**\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport type InitMessageLibInstructionArgs = {\n params: InitMessageLibParams\n}\n/**\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport const initMessageLibStruct = new beet.BeetArgsStruct<\n InitMessageLibInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initMessageLibParamsBeet],\n ],\n 'InitMessageLibInstructionArgs'\n)\n/**\n * Accounts required by the _initMessageLib_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] messageLib\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport type InitMessageLibInstructionAccounts = {\n payer: web3.PublicKey\n messageLib: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initMessageLibInstructionDiscriminator = [\n 184, 93, 59, 206, 98, 238, 225, 54,\n]\n\n/**\n * Creates a _InitMessageLib_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport function createInitMessageLibInstruction(\n accounts: InitMessageLibInstructionAccounts,\n args: InitMessageLibInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = initMessageLibStruct.serialize({\n instructionDiscriminator: initMessageLibInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitMessageLibParams = {\n eid: number\n endpoint: web3.PublicKey\n admin: web3.PublicKey\n fee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initMessageLibParamsBeet =\n new beet.BeetArgsStruct<InitMessageLibParams>(\n [\n ['eid', beet.u32],\n ['endpoint', beetSolana.publicKey],\n ['admin', beetSolana.publicKey],\n ['fee', beet.u64],\n ],\n 'InitMessageLibParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibQuoteParams,\n messageLibQuoteParamsBeet,\n} from '../types/MessageLibQuoteParams'\n\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionArgs = {\n params: MessageLibQuoteParams\n}\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport const quoteStruct = new beet.FixableBeetArgsStruct<\n QuoteInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibQuoteParamsBeet],\n ],\n 'QuoteInstructionArgs'\n)\n/**\n * Accounts required by the _quote_ instruction\n *\n * @property [] messageLib\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionAccounts = {\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const quoteInstructionDiscriminator = [\n 149, 42, 109, 247, 134, 146, 213, 123,\n]\n\n/**\n * Creates a _Quote_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport function createQuoteInstruction(\n accounts: QuoteInstructionAccounts,\n args: QuoteInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = quoteStruct.serialize({\n instructionDiscriminator: quoteInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { PacketForQuote, packetForQuoteBeet } from './PacketForQuote'\nexport type MessageLibQuoteParams = {\n packet: PacketForQuote\n payInLzToken: boolean\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibQuoteParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibQuoteParams>(\n [\n ['packet', packetForQuoteBeet],\n ['payInLzToken', beet.bool],\n ['options', beet.bytes],\n ],\n 'MessageLibQuoteParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type PacketForQuote = {\n sender: web3.PublicKey\n dstEid: number\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetForQuoteBeet =\n new beet.FixableBeetArgsStruct<PacketForQuote>(\n [\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['message', beet.bytes],\n ],\n 'PacketForQuote'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibSendParams,\n messageLibSendParamsBeet,\n} from '../types/MessageLibSendParams'\n\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionArgs = {\n params: MessageLibSendParams\n}\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport const sendStruct = new beet.FixableBeetArgsStruct<\n SendInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibSendParamsBeet],\n ],\n 'SendInstructionArgs'\n)\n/**\n * Accounts required by the _send_ instruction\n *\n * @property [**signer**] endpoint\n * @property [_writable_] messageLib\n * @property [_writable_, **signer**] payer\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionAccounts = {\n endpoint: web3.PublicKey\n messageLib: web3.PublicKey\n payer: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const sendInstructionDiscriminator = [102, 251, 20, 187, 65, 75, 12, 69]\n\n/**\n * Creates a _Send_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport function createSendInstruction(\n accounts: SendInstructionAccounts,\n args: SendInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = sendStruct.serialize({\n instructionDiscriminator: sendInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Packet, packetBeet } from './Packet'\nexport type MessageLibSendParams = {\n guid: number[] /* size: 32 */\n packet: Packet\n options: Uint8Array\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSendParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSendParams>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['packet', packetBeet],\n ['options', beet.bytes],\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessageLibSendParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type Packet = {\n nonce: beet.bignum\n srcEid: number\n sender: web3.PublicKey\n dstEid: number\n receiver: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetBeet = new beet.FixableBeetArgsStruct<Packet>(\n [\n ['nonce', beet.u64],\n ['srcEid', beet.u32],\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['receiver', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'Packet'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetFeeParams, setFeeParamsBeet } from '../types/SetFeeParams'\n\n/**\n * @category Instructions\n * @category SetFee\n * @category generated\n */\nexport type SetFeeInstructionArgs = {\n params: SetFeeParams\n}\n/**\n * @category Instructions\n * @category SetFee\n * @category generated\n */\nexport const setFeeStruct = new beet.BeetArgsStruct<\n SetFeeInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setFeeParamsBeet],\n ],\n 'SetFeeInstructionArgs'\n)\n/**\n * Accounts required by the _setFee_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] messageLib\n * @category Instructions\n * @category SetFee\n * @category generated\n */\nexport type SetFeeInstructionAccounts = {\n admin: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setFeeInstructionDiscriminator = [\n 18, 154, 24, 18, 237, 214, 19, 80,\n]\n\n/**\n * Creates a _SetFee_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetFee\n * @category generated\n */\nexport function createSetFeeInstruction(\n accounts: SetFeeInstructionAccounts,\n args: SetFeeInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = setFeeStruct.serialize({\n instructionDiscriminator: setFeeInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetFeeParams = {\n fee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setFeeParamsBeet = new beet.BeetArgsStruct<SetFeeParams>(\n [['fee', beet.u64]],\n 'SetFeeParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetWlCallerParams,\n setWlCallerParamsBeet,\n} from '../types/SetWlCallerParams'\n\n/**\n * @category Instructions\n * @category SetWlCaller\n * @category generated\n */\nexport type SetWlCallerInstructionArgs = {\n params: SetWlCallerParams\n}\n/**\n * @category Instructions\n * @category SetWlCaller\n * @category generated\n */\nexport const setWlCallerStruct = new beet.BeetArgsStruct<\n SetWlCallerInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setWlCallerParamsBeet],\n ],\n 'SetWlCallerInstructionArgs'\n)\n/**\n * Accounts required by the _setWlCaller_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] messageLib\n * @category Instructions\n * @category SetWlCaller\n * @category generated\n */\nexport type SetWlCallerInstructionAccounts = {\n admin: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setWlCallerInstructionDiscriminator = [\n 153, 41, 240, 37, 126, 107, 14, 253,\n]\n\n/**\n * Creates a _SetWlCaller_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetWlCaller\n * @category generated\n */\nexport function createSetWlCallerInstruction(\n accounts: SetWlCallerInstructionAccounts,\n args: SetWlCallerInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = setWlCallerStruct.serialize({\n instructionDiscriminator: setWlCallerInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetWlCallerParams = {\n newCaller: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setWlCallerParamsBeet = new beet.BeetArgsStruct<SetWlCallerParams>(\n [['newCaller', beetSolana.publicKey]],\n 'SetWlCallerParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n TransferAdminParams,\n transferAdminParamsBeet,\n} from '../types/TransferAdminParams'\n\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionArgs = {\n params: TransferAdminParams\n}\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport const transferAdminStruct = new beet.BeetArgsStruct<\n TransferAdminInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', transferAdminParamsBeet],\n ],\n 'TransferAdminInstructionArgs'\n)\n/**\n * Accounts required by the _transferAdmin_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] messageLib\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionAccounts = {\n admin: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const transferAdminInstructionDiscriminator = [\n 42, 242, 66, 106, 228, 10, 111, 156,\n]\n\n/**\n * Creates a _TransferAdmin_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport function createTransferAdminInstruction(\n accounts: TransferAdminInstructionAccounts,\n args: TransferAdminInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = transferAdminStruct.serialize({\n instructionDiscriminator: transferAdminInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type TransferAdminParams = {\n admin: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const transferAdminParamsBeet =\n new beet.BeetArgsStruct<TransferAdminParams>(\n [['admin', beetSolana.publicKey]],\n 'TransferAdminParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n ValidatePacketParams,\n validatePacketParamsBeet,\n} from '../types/ValidatePacketParams'\n\n/**\n * @category Instructions\n * @category ValidatePacket\n * @category generated\n */\nexport type ValidatePacketInstructionArgs = {\n params: ValidatePacketParams\n}\n/**\n * @category Instructions\n * @category ValidatePacket\n * @category generated\n */\nexport const validatePacketStruct = new beet.FixableBeetArgsStruct<\n ValidatePacketInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', validatePacketParamsBeet],\n ],\n 'ValidatePacketInstructionArgs'\n)\n/**\n * Accounts required by the _validatePacket_ instruction\n *\n * @property [**signer**] payer\n * @property [] receiveLibrary\n * @category Instructions\n * @category ValidatePacket\n * @category generated\n */\nexport type ValidatePacketInstructionAccounts = {\n payer: web3.PublicKey\n receiveLibrary: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const validatePacketInstructionDiscriminator = [\n 34, 146, 107, 76, 157, 98, 105, 211,\n]\n\n/**\n * Creates a _ValidatePacket_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category ValidatePacket\n * @category generated\n */\nexport function createValidatePacketInstruction(\n accounts: ValidatePacketInstructionAccounts,\n args: ValidatePacketInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = validatePacketStruct.serialize({\n instructionDiscriminator: validatePacketInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibrary,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type ValidatePacketParams = {\n packet: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const validatePacketParamsBeet =\n new beet.FixableBeetArgsStruct<ValidatePacketParams>(\n [['packet', beet.bytes]],\n 'ValidatePacketParams'\n )\n","export * from './InitConfigParams'\nexport * from './InitMessageLibParams'\nexport * from './MessageLibQuoteParams'\nexport * from './MessageLibResetConfigParams'\nexport * from './MessageLibSendParams'\nexport * from './MessageLibSetConfigParams'\nexport * from './MessageLibSnapshotConfigParams'\nexport * from './MessagingFee'\nexport * from './MessagingReceipt'\nexport * from './Packet'\nexport * from './PacketForQuote'\nexport * from './SetFeeParams'\nexport * from './SetWlCallerParams'\nexport * from './TransferAdminParams'\nexport * from './ValidatePacketParams'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initConfigParamsBeet = new beet.BeetArgsStruct<InitConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'InitConfigParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibResetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibResetConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibResetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibResetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n configType: number\n config: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSetConfigParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ['configType', beet.u32],\n ['config', beet.bytes],\n ],\n 'MessageLibSetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSnapshotConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSnapshotConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibSnapshotConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibSnapshotConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type MessagingFee = {\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingFeeBeet = new beet.BeetArgsStruct<MessagingFee>(\n [\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessagingFee'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { MessagingFee, messagingFeeBeet } from './MessagingFee'\nexport type MessagingReceipt = {\n guid: number[] /* size: 32 */\n nonce: beet.bignum\n fee: MessagingFee\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingReceiptBeet = new beet.BeetArgsStruct<MessagingReceipt>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['nonce', beet.u64],\n ['fee', messagingFeeBeet],\n ],\n 'MessagingReceipt'\n)\n","import * as assert from 'assert'\n\nimport { BN } from '@coral-xyz/anchor'\nimport { array as BeetArray, bool as BeetBool, FixableBeetArgsStruct, u32, u64, u8 } from '@metaplex-foundation/beet'\nimport { publicKey as BeetPublicKey } from '@metaplex-foundation/beet-solana'\nimport {\n TOKEN_PROGRAM_ID,\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n getAccount,\n getAssociatedTokenAddress,\n} from '@solana/spl-token'\nimport {\n AccountMeta,\n Commitment,\n Connection,\n GetAccountInfoConfig,\n PublicKey,\n TransactionInstruction,\n} from '@solana/web3.js'\n\nimport { PacketV1Codec } from '@layerzerolabs/lz-v2-utilities'\n\nimport * as accounts from './generated/uln/accounts'\nimport * as instructions from './generated/uln/instructions'\nimport * as types from './generated/uln/types'\nimport { CONFIRMATIONS_SEED, EndpointPDADeriver, UlnPDADeriver } from './pda-deriver'\n\nimport { EndpointProgram } from '.'\nexport { accounts, instructions, types }\n\nexport enum SetConfigType {\n MAX_MESSAGE_SIZE = 1,\n OUTBOUND_CONFIRMATIONS = 2,\n EXECUTOR = 3,\n INBOUND_CONFIRMATIONS = 4,\n ORACLES = 5,\n OPTIONAL_ORACLES = 6,\n}\n\nexport type MaxMessageSize = {\n size: number\n __kind: 'MaxMessageSize'\n}\n\nexport type OutboundConfirmations = {\n confirmations: number\n __kind: 'OutboundConfirmations'\n}\n\nexport type Executor = {\n executor: PublicKey\n __kind: 'Executor'\n}\n\nexport type InboundConfirmations = {\n confirmations: number\n __kind: 'InboundConfirmations'\n}\n\nexport type Oracles = {\n useCustomOracles: boolean\n oracles: PublicKey[]\n __kind: 'Oracles'\n}\n\nexport type OptionalOracles = {\n useCustomOptionalOracles: boolean\n optionalOracles: PublicKey[]\n threshold: number\n __kind: 'OptionalOracles'\n}\n\nexport function constructSetConfigData(\n configType: SetConfigType,\n configData: (\n | MaxMessageSize\n | InboundConfirmations\n | OutboundConfirmations\n | Executor\n | Oracles\n | OptionalOracles\n ) & { __kind: string }\n): Uint8Array {\n let data: Buffer\n if (configType === SetConfigType.MAX_MESSAGE_SIZE && configData.__kind === 'MaxMessageSize') {\n const beetConfigData = new FixableBeetArgsStruct<MaxMessageSize>([['size', u32]])\n ;[data] = beetConfigData.serialize(configData)\n } else if (configType === SetConfigType.INBOUND_CONFIRMATIONS && configData.__kind === 'InboundConfirmations') {\n const beetConfigData = new FixableBeetArgsStruct<InboundConfirmations>([['confirmations', u64]])\n ;[data] = beetConfigData.serialize(configData)\n } else if (configType === SetConfigType.OUTBOUND_CONFIRMATIONS && configData.__kind === 'OutboundConfirmations') {\n const beetConfigData = new FixableBeetArgsStruct<OutboundConfirmations>([['confirmations', u64]])\n ;[data] = beetConfigData.serialize(configData)\n } else if (configType === SetConfigType.EXECUTOR && configData.__kind === 'Executor') {\n const beetConfigData = new FixableBeetArgsStruct<Executor>([['executor', BeetPublicKey]])\n ;[data] = beetConfigData.serialize(configData)\n } else if (configType === SetConfigType.ORACLES && configData.__kind === 'Oracles') {\n const beetConfigData = new FixableBeetArgsStruct<Oracles>([\n ['useCustomOracles', BeetBool],\n ['oracles', BeetArray(BeetPublicKey)],\n ])\n ;[data] = beetConfigData.serialize(configData)\n } else if (configType === SetConfigType.OPTIONAL_ORACLES && configData.__kind === 'OptionalOracles') {\n const beetConfigData = new FixableBeetArgsStruct<OptionalOracles>([\n ['useCustomOptionalOracles', BeetBool],\n ['optionalOracles', BeetArray(BeetPublicKey)],\n ['threshold', u8],\n ])\n ;[data] = beetConfigData.serialize(configData)\n } else {\n throw new Error('invalid config type')\n }\n return Uint8Array.from(data)\n}\n\nexport class Uln {\n ulnDeriver: UlnPDADeriver\n\n constructor(public program: PublicKey) {\n this.ulnDeriver = new UlnPDADeriver(program)\n }\n\n async initUln(\n connection: Connection,\n payer: PublicKey,\n admin: PublicKey,\n endpointProgram: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [setting] = this.ulnDeriver.setting()\n const [msgLib] = this.ulnDeriver.messageLib()\n const [endpointAuth] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n const info = await connection.getAccountInfo(setting, commitmentOrConfig)\n if (info) {\n console.warn('uln already initialized')\n return null\n }\n\n return instructions.createInitUlnInstruction(\n <instructions.InitUlnInstructionAccounts>{\n payer,\n uln: setting,\n messageLib: msgLib,\n },\n <instructions.InitUlnInstructionArgs>{\n params: <types.InitUlnParams>{\n eid,\n admin,\n endpoint: endpointAuth,\n },\n },\n this.program\n )\n }\n\n /**\n * before calling this function, you should call initUln to initialize the uln\n */\n async initOrUpdateDefaultConfig(\n connection: Connection,\n admin: PublicKey,\n eid: number,\n config: types.UlnConfig,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [setting] = this.ulnDeriver.setting()\n const [configPDA] = this.ulnDeriver.config(eid)\n const configInfo = await connection.getAccountInfo(configPDA, commitmentOrConfig)\n if (configInfo) {\n // update default config\n return instructions.createSetDefaultUlnConfigInstruction(\n <instructions.SetDefaultUlnConfigInstructionAccounts>{\n admin,\n uln: setting,\n ulnConfig: configPDA,\n },\n <instructions.SetDefaultUlnConfigInstructionArgs>{\n params: <types.SetDefaultUlnConfigParams>{\n eid,\n config,\n },\n },\n this.program\n )\n } else {\n // init default config\n return instructions.createInitDefaultUlnConfigInstruction(\n <instructions.InitDefaultUlnConfigInstructionAccounts>{\n admin,\n uln: setting,\n ulnConfig: configPDA,\n },\n <instructions.InitDefaultUlnConfigInstructionArgs>{\n params: <types.InitDefaultUlnConfigParams>{\n eid,\n config,\n },\n },\n this.program\n )\n }\n }\n\n /**\n * before calling this function, you should call initUln to initialize the uln\n */\n async setTreasury(\n admin: PublicKey,\n treasury: {\n nativeReceiver: PublicKey\n nativeBp: number\n lzToken: { receiver: PublicKey; fee: number } | null\n } | null\n ): Promise<TransactionInstruction> {\n const [setting] = this.ulnDeriver.setting()\n return instructions.createSetTreasuryInstruction(\n <instructions.SetTreasuryInstructionAccounts>{\n admin,\n uln: setting,\n },\n <instructions.SetTreasuryInstructionArgs>{\n params: <types.SetTreasuryParams>{\n treasury,\n },\n },\n this.program\n )\n }\n\n async transferAdmin(\n connection: Connection,\n admin: PublicKey,\n newAdmin: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [setting] = this.ulnDeriver.setting()\n const info = await connection.getAccountInfo(setting, commitmentOrConfig)\n if (!info) {\n console.warn('uln not initialized')\n return null\n }\n return instructions.createTransferAdminInstruction(\n <instructions.TransferAdminInstructionAccounts>{\n admin,\n uln: setting,\n },\n <instructions.TransferAdminInstructionArgs>{\n params: <types.TransferAdminParams>{\n admin: newAdmin,\n },\n },\n this.program\n )\n }\n\n async initOrUpdateDefaultOptions(\n connection: Connection,\n admin: PublicKey,\n eid: number,\n options: Uint8Array,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [setting] = this.ulnDeriver.setting()\n const [defaultOptions] = this.ulnDeriver.options(eid)\n if (!(await connection.getAccountInfo(defaultOptions, commitmentOrConfig))) {\n // init default options\n return instructions.createInitDefaultOptionsInstruction(\n <instructions.InitDefaultOptionsInstructionAccounts>{\n admin,\n uln: setting,\n defaultOptions,\n },\n <instructions.InitDefaultOptionsInstructionArgs>{\n params: <types.InitDefaultOptionsParams>{\n eid,\n options,\n },\n },\n this.program\n )\n } else {\n // update default options\n return instructions.createSetDefaultOptionsInstruction(\n <instructions.SetDefaultOptionsInstructionAccounts>{\n admin,\n uln: setting,\n defaultOptions,\n },\n <instructions.SetDefaultOptionsInstructionArgs>{\n params: <types.SetDefaultOptionsParams>{\n eid,\n options,\n },\n },\n this.program\n )\n }\n }\n\n async registerWorker(\n connection: Connection,\n worker: PublicKey,\n workerId: types.WorkerId,\n admins: Array<PublicKey> | null,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n if (admins && admins.length > 3) {\n throw new Error('too many admins. The maximum is 3')\n } else if (admins && admins.length < 3) {\n // fill with default\n for (let i = admins.length; i < 3; i++) {\n admins.push(PublicKey.default)\n }\n }\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n if (await connection.getAccountInfo(workerConfig, commitmentOrConfig)) {\n throw new Error('worker already registered')\n }\n\n return instructions.createRegisterWorkerInstruction(\n <instructions.RegisterWorkerInstructionAccounts>{\n worker: worker,\n workerConfig,\n },\n <instructions.RegisterWorkerInstructionArgs>{\n params: <types.RegisterWorkerParams>{\n workerId,\n admins,\n },\n },\n this.program\n )\n }\n\n async setWorkerAllowlist(\n connection: Connection,\n worker: PublicKey,\n oappID: Array<PublicKey>,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n if (!(await connection.getAccountInfo(workerConfig, commitmentOrConfig))) {\n throw new Error('worker not registered')\n }\n\n return instructions.createSetAllowlistInstruction(\n <instructions.SetAllowlistInstructionAccounts>{\n worker,\n workerConfig,\n },\n <instructions.SetAllowlistInstructionArgs>{\n params: <types.SetAllowlistParams>{\n allowlist: oappID,\n },\n },\n this.program\n )\n }\n\n async setWorkerDenylist(\n connection: Connection,\n worker: PublicKey,\n oappID: Array<PublicKey>,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n if (!(await connection.getAccountInfo(workerConfig, commitmentOrConfig))) {\n throw new Error('worker not registered')\n }\n\n return instructions.createSetDenylistInstruction(\n <instructions.SetDenylistInstructionAccounts>{\n worker,\n workerConfig,\n },\n <instructions.SetDenylistInstructionArgs>{\n params: <types.SetDenylistParams>{\n denylist: oappID,\n },\n },\n this.program\n )\n }\n\n async setWorkerDstConfig(\n connection: Connection,\n worker: PublicKey,\n dstConfigs: Array<types.DstConfig>,\n admin: PublicKey\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n return instructions.createSetDstConfigInstruction(\n <instructions.SetDstConfigInstructionAccounts>{\n admin,\n workerConfig,\n },\n <instructions.SetDstConfigInstructionArgs>{\n params: <types.SetDstConfigParams>{\n worker,\n dstConfigs,\n },\n },\n this.program\n )\n }\n\n /**\n *\n * @param prices - prices to set. the structure like: [{__kind: 'Price', fields: [{eid: dstEid, priceRatio: 1, gasPriceInUnit: 1, gasPerByte: 1s}]}]\n * @returns\n */\n async setWorkerPrice(\n worker: PublicKey,\n prices: Array<types.PriceParams>,\n admin: PublicKey\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n return instructions.createSetPriceInstruction(\n <instructions.SetPriceInstructionAccounts>{\n admin,\n workerConfig,\n },\n <instructions.SetPriceInstructionArgs>{\n params: <types.SetPriceParams>{\n worker,\n prices,\n },\n },\n this.program\n )\n }\n\n async setWorkerAdmin(\n connection: Connection,\n worker: PublicKey,\n admins: Array<PublicKey> | null\n ): Promise<TransactionInstruction> {\n if (admins && admins.length > 3) {\n throw new Error('too many admins. The maximum is 3')\n } else if (admins && admins.length < 3) {\n // fill with default\n for (let i = admins.length; i < 3; i++) {\n admins.push(PublicKey.default)\n }\n }\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n // if (!(await connection.getAccountInfo(workerConfig, commitmentOrConfig))) {\n // throw new Error('worker not registered')\n // }\n return instructions.createSetAdminInstruction(\n <instructions.SetAdminInstructionAccounts>{\n worker,\n workerConfig,\n },\n <instructions.SetAdminInstructionArgs>{\n params: <types.SetAdminParams>{\n admins,\n },\n },\n this.program\n )\n }\n\n async setWorkerDefaultMultiplierBps(\n connection: Connection,\n worker: PublicKey,\n admin: PublicKey,\n multiplierBps: number\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n return instructions.createSetDefaultMultiplierBpsInstruction(\n <instructions.SetDefaultMultiplierBpsInstructionAccounts>{\n admin,\n workerConfig,\n },\n <instructions.SetDefaultMultiplierBpsInstructionArgs>{\n params: <types.SetDefaultMultiplierBpsParams>{\n worker,\n defaultMultiplierBps: multiplierBps,\n },\n },\n this.program\n )\n }\n\n async setWorkerPaused(\n connection: Connection,\n worker: PublicKey,\n paused: boolean,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n if (!(await connection.getAccountInfo(workerConfig, commitmentOrConfig))) {\n throw new Error('worker not registered')\n }\n return instructions.createSetPausedInstruction(\n <instructions.SetPausedInstructionAccounts>{\n worker,\n workerConfig,\n },\n <instructions.SetPausedInstructionArgs>{\n params: <types.SetPausedParams>{\n paused,\n },\n },\n this.program\n )\n }\n\n async setOracleQuorum(\n connection: Connection,\n oracle: PublicKey,\n quorum: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [oracleConfig] = this.ulnDeriver.workerConfig(oracle)\n const oracleConfigState = await this.getWorkerConfig(connection, oracle, commitmentOrConfig)\n if (oracleConfig == null) {\n throw new Error('worker not registered')\n } else if (oracleConfigState?.id !== types.WorkerId.Oracle) {\n throw new Error('worker is not oracle')\n }\n return instructions.createSetQuorumInstruction(\n <instructions.SetQuorumInstructionAccounts>{\n oracle,\n oracleConfig,\n },\n <instructions.SetQuorumInstructionArgs>{\n params: <types.SetQuorumParams>{\n quorum,\n },\n },\n this.program\n )\n }\n\n async oracleSignPacket(\n oracle: PublicKey,\n packetBytes: Uint8Array,\n confirmations: number | string\n ): Promise<TransactionInstruction> {\n const packet = PacketV1Codec.fromBytes(packetBytes)\n const headerHash = packet.headerHash()\n const headerHashBytes = Uint8Array.from(Buffer.from(headerHash.slice(2), 'hex'))\n const payloadHash = packet.payloadHash()\n const payloadHashBytes = Uint8Array.from(Buffer.from(payloadHash.slice(2), 'hex'))\n const [confirmationsPDA] = this.ulnDeriver.confirmations(headerHashBytes, payloadHashBytes, oracle)\n return instructions.createSignInstruction(\n <instructions.SignInstructionAccounts>{\n oracle,\n confirmations: confirmationsPDA,\n },\n <instructions.SignInstructionArgs>{\n params: <types.SignParams>{\n packetHeader: Uint8Array.from(Buffer.from(packet.header().slice(2), 'hex')),\n payloadHash: Array.from(payloadHashBytes),\n confirmations: typeof confirmations === 'string' ? new BN(confirmations) : confirmations,\n },\n },\n this.program\n )\n }\n\n async deliverPacket(\n connection: Connection,\n payer: PublicKey,\n endpointProgram: PublicKey,\n packetBytes: Uint8Array,\n optionalOraclesIndexes?: Array<number>,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const packet = PacketV1Codec.fromBytes(packetBytes)\n const receiver = new PublicKey(Buffer.from(packet.receiver().slice(2), 'hex'))\n const srcEid = packet.srcEid()\n if (!(await this.getSetting(connection))) {\n throw new Error('uln not initialized')\n }\n const defaultConfigState = await this.getConfig(connection, srcEid, commitmentOrConfig)\n if (!defaultConfigState) {\n throw new Error('uln default config not initialized')\n }\n let oracles = defaultConfigState.oracles\n let optionalOracles = defaultConfigState.optionalOracles\n\n const endpointConfigState = await this.getOappConfig(connection, receiver, srcEid, commitmentOrConfig)\n if (endpointConfigState && endpointConfigState.useCustomOracles && endpointConfigState.oracles.length > 0) {\n oracles = endpointConfigState.oracles\n }\n if (\n endpointConfigState &&\n endpointConfigState.useCustomOptionalOracles &&\n endpointConfigState.optionalOracles.length > 0\n ) {\n optionalOracles = endpointConfigState.optionalOracles\n }\n const optionalOraclesThreshold = endpointConfigState\n ? defaultConfigState.optionalOraclesThreshold\n : defaultConfigState.optionalOraclesThreshold\n const inboundConfirmations = endpointConfigState\n ? endpointConfigState.inboundConfirmations\n : defaultConfigState.inboundConfirmations\n const [oappConfig] = this.ulnDeriver.oappConfig(receiver, srcEid)\n const [defaultConfig] = this.ulnDeriver.config(srcEid)\n const [setting] = this.ulnDeriver.setting()\n const headerBytes = Uint8Array.from(Buffer.from(packet.header().slice(2), 'hex'))\n const headerHashBytes = Uint8Array.from(Buffer.from(packet.headerHash().slice(2), 'hex'))\n const payloadHashBytes = Uint8Array.from(Buffer.from(packet.payloadHash().slice(2), 'hex'))\n const orclesAccounts = oracles.concat(optionalOracles).map((oracle) => {\n const [pubkey] = this.ulnDeriver.confirmations(headerHashBytes, payloadHashBytes, oracle)\n return <AccountMeta>{\n pubkey,\n isSigner: false,\n isWritable: false,\n }\n })\n if (!optionalOraclesIndexes) {\n optionalOraclesIndexes = []\n await Promise.all(\n optionalOracles.map(async (oracle, index) => {\n const [confirmationsAccount] = this.ulnDeriver.confirmations(\n headerHashBytes,\n payloadHashBytes,\n oracle\n )\n const confirmationsAccountInfo = await this.getConfirmations(\n connection,\n confirmationsAccount,\n commitmentOrConfig\n )\n if (confirmationsAccountInfo && confirmationsAccountInfo.value >= inboundConfirmations) {\n ;(optionalOraclesIndexes as Array<number>).push(index)\n }\n })\n )\n if (optionalOraclesIndexes.length > optionalOraclesThreshold) {\n optionalOraclesIndexes = optionalOraclesIndexes.slice(0, optionalOraclesThreshold)\n }\n optionalOraclesIndexes.sort((a, b) => a - b)\n }\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return instructions.createDeliverInstruction(\n <instructions.DeliverInstructionAccounts>{\n ulnConfig: oappConfig,\n defaultUlnConfig: defaultConfig,\n uln: setting,\n anchorRemainingAccounts: orclesAccounts.concat(\n await endpoint.getDeliverIXAccountMetaForCPI(\n connection,\n payer,\n packet,\n this.ulnDeriver.messageLib()[0]\n )\n ),\n },\n <instructions.DeliverInstructionArgs>{\n params: <types.DeliverParams>{\n packetHeader: headerBytes,\n payloadHash: Array.from(payloadHashBytes),\n confirmations: inboundConfirmations,\n optionalOraclesIndexes: Uint8Array.from(optionalOraclesIndexes),\n },\n },\n this.program\n )\n }\n\n async workerWithdrawFee(\n connection: Connection,\n worker: PublicKey,\n admin: PublicKey,\n receiver: PublicKey,\n amount: string,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n const [setting] = this.ulnDeriver.setting()\n const workerState = await this.getWorkerConfig(connection, worker, commitmentOrConfig)\n if (!workerState) {\n throw new Error('worker not registered')\n }\n\n const amountBN = new BN(amount)\n if (workerState.accumulatedFee.lt(amountBN)) {\n throw new Error('insufficient fee')\n }\n return instructions.createWithdrawFeeInstruction(\n <instructions.WithdrawFeeInstructionAccounts>{\n admin,\n workerConfig,\n receiver,\n uln: setting,\n },\n <instructions.WithdrawFeeInstructionArgs>{\n params: <types.WithdrawFeeParams>{\n amount: amountBN,\n worker,\n },\n }\n )\n }\n\n /***\n * Get the account meta of the send instruction for CPI(Cross-Program Invocation )\n */\n async getSendIXAccountMetaForCPI(\n connection: Connection,\n endpointProgram: PublicKey,\n payer: PublicKey,\n oappIDPDA: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappIDPDA, eid)\n const [defaultConfig] = this.ulnDeriver.config(eid)\n const [defaultOptions] = this.ulnDeriver.options(eid)\n const [setting] = this.ulnDeriver.setting()\n const ulnState = await this.getSetting(connection, commitmentOrConfig)\n const treasury = ulnState.treasury == null ? this.program : ulnState.treasury.nativeReceiver\n const [msgLib] = this.ulnDeriver.messageLib()\n const [endpointAuth] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n\n const ix = instructions.createSendInstruction(\n <instructions.SendInstructionAccounts>{\n endpoint: endpointAuth, //signer\n uln: setting,\n ulnConfig: oappConfig,\n defaultUlnConfig: defaultConfig,\n defaultOptions,\n ulnProgram: this.program,\n payer,\n treasury,\n anchorRemainingAccounts: (await this.getWorkers(connection, oappIDPDA, eid, commitmentOrConfig)).map(\n (p) => {\n return {\n pubkey: p,\n isSigner: false,\n isWritable: true,\n }\n }\n ),\n },\n /// Fake value. params is useless.\n <instructions.SendInstructionArgs>{\n params: <types.MessageLibSendParams>{\n guid: Array.from(oappIDPDA.toBytes()),\n packet: <types.Packet>{\n nonce: 0,\n srcEid: 0,\n sender: oappIDPDA,\n dstEid: 0,\n receiver: Array.from(oappIDPDA.toBytes()),\n message: Uint8Array.from(Buffer.from('test')),\n },\n nativeFee: 0,\n lzTokenFee: 0,\n options: Uint8Array.from(Buffer.from('test')),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n if (treasury === this.program) {\n ix.keys[7].isWritable = false // treasury account\n } else {\n ix.keys[7].isWritable = true // treasury account\n }\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n async getSendWithLzTokenIXAccountMetaForCPI(\n connection: Connection,\n endpointProgram: PublicKey,\n mint: PublicKey,\n payer: PublicKey,\n oappIDPDA: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappIDPDA, eid)\n const [defaultConfig] = this.ulnDeriver.config(eid)\n const [defaultOptions] = this.ulnDeriver.options(eid)\n const [setting] = this.ulnDeriver.setting()\n const [msgLib] = this.ulnDeriver.messageLib()\n const endpointDeriver = new EndpointPDADeriver(endpointProgram)\n const [endpointAuth] = endpointDeriver.messageLibraryAuthority(msgLib)\n const endpointSetting = await new EndpointProgram.Endpoint(endpointProgram).getSetting(\n connection,\n commitmentOrConfig\n )\n const ulnState = await this.getSetting(connection, commitmentOrConfig)\n const treasury = ulnState.treasury\n if (!endpointSetting || !endpointSetting.lzToken || !treasury.lzToken) {\n throw new Error('lzToken is not set')\n }\n\n const payerTokenAccount = await getAssociatedTokenAddress(mint, payer)\n try {\n await getAccount(connection, payerTokenAccount, 'confirmed', TOKEN_PROGRAM_ID)\n } catch (error: unknown) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n // As this isn't atomic, it's possible others can create associated accounts meanwhile.\n throw error\n } else {\n throw error\n }\n }\n const ix = instructions.createSendWithLzTokenInstruction(\n <instructions.SendWithLzTokenInstructionAccounts>{\n endpoint: endpointAuth, //signer\n uln: setting,\n ulnConfig: oappConfig,\n defaultUlnConfig: defaultConfig,\n defaultOptions,\n ulnProgram: this.program,\n payer,\n payerTokenAccount,\n treasury: treasury.lzToken.receiver,\n mint,\n // tokenProgram:TOKEN_2022_PROGRAM_ID,\n endpointSettings: endpointDeriver.setting()[0],\n anchorRemainingAccounts: (await this.getWorkers(connection, oappIDPDA, eid, commitmentOrConfig)).map(\n (p) => {\n return {\n pubkey: p,\n isSigner: false,\n isWritable: true,\n }\n }\n ),\n },\n <instructions.SendWithLzTokenInstructionArgs>{\n /// Fake value. Just for get the account meta.\n params: <types.MessageLibSendParams>{\n guid: Array.from(oappIDPDA.toBytes()),\n packet: <types.Packet>{\n nonce: 0,\n srcEid: 0,\n sender: oappIDPDA,\n dstEid: 0,\n receiver: Array.from(oappIDPDA.toBytes()),\n message: Uint8Array.from(Buffer.from('test')),\n },\n nativeFee: 0,\n lzTokenFee: 0,\n options: Uint8Array.from(Buffer.from('test')),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n async getQuoteIXAccountMetaForCPI(\n connection: Connection,\n oappIDPDA: PublicKey,\n dstEid: number,\n payInLzToken: boolean,\n commitment?: Commitment\n ) {\n const workers = (await this.getWorkers(connection, oappIDPDA, dstEid, commitment)).map((p) => {\n return {\n // TODO: check if the worker is registered\n pubkey: p,\n isSigner: false,\n isWritable: false,\n }\n })\n const [oappConfig] = this.ulnDeriver.oappConfig(oappIDPDA, dstEid)\n const [defaultConfig] = this.ulnDeriver.config(dstEid)\n const [defaultOptions] = this.ulnDeriver.options(dstEid)\n const [setting] = this.ulnDeriver.setting()\n\n const ix = instructions.createQuoteInstruction(\n <instructions.QuoteInstructionAccounts>{\n uln: setting,\n ulnConfig: oappConfig,\n defaultUlnConfig: defaultConfig,\n defaultOptions,\n anchorRemainingAccounts: workers,\n },\n // Fake params, just to get ix.keys\n <instructions.QuoteInstructionArgs>{\n params: <types.MessageLibQuoteParams>{\n packet: <types.PacketForQuote>{\n sender: oappIDPDA,\n dstEid,\n message: Uint8Array.from([]),\n },\n payInLzToken,\n options: Uint8Array.from([]),\n },\n },\n this.program\n )\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n /***\n * Get all workers(executor&oracle)\n */\n async getWorkers(\n connection: Connection,\n oappIDPDA: PublicKey,\n eid: number,\n commitment: Commitment | GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<PublicKey>> {\n const defaultConfigState = await this.getConfig(connection, eid, commitment)\n if (!defaultConfigState) {\n throw new Error('default config not initialized')\n }\n let executor = defaultConfigState.executor\n let oracles = defaultConfigState.oracles\n let optionalOracles = defaultConfigState.optionalOracles\n const endpointConfigState = await this.getOappConfig(connection, oappIDPDA, eid, commitment)\n if (\n endpointConfigState &&\n endpointConfigState.executor &&\n !endpointConfigState.executor.equals(PublicKey.default)\n ) {\n executor = endpointConfigState.executor\n }\n if (endpointConfigState && endpointConfigState.useCustomOracles) {\n oracles = endpointConfigState.oracles.filter((p) => {\n return !p.equals(PublicKey.default)\n })\n }\n if (endpointConfigState && endpointConfigState.useCustomOptionalOracles) {\n optionalOracles = endpointConfigState.optionalOracles.filter((p) => {\n return !p.equals(PublicKey.default)\n })\n }\n return [executor]\n .concat(oracles)\n .concat(optionalOracles)\n .map((p) => {\n return this.ulnDeriver.workerConfig(p)[0]\n })\n }\n\n /***\n * Get the account meta of the send instruction for CPI(Cross-Program Invocation )\n */\n async getInitConfigIXAccountMetaForCPI(\n endpointProgram: PublicKey,\n payer: PublicKey,\n oappID: PublicKey,\n eid: number\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappID, eid)\n const [msgLib] = this.ulnDeriver.messageLib()\n const [setting] = this.ulnDeriver.setting()\n const [msgLibAuthority] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n const ix = instructions.createInitConfigInstruction(\n <instructions.InitConfigInstructionAccounts>{\n endpoint: msgLibAuthority,\n payer,\n uln: setting,\n ulnConfig: oappConfig,\n },\n // Fake params, just to get the ix.keys\n <instructions.InitConfigInstructionArgs>{\n params: <types.InitConfigParams>{\n eid,\n oapp: oappID,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n async getSetConfigIXAccountMetaForCPI(\n connection: Connection,\n endpointProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappID, eid)\n const [setting] = this.ulnDeriver.setting()\n const [msgLib] = this.ulnDeriver.messageLib()\n const [msgLibAuthority] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n if (!(await this.getOappConfig(connection, oappID, eid, commitmentOrConfig))) {\n throw new Error('endpoint config not initialized')\n }\n const ix = instructions.createSetConfigInstruction(\n <instructions.SetConfigInstructionAccounts>{\n endpoint: msgLibAuthority,\n uln: setting,\n ulnConfig: oappConfig,\n },\n // Fake params, just to get the ix.keys\n <instructions.SetConfigInstructionArgs>{\n params: <types.MessageLibSetConfigParams>{\n eid,\n oapp: oappID,\n configType: 1,\n config: Uint8Array.from([]),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n async getResetConfigIXAccountMetaForCPI(\n connection: Connection,\n endpointProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappID, eid)\n const [setting] = this.ulnDeriver.setting()\n const [msgLib] = this.ulnDeriver.messageLib()\n const [msgLibAuthority] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n if (!(await this.getOappConfig(connection, oappID, eid, commitmentOrConfig))) {\n throw new Error('endpoint config not initialized')\n }\n const ix = instructions.createResetConfigInstruction(\n <instructions.ResetConfigInstructionAccounts>{\n endpoint: msgLibAuthority,\n uln: setting,\n ulnConfig: oappConfig,\n },\n // Fake params, just to get the ix.keys\n <instructions.ResetConfigInstructionArgs>{\n params: <types.MessageLibResetConfigParams>{\n eid,\n oapp: oappID,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n async getSnapshotConfigIXAccountMetaForCPI(\n connection: Connection,\n endpointProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappID, eid)\n const [defaultConfig] = this.ulnDeriver.config(eid)\n const [setting] = this.ulnDeriver.setting()\n const [msgLib] = this.ulnDeriver.messageLib()\n const [msgLibAuthority] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n if (!(await this.getOappConfig(connection, oappID, eid, commitmentOrConfig))) {\n throw new Error('endpoint config not initialized')\n }\n const ix = instructions.createSnapshotConfigInstruction(\n <instructions.SnapshotConfigInstructionAccounts>{\n endpoint: msgLibAuthority,\n uln: setting,\n ulnConfig: oappConfig,\n defaultUlnConfig: defaultConfig,\n },\n // Fake params, just to get the ix.keys\n <instructions.SnapshotConfigInstructionArgs>{\n params: <types.MessageLibSnapshotConfigParams>{\n eid,\n oapp: oappID,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n async packetDeliverable(\n connection: Connection,\n packetBytes: Uint8Array,\n commitment?: Commitment | GetAccountInfoConfig\n ): Promise<boolean> {\n const packet = PacketV1Codec.fromBytes(packetBytes)\n const receiver = new PublicKey(Buffer.from(packet.receiver().slice(2), 'hex'))\n const srcEid = packet.srcEid()\n\n const defaultConfigState = await this.getConfig(connection, srcEid, commitment)\n if (!defaultConfigState) {\n throw new Error('default config not initialized')\n }\n\n let oracles = defaultConfigState.oracles\n let optionalOracles = defaultConfigState.optionalOracles\n let optionalOraclesThreshold = defaultConfigState.optionalOraclesThreshold\n const endpointConfigState = await this.getOappConfig(connection, receiver, srcEid, commitment)\n const inboundConfirmations = endpointConfigState\n ? endpointConfigState.inboundConfirmations\n : defaultConfigState.inboundConfirmations\n\n if (endpointConfigState && endpointConfigState.useCustomOracles && endpointConfigState.oracles.length > 0) {\n oracles = endpointConfigState.oracles\n }\n if (\n endpointConfigState &&\n endpointConfigState.useCustomOptionalOracles &&\n endpointConfigState.optionalOracles.length > 0\n ) {\n optionalOracles = endpointConfigState.optionalOracles\n optionalOraclesThreshold = endpointConfigState.optionalOraclesThreshold\n }\n\n const packetHeader = packet.headerHash()\n const payloadHash = packet.payloadHash()\n const headerHashBytes = Uint8Array.from(Buffer.from(packetHeader.slice(2), 'hex'))\n const payloadHashBytes = Uint8Array.from(Buffer.from(payloadHash.slice(2), 'hex'))\n const oracleToConfirmationAccount = (oracle: PublicKey) => {\n return this.ulnDeriver.confirmations(headerHashBytes, payloadHashBytes, oracle)[0]\n }\n const assertConfirmations = async (oracle: PublicKey, confirmationAccount: PublicKey) => {\n const confirmations = await this.getConfirmations(connection, confirmationAccount, commitment)\n if (confirmations) {\n const expectedAddress = PublicKey.createProgramAddressSync(\n [\n Buffer.from(CONFIRMATIONS_SEED, 'utf8'),\n headerHashBytes,\n payloadHashBytes,\n oracle.toBytes(),\n Uint8Array.from([confirmations.bump]),\n ],\n this.program\n )\n assert.strictEqual(expectedAddress.toBase58(), confirmationAccount.toBase58())\n assert.ok(confirmations.value >= inboundConfirmations)\n } else {\n throw new Error('confirmations not found')\n }\n }\n\n try {\n await Promise.all(\n oracles.map(async (oracle) => {\n const confirmationAccount = oracleToConfirmationAccount(oracle)\n await assertConfirmations(oracle, confirmationAccount)\n })\n )\n } catch (e) {\n console.error(\"oracle's confirmations not enough\", e)\n return false\n }\n if (optionalOraclesThreshold == 0) {\n return true\n }\n\n const optionalOraclesIndexes: Array<number> = []\n\n await Promise.all(\n optionalOracles.map(async (oracle, index) => {\n const confirmationAccount = oracleToConfirmationAccount(oracle)\n try {\n await assertConfirmations(oracle, confirmationAccount)\n optionalOraclesIndexes.push(index)\n } catch (e) {\n //skip\n }\n })\n )\n if (optionalOraclesIndexes.length < optionalOraclesThreshold) {\n console.error('optional oracle confirmations not enough')\n return false\n }\n return true\n }\n\n // all of below functions are retrieving accounts state\n async getSetting(\n connection: Connection,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.UlnSettings | null> {\n const [setting] = this.ulnDeriver.setting()\n try {\n return await accounts.UlnSettings.fromAccountAddress(connection, setting, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getConfig(\n connection: Connection,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.UlnConfigStore | null> {\n const [config] = this.ulnDeriver.config(eid)\n try {\n return await accounts.UlnConfigStore.fromAccountAddress(connection, config, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getOptions(\n connection: Connection,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.DefaultOptions | null> {\n const [options] = this.ulnDeriver.options(eid)\n try {\n return await accounts.DefaultOptions.fromAccountAddress(connection, options, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getOappConfig(\n connection: Connection,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.UlnConfigStore | null> {\n const [config] = this.ulnDeriver.oappConfig(oappID, eid)\n try {\n return await accounts.UlnConfigStore.fromAccountAddress(connection, config, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getWorkerConfig(\n connection: Connection,\n worker: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.WorkerConfig | null> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n try {\n return await accounts.WorkerConfig.fromAccountAddress(connection, workerConfig, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getConfirmations(\n connection: Connection,\n confirmations: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.Confirmations | null> {\n try {\n return await accounts.Confirmations.fromAccountAddress(connection, confirmations, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n}\n","export * from './Confirmations'\nexport * from './DefaultOptions'\nexport * from './UlnConfigStore'\nexport * from './UlnSettings'\nexport * from './WorkerConfig'\n\nimport { Confirmations } from './Confirmations'\nimport { DefaultOptions } from './DefaultOptions'\nimport { UlnSettings } from './UlnSettings'\nimport { UlnConfigStore } from './UlnConfigStore'\nimport { WorkerConfig } from './WorkerConfig'\n\nexport const accountProviders = {\n Confirmations,\n DefaultOptions,\n UlnSettings,\n UlnConfigStore,\n WorkerConfig,\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link Confirmations}\n * @category Accounts\n * @category generated\n */\nexport type ConfirmationsArgs = {\n value: beet.bignum\n bump: number\n}\n\nexport const confirmationsDiscriminator = [206, 57, 50, 8, 124, 133, 138, 112]\n/**\n * Holds the data for the {@link Confirmations} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class Confirmations implements ConfirmationsArgs {\n private constructor(readonly value: beet.bignum, readonly bump: number) {}\n\n /**\n * Creates a {@link Confirmations} instance from the provided args.\n */\n static fromArgs(args: ConfirmationsArgs) {\n return new Confirmations(args.value, args.bump)\n }\n\n /**\n * Deserializes the {@link Confirmations} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [Confirmations, number] {\n return Confirmations.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link Confirmations} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<Confirmations> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find Confirmations account at ${address}`)\n }\n return Confirmations.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, confirmationsBeet)\n }\n\n /**\n * Deserializes the {@link Confirmations} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [Confirmations, number] {\n return confirmationsBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link Confirmations} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return confirmationsBeet.serialize({\n accountDiscriminator: confirmationsDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link Confirmations}\n */\n static get byteSize() {\n return confirmationsBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link Confirmations} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n Confirmations.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link Confirmations} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === Confirmations.byteSize\n }\n\n /**\n * Returns a readable version of {@link Confirmations} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n value: (() => {\n const x = <{ toNumber: () => number }>this.value\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const confirmationsBeet = new beet.BeetStruct<\n Confirmations,\n ConfirmationsArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['value', beet.u64],\n ['bump', beet.u8],\n ],\n Confirmations.fromArgs,\n 'Confirmations'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link DefaultOptions}\n * @category Accounts\n * @category generated\n */\nexport type DefaultOptionsArgs = {\n bump: number\n options: Uint8Array\n}\n\nexport const defaultOptionsDiscriminator = [235, 143, 163, 47, 171, 237, 68, 98]\n/**\n * Holds the data for the {@link DefaultOptions} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class DefaultOptions implements DefaultOptionsArgs {\n private constructor(readonly bump: number, readonly options: Uint8Array) {}\n\n /**\n * Creates a {@link DefaultOptions} instance from the provided args.\n */\n static fromArgs(args: DefaultOptionsArgs) {\n return new DefaultOptions(args.bump, args.options)\n }\n\n /**\n * Deserializes the {@link DefaultOptions} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [DefaultOptions, number] {\n return DefaultOptions.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link DefaultOptions} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<DefaultOptions> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find DefaultOptions account at ${address}`)\n }\n return DefaultOptions.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, defaultOptionsBeet)\n }\n\n /**\n * Deserializes the {@link DefaultOptions} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [DefaultOptions, number] {\n return defaultOptionsBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link DefaultOptions} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return defaultOptionsBeet.serialize({\n accountDiscriminator: defaultOptionsDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link DefaultOptions} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: DefaultOptionsArgs) {\n const instance = DefaultOptions.fromArgs(args)\n return defaultOptionsBeet.toFixedFromValue({\n accountDiscriminator: defaultOptionsDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link DefaultOptions} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: DefaultOptionsArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n DefaultOptions.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link DefaultOptions} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n options: this.options,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const defaultOptionsBeet = new beet.FixableBeetStruct<\n DefaultOptions,\n DefaultOptionsArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ['options', beet.bytes],\n ],\n DefaultOptions.fromArgs,\n 'DefaultOptions'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link UlnConfigStore}\n * @category Accounts\n * @category generated\n */\nexport type UlnConfigStoreArgs = {\n bump: number\n maxMessageSize: number\n outboundConfirmations: beet.bignum\n executor: web3.PublicKey\n inboundConfirmations: beet.bignum\n useCustomOracles: boolean\n oracles: web3.PublicKey[]\n useCustomOptionalOracles: boolean\n optionalOraclesThreshold: number\n optionalOracles: web3.PublicKey[]\n}\n\nexport const ulnConfigStoreDiscriminator = [138, 5, 237, 226, 134, 177, 5, 58]\n/**\n * Holds the data for the {@link UlnConfigStore} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class UlnConfigStore implements UlnConfigStoreArgs {\n private constructor(\n readonly bump: number,\n readonly maxMessageSize: number,\n readonly outboundConfirmations: beet.bignum,\n readonly executor: web3.PublicKey,\n readonly inboundConfirmations: beet.bignum,\n readonly useCustomOracles: boolean,\n readonly oracles: web3.PublicKey[],\n readonly useCustomOptionalOracles: boolean,\n readonly optionalOraclesThreshold: number,\n readonly optionalOracles: web3.PublicKey[]\n ) {}\n\n /**\n * Creates a {@link UlnConfigStore} instance from the provided args.\n */\n static fromArgs(args: UlnConfigStoreArgs) {\n return new UlnConfigStore(\n args.bump,\n args.maxMessageSize,\n args.outboundConfirmations,\n args.executor,\n args.inboundConfirmations,\n args.useCustomOracles,\n args.oracles,\n args.useCustomOptionalOracles,\n args.optionalOraclesThreshold,\n args.optionalOracles\n )\n }\n\n /**\n * Deserializes the {@link UlnConfigStore} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [UlnConfigStore, number] {\n return UlnConfigStore.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link UlnConfigStore} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<UlnConfigStore> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find UlnConfigStore account at ${address}`)\n }\n return UlnConfigStore.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, ulnConfigStoreBeet)\n }\n\n /**\n * Deserializes the {@link UlnConfigStore} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [UlnConfigStore, number] {\n return ulnConfigStoreBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link UlnConfigStore} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return ulnConfigStoreBeet.serialize({\n accountDiscriminator: ulnConfigStoreDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link UlnConfigStore} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: UlnConfigStoreArgs) {\n const instance = UlnConfigStore.fromArgs(args)\n return ulnConfigStoreBeet.toFixedFromValue({\n accountDiscriminator: ulnConfigStoreDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link UlnConfigStore} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: UlnConfigStoreArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n UlnConfigStore.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link UlnConfigStore} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n maxMessageSize: this.maxMessageSize,\n outboundConfirmations: (() => {\n const x = <{ toNumber: () => number }>this.outboundConfirmations\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n executor: this.executor.toBase58(),\n inboundConfirmations: (() => {\n const x = <{ toNumber: () => number }>this.inboundConfirmations\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n useCustomOracles: this.useCustomOracles,\n oracles: this.oracles,\n useCustomOptionalOracles: this.useCustomOptionalOracles,\n optionalOraclesThreshold: this.optionalOraclesThreshold,\n optionalOracles: this.optionalOracles,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const ulnConfigStoreBeet = new beet.FixableBeetStruct<\n UlnConfigStore,\n UlnConfigStoreArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ['maxMessageSize', beet.u32],\n ['outboundConfirmations', beet.u64],\n ['executor', beetSolana.publicKey],\n ['inboundConfirmations', beet.u64],\n ['useCustomOracles', beet.bool],\n ['oracles', beet.array(beetSolana.publicKey)],\n ['useCustomOptionalOracles', beet.bool],\n ['optionalOraclesThreshold', beet.u8],\n ['optionalOracles', beet.array(beetSolana.publicKey)],\n ],\n UlnConfigStore.fromArgs,\n 'UlnConfigStore'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport { Treasury, treasuryBeet } from '../types/Treasury'\n\n/**\n * Arguments used to create {@link UlnSettings}\n * @category Accounts\n * @category generated\n */\nexport type UlnSettingsArgs = {\n eid: number\n endpoint: web3.PublicKey\n bump: number\n admin: web3.PublicKey\n treasury: beet.COption<Treasury>\n}\n\nexport const ulnSettingsDiscriminator = [226, 199, 100, 253, 38, 115, 167, 154]\n/**\n * Holds the data for the {@link UlnSettings} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class UlnSettings implements UlnSettingsArgs {\n private constructor(\n readonly eid: number,\n readonly endpoint: web3.PublicKey,\n readonly bump: number,\n readonly admin: web3.PublicKey,\n readonly treasury: beet.COption<Treasury>\n ) {}\n\n /**\n * Creates a {@link UlnSettings} instance from the provided args.\n */\n static fromArgs(args: UlnSettingsArgs) {\n return new UlnSettings(\n args.eid,\n args.endpoint,\n args.bump,\n args.admin,\n args.treasury\n )\n }\n\n /**\n * Deserializes the {@link UlnSettings} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [UlnSettings, number] {\n return UlnSettings.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link UlnSettings} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<UlnSettings> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find UlnSettings account at ${address}`)\n }\n return UlnSettings.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, ulnSettingsBeet)\n }\n\n /**\n * Deserializes the {@link UlnSettings} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [UlnSettings, number] {\n return ulnSettingsBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link UlnSettings} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return ulnSettingsBeet.serialize({\n accountDiscriminator: ulnSettingsDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link UlnSettings} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: UlnSettingsArgs) {\n const instance = UlnSettings.fromArgs(args)\n return ulnSettingsBeet.toFixedFromValue({\n accountDiscriminator: ulnSettingsDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link UlnSettings} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: UlnSettingsArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n UlnSettings.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link UlnSettings} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n eid: this.eid,\n endpoint: this.endpoint.toBase58(),\n bump: this.bump,\n admin: this.admin.toBase58(),\n treasury: this.treasury,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const ulnSettingsBeet = new beet.FixableBeetStruct<\n UlnSettings,\n UlnSettingsArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['eid', beet.u32],\n ['endpoint', beetSolana.publicKey],\n ['bump', beet.u8],\n ['admin', beetSolana.publicKey],\n ['treasury', beet.coption(treasuryBeet)],\n ],\n UlnSettings.fromArgs,\n 'UlnSettings'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport { LzTokenTreasury, lzTokenTreasuryBeet } from './LzTokenTreasury'\nexport type Treasury = {\n nativeReceiver: web3.PublicKey\n nativeBp: beet.bignum\n lzToken: beet.COption<LzTokenTreasury>\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const treasuryBeet = new beet.FixableBeetArgsStruct<Treasury>(\n [\n ['nativeReceiver', beetSolana.publicKey],\n ['nativeBp', beet.u64],\n ['lzToken', beet.coption(lzTokenTreasuryBeet)],\n ],\n 'Treasury'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type LzTokenTreasury = {\n receiver: web3.PublicKey\n fee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const lzTokenTreasuryBeet = new beet.BeetArgsStruct<LzTokenTreasury>(\n [\n ['receiver', beetSolana.publicKey],\n ['fee', beet.u64],\n ],\n 'LzTokenTreasury'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport { WorkerId, workerIdBeet } from '../types/WorkerId'\nimport { Acl, aclBeet } from '../types/Acl'\nimport { PriceFeed, priceFeedBeet } from '../types/PriceFeed'\nimport { WorkerExtConfig, workerExtConfigBeet } from '../types/WorkerExtConfig'\n\n/**\n * Arguments used to create {@link WorkerConfig}\n * @category Accounts\n * @category generated\n */\nexport type WorkerConfigArgs = {\n id: WorkerId\n acl: Acl\n defaultMultiplierBps: number\n priceFeed: PriceFeed\n admins: web3.PublicKey[] /* size: 3 */\n paused: boolean\n extConfig: WorkerExtConfig\n accumulatedFee: beet.bignum\n bump: number\n}\n\nexport const workerConfigDiscriminator = [224, 157, 240, 147, 170, 78, 48, 227]\n/**\n * Holds the data for the {@link WorkerConfig} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class WorkerConfig implements WorkerConfigArgs {\n private constructor(\n readonly id: WorkerId,\n readonly acl: Acl,\n readonly defaultMultiplierBps: number,\n readonly priceFeed: PriceFeed,\n readonly admins: web3.PublicKey[] /* size: 3 */,\n readonly paused: boolean,\n readonly extConfig: WorkerExtConfig,\n readonly accumulatedFee: beet.bignum,\n readonly bump: number\n ) {}\n\n /**\n * Creates a {@link WorkerConfig} instance from the provided args.\n */\n static fromArgs(args: WorkerConfigArgs) {\n return new WorkerConfig(\n args.id,\n args.acl,\n args.defaultMultiplierBps,\n args.priceFeed,\n args.admins,\n args.paused,\n args.extConfig,\n args.accumulatedFee,\n args.bump\n )\n }\n\n /**\n * Deserializes the {@link WorkerConfig} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [WorkerConfig, number] {\n return WorkerConfig.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link WorkerConfig} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<WorkerConfig> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find WorkerConfig account at ${address}`)\n }\n return WorkerConfig.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, workerConfigBeet)\n }\n\n /**\n * Deserializes the {@link WorkerConfig} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [WorkerConfig, number] {\n return workerConfigBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link WorkerConfig} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return workerConfigBeet.serialize({\n accountDiscriminator: workerConfigDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link WorkerConfig} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: WorkerConfigArgs) {\n const instance = WorkerConfig.fromArgs(args)\n return workerConfigBeet.toFixedFromValue({\n accountDiscriminator: workerConfigDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link WorkerConfig} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: WorkerConfigArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n WorkerConfig.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link WorkerConfig} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n id: 'WorkerId.' + WorkerId[this.id],\n acl: this.acl,\n defaultMultiplierBps: this.defaultMultiplierBps,\n priceFeed: this.priceFeed,\n admins: this.admins,\n paused: this.paused,\n extConfig: this.extConfig.__kind,\n accumulatedFee: (() => {\n const x = <{ toNumber: () => number }>this.accumulatedFee\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const workerConfigBeet = new beet.FixableBeetStruct<\n WorkerConfig,\n WorkerConfigArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['id', workerIdBeet],\n ['acl', aclBeet],\n ['defaultMultiplierBps', beet.u16],\n ['priceFeed', priceFeedBeet],\n ['admins', beet.uniformFixedSizeArray(beetSolana.publicKey, 3)],\n ['paused', beet.bool],\n ['extConfig', workerExtConfigBeet],\n ['accumulatedFee', beet.u64],\n ['bump', beet.u8],\n ],\n WorkerConfig.fromArgs,\n 'WorkerConfig'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\n/**\n * @category enums\n * @category generated\n */\nexport enum WorkerId {\n Executor,\n Oracle,\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const workerIdBeet = beet.fixedScalarEnum(\n WorkerId\n) as beet.FixedSizeBeet<WorkerId, WorkerId>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type Acl = {\n allowList: web3.PublicKey[]\n denyList: web3.PublicKey[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const aclBeet = new beet.FixableBeetArgsStruct<Acl>(\n [\n ['allowList', beet.array(beetSolana.publicKey)],\n ['denyList', beet.array(beetSolana.publicKey)],\n ],\n 'Acl'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Price, priceBeet } from './Price'\nimport { ArbitrumPriceExt, arbitrumPriceExtBeet } from './ArbitrumPriceExt'\nexport type PriceFeed = {\n priceRatioDenominator: beet.bignum\n defaultModelPrice: Price[]\n arbitrumPriceExt: ArbitrumPriceExt\n nativeTokenPriceUsd: beet.COption<beet.bignum>\n arbitrumCompressionPercent: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const priceFeedBeet = new beet.FixableBeetArgsStruct<PriceFeed>(\n [\n ['priceRatioDenominator', beet.u128],\n ['defaultModelPrice', beet.array(priceBeet)],\n ['arbitrumPriceExt', arbitrumPriceExtBeet],\n ['nativeTokenPriceUsd', beet.coption(beet.u128)],\n ['arbitrumCompressionPercent', beet.u128],\n ],\n 'PriceFeed'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type Price = {\n eid: number\n priceRatio: beet.bignum\n gasPriceInUnit: beet.bignum\n gasPerByte: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const priceBeet = new beet.BeetArgsStruct<Price>(\n [\n ['eid', beet.u32],\n ['priceRatio', beet.u128],\n ['gasPriceInUnit', beet.u64],\n ['gasPerByte', beet.u32],\n ],\n 'Price'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type ArbitrumPriceExt = {\n gasPerL2Tx: beet.bignum\n gasPerL1CalldataByte: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const arbitrumPriceExtBeet = new beet.BeetArgsStruct<ArbitrumPriceExt>(\n [\n ['gasPerL2Tx', beet.u64],\n ['gasPerL1CalldataByte', beet.u32],\n ],\n 'ArbitrumPriceExt'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { ExecutorDstConfig, executorDstConfigBeet } from './ExecutorDstConfig'\nimport { OracleDstConfig, oracleDstConfigBeet } from './OracleDstConfig'\n/**\n * This type is used to derive the {@link WorkerExtConfig} type as well as the de/serializer.\n * However don't refer to it in your code but use the {@link WorkerExtConfig} type instead.\n *\n * @category userTypes\n * @category enums\n * @category generated\n * @private\n */\nexport type WorkerExtConfigRecord = {\n Executor: { dstConfigs: ExecutorDstConfig[] }\n Oracle: { quorum: number; dstConfigs: OracleDstConfig[] }\n}\n\n/**\n * Union type respresenting the WorkerExtConfig data enum defined in Rust.\n *\n * NOTE: that it includes a `__kind` property which allows to narrow types in\n * switch/if statements.\n * Additionally `isWorkerExtConfig*` type guards are exposed below to narrow to a specific variant.\n *\n * @category userTypes\n * @category enums\n * @category generated\n */\nexport type WorkerExtConfig = beet.DataEnumKeyAsKind<WorkerExtConfigRecord>\n\nexport const isWorkerExtConfigExecutor = (\n x: WorkerExtConfig\n): x is WorkerExtConfig & { __kind: 'Executor' } => x.__kind === 'Executor'\nexport const isWorkerExtConfigOracle = (\n x: WorkerExtConfig\n): x is WorkerExtConfig & { __kind: 'Oracle' } => x.__kind === 'Oracle'\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const workerExtConfigBeet = beet.dataEnum<WorkerExtConfigRecord>([\n [\n 'Executor',\n new beet.FixableBeetArgsStruct<WorkerExtConfigRecord['Executor']>(\n [['dstConfigs', beet.array(executorDstConfigBeet)]],\n 'WorkerExtConfigRecord[\"Executor\"]'\n ),\n ],\n\n [\n 'Oracle',\n new beet.FixableBeetArgsStruct<WorkerExtConfigRecord['Oracle']>(\n [\n ['quorum', beet.u8],\n ['dstConfigs', beet.array(oracleDstConfigBeet)],\n ],\n 'WorkerExtConfigRecord[\"Oracle\"]'\n ),\n ],\n]) as beet.FixableBeet<WorkerExtConfig, WorkerExtConfig>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type ExecutorDstConfig = {\n eid: number\n baseGas: beet.bignum\n multiplierBps: beet.COption<number>\n floorMarginUsd: beet.COption<beet.bignum>\n nativeDropCap: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const executorDstConfigBeet =\n new beet.FixableBeetArgsStruct<ExecutorDstConfig>(\n [\n ['eid', beet.u32],\n ['baseGas', beet.u64],\n ['multiplierBps', beet.coption(beet.u16)],\n ['floorMarginUsd', beet.coption(beet.u128)],\n ['nativeDropCap', beet.u128],\n ],\n 'ExecutorDstConfig'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type OracleDstConfig = {\n eid: number\n dstGas: beet.bignum\n multiplierBps: beet.COption<number>\n floorMarginUsd: beet.COption<beet.bignum>\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const oracleDstConfigBeet =\n new beet.FixableBeetArgsStruct<OracleDstConfig>(\n [\n ['eid', beet.u32],\n ['dstGas', beet.u64],\n ['multiplierBps', beet.coption(beet.u16)],\n ['floorMarginUsd', beet.coption(beet.u128)],\n ],\n 'OracleDstConfig'\n )\n","export * from './deliver'\nexport * from './initConfig'\nexport * from './initDefaultOptions'\nexport * from './initDefaultUlnConfig'\nexport * from './initUln'\nexport * from './log'\nexport * from './quote'\nexport * from './registerWorker'\nexport * from './resetConfig'\nexport * from './send'\nexport * from './sendWithLzToken'\nexport * from './setAdmin'\nexport * from './setAllowlist'\nexport * from './setConfig'\nexport * from './setDefaultMultiplierBps'\nexport * from './setDefaultOptions'\nexport * from './setDefaultUlnConfig'\nexport * from './setDenylist'\nexport * from './setDstConfig'\nexport * from './setPaused'\nexport * from './setPrice'\nexport * from './setQuorum'\nexport * from './setTreasury'\nexport * from './sign'\nexport * from './snapshotConfig'\nexport * from './transferAdmin'\nexport * from './withdrawFee'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { DeliverParams, deliverParamsBeet } from '../types/DeliverParams'\n\n/**\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport type DeliverInstructionArgs = {\n params: DeliverParams\n}\n/**\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport const deliverStruct = new beet.FixableBeetArgsStruct<\n DeliverInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', deliverParamsBeet],\n ],\n 'DeliverInstructionArgs'\n)\n/**\n * Accounts required by the _deliver_ instruction\n *\n * @property [] ulnConfig\n * @property [] defaultUlnConfig\n * @property [] uln\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport type DeliverInstructionAccounts = {\n ulnConfig: web3.PublicKey\n defaultUlnConfig: web3.PublicKey\n uln: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const deliverInstructionDiscriminator = [\n 250, 131, 222, 57, 211, 229, 209, 147,\n]\n\n/**\n * Creates a _Deliver_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport function createDeliverInstruction(\n accounts: DeliverInstructionAccounts,\n args: DeliverInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = deliverStruct.serialize({\n instructionDiscriminator: deliverInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.ulnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultUlnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type DeliverParams = {\n packetHeader: Uint8Array\n payloadHash: number[] /* size: 32 */\n optionalOraclesIndexes: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const deliverParamsBeet = new beet.FixableBeetArgsStruct<DeliverParams>(\n [\n ['packetHeader', beet.bytes],\n ['payloadHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['optionalOraclesIndexes', beet.bytes],\n ],\n 'DeliverParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitConfigParams,\n initConfigParamsBeet,\n} from '../types/InitConfigParams'\n\n/**\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport type InitConfigInstructionArgs = {\n params: InitConfigParams\n}\n/**\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport const initConfigStruct = new beet.BeetArgsStruct<\n InitConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initConfigParamsBeet],\n ],\n 'InitConfigInstructionArgs'\n)\n/**\n * Accounts required by the _initConfig_ instruction\n *\n * @property [**signer**] endpoint\n * @property [_writable_, **signer**] payer\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport type InitConfigInstructionAccounts = {\n endpoint: web3.PublicKey\n payer: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initConfigInstructionDiscriminator = [\n 23, 235, 115, 232, 168, 96, 1, 231,\n]\n\n/**\n * Creates a _InitConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport function createInitConfigInstruction(\n accounts: InitConfigInstructionAccounts,\n args: InitConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = initConfigStruct.serialize({\n instructionDiscriminator: initConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initConfigParamsBeet = new beet.BeetArgsStruct<InitConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'InitConfigParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitDefaultOptionsParams,\n initDefaultOptionsParamsBeet,\n} from '../types/InitDefaultOptionsParams'\n\n/**\n * @category Instructions\n * @category InitDefaultOptions\n * @category generated\n */\nexport type InitDefaultOptionsInstructionArgs = {\n params: InitDefaultOptionsParams\n}\n/**\n * @category Instructions\n * @category InitDefaultOptions\n * @category generated\n */\nexport const initDefaultOptionsStruct = new beet.FixableBeetArgsStruct<\n InitDefaultOptionsInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initDefaultOptionsParamsBeet],\n ],\n 'InitDefaultOptionsInstructionArgs'\n)\n/**\n * Accounts required by the _initDefaultOptions_ instruction\n *\n * @property [_writable_, **signer**] admin\n * @property [] uln\n * @property [_writable_] defaultOptions\n * @category Instructions\n * @category InitDefaultOptions\n * @category generated\n */\nexport type InitDefaultOptionsInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n defaultOptions: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initDefaultOptionsInstructionDiscriminator = [\n 197, 148, 220, 150, 131, 22, 185, 48,\n]\n\n/**\n * Creates a _InitDefaultOptions_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitDefaultOptions\n * @category generated\n */\nexport function createInitDefaultOptionsInstruction(\n accounts: InitDefaultOptionsInstructionAccounts,\n args: InitDefaultOptionsInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = initDefaultOptionsStruct.serialize({\n instructionDiscriminator: initDefaultOptionsInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultOptions,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type InitDefaultOptionsParams = {\n eid: number\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initDefaultOptionsParamsBeet =\n new beet.FixableBeetArgsStruct<InitDefaultOptionsParams>(\n [\n ['eid', beet.u32],\n ['options', beet.bytes],\n ],\n 'InitDefaultOptionsParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitDefaultUlnConfigParams,\n initDefaultUlnConfigParamsBeet,\n} from '../types/InitDefaultUlnConfigParams'\n\n/**\n * @category Instructions\n * @category InitDefaultUlnConfig\n * @category generated\n */\nexport type InitDefaultUlnConfigInstructionArgs = {\n params: InitDefaultUlnConfigParams\n}\n/**\n * @category Instructions\n * @category InitDefaultUlnConfig\n * @category generated\n */\nexport const initDefaultUlnConfigStruct = new beet.FixableBeetArgsStruct<\n InitDefaultUlnConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initDefaultUlnConfigParamsBeet],\n ],\n 'InitDefaultUlnConfigInstructionArgs'\n)\n/**\n * Accounts required by the _initDefaultUlnConfig_ instruction\n *\n * @property [_writable_, **signer**] admin\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @category Instructions\n * @category InitDefaultUlnConfig\n * @category generated\n */\nexport type InitDefaultUlnConfigInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initDefaultUlnConfigInstructionDiscriminator = [\n 145, 94, 211, 155, 228, 140, 71, 34,\n]\n\n/**\n * Creates a _InitDefaultUlnConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitDefaultUlnConfig\n * @category generated\n */\nexport function createInitDefaultUlnConfigInstruction(\n accounts: InitDefaultUlnConfigInstructionAccounts,\n args: InitDefaultUlnConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = initDefaultUlnConfigStruct.serialize({\n instructionDiscriminator: initDefaultUlnConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { UlnConfig, ulnConfigBeet } from './UlnConfig'\nexport type InitDefaultUlnConfigParams = {\n eid: number\n config: UlnConfig\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initDefaultUlnConfigParamsBeet =\n new beet.FixableBeetArgsStruct<InitDefaultUlnConfigParams>(\n [\n ['eid', beet.u32],\n ['config', ulnConfigBeet],\n ],\n 'InitDefaultUlnConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type UlnConfig = {\n maxMessageSize: number\n outboundConfirmations: beet.bignum\n executor: web3.PublicKey\n inboundConfirmations: beet.bignum\n oracles: web3.PublicKey[]\n optionalOraclesThreshold: number\n optionalOracles: web3.PublicKey[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const ulnConfigBeet = new beet.FixableBeetArgsStruct<UlnConfig>(\n [\n ['maxMessageSize', beet.u32],\n ['outboundConfirmations', beet.u64],\n ['executor', beetSolana.publicKey],\n ['inboundConfirmations', beet.u64],\n ['oracles', beet.array(beetSolana.publicKey)],\n ['optionalOraclesThreshold', beet.u8],\n ['optionalOracles', beet.array(beetSolana.publicKey)],\n ],\n 'UlnConfig'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { InitUlnParams, initUlnParamsBeet } from '../types/InitUlnParams'\n\n/**\n * @category Instructions\n * @category InitUln\n * @category generated\n */\nexport type InitUlnInstructionArgs = {\n params: InitUlnParams\n}\n/**\n * @category Instructions\n * @category InitUln\n * @category generated\n */\nexport const initUlnStruct = new beet.BeetArgsStruct<\n InitUlnInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initUlnParamsBeet],\n ],\n 'InitUlnInstructionArgs'\n)\n/**\n * Accounts required by the _initUln_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] uln\n * @category Instructions\n * @category InitUln\n * @category generated\n */\nexport type InitUlnInstructionAccounts = {\n payer: web3.PublicKey\n uln: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initUlnInstructionDiscriminator = [\n 19, 215, 207, 92, 197, 112, 119, 240,\n]\n\n/**\n * Creates a _InitUln_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitUln\n * @category generated\n */\nexport function createInitUlnInstruction(\n accounts: InitUlnInstructionAccounts,\n args: InitUlnInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = initUlnStruct.serialize({\n instructionDiscriminator: initUlnInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitUlnParams = {\n eid: number\n endpoint: web3.PublicKey\n admin: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initUlnParamsBeet = new beet.BeetArgsStruct<InitUlnParams>(\n [\n ['eid', beet.u32],\n ['endpoint', beetSolana.publicKey],\n ['admin', beetSolana.publicKey],\n ],\n 'InitUlnParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { UlnEvent, ulnEventBeet } from '../types/UlnEvent'\n\n/**\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport type LogInstructionArgs = {\n event: UlnEvent\n}\n/**\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport const logStruct = new beet.FixableBeetArgsStruct<\n LogInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['event', ulnEventBeet],\n ],\n 'LogInstructionArgs'\n)\n/**\n * Accounts required by the _log_ instruction\n *\n * @property [] uln\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport type LogInstructionAccounts = {\n uln: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const logInstructionDiscriminator = [\n 141, 230, 214, 242, 9, 209, 207, 170,\n]\n\n/**\n * Creates a _Log_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport function createLogInstruction(\n accounts: LogInstructionAccounts,\n args: LogInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = logStruct.serialize({\n instructionDiscriminator: logInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\n/**\n * This type is used to derive the {@link UlnEvent} type as well as the de/serializer.\n * However don't refer to it in your code but use the {@link UlnEvent} type instead.\n *\n * @category userTypes\n * @category enums\n * @category generated\n * @private\n */\nexport type UlnEventRecord = {\n JobAssigned: { executor: web3.PublicKey; oracles: web3.PublicKey[] }\n}\n\n/**\n * Union type respresenting the UlnEvent data enum defined in Rust.\n *\n * NOTE: that it includes a `__kind` property which allows to narrow types in\n * switch/if statements.\n * Additionally `isUlnEvent*` type guards are exposed below to narrow to a specific variant.\n *\n * @category userTypes\n * @category enums\n * @category generated\n */\nexport type UlnEvent = beet.DataEnumKeyAsKind<UlnEventRecord>\n\nexport const isUlnEventJobAssigned = (\n x: UlnEvent\n): x is UlnEvent & { __kind: 'JobAssigned' } => x.__kind === 'JobAssigned'\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const ulnEventBeet = beet.dataEnum<UlnEventRecord>([\n [\n 'JobAssigned',\n new beet.FixableBeetArgsStruct<UlnEventRecord['JobAssigned']>(\n [\n ['executor', beetSolana.publicKey],\n ['oracles', beet.array(beetSolana.publicKey)],\n ],\n 'UlnEventRecord[\"JobAssigned\"]'\n ),\n ],\n]) as beet.FixableBeet<UlnEvent, UlnEvent>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibQuoteParams,\n messageLibQuoteParamsBeet,\n} from '../types/MessageLibQuoteParams'\n\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionArgs = {\n params: MessageLibQuoteParams\n}\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport const quoteStruct = new beet.FixableBeetArgsStruct<\n QuoteInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibQuoteParamsBeet],\n ],\n 'QuoteInstructionArgs'\n)\n/**\n * Accounts required by the _quote_ instruction\n *\n * @property [] uln\n * @property [] ulnConfig\n * @property [] defaultUlnConfig\n * @property [] defaultOptions\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionAccounts = {\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n defaultUlnConfig: web3.PublicKey\n defaultOptions: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const quoteInstructionDiscriminator = [\n 149, 42, 109, 247, 134, 146, 213, 123,\n]\n\n/**\n * Creates a _Quote_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport function createQuoteInstruction(\n accounts: QuoteInstructionAccounts,\n args: QuoteInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = quoteStruct.serialize({\n instructionDiscriminator: quoteInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultUlnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultOptions,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { PacketForQuote, packetForQuoteBeet } from './PacketForQuote'\nexport type MessageLibQuoteParams = {\n packet: PacketForQuote\n payInLzToken: boolean\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibQuoteParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibQuoteParams>(\n [\n ['packet', packetForQuoteBeet],\n ['payInLzToken', beet.bool],\n ['options', beet.bytes],\n ],\n 'MessageLibQuoteParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type PacketForQuote = {\n sender: web3.PublicKey\n dstEid: number\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetForQuoteBeet =\n new beet.FixableBeetArgsStruct<PacketForQuote>(\n [\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['message', beet.bytes],\n ],\n 'PacketForQuote'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n RegisterWorkerParams,\n registerWorkerParamsBeet,\n} from '../types/RegisterWorkerParams'\n\n/**\n * @category Instructions\n * @category RegisterWorker\n * @category generated\n */\nexport type RegisterWorkerInstructionArgs = {\n params: RegisterWorkerParams\n}\n/**\n * @category Instructions\n * @category RegisterWorker\n * @category generated\n */\nexport const registerWorkerStruct = new beet.FixableBeetArgsStruct<\n RegisterWorkerInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', registerWorkerParamsBeet],\n ],\n 'RegisterWorkerInstructionArgs'\n)\n/**\n * Accounts required by the _registerWorker_ instruction\n *\n * @property [_writable_, **signer**] worker\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category RegisterWorker\n * @category generated\n */\nexport type RegisterWorkerInstructionAccounts = {\n worker: web3.PublicKey\n workerConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const registerWorkerInstructionDiscriminator = [\n 22, 253, 23, 225, 230, 31, 6, 192,\n]\n\n/**\n * Creates a _RegisterWorker_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category RegisterWorker\n * @category generated\n */\nexport function createRegisterWorkerInstruction(\n accounts: RegisterWorkerInstructionAccounts,\n args: RegisterWorkerInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = registerWorkerStruct.serialize({\n instructionDiscriminator: registerWorkerInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.worker,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport { WorkerId, workerIdBeet } from './WorkerId'\nexport type RegisterWorkerParams = {\n workerId: WorkerId\n admins: beet.COption<web3.PublicKey[] /* size: 3 */>\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const registerWorkerParamsBeet =\n new beet.FixableBeetArgsStruct<RegisterWorkerParams>(\n [\n ['workerId', workerIdBeet],\n [\n 'admins',\n beet.coption(beet.uniformFixedSizeArray(beetSolana.publicKey, 3)),\n ],\n ],\n 'RegisterWorkerParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibResetConfigParams,\n messageLibResetConfigParamsBeet,\n} from '../types/MessageLibResetConfigParams'\n\n/**\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport type ResetConfigInstructionArgs = {\n params: MessageLibResetConfigParams\n}\n/**\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport const resetConfigStruct = new beet.BeetArgsStruct<\n ResetConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibResetConfigParamsBeet],\n ],\n 'ResetConfigInstructionArgs'\n)\n/**\n * Accounts required by the _resetConfig_ instruction\n *\n * @property [**signer**] endpoint\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport type ResetConfigInstructionAccounts = {\n endpoint: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const resetConfigInstructionDiscriminator = [\n 81, 97, 49, 46, 19, 200, 8, 99,\n]\n\n/**\n * Creates a _ResetConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport function createResetConfigInstruction(\n accounts: ResetConfigInstructionAccounts,\n args: ResetConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = resetConfigStruct.serialize({\n instructionDiscriminator: resetConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibResetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibResetConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibResetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibResetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibSendParams,\n messageLibSendParamsBeet,\n} from '../types/MessageLibSendParams'\n\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionArgs = {\n params: MessageLibSendParams\n}\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport const sendStruct = new beet.FixableBeetArgsStruct<\n SendInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibSendParamsBeet],\n ],\n 'SendInstructionArgs'\n)\n/**\n * Accounts required by the _send_ instruction\n *\n * @property [**signer**] endpoint\n * @property [_writable_] uln\n * @property [] ulnConfig\n * @property [] defaultUlnConfig\n * @property [] defaultOptions\n * @property [] ulnProgram\n * @property [_writable_, **signer**] payer\n * @property [] treasury (optional)\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionAccounts = {\n endpoint: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n defaultUlnConfig: web3.PublicKey\n defaultOptions: web3.PublicKey\n ulnProgram: web3.PublicKey\n payer: web3.PublicKey\n treasury?: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const sendInstructionDiscriminator = [102, 251, 20, 187, 65, 75, 12, 69]\n\n/**\n * Creates a _Send_ instruction.\n *\n * Optional accounts that are not provided will be omitted from the accounts\n * array passed with the instruction.\n * An optional account that is set cannot follow an optional account that is unset.\n * Otherwise an Error is raised.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport function createSendInstruction(\n accounts: SendInstructionAccounts,\n args: SendInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = sendStruct.serialize({\n instructionDiscriminator: sendInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultUlnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultOptions,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnProgram,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n ]\n\n if (accounts.treasury != null) {\n keys.push({\n pubkey: accounts.treasury,\n isWritable: false,\n isSigner: false,\n })\n }\n keys.push({\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n })\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Packet, packetBeet } from './Packet'\nexport type MessageLibSendParams = {\n guid: number[] /* size: 32 */\n packet: Packet\n options: Uint8Array\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSendParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSendParams>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['packet', packetBeet],\n ['options', beet.bytes],\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessageLibSendParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type Packet = {\n nonce: beet.bignum\n srcEid: number\n sender: web3.PublicKey\n dstEid: number\n receiver: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetBeet = new beet.FixableBeetArgsStruct<Packet>(\n [\n ['nonce', beet.u64],\n ['srcEid', beet.u32],\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['receiver', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'Packet'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as splToken from '@solana/spl-token'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibSendParams,\n messageLibSendParamsBeet,\n} from '../types/MessageLibSendParams'\n\n/**\n * @category Instructions\n * @category SendWithLzToken\n * @category generated\n */\nexport type SendWithLzTokenInstructionArgs = {\n params: MessageLibSendParams\n}\n/**\n * @category Instructions\n * @category SendWithLzToken\n * @category generated\n */\nexport const sendWithLzTokenStruct = new beet.FixableBeetArgsStruct<\n SendWithLzTokenInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibSendParamsBeet],\n ],\n 'SendWithLzTokenInstructionArgs'\n)\n/**\n * Accounts required by the _sendWithLzToken_ instruction\n *\n * @property [**signer**] endpoint\n * @property [_writable_] uln\n * @property [] ulnConfig\n * @property [] defaultUlnConfig\n * @property [] defaultOptions\n * @property [] ulnProgram\n * @property [_writable_, **signer**] payer\n * @property [_writable_] payerTokenAccount\n * @property [_writable_] treasury\n * @property [] endpointSettings\n * @category Instructions\n * @category SendWithLzToken\n * @category generated\n */\nexport type SendWithLzTokenInstructionAccounts = {\n endpoint: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n defaultUlnConfig: web3.PublicKey\n defaultOptions: web3.PublicKey\n ulnProgram: web3.PublicKey\n payer: web3.PublicKey\n systemProgram?: web3.PublicKey\n payerTokenAccount: web3.PublicKey\n treasury: web3.PublicKey\n tokenProgram?: web3.PublicKey\n endpointSettings: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const sendWithLzTokenInstructionDiscriminator = [\n 165, 161, 84, 48, 129, 26, 193, 19,\n]\n\n/**\n * Creates a _SendWithLzToken_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SendWithLzToken\n * @category generated\n */\nexport function createSendWithLzTokenInstruction(\n accounts: SendWithLzTokenInstructionAccounts,\n args: SendWithLzTokenInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = sendWithLzTokenStruct.serialize({\n instructionDiscriminator: sendWithLzTokenInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultUlnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultOptions,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnProgram,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.payerTokenAccount,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.treasury,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointSettings,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetAdminParams, setAdminParamsBeet } from '../types/SetAdminParams'\n\n/**\n * @category Instructions\n * @category SetAdmin\n * @category generated\n */\nexport type SetAdminInstructionArgs = {\n params: SetAdminParams\n}\n/**\n * @category Instructions\n * @category SetAdmin\n * @category generated\n */\nexport const setAdminStruct = new beet.BeetArgsStruct<\n SetAdminInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setAdminParamsBeet],\n ],\n 'SetAdminInstructionArgs'\n)\n/**\n * Accounts required by the _setAdmin_ instruction\n *\n * @property [**signer**] worker\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetAdmin\n * @category generated\n */\nexport type SetAdminInstructionAccounts = {\n worker: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setAdminInstructionDiscriminator = [\n 251, 163, 0, 52, 91, 194, 187, 92,\n]\n\n/**\n * Creates a _SetAdmin_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetAdmin\n * @category generated\n */\nexport function createSetAdminInstruction(\n accounts: SetAdminInstructionAccounts,\n args: SetAdminInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setAdminStruct.serialize({\n instructionDiscriminator: setAdminInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.worker,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetAdminParams = {\n admins: web3.PublicKey[] /* size: 3 */\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setAdminParamsBeet = new beet.BeetArgsStruct<SetAdminParams>(\n [['admins', beet.uniformFixedSizeArray(beetSolana.publicKey, 3)]],\n 'SetAdminParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetAllowlistParams,\n setAllowlistParamsBeet,\n} from '../types/SetAllowlistParams'\n\n/**\n * @category Instructions\n * @category SetAllowlist\n * @category generated\n */\nexport type SetAllowlistInstructionArgs = {\n params: SetAllowlistParams\n}\n/**\n * @category Instructions\n * @category SetAllowlist\n * @category generated\n */\nexport const setAllowlistStruct = new beet.FixableBeetArgsStruct<\n SetAllowlistInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setAllowlistParamsBeet],\n ],\n 'SetAllowlistInstructionArgs'\n)\n/**\n * Accounts required by the _setAllowlist_ instruction\n *\n * @property [**signer**] worker\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetAllowlist\n * @category generated\n */\nexport type SetAllowlistInstructionAccounts = {\n worker: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setAllowlistInstructionDiscriminator = [\n 141, 30, 41, 131, 132, 7, 216, 134,\n]\n\n/**\n * Creates a _SetAllowlist_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetAllowlist\n * @category generated\n */\nexport function createSetAllowlistInstruction(\n accounts: SetAllowlistInstructionAccounts,\n args: SetAllowlistInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setAllowlistStruct.serialize({\n instructionDiscriminator: setAllowlistInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.worker,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetAllowlistParams = {\n allowlist: web3.PublicKey[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setAllowlistParamsBeet =\n new beet.FixableBeetArgsStruct<SetAllowlistParams>(\n [['allowlist', beet.array(beetSolana.publicKey)]],\n 'SetAllowlistParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibSetConfigParams,\n messageLibSetConfigParamsBeet,\n} from '../types/MessageLibSetConfigParams'\n\n/**\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport type SetConfigInstructionArgs = {\n params: MessageLibSetConfigParams\n}\n/**\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport const setConfigStruct = new beet.FixableBeetArgsStruct<\n SetConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibSetConfigParamsBeet],\n ],\n 'SetConfigInstructionArgs'\n)\n/**\n * Accounts required by the _setConfig_ instruction\n *\n * @property [**signer**] endpoint\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport type SetConfigInstructionAccounts = {\n endpoint: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setConfigInstructionDiscriminator = [\n 108, 158, 154, 175, 212, 98, 52, 66,\n]\n\n/**\n * Creates a _SetConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport function createSetConfigInstruction(\n accounts: SetConfigInstructionAccounts,\n args: SetConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setConfigStruct.serialize({\n instructionDiscriminator: setConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n configType: number\n config: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSetConfigParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ['configType', beet.u32],\n ['config', beet.bytes],\n ],\n 'MessageLibSetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultMultiplierBpsParams,\n setDefaultMultiplierBpsParamsBeet,\n} from '../types/SetDefaultMultiplierBpsParams'\n\n/**\n * @category Instructions\n * @category SetDefaultMultiplierBps\n * @category generated\n */\nexport type SetDefaultMultiplierBpsInstructionArgs = {\n params: SetDefaultMultiplierBpsParams\n}\n/**\n * @category Instructions\n * @category SetDefaultMultiplierBps\n * @category generated\n */\nexport const setDefaultMultiplierBpsStruct = new beet.BeetArgsStruct<\n SetDefaultMultiplierBpsInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultMultiplierBpsParamsBeet],\n ],\n 'SetDefaultMultiplierBpsInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultMultiplierBps_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetDefaultMultiplierBps\n * @category generated\n */\nexport type SetDefaultMultiplierBpsInstructionAccounts = {\n admin: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultMultiplierBpsInstructionDiscriminator = [\n 244, 68, 126, 136, 12, 126, 191, 122,\n]\n\n/**\n * Creates a _SetDefaultMultiplierBps_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultMultiplierBps\n * @category generated\n */\nexport function createSetDefaultMultiplierBpsInstruction(\n accounts: SetDefaultMultiplierBpsInstructionAccounts,\n args: SetDefaultMultiplierBpsInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setDefaultMultiplierBpsStruct.serialize({\n instructionDiscriminator: setDefaultMultiplierBpsInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetDefaultMultiplierBpsParams = {\n worker: web3.PublicKey\n defaultMultiplierBps: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultMultiplierBpsParamsBeet =\n new beet.BeetArgsStruct<SetDefaultMultiplierBpsParams>(\n [\n ['worker', beetSolana.publicKey],\n ['defaultMultiplierBps', beet.u16],\n ],\n 'SetDefaultMultiplierBpsParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultOptionsParams,\n setDefaultOptionsParamsBeet,\n} from '../types/SetDefaultOptionsParams'\n\n/**\n * @category Instructions\n * @category SetDefaultOptions\n * @category generated\n */\nexport type SetDefaultOptionsInstructionArgs = {\n params: SetDefaultOptionsParams\n}\n/**\n * @category Instructions\n * @category SetDefaultOptions\n * @category generated\n */\nexport const setDefaultOptionsStruct = new beet.FixableBeetArgsStruct<\n SetDefaultOptionsInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultOptionsParamsBeet],\n ],\n 'SetDefaultOptionsInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultOptions_ instruction\n *\n * @property [**signer**] admin\n * @property [] uln\n * @property [_writable_] defaultOptions\n * @category Instructions\n * @category SetDefaultOptions\n * @category generated\n */\nexport type SetDefaultOptionsInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n defaultOptions: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultOptionsInstructionDiscriminator = [\n 151, 78, 199, 102, 253, 237, 105, 126,\n]\n\n/**\n * Creates a _SetDefaultOptions_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultOptions\n * @category generated\n */\nexport function createSetDefaultOptionsInstruction(\n accounts: SetDefaultOptionsInstructionAccounts,\n args: SetDefaultOptionsInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setDefaultOptionsStruct.serialize({\n instructionDiscriminator: setDefaultOptionsInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultOptions,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetDefaultOptionsParams = {\n eid: number\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultOptionsParamsBeet =\n new beet.FixableBeetArgsStruct<SetDefaultOptionsParams>(\n [\n ['eid', beet.u32],\n ['options', beet.bytes],\n ],\n 'SetDefaultOptionsParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultUlnConfigParams,\n setDefaultUlnConfigParamsBeet,\n} from '../types/SetDefaultUlnConfigParams'\n\n/**\n * @category Instructions\n * @category SetDefaultUlnConfig\n * @category generated\n */\nexport type SetDefaultUlnConfigInstructionArgs = {\n params: SetDefaultUlnConfigParams\n}\n/**\n * @category Instructions\n * @category SetDefaultUlnConfig\n * @category generated\n */\nexport const setDefaultUlnConfigStruct = new beet.FixableBeetArgsStruct<\n SetDefaultUlnConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultUlnConfigParamsBeet],\n ],\n 'SetDefaultUlnConfigInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultUlnConfig_ instruction\n *\n * @property [**signer**] admin\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @category Instructions\n * @category SetDefaultUlnConfig\n * @category generated\n */\nexport type SetDefaultUlnConfigInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultUlnConfigInstructionDiscriminator = [\n 212, 155, 143, 239, 171, 53, 194, 119,\n]\n\n/**\n * Creates a _SetDefaultUlnConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultUlnConfig\n * @category generated\n */\nexport function createSetDefaultUlnConfigInstruction(\n accounts: SetDefaultUlnConfigInstructionAccounts,\n args: SetDefaultUlnConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setDefaultUlnConfigStruct.serialize({\n instructionDiscriminator: setDefaultUlnConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { UlnConfig, ulnConfigBeet } from './UlnConfig'\nexport type SetDefaultUlnConfigParams = {\n eid: number\n config: UlnConfig\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultUlnConfigParamsBeet =\n new beet.FixableBeetArgsStruct<SetDefaultUlnConfigParams>(\n [\n ['eid', beet.u32],\n ['config', ulnConfigBeet],\n ],\n 'SetDefaultUlnConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDenylistParams,\n setDenylistParamsBeet,\n} from '../types/SetDenylistParams'\n\n/**\n * @category Instructions\n * @category SetDenylist\n * @category generated\n */\nexport type SetDenylistInstructionArgs = {\n params: SetDenylistParams\n}\n/**\n * @category Instructions\n * @category SetDenylist\n * @category generated\n */\nexport const setDenylistStruct = new beet.FixableBeetArgsStruct<\n SetDenylistInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDenylistParamsBeet],\n ],\n 'SetDenylistInstructionArgs'\n)\n/**\n * Accounts required by the _setDenylist_ instruction\n *\n * @property [**signer**] worker\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetDenylist\n * @category generated\n */\nexport type SetDenylistInstructionAccounts = {\n worker: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDenylistInstructionDiscriminator = [\n 165, 80, 247, 83, 173, 165, 39, 102,\n]\n\n/**\n * Creates a _SetDenylist_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDenylist\n * @category generated\n */\nexport function createSetDenylistInstruction(\n accounts: SetDenylistInstructionAccounts,\n args: SetDenylistInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setDenylistStruct.serialize({\n instructionDiscriminator: setDenylistInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.worker,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetDenylistParams = {\n denylist: web3.PublicKey[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDenylistParamsBeet =\n new beet.FixableBeetArgsStruct<SetDenylistParams>(\n [['denylist', beet.array(beetSolana.publicKey)]],\n 'SetDenylistParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDstConfigParams,\n setDstConfigParamsBeet,\n} from '../types/SetDstConfigParams'\n\n/**\n * @category Instructions\n * @category SetDstConfig\n * @category generated\n */\nexport type SetDstConfigInstructionArgs = {\n params: SetDstConfigParams\n}\n/**\n * @category Instructions\n * @category SetDstConfig\n * @category generated\n */\nexport const setDstConfigStruct = new beet.FixableBeetArgsStruct<\n SetDstConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDstConfigParamsBeet],\n ],\n 'SetDstConfigInstructionArgs'\n)\n/**\n * Accounts required by the _setDstConfig_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetDstConfig\n * @category generated\n */\nexport type SetDstConfigInstructionAccounts = {\n admin: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDstConfigInstructionDiscriminator = [\n 237, 77, 127, 180, 150, 239, 195, 214,\n]\n\n/**\n * Creates a _SetDstConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDstConfig\n * @category generated\n */\nexport function createSetDstConfigInstruction(\n accounts: SetDstConfigInstructionAccounts,\n args: SetDstConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setDstConfigStruct.serialize({\n instructionDiscriminator: setDstConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nimport { DstConfig, dstConfigBeet } from './DstConfig'\nexport type SetDstConfigParams = {\n worker: web3.PublicKey\n dstConfigs: DstConfig[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDstConfigParamsBeet =\n new beet.FixableBeetArgsStruct<SetDstConfigParams>(\n [\n ['worker', beetSolana.publicKey],\n ['dstConfigs', beet.array(dstConfigBeet)],\n ],\n 'SetDstConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { ExecutorDstConfig, executorDstConfigBeet } from './ExecutorDstConfig'\nimport { OracleDstConfig, oracleDstConfigBeet } from './OracleDstConfig'\n/**\n * This type is used to derive the {@link DstConfig} type as well as the de/serializer.\n * However don't refer to it in your code but use the {@link DstConfig} type instead.\n *\n * @category userTypes\n * @category enums\n * @category generated\n * @private\n */\nexport type DstConfigRecord = {\n Executor: { fields: [ExecutorDstConfig] }\n Oracle: { fields: [OracleDstConfig] }\n}\n\n/**\n * Union type respresenting the DstConfig data enum defined in Rust.\n *\n * NOTE: that it includes a `__kind` property which allows to narrow types in\n * switch/if statements.\n * Additionally `isDstConfig*` type guards are exposed below to narrow to a specific variant.\n *\n * @category userTypes\n * @category enums\n * @category generated\n */\nexport type DstConfig = beet.DataEnumKeyAsKind<DstConfigRecord>\n\nexport const isDstConfigExecutor = (\n x: DstConfig\n): x is DstConfig & { __kind: 'Executor' } => x.__kind === 'Executor'\nexport const isDstConfigOracle = (\n x: DstConfig\n): x is DstConfig & { __kind: 'Oracle' } => x.__kind === 'Oracle'\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const dstConfigBeet = beet.dataEnum<DstConfigRecord>([\n [\n 'Executor',\n new beet.FixableBeetArgsStruct<DstConfigRecord['Executor']>(\n [['fields', beet.tuple([executorDstConfigBeet])]],\n 'DstConfigRecord[\"Executor\"]'\n ),\n ],\n [\n 'Oracle',\n new beet.FixableBeetArgsStruct<DstConfigRecord['Oracle']>(\n [['fields', beet.tuple([oracleDstConfigBeet])]],\n 'DstConfigRecord[\"Oracle\"]'\n ),\n ],\n]) as beet.FixableBeet<DstConfig, DstConfig>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetPausedParams, setPausedParamsBeet } from '../types/SetPausedParams'\n\n/**\n * @category Instructions\n * @category SetPaused\n * @category generated\n */\nexport type SetPausedInstructionArgs = {\n params: SetPausedParams\n}\n/**\n * @category Instructions\n * @category SetPaused\n * @category generated\n */\nexport const setPausedStruct = new beet.BeetArgsStruct<\n SetPausedInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setPausedParamsBeet],\n ],\n 'SetPausedInstructionArgs'\n)\n/**\n * Accounts required by the _setPaused_ instruction\n *\n * @property [**signer**] worker\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetPaused\n * @category generated\n */\nexport type SetPausedInstructionAccounts = {\n worker: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setPausedInstructionDiscriminator = [\n 91, 60, 125, 192, 176, 225, 166, 218,\n]\n\n/**\n * Creates a _SetPaused_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetPaused\n * @category generated\n */\nexport function createSetPausedInstruction(\n accounts: SetPausedInstructionAccounts,\n args: SetPausedInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setPausedStruct.serialize({\n instructionDiscriminator: setPausedInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.worker,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetPausedParams = {\n paused: boolean\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setPausedParamsBeet = new beet.BeetArgsStruct<SetPausedParams>(\n [['paused', beet.bool]],\n 'SetPausedParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetPriceParams, setPriceParamsBeet } from '../types/SetPriceParams'\n\n/**\n * @category Instructions\n * @category SetPrice\n * @category generated\n */\nexport type SetPriceInstructionArgs = {\n params: SetPriceParams\n}\n/**\n * @category Instructions\n * @category SetPrice\n * @category generated\n */\nexport const setPriceStruct = new beet.FixableBeetArgsStruct<\n SetPriceInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setPriceParamsBeet],\n ],\n 'SetPriceInstructionArgs'\n)\n/**\n * Accounts required by the _setPrice_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetPrice\n * @category generated\n */\nexport type SetPriceInstructionAccounts = {\n admin: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setPriceInstructionDiscriminator = [\n 16, 19, 182, 8, 149, 83, 72, 181,\n]\n\n/**\n * Creates a _SetPrice_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetPrice\n * @category generated\n */\nexport function createSetPriceInstruction(\n accounts: SetPriceInstructionAccounts,\n args: SetPriceInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setPriceStruct.serialize({\n instructionDiscriminator: setPriceInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nimport { PriceParams, priceParamsBeet } from './PriceParams'\nexport type SetPriceParams = {\n worker: web3.PublicKey\n prices: PriceParams[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setPriceParamsBeet =\n new beet.FixableBeetArgsStruct<SetPriceParams>(\n [\n ['worker', beetSolana.publicKey],\n ['prices', beet.array(priceParamsBeet)],\n ],\n 'SetPriceParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Price, priceBeet } from './Price'\nimport { ArbitrumPriceExt, arbitrumPriceExtBeet } from './ArbitrumPriceExt'\n/**\n * This type is used to derive the {@link PriceParams} type as well as the de/serializer.\n * However don't refer to it in your code but use the {@link PriceParams} type instead.\n *\n * @category userTypes\n * @category enums\n * @category generated\n * @private\n */\nexport type PriceParamsRecord = {\n Price: { fields: [Price] }\n PriceForArbitrum: { fields: [Price, ArbitrumPriceExt] }\n}\n\n/**\n * Union type respresenting the PriceParams data enum defined in Rust.\n *\n * NOTE: that it includes a `__kind` property which allows to narrow types in\n * switch/if statements.\n * Additionally `isPriceParams*` type guards are exposed below to narrow to a specific variant.\n *\n * @category userTypes\n * @category enums\n * @category generated\n */\nexport type PriceParams = beet.DataEnumKeyAsKind<PriceParamsRecord>\n\nexport const isPriceParamsPrice = (\n x: PriceParams\n): x is PriceParams & { __kind: 'Price' } => x.__kind === 'Price'\nexport const isPriceParamsPriceForArbitrum = (\n x: PriceParams\n): x is PriceParams & { __kind: 'PriceForArbitrum' } =>\n x.__kind === 'PriceForArbitrum'\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const priceParamsBeet = beet.dataEnum<PriceParamsRecord>([\n [\n 'Price',\n new beet.BeetArgsStruct<PriceParamsRecord['Price']>(\n [['fields', beet.fixedSizeTuple([priceBeet])]],\n 'PriceParamsRecord[\"Price\"]'\n ),\n ],\n [\n 'PriceForArbitrum',\n new beet.BeetArgsStruct<PriceParamsRecord['PriceForArbitrum']>(\n [['fields', beet.fixedSizeTuple([priceBeet, arbitrumPriceExtBeet])]],\n 'PriceParamsRecord[\"PriceForArbitrum\"]'\n ),\n ],\n]) as beet.FixableBeet<PriceParams, PriceParams>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetQuorumParams, setQuorumParamsBeet } from '../types/SetQuorumParams'\n\n/**\n * @category Instructions\n * @category SetQuorum\n * @category generated\n */\nexport type SetQuorumInstructionArgs = {\n params: SetQuorumParams\n}\n/**\n * @category Instructions\n * @category SetQuorum\n * @category generated\n */\nexport const setQuorumStruct = new beet.BeetArgsStruct<\n SetQuorumInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setQuorumParamsBeet],\n ],\n 'SetQuorumInstructionArgs'\n)\n/**\n * Accounts required by the _setQuorum_ instruction\n *\n * @property [**signer**] oracle\n * @property [_writable_] oracleConfig\n * @category Instructions\n * @category SetQuorum\n * @category generated\n */\nexport type SetQuorumInstructionAccounts = {\n oracle: web3.PublicKey\n oracleConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setQuorumInstructionDiscriminator = [\n 122, 137, 22, 36, 212, 64, 130, 122,\n]\n\n/**\n * Creates a _SetQuorum_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetQuorum\n * @category generated\n */\nexport function createSetQuorumInstruction(\n accounts: SetQuorumInstructionAccounts,\n args: SetQuorumInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setQuorumStruct.serialize({\n instructionDiscriminator: setQuorumInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.oracle,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.oracleConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetQuorumParams = {\n quorum: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setQuorumParamsBeet = new beet.BeetArgsStruct<SetQuorumParams>(\n [['quorum', beet.u8]],\n 'SetQuorumParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetTreasuryParams,\n setTreasuryParamsBeet,\n} from '../types/SetTreasuryParams'\n\n/**\n * @category Instructions\n * @category SetTreasury\n * @category generated\n */\nexport type SetTreasuryInstructionArgs = {\n params: SetTreasuryParams\n}\n/**\n * @category Instructions\n * @category SetTreasury\n * @category generated\n */\nexport const setTreasuryStruct = new beet.FixableBeetArgsStruct<\n SetTreasuryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setTreasuryParamsBeet],\n ],\n 'SetTreasuryInstructionArgs'\n)\n/**\n * Accounts required by the _setTreasury_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] uln\n * @category Instructions\n * @category SetTreasury\n * @category generated\n */\nexport type SetTreasuryInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setTreasuryInstructionDiscriminator = [\n 57, 97, 196, 95, 195, 206, 106, 136,\n]\n\n/**\n * Creates a _SetTreasury_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetTreasury\n * @category generated\n */\nexport function createSetTreasuryInstruction(\n accounts: SetTreasuryInstructionAccounts,\n args: SetTreasuryInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setTreasuryStruct.serialize({\n instructionDiscriminator: setTreasuryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Treasury, treasuryBeet } from './Treasury'\nexport type SetTreasuryParams = {\n treasury: beet.COption<Treasury>\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setTreasuryParamsBeet =\n new beet.FixableBeetArgsStruct<SetTreasuryParams>(\n [['treasury', beet.coption(treasuryBeet)]],\n 'SetTreasuryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SignParams, signParamsBeet } from '../types/SignParams'\n\n/**\n * @category Instructions\n * @category Sign\n * @category generated\n */\nexport type SignInstructionArgs = {\n params: SignParams\n}\n/**\n * @category Instructions\n * @category Sign\n * @category generated\n */\nexport const signStruct = new beet.FixableBeetArgsStruct<\n SignInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', signParamsBeet],\n ],\n 'SignInstructionArgs'\n)\n/**\n * Accounts required by the _sign_ instruction\n *\n * @property [_writable_, **signer**] oracle\n * @property [_writable_] confirmations\n * @category Instructions\n * @category Sign\n * @category generated\n */\nexport type SignInstructionAccounts = {\n oracle: web3.PublicKey\n confirmations: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const signInstructionDiscriminator = [5, 221, 155, 46, 237, 91, 28, 236]\n\n/**\n * Creates a _Sign_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Sign\n * @category generated\n */\nexport function createSignInstruction(\n accounts: SignInstructionAccounts,\n args: SignInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = signStruct.serialize({\n instructionDiscriminator: signInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.oracle,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.confirmations,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SignParams = {\n packetHeader: Uint8Array\n payloadHash: number[] /* size: 32 */\n confirmations: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const signParamsBeet = new beet.FixableBeetArgsStruct<SignParams>(\n [\n ['packetHeader', beet.bytes],\n ['payloadHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['confirmations', beet.u64],\n ],\n 'SignParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibSnapshotConfigParams,\n messageLibSnapshotConfigParamsBeet,\n} from '../types/MessageLibSnapshotConfigParams'\n\n/**\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport type SnapshotConfigInstructionArgs = {\n params: MessageLibSnapshotConfigParams\n}\n/**\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport const snapshotConfigStruct = new beet.BeetArgsStruct<\n SnapshotConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibSnapshotConfigParamsBeet],\n ],\n 'SnapshotConfigInstructionArgs'\n)\n/**\n * Accounts required by the _snapshotConfig_ instruction\n *\n * @property [**signer**] endpoint\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @property [] defaultUlnConfig\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport type SnapshotConfigInstructionAccounts = {\n endpoint: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n defaultUlnConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const snapshotConfigInstructionDiscriminator = [\n 11, 153, 235, 114, 93, 177, 208, 119,\n]\n\n/**\n * Creates a _SnapshotConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport function createSnapshotConfigInstruction(\n accounts: SnapshotConfigInstructionAccounts,\n args: SnapshotConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = snapshotConfigStruct.serialize({\n instructionDiscriminator: snapshotConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultUlnConfig,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSnapshotConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSnapshotConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibSnapshotConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibSnapshotConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n TransferAdminParams,\n transferAdminParamsBeet,\n} from '../types/TransferAdminParams'\n\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionArgs = {\n params: TransferAdminParams\n}\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport const transferAdminStruct = new beet.BeetArgsStruct<\n TransferAdminInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', transferAdminParamsBeet],\n ],\n 'TransferAdminInstructionArgs'\n)\n/**\n * Accounts required by the _transferAdmin_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] uln\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const transferAdminInstructionDiscriminator = [\n 42, 242, 66, 106, 228, 10, 111, 156,\n]\n\n/**\n * Creates a _TransferAdmin_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport function createTransferAdminInstruction(\n accounts: TransferAdminInstructionAccounts,\n args: TransferAdminInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = transferAdminStruct.serialize({\n instructionDiscriminator: transferAdminInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type TransferAdminParams = {\n admin: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const transferAdminParamsBeet =\n new beet.BeetArgsStruct<TransferAdminParams>(\n [['admin', beetSolana.publicKey]],\n 'TransferAdminParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n WithdrawFeeParams,\n withdrawFeeParamsBeet,\n} from '../types/WithdrawFeeParams'\n\n/**\n * @category Instructions\n * @category WithdrawFee\n * @category generated\n */\nexport type WithdrawFeeInstructionArgs = {\n params: WithdrawFeeParams\n}\n/**\n * @category Instructions\n * @category WithdrawFee\n * @category generated\n */\nexport const withdrawFeeStruct = new beet.BeetArgsStruct<\n WithdrawFeeInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', withdrawFeeParamsBeet],\n ],\n 'WithdrawFeeInstructionArgs'\n)\n/**\n * Accounts required by the _withdrawFee_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] uln\n * @property [_writable_] workerConfig\n * @property [_writable_] receiver\n * @category Instructions\n * @category WithdrawFee\n * @category generated\n */\nexport type WithdrawFeeInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n workerConfig: web3.PublicKey\n receiver: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const withdrawFeeInstructionDiscriminator = [\n 14, 122, 231, 218, 31, 238, 223, 150,\n]\n\n/**\n * Creates a _WithdrawFee_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category WithdrawFee\n * @category generated\n */\nexport function createWithdrawFeeInstruction(\n accounts: WithdrawFeeInstructionAccounts,\n args: WithdrawFeeInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = withdrawFeeStruct.serialize({\n instructionDiscriminator: withdrawFeeInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.receiver,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type WithdrawFeeParams = {\n worker: web3.PublicKey\n amount: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const withdrawFeeParamsBeet = new beet.BeetArgsStruct<WithdrawFeeParams>(\n [\n ['worker', beetSolana.publicKey],\n ['amount', beet.u64],\n ],\n 'WithdrawFeeParams'\n)\n","export * from './Acl'\nexport * from './ArbitrumPriceExt'\nexport * from './DeliverParams'\nexport * from './DstConfig'\nexport * from './ExecutorDstConfig'\nexport * from './InitConfigParams'\nexport * from './InitDefaultOptionsParams'\nexport * from './InitDefaultUlnConfigParams'\nexport * from './InitUlnParams'\nexport * from './LzTokenTreasury'\nexport * from './MessageLibQuoteParams'\nexport * from './MessageLibResetConfigParams'\nexport * from './MessageLibSendParams'\nexport * from './MessageLibSetConfigParams'\nexport * from './MessageLibSnapshotConfigParams'\nexport * from './MessagingFee'\nexport * from './MessagingReceipt'\nexport * from './OracleDstConfig'\nexport * from './Packet'\nexport * from './PacketForQuote'\nexport * from './Price'\nexport * from './PriceFeed'\nexport * from './PriceParams'\nexport * from './RegisterWorkerParams'\nexport * from './SetAdminParams'\nexport * from './SetAllowlistParams'\nexport * from './SetDefaultMultiplierBpsParams'\nexport * from './SetDefaultOptionsParams'\nexport * from './SetDefaultUlnConfigParams'\nexport * from './SetDenylistParams'\nexport * from './SetDstConfigParams'\nexport * from './SetPausedParams'\nexport * from './SetPriceParams'\nexport * from './SetQuorumParams'\nexport * from './SetTreasuryParams'\nexport * from './SignParams'\nexport * from './TransferAdminParams'\nexport * from './Treasury'\nexport * from './UlnConfig'\nexport * from './UlnEvent'\nexport * from './WithdrawFeeParams'\nexport * from './WorkerExtConfig'\nexport * from './WorkerId'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type MessagingFee = {\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingFeeBeet = new beet.BeetArgsStruct<MessagingFee>(\n [\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessagingFee'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { MessagingFee, messagingFeeBeet } from './MessagingFee'\nexport type MessagingReceipt = {\n guid: number[] /* size: 32 */\n nonce: beet.bignum\n fee: MessagingFee\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingReceiptBeet = new beet.BeetArgsStruct<MessagingReceipt>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['nonce', beet.u64],\n ['fee', messagingFeeBeet],\n ],\n 'MessagingReceipt'\n)\n","import {\n AddressLookupTableAccount,\n AddressLookupTableProgram,\n Blockhash,\n CloseLookupTableParams,\n Connection,\n DeactivateLookupTableParams,\n Finality,\n Keypair,\n NONCE_ACCOUNT_LENGTH,\n NonceAccount,\n PartiallyDecodedInstruction,\n PublicKey,\n SystemProgram,\n Transaction,\n TransactionInstruction,\n TransactionMessage,\n TransactionSignature,\n VersionedTransaction,\n} from '@solana/web3.js'\nimport * as base58 from 'bs58'\nimport invariant from 'tiny-invariant'\n\nimport { LogDiscriminator } from './endpoint'\nimport {\n EndpointEvent,\n endpointEventBeet,\n isEndpointEventComposedMessageDelivered,\n isEndpointEventComposedMessageReceived,\n isEndpointEventPacketDelivered,\n isEndpointEventPacketReceived,\n isEndpointEventPacketSent,\n} from './generated/endpoint'\n\nexport function loadKeypair(filepath: string): Keypair {\n return Keypair.fromSecretKey(\n Buffer.from(\n JSON.parse(\n require('fs').readFileSync(filepath, {\n encoding: 'utf-8',\n })\n )\n )\n )\n}\n\nexport function saveKeypair(keypair: Keypair, keypairPath: string): void {\n require('fs').writeFileSync(keypairPath, JSON.stringify(Array.from(keypair.secretKey)))\n}\n\nexport function loadAnchorKeypair(): Keypair {\n invariant(process.env.ANCHOR_WALLET, 'missing ANCHOR_WALLET env')\n return loadKeypair(process.env.ANCHOR_WALLET)\n}\n\nexport async function parseSentPacketByTxHash(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature | Awaited<ReturnType<typeof connection.getParsedTransaction>>,\n commitment?: Finality\n): Promise<EndpointEvent | null> {\n const events = await parseSignatureToEndpointEvent(connection, program, signature, commitment)\n if (!events) return null\n const tmp = events.filter(isEndpointEventPacketSent)\n if (tmp.length === 0) return null\n return tmp[0]\n}\n\nexport async function parseDeliveredPacketByTxHash(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature | Awaited<ReturnType<typeof connection.getParsedTransaction>>,\n commitment?: Finality\n): Promise<EndpointEvent | null> {\n const events = await parseSignatureToEndpointEvent(connection, program, signature, commitment)\n if (!events) return null\n const tmp = events.filter(isEndpointEventPacketDelivered)\n if (tmp.length === 0) return null\n return tmp[0]\n}\n\n// TODO: refactor\nexport async function parseReceivedPacketByTxHash(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature | Awaited<ReturnType<typeof connection.getParsedTransaction>>,\n commitment?: Finality\n): Promise<EndpointEvent | null> {\n const events = await parseSignatureToEndpointEvent(connection, program, signature, commitment)\n if (!events) return null\n const tmp = events.filter(isEndpointEventPacketReceived)\n if (tmp.length === 0) return null\n return tmp[0]\n}\n\nexport async function parseComposedMessageDeliveredByTxHash(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature,\n commitment?: Finality\n): Promise<EndpointEvent | null> {\n const events = await parseSignatureToEndpointEvent(connection, program, signature, commitment)\n if (!events) return null\n const tmp = events.filter(isEndpointEventComposedMessageDelivered)\n if (tmp.length === 0) return null\n return tmp[0]\n}\n\nexport async function parseComposedMessageReceivedByTxHash(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature,\n commitment?: Finality\n): Promise<EndpointEvent | null> {\n const events = await parseSignatureToEndpointEvent(connection, program, signature, commitment)\n if (!events) return null\n const tmp = events.filter(isEndpointEventComposedMessageReceived)\n if (tmp.length === 0) return null\n return tmp[0]\n}\n\nasync function parseSignatureToEndpointEvent(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature | Awaited<ReturnType<typeof connection.getParsedTransaction>>,\n commitment?: Finality\n): Promise<EndpointEvent[] | null> {\n const tx =\n typeof signature === 'string'\n ? await connection.getParsedTransaction(signature, {\n commitment: commitment ?? 'confirmed',\n maxSupportedTransactionVersion: 0,\n })\n : signature\n const events = new Array<EndpointEvent>()\n for (const instruction of tx?.meta?.innerInstructions || []) {\n for (const innerInstruction of instruction.instructions) {\n const inst = innerInstruction as PartiallyDecodedInstruction\n if (!inst.programId.equals(program)) {\n continue\n }\n const decoded = base58.decode(inst.data)\n const discriminator = Buffer.from(decoded.subarray(0, 8)).toString('hex')\n if (discriminator !== LogDiscriminator) {\n continue\n }\n const dataBuffer = Buffer.from(decoded.subarray(8, decoded.length))\n const beet = endpointEventBeet.toFixedFromData(dataBuffer, 0)\n events.push(beet.read(dataBuffer, 0))\n }\n }\n return events.length > 0 ? events : null\n}\n\nexport async function generateAddressLookupTable(\n connection: Connection,\n payer: PublicKey,\n authority: PublicKey,\n addresses: Array<PublicKey>\n): Promise<{ instructinos: Array<TransactionInstruction>; address: PublicKey }> {\n const slot = await connection.getSlot('finalized')\n const [createInstruction, lookupTableAddress] = AddressLookupTableProgram.createLookupTable({\n payer,\n authority,\n recentSlot: slot,\n })\n const extendInstruction = AddressLookupTableProgram.extendLookupTable({\n payer,\n authority,\n lookupTable: lookupTableAddress,\n addresses,\n })\n\n return {\n instructinos: [createInstruction, extendInstruction],\n address: lookupTableAddress,\n }\n}\n\n// To properly terminate the lookup table, it is advisable to initially invoke `deactivateLookupTable`,\n// pause for a duration of 500 blocks, and subsequently invoke `closeLookupTable`.\nexport function deactivateLookupTable(authority: PublicKey, lookupTable: PublicKey): TransactionInstruction {\n return AddressLookupTableProgram.deactivateLookupTable({\n authority,\n lookupTable,\n } as DeactivateLookupTableParams)\n}\n\n// same above\nexport function closeLookupTable(\n recipient: PublicKey,\n authority: PublicKey,\n lookupTable: PublicKey\n): TransactionInstruction {\n return AddressLookupTableProgram.closeLookupTable({\n authority,\n recipient,\n lookupTable,\n } as CloseLookupTableParams)\n}\n\nexport async function txWithAddressLookupTable(\n connection: Connection,\n payer: PublicKey,\n instructions: Array<TransactionInstruction>,\n tableAddr?: PublicKey,\n recentBlockhash?: Blockhash\n): Promise<VersionedTransaction> {\n recentBlockhash = recentBlockhash || (await connection.getLatestBlockhash()).blockhash\n if (!tableAddr) {\n return new VersionedTransaction(\n new TransactionMessage({\n instructions,\n payerKey: payer,\n recentBlockhash,\n }).compileToV0Message()\n )\n }\n const lookupTableAccount = await connection.getAddressLookupTable(tableAddr).then((res) => res.value)\n return new VersionedTransaction(\n new TransactionMessage({\n instructions,\n payerKey: payer,\n recentBlockhash,\n }).compileToV0Message([lookupTableAccount as AddressLookupTableAccount])\n )\n}\n\nexport async function createNonceAccountTX(\n connection: Connection,\n auth: PublicKey,\n lamportsForRent?: number\n): Promise<{ tx: Transaction; nonceAccount: Keypair }> {\n const nonceAccount = Keypair.generate()\n\n const lamports = lamportsForRent || (await connection.getMinimumBalanceForRentExemption(NONCE_ACCOUNT_LENGTH))\n\n const tx = new Transaction()\n tx.add(\n // create nonce account\n SystemProgram.createAccount({\n fromPubkey: auth,\n newAccountPubkey: nonceAccount.publicKey,\n lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: SystemProgram.programId,\n }),\n // init nonce account\n SystemProgram.nonceInitialize({\n noncePubkey: nonceAccount.publicKey, // nonce account pubkey\n authorizedPubkey: auth, // nonce account auth\n })\n )\n return { tx, nonceAccount }\n}\n\nexport async function txWithNonce(\n connection: Connection,\n noncePubkey: PublicKey,\n instructinos: Array<TransactionInstruction>,\n nonceInfo?: NonceAccount\n): Promise<Transaction | null> {\n const tx = new Transaction()\n\n if (!nonceInfo) {\n const accountInfo = await connection.getAccountInfo(noncePubkey)\n if (accountInfo) {\n nonceInfo = NonceAccount.fromAccountData(accountInfo.data)\n } else {\n return null\n }\n }\n\n tx.add(\n // nonce advance must be the first insturction\n SystemProgram.nonceAdvance({\n noncePubkey: noncePubkey,\n authorizedPubkey: nonceInfo.authorizedPubkey,\n })\n )\n tx.add(...instructinos)\n tx.recentBlockhash = nonceInfo.nonce\n return tx\n}\n","import { Environment } from '@layerzerolabs/lz-definitions'\n\nexport const idlTypes = [\n 'MessageLibQuoteParams',\n 'MessageLibSendParams',\n 'MessagingFee',\n 'MessagingReceipt',\n 'PacketForQuote',\n 'Packet',\n 'InitConfigParams',\n 'MessageLibSetConfigParams',\n 'MessageLibSnapshotConfigParams',\n 'MessageLibResetConfigParams',\n]\nexport const messageLibs = ['uln', 'simple_messagelib']\n\nexport const FAUCET_URL: { [env in Environment]: string } = {\n [Environment.MAINNET]: '',\n [Environment.TESTNET]: '',\n [Environment.DEVNET]: '',\n [Environment.LOCAL]: 'http://127.0.0.1:9900',\n}\n","import { ProcessEnvOptions, execSync } from 'child_process'\nimport fs from 'fs'\nimport path from 'path'\n\nimport { Keypair, PublicKey } from '@solana/web3.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { loadKeypair } from './utility'\n\nconst keypairCache: Record<string, Keypair> = {}\n\nexport type SupportedPrograms = 'endpoint' | 'simple_messagelib' | 'uln' | 'blocked_messagelib'\n\nexport function programKeypairPath(network: Network | 'default', program: SupportedPrograms): string {\n if (network === 'default') {\n return path.join(__dirname, '../deployments', 'default-keypair', `${program}-keypair.json`)\n }\n return path.join(__dirname, '../deployments', network, `${program}-keypair.json`)\n}\n\nexport function getProgramKeypair(network: Network | 'default', program: SupportedPrograms): Keypair {\n if (keypairCache[`program-${network}-${program}`]) {\n return keypairCache[`program-${network}-${program}`]\n }\n const keypairPath = programKeypairPath(network, program)\n if (!fs.existsSync(keypairPath)) {\n throw new Error(`keypair file not found: ${keypairPath}`)\n } else {\n const keypair = loadKeypair(keypairPath)\n keypairCache[`program-${network}-${program}`] = keypair\n return keypair\n }\n}\n\nexport function getEndpointProgramId(network: Network | 'default'): PublicKey {\n return getProgramKeypair(network, 'endpoint').publicKey\n}\n\nexport function getSimpleMessageLibProgramId(network: Network | 'default'): PublicKey {\n return getProgramKeypair(network, 'simple_messagelib').publicKey\n}\n\nexport function getULNProgramId(network: Network | 'default'): PublicKey {\n return getProgramKeypair(network, 'uln').publicKey\n}\n\nexport function getBlockedMessageLibProgramId(network: Network | 'default'): PublicKey {\n return getProgramKeypair(network, 'blocked_messagelib').publicKey\n}\n\nexport function getProgramPath(program: SupportedPrograms, targetDir = '../target/deploy') {\n const rootDir = path.dirname(require.resolve('@layerzerolabs/lz-solana-sdk-v2/package.json'))\n const programDir = path.join(rootDir, targetDir)\n return `${programDir}/${program}.so`\n}\n\n// this function is used to build the program with the random program id and deploy it to the local cluster.\nexport async function buildProgram(\n program: SupportedPrograms,\n program_id: Keypair,\n ops: ProcessEnvOptions,\n programDir?: string,\n targetDir?: string\n): Promise<string> {\n const rootDir = path.dirname(require.resolve('@layerzerolabs/lz-solana-sdk-v2/package.json'))\n if (!programDir) {\n programDir = path.join(rootDir, `../target/deploy`)\n }\n if (!targetDir) {\n targetDir = path.join(rootDir, `../target/deploy`)\n }\n ops.cwd = path.join(rootDir, '../')\n console.log(ops.cwd)\n ops.env = {\n ...ops.env,\n CARGO_TARGET_DIR: targetDir,\n }\n // create the program directory if not exist\n !fs.existsSync(programDir) && fs.mkdirSync(programDir, { recursive: true })\n\n console.debug(`building ${program} program. Address: ${program_id.publicKey.toBase58()}`)\n const cmd = `anchor build --arch sbf -p ${program} -- --sbf-out-dir ${programDir}`\n // const cmd = `cargo +sbf build --profile ${profile} --target sbf-solana-solana -p ${program.replace(/_/g, '-')}`\n console.log(`Running command: ${cmd}`)\n execSync(cmd, ops)\n console.debug(`building ${program} program done`)\n\n const program_id_path = path.join(programDir, `${program}-keypair.json`)\n // console.debug(`overide the original:${program_id_path} keypair`)\n fs.writeFileSync(program_id_path, JSON.stringify(Array.from(program_id.secretKey)))\n return `${programDir}/${program}.so`\n // fs.copyFileSync(`${programDir}/sbf-solana-solana/${profile}/${program}.so`, `${programDir}/${program}.so`)\n}\n\nexport function deploy(\n network: Network,\n program: SupportedPrograms,\n programDir: string,\n programIdDir: string,\n keypair: string,\n rpc: string\n): Buffer {\n const programIdKeypair = path.join(programIdDir, `${program}-keypair.json`)\n const programSo = path.join(programDir, `${program}.so`)\n const cmd = `solana program deploy --program-id ${programIdKeypair} ${programSo} -k ${keypair} -u ${rpc}`\n console.log(`Running command: ${cmd}`)\n const result = execSync(cmd)\n const deploymentsPath = path.join(__dirname, '../deployments', network)\n !fs.existsSync(deploymentsPath) && fs.mkdirSync(deploymentsPath, { recursive: true })\n // copy the keypair and so to deployments\n fs.copyFileSync(programIdKeypair, path.resolve(deploymentsPath, `${program}-keypair.json`))\n // fs.copyFileSync(programSo, path.resolve(deploymentsPath, `${program}.so`)) // don't need so file\n return result\n}\n","import { PublicKey } from '@solana/web3.js'\nexport * from './accounts'\nexport * from './instructions'\n\n/**\n * Program address\n *\n * @category constants\n * @category generated\n */\nexport const PROGRAM_ADDRESS = '2XrYqmhBMPJgDsb4SVbjV1PnJBprurd5bzRCkHwiFCJB'\n\n/**\n * Program public key\n *\n * @category constants\n * @category generated\n */\nexport const PROGRAM_ID = new PublicKey(PROGRAM_ADDRESS)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link MessageLib}\n * @category Accounts\n * @category generated\n */\nexport type MessageLibArgs = {\n bump: number\n}\n\nexport const messageLibDiscriminator = [141, 191, 244, 48, 52, 174, 199, 209]\n/**\n * Holds the data for the {@link MessageLib} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class MessageLib implements MessageLibArgs {\n private constructor(readonly bump: number) {}\n\n /**\n * Creates a {@link MessageLib} instance from the provided args.\n */\n static fromArgs(args: MessageLibArgs) {\n return new MessageLib(args.bump)\n }\n\n /**\n * Deserializes the {@link MessageLib} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [MessageLib, number] {\n return MessageLib.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link MessageLib} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<MessageLib> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find MessageLib account at ${address}`)\n }\n return MessageLib.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '2XrYqmhBMPJgDsb4SVbjV1PnJBprurd5bzRCkHwiFCJB'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, messageLibBeet)\n }\n\n /**\n * Deserializes the {@link MessageLib} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [MessageLib, number] {\n return messageLibBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link MessageLib} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return messageLibBeet.serialize({\n accountDiscriminator: messageLibDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link MessageLib}\n */\n static get byteSize() {\n return messageLibBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link MessageLib} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n MessageLib.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link MessageLib} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === MessageLib.byteSize\n }\n\n /**\n * Returns a readable version of {@link MessageLib} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const messageLibBeet = new beet.BeetStruct<\n MessageLib,\n MessageLibArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ],\n MessageLib.fromArgs,\n 'MessageLib'\n)\n","export * from './MessageLib'\n\nimport { MessageLib } from './MessageLib'\n\nexport const accountProviders = { MessageLib }\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\n\n/**\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport const initMessageLibStruct = new beet.BeetArgsStruct<{\n instructionDiscriminator: number[] /* size: 8 */\n}>(\n [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],\n 'InitMessageLibInstructionArgs'\n)\n/**\n * Accounts required by the _initMessageLib_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] messageLib\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport type InitMessageLibInstructionAccounts = {\n payer: web3.PublicKey\n messageLib: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initMessageLibInstructionDiscriminator = [\n 184, 93, 59, 206, 98, 238, 225, 54,\n]\n\n/**\n * Creates a _InitMessageLib_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport function createInitMessageLibInstruction(\n accounts: InitMessageLibInstructionAccounts,\n programId = new web3.PublicKey('2XrYqmhBMPJgDsb4SVbjV1PnJBprurd5bzRCkHwiFCJB')\n) {\n const [data] = initMessageLibStruct.serialize({\n instructionDiscriminator: initMessageLibInstructionDiscriminator,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","{\n \"version\": \"0.1.0\",\n \"name\": \"endpoint\",\n \"instructions\": [\n {\n \"name\": \"log\",\n \"accounts\": [\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"events\",\n \"type\": {\n \"defined\": \"EndpointEvent\"\n }\n }\n ]\n },\n {\n \"name\": \"initEndpoint\",\n \"docs\": [\n \"--------------------------- Admin Instructions ---------------------------\"\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"blockedMessageLibAuthority\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultMessageLibAuthority\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitEndpointParams\"\n }\n }\n ]\n },\n {\n \"name\": \"transferAdmin\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"TransferAdminParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setLayerzeroToken\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetLayerzeroTokenParams\"\n }\n }\n ]\n },\n {\n \"name\": \"registerLibrary\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLib\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": true,\n \"isSigner\": false,\n \"docs\": [\n \"Each message lib has one independent PDA, used as a signer for the authentication of the\",\n \"endpoint when the endpoint calls the message lib.\"\n ]\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initDefaultSendLibrary\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultSendLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitDefaultSendLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setDefaultSendLibrary\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultSendLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetDefaultSendLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"initDefaultReceiveLibrary\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultReceiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitDefaultReceiveLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setDefaultReceiveLibrary\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultReceiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetDefaultReceiveLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setDefaultReceiveLibraryTimeout\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultReceiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetDefaultReceiveLibraryTimeoutParams\"\n }\n }\n ]\n },\n {\n \"name\": \"initNonce\",\n \"docs\": [\n \"--------------------------- OApp Instructions ---------------------------\"\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"nonce\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pendingNonce\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitNonceParams\"\n }\n }\n ]\n },\n {\n \"name\": \"initSendLibrary\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"sendLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitSendLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setSendLibrary\",\n \"accounts\": [\n {\n \"name\": \"sender\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"sendLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetSendLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"initReceiveLibrary\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"receiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitReceiveLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setReceiveLibrary\",\n \"accounts\": [\n {\n \"name\": \"receiver\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"receiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetReceiveLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setReceiveLibraryTimeout\",\n \"accounts\": [\n {\n \"name\": \"receiver\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"receiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetReceiveLibraryTimeoutParams\"\n }\n }\n ]\n },\n {\n \"name\": \"initConfig\",\n \"accounts\": [\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLib\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitConfigParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setConfig\",\n \"accounts\": [\n {\n \"name\": \"oapp\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLib\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetConfigParams\"\n }\n }\n ]\n },\n {\n \"name\": \"snapshotConfig\",\n \"accounts\": [\n {\n \"name\": \"oapp\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLib\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SnapshotConfigParams\"\n }\n }\n ]\n },\n {\n \"name\": \"resetConfig\",\n \"accounts\": [\n {\n \"name\": \"oapp\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLib\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"ResetConfigParams\"\n }\n }\n ]\n },\n {\n \"name\": \"quote\",\n \"accounts\": [\n {\n \"name\": \"sendLibrary\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"it should be the same as the custom one [`send_library_config.message_lib`],\",\n \"otherwise it should be the default one [`default_send_library_config.message_lib`].\"\n ]\n },\n {\n \"name\": \"sendLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultSendLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"sendLibraryAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"QuoteParams\"\n }\n }\n ],\n \"returns\": {\n \"defined\": \"MessagingFee\"\n }\n },\n {\n \"name\": \"send\",\n \"accounts\": [\n {\n \"name\": \"sender\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"sendLibrary\",\n \"isMut\": true,\n \"isSigner\": false,\n \"docs\": [\n \"should meet the requirement: If the sender sets a custom send library,\",\n \"it should be the same as the custom one [`send_library_config.message_lib`],\",\n \"otherwise it should be the default one [`default_send_library_config.message_lib`].\"\n ]\n },\n {\n \"name\": \"sendLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultSendLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"sendLibraryAuthority\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"As a signer to the send library when the endpoint calls the send library.\"\n ]\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpointProgram\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"for logging\"\n ]\n },\n {\n \"name\": \"nonce\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SendParams\"\n }\n }\n ],\n \"returns\": {\n \"defined\": \"MessagingReceipt\"\n }\n },\n {\n \"name\": \"deliver\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"receiveLibrary\",\n \"isMut\": false,\n \"isSigner\": true,\n \"docs\": [\n \"The PDA of the receive library.\"\n ]\n },\n {\n \"name\": \"receiveLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultReceiveLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"nonce\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pendingNonce\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"payloadHash\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpointProgram\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"for logging\"\n ]\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"DeliverParams\"\n }\n }\n ]\n },\n {\n \"name\": \"skip\",\n \"accounts\": [\n {\n \"name\": \"receiver\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"nonce\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pendingNonce\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SkipParams\"\n }\n }\n ]\n },\n {\n \"name\": \"clear\",\n \"accounts\": [\n {\n \"name\": \"receiver\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"nonce\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"payloadHash\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpointProgram\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"for logging\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"ClearParams\"\n }\n }\n ],\n \"returns\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"deliverComposedMessage\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"receiver\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"composedMessage\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpointProgram\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"for logging\"\n ]\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"DeliverComposedMessageParams\"\n }\n }\n ]\n },\n {\n \"name\": \"clearComposedMessage\",\n \"accounts\": [\n {\n \"name\": \"composer\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"composedMessage\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpointProgram\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"for logging\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"ClearComposedMessageParams\"\n }\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"EndpointSettings\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"blockedMessageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"lzToken\",\n \"type\": {\n \"option\": \"publicKey\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibAuthority\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"SendLibraryConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ReceiveLibraryConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"timeout\",\n \"type\": {\n \"option\": {\n \"defined\": \"ReceiveLibraryTimeout\"\n }\n }\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"Nonce\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"inboundNonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"outboundNonce\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PendingInboundNonce\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"nonces\",\n \"type\": {\n \"vec\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"MessageState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"received\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n }\n ],\n \"types\": [\n {\n \"name\": \"InitDefaultReceiveLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"InitDefaultSendLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"InitEndpointParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"blockedMessageLib\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"SetDefaultReceiveLibraryTimeoutParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"lib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"SetDefaultReceiveLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"gracePeriod\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SetDefaultSendLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"SetLayerzeroTokenParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"lzToken\",\n \"type\": {\n \"option\": \"publicKey\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"TransferAdminParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"DeliverParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"srcEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payloadHash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ClearComposedMessageParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"ClearParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"srcEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"DeliverComposedMessageParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"composer\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"InitConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"oapp\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"InitNonceParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"localOapp\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"remoteEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"remoteOapp\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"InitReceiveLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"InitSendLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"sender\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"QuoteParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"sender\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"dstEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"payInLzToken\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"options\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibQuoteParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"packet\",\n \"type\": {\n \"defined\": \"PacketForQuote\"\n }\n },\n {\n \"name\": \"payInLzToken\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"options\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"PacketForQuote\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"sender\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"dstEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"ResetConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibResetConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"oapp\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"SendParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"dstEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"receiver\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"options\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"nativeFee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lzTokenFee\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibSendParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"packet\",\n \"type\": {\n \"defined\": \"Packet\"\n }\n },\n {\n \"name\": \"options\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"nativeFee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lzTokenFee\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Packet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"srcEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"dstEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"receiver\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"MessagingFee\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"nativeFee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lzTokenFee\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MessagingReceipt\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fee\",\n \"type\": {\n \"defined\": \"MessagingFee\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"SetConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"configType\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"config\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibSetConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"oapp\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"configType\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"config\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"SetReceiveLibraryTimeoutParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"lib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"SetReceiveLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"gracePeriod\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SetSendLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"SkipParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"srcEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SnapshotConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibSnapshotConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"oapp\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"ReceiveLibraryTimeout\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"EndpointEvent\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"PacketSent\",\n \"fields\": [\n {\n \"name\": \"encoded_packet\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"options\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"send_library\",\n \"type\": \"publicKey\"\n }\n ]\n },\n {\n \"name\": \"PacketDelivered\",\n \"fields\": [\n {\n \"name\": \"src_eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payload_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"receive_library\",\n \"type\": \"publicKey\"\n }\n ]\n },\n {\n \"name\": \"PacketReceived\",\n \"fields\": [\n {\n \"name\": \"src_eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payload_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"ComposedMessageDelivered\",\n \"fields\": [\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"composer\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"ComposedMessageReceived\",\n \"fields\": [\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"composer\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n ]\n }\n }\n ],\n \"errors\": [\n {\n \"code\": 71536,\n \"name\": \"InvalidArgument\"\n },\n {\n \"code\": 71537,\n \"name\": \"OnlyRegistered\"\n },\n {\n \"code\": 71539,\n \"name\": \"InvalidAmount\"\n },\n {\n \"code\": 71540,\n \"name\": \"InvalidNonce\"\n },\n {\n \"code\": 71541,\n \"name\": \"InsufficientFee\"\n },\n {\n \"code\": 71542,\n \"name\": \"Unsorted\"\n },\n {\n \"code\": 71544,\n \"name\": \"InvalidOptionsFormatType\"\n },\n {\n \"code\": 71545,\n \"name\": \"InvalidSize\"\n },\n {\n \"code\": 137072,\n \"name\": \"OutOfRange\"\n },\n {\n \"code\": 202608,\n \"name\": \"InvalidState\"\n },\n {\n \"code\": 333680,\n \"name\": \"PermissionDenied\"\n },\n {\n \"code\": 399216,\n \"name\": \"NotFound\"\n },\n {\n \"code\": 792432,\n \"name\": \"NotImplemented\"\n },\n {\n \"code\": 857968,\n \"name\": \"Unavailable\"\n },\n {\n \"code\": 857971,\n \"name\": \"LzTokenUnavailable\"\n }\n ],\n \"metadata\": {\n \"address\": \"76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6\"\n }\n}","export * from './pda-deriver'\nexport * as EndpointProgram from './endpoint'\nexport * as SimpleMessageLibProgram from './simple-message-lib'\nexport * as UlnProgram from './uln'\nexport * from './oapp-base'\nexport * from './utility'\nexport * from './config'\nexport * from './deployment'\nexport * as BlockedMessageLibProgram from './generated/blocked_messagelib'\nimport * as endpoint from '../idl/endpoint.json'\n\nexport const IdlTypes = {\n endpoint: endpoint.types,\n}\n"]}
1
+ {"version":3,"sources":["../src/pda-deriver.ts","../src/oapp-base.ts","../src/endpoint.ts","../src/generated/endpoint/index.ts","../src/generated/endpoint/accounts/index.ts","../src/generated/endpoint/accounts/EndpointSettings.ts","../src/generated/endpoint/accounts/MessageLibAuthority.ts","../src/generated/endpoint/accounts/MessageState.ts","../src/generated/endpoint/accounts/Nonce.ts","../src/generated/endpoint/accounts/PendingInboundNonce.ts","../src/generated/endpoint/accounts/ReceiveLibraryConfig.ts","../src/generated/endpoint/types/ReceiveLibraryTimeout.ts","../src/generated/endpoint/accounts/SendLibraryConfig.ts","../src/generated/endpoint/errors/index.ts","../src/generated/endpoint/instructions/index.ts","../src/generated/endpoint/instructions/clear.ts","../src/generated/endpoint/types/ClearParams.ts","../src/generated/endpoint/instructions/clearComposedMessage.ts","../src/generated/endpoint/types/ClearComposedMessageParams.ts","../src/generated/endpoint/instructions/deliver.ts","../src/generated/endpoint/types/DeliverParams.ts","../src/generated/endpoint/instructions/deliverComposedMessage.ts","../src/generated/endpoint/types/DeliverComposedMessageParams.ts","../src/generated/endpoint/instructions/initConfig.ts","../src/generated/endpoint/types/InitConfigParams.ts","../src/generated/endpoint/instructions/initDefaultReceiveLibrary.ts","../src/generated/endpoint/types/InitDefaultReceiveLibraryParams.ts","../src/generated/endpoint/instructions/initDefaultSendLibrary.ts","../src/generated/endpoint/types/InitDefaultSendLibraryParams.ts","../src/generated/endpoint/instructions/initEndpoint.ts","../src/generated/endpoint/types/InitEndpointParams.ts","../src/generated/endpoint/instructions/initNonce.ts","../src/generated/endpoint/types/InitNonceParams.ts","../src/generated/endpoint/instructions/initReceiveLibrary.ts","../src/generated/endpoint/types/InitReceiveLibraryParams.ts","../src/generated/endpoint/instructions/initSendLibrary.ts","../src/generated/endpoint/types/InitSendLibraryParams.ts","../src/generated/endpoint/instructions/log.ts","../src/generated/endpoint/types/EndpointEvent.ts","../src/generated/endpoint/instructions/quote.ts","../src/generated/endpoint/types/QuoteParams.ts","../src/generated/endpoint/instructions/registerLibrary.ts","../src/generated/endpoint/instructions/resetConfig.ts","../src/generated/endpoint/types/ResetConfigParams.ts","../src/generated/endpoint/instructions/send.ts","../src/generated/endpoint/types/SendParams.ts","../src/generated/endpoint/instructions/setConfig.ts","../src/generated/endpoint/types/SetConfigParams.ts","../src/generated/endpoint/instructions/setDefaultReceiveLibrary.ts","../src/generated/endpoint/types/SetDefaultReceiveLibraryParams.ts","../src/generated/endpoint/instructions/setDefaultReceiveLibraryTimeout.ts","../src/generated/endpoint/types/SetDefaultReceiveLibraryTimeoutParams.ts","../src/generated/endpoint/instructions/setDefaultSendLibrary.ts","../src/generated/endpoint/types/SetDefaultSendLibraryParams.ts","../src/generated/endpoint/instructions/setLayerzeroToken.ts","../src/generated/endpoint/types/SetLayerzeroTokenParams.ts","../src/generated/endpoint/instructions/setReceiveLibrary.ts","../src/generated/endpoint/types/SetReceiveLibraryParams.ts","../src/generated/endpoint/instructions/setReceiveLibraryTimeout.ts","../src/generated/endpoint/types/SetReceiveLibraryTimeoutParams.ts","../src/generated/endpoint/instructions/setSendLibrary.ts","../src/generated/endpoint/types/SetSendLibraryParams.ts","../src/generated/endpoint/instructions/skip.ts","../src/generated/endpoint/types/SkipParams.ts","../src/generated/endpoint/instructions/snapshotConfig.ts","../src/generated/endpoint/types/SnapshotConfigParams.ts","../src/generated/endpoint/instructions/transferAdmin.ts","../src/generated/endpoint/types/TransferAdminParams.ts","../src/generated/endpoint/types/index.ts","../src/generated/endpoint/types/MessageLibQuoteParams.ts","../src/generated/endpoint/types/PacketForQuote.ts","../src/generated/endpoint/types/MessageLibResetConfigParams.ts","../src/generated/endpoint/types/MessageLibSendParams.ts","../src/generated/endpoint/types/Packet.ts","../src/generated/endpoint/types/MessageLibSetConfigParams.ts","../src/generated/endpoint/types/MessageLibSnapshotConfigParams.ts","../src/generated/endpoint/types/MessagingFee.ts","../src/generated/endpoint/types/MessagingReceipt.ts","../src/simple-message-lib.ts","../src/generated/simple_messagelib/accounts/index.ts","../src/generated/simple_messagelib/accounts/MessageLib.ts","../src/generated/simple_messagelib/instructions/index.ts","../src/generated/simple_messagelib/instructions/initMessageLib.ts","../src/generated/simple_messagelib/types/InitMessageLibParams.ts","../src/generated/simple_messagelib/instructions/quote.ts","../src/generated/simple_messagelib/types/MessageLibQuoteParams.ts","../src/generated/simple_messagelib/types/PacketForQuote.ts","../src/generated/simple_messagelib/instructions/send.ts","../src/generated/simple_messagelib/types/MessageLibSendParams.ts","../src/generated/simple_messagelib/types/Packet.ts","../src/generated/simple_messagelib/instructions/setFee.ts","../src/generated/simple_messagelib/types/SetFeeParams.ts","../src/generated/simple_messagelib/instructions/setWlCaller.ts","../src/generated/simple_messagelib/types/SetWlCallerParams.ts","../src/generated/simple_messagelib/instructions/transferAdmin.ts","../src/generated/simple_messagelib/types/TransferAdminParams.ts","../src/generated/simple_messagelib/instructions/validatePacket.ts","../src/generated/simple_messagelib/types/ValidatePacketParams.ts","../src/generated/simple_messagelib/types/index.ts","../src/generated/simple_messagelib/types/InitConfigParams.ts","../src/generated/simple_messagelib/types/MessageLibResetConfigParams.ts","../src/generated/simple_messagelib/types/MessageLibSetConfigParams.ts","../src/generated/simple_messagelib/types/MessageLibSnapshotConfigParams.ts","../src/generated/simple_messagelib/types/MessagingFee.ts","../src/generated/simple_messagelib/types/MessagingReceipt.ts","../src/uln.ts","../src/generated/uln/accounts/index.ts","../src/generated/uln/accounts/Confirmations.ts","../src/generated/uln/accounts/DefaultOptions.ts","../src/generated/uln/accounts/UlnConfigStore.ts","../src/generated/uln/accounts/UlnSettings.ts","../src/generated/uln/types/Treasury.ts","../src/generated/uln/types/LzTokenTreasury.ts","../src/generated/uln/accounts/WorkerConfig.ts","../src/generated/uln/types/WorkerId.ts","../src/generated/uln/types/Acl.ts","../src/generated/uln/types/PriceFeed.ts","../src/generated/uln/types/Price.ts","../src/generated/uln/types/ArbitrumPriceExt.ts","../src/generated/uln/types/WorkerExtConfig.ts","../src/generated/uln/types/ExecutorDstConfig.ts","../src/generated/uln/types/OracleDstConfig.ts","../src/generated/uln/instructions/index.ts","../src/generated/uln/instructions/deliver.ts","../src/generated/uln/types/DeliverParams.ts","../src/generated/uln/instructions/initConfig.ts","../src/generated/uln/types/InitConfigParams.ts","../src/generated/uln/instructions/initDefaultOptions.ts","../src/generated/uln/types/InitDefaultOptionsParams.ts","../src/generated/uln/instructions/initDefaultUlnConfig.ts","../src/generated/uln/types/InitDefaultUlnConfigParams.ts","../src/generated/uln/types/UlnConfig.ts","../src/generated/uln/instructions/initUln.ts","../src/generated/uln/types/InitUlnParams.ts","../src/generated/uln/instructions/log.ts","../src/generated/uln/types/UlnEvent.ts","../src/generated/uln/instructions/quote.ts","../src/generated/uln/types/MessageLibQuoteParams.ts","../src/generated/uln/types/PacketForQuote.ts","../src/generated/uln/instructions/registerWorker.ts","../src/generated/uln/types/RegisterWorkerParams.ts","../src/generated/uln/instructions/resetConfig.ts","../src/generated/uln/types/MessageLibResetConfigParams.ts","../src/generated/uln/instructions/send.ts","../src/generated/uln/types/MessageLibSendParams.ts","../src/generated/uln/types/Packet.ts","../src/generated/uln/instructions/sendWithLzToken.ts","../src/generated/uln/instructions/setAdmin.ts","../src/generated/uln/types/SetAdminParams.ts","../src/generated/uln/instructions/setAllowlist.ts","../src/generated/uln/types/SetAllowlistParams.ts","../src/generated/uln/instructions/setConfig.ts","../src/generated/uln/types/MessageLibSetConfigParams.ts","../src/generated/uln/instructions/setDefaultMultiplierBps.ts","../src/generated/uln/types/SetDefaultMultiplierBpsParams.ts","../src/generated/uln/instructions/setDefaultOptions.ts","../src/generated/uln/types/SetDefaultOptionsParams.ts","../src/generated/uln/instructions/setDefaultUlnConfig.ts","../src/generated/uln/types/SetDefaultUlnConfigParams.ts","../src/generated/uln/instructions/setDenylist.ts","../src/generated/uln/types/SetDenylistParams.ts","../src/generated/uln/instructions/setDstConfig.ts","../src/generated/uln/types/SetDstConfigParams.ts","../src/generated/uln/types/DstConfig.ts","../src/generated/uln/instructions/setPaused.ts","../src/generated/uln/types/SetPausedParams.ts","../src/generated/uln/instructions/setPrice.ts","../src/generated/uln/types/SetPriceParams.ts","../src/generated/uln/types/PriceParams.ts","../src/generated/uln/instructions/setQuorum.ts","../src/generated/uln/types/SetQuorumParams.ts","../src/generated/uln/instructions/setTreasury.ts","../src/generated/uln/types/SetTreasuryParams.ts","../src/generated/uln/instructions/sign.ts","../src/generated/uln/types/SignParams.ts","../src/generated/uln/instructions/snapshotConfig.ts","../src/generated/uln/types/MessageLibSnapshotConfigParams.ts","../src/generated/uln/instructions/transferAdmin.ts","../src/generated/uln/types/TransferAdminParams.ts","../src/generated/uln/instructions/withdrawFee.ts","../src/generated/uln/types/WithdrawFeeParams.ts","../src/generated/uln/types/index.ts","../src/generated/uln/types/MessagingFee.ts","../src/generated/uln/types/MessagingReceipt.ts","../src/utility.ts","../src/config.ts","../src/deployment.ts","../src/generated/blocked_messagelib/index.ts","../src/generated/blocked_messagelib/accounts/MessageLib.ts","../src/generated/blocked_messagelib/accounts/index.ts","../src/generated/blocked_messagelib/instructions/initMessageLib.ts","../idl/endpoint.json","../src/index.ts"],"names":["BN","PublicKey","web3","BeetArgsStruct","FixableBeetArgsStruct","array","bool","bytes","u32","u64","u8","uniformFixedSizeArray","beetSolana","TransactionInstruction","TransactionMessage","VersionedTransaction","beet","oappIDPDA","messageLibInfo","timeout","MessageType","accounts_exports","instructions_exports","types_exports","PacketV1Codec","accountProviders","createQuoteInstruction","createSendInstruction","createTransferAdminInstruction","quoteInstructionDiscriminator","quoteStruct","sendInstructionDiscriminator","sendStruct","transferAdminInstructionDiscriminator","transferAdminStruct","packetForQuoteBeet","messageLibQuoteParamsBeet","packetBeet","messageLibSendParamsBeet","transferAdminParamsBeet","initConfigParamsBeet","messageLibResetConfigParamsBeet","messageLibSetConfigParamsBeet","messageLibSnapshotConfigParamsBeet","messagingFeeBeet","messagingReceiptBeet","TOKEN_PROGRAM_ID","WorkerId","createDeliverInstruction","createInitConfigInstruction","createLogInstruction","createResetConfigInstruction","createSetConfigInstruction","createSnapshotConfigInstruction","deliverInstructionDiscriminator","deliverStruct","initConfigInstructionDiscriminator","initConfigStruct","logInstructionDiscriminator","logStruct","resetConfigInstructionDiscriminator","resetConfigStruct","setConfigInstructionDiscriminator","setConfigStruct","snapshotConfigInstructionDiscriminator","snapshotConfigStruct","deliverParamsBeet","SetConfigType","SystemProgram","MessageLib","PROGRAM_ADDRESS","PROGRAM_ID","createInitMessageLibInstruction","initMessageLibInstructionDiscriminator","initMessageLibStruct","messageLibBeet","messageLibDiscriminator"],"mappings":"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","sourcesContent":["import { BN } from '@coral-xyz/anchor'\nimport { PublicKey } from '@solana/web3.js'\n\nimport { oappIDPDA } from './oapp-base'\n\nexport const ENDPOINT_SEED = 'Endpoint'\nexport const MESSAGE_LIB_SEED = 'MessageLib'\nexport const SEND_MESSAGE_LIB_SEED = 'SendMessageLib'\nexport const RECEIVE_MESSAGE_LIB_SEED = 'ReceiveMessageLib'\nexport const NONCE_SEED = 'Nonce'\nexport const PENDING_NONCE_SEED = 'PendingNonce'\nexport const PAYLOAD_HASH_SEED = 'PayloadHash'\nexport const COMPOSED_MESSAGE_HASH_SEED = 'ComposedMessageHash'\n\nexport const COUNT_SEED = 'Count'\nexport const REMOTE_SEED = 'Remote'\nexport const LZ_RECEIVE_TYPES_SEED = 'LzReceiveTypes'\nexport const LZ_COMPOSE_TYPES_SEED = 'LzComposeTypes'\n\nexport const ULN_SEED = 'MessageLib'\nexport const ULN_CONFIG_SEED = 'UlnConfig'\nexport const OPTIONS_SEED = 'Options'\nexport const CONFIRMATIONS_SEED = 'Confirmations'\nexport const WORKER_SEED = 'Worker'\n\n/**\n * derive address for endpoint program\n */\nexport class EndpointPDADeriver {\n program: PublicKey\n\n constructor(program: PublicKey) {\n this.program = program\n }\n\n setting(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(ENDPOINT_SEED, 'utf8')], this.program)\n }\n\n defaultSendLibrary(dstEndpointId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEND_MESSAGE_LIB_SEED, 'utf8'),\n // U32 to Uint8Array([0,0,0,0])\n new BN(dstEndpointId).toArrayLike(Buffer, 'be', 4),\n ],\n this.program\n )\n }\n\n sendLibrary(sender: PublicKey, dstEndpointId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEND_MESSAGE_LIB_SEED, 'utf8'),\n sender.toBytes(),\n // U32 to Uint8Array([0,0,0,0])\n new BN(dstEndpointId).toArrayLike(Buffer, 'be', 4),\n ],\n this.program\n )\n }\n\n /**\n * @param messageLibrary PDA(derive by message lib program)\n */\n messageLibraryAuthority(messageLibrary: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, 'utf8'), messageLibrary.toBytes()],\n this.program\n )\n }\n\n defaultReceiveLibrary(srcEndpointId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(RECEIVE_MESSAGE_LIB_SEED, 'utf8'),\n // U32 to Uint8Array([0,0,0,0])\n new BN(srcEndpointId).toArrayLike(Buffer, 'be', 4),\n ],\n this.program\n )\n }\n\n receiveLibrary(receiver: PublicKey, srcEndpointId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(RECEIVE_MESSAGE_LIB_SEED, 'utf8'),\n receiver.toBytes(),\n // U32 to Uint8Array([0,0,0,0])\n new BN(srcEndpointId).toArrayLike(Buffer, 'be', 4),\n ],\n this.program\n )\n }\n\n receiveLibraryTimeout(dstEndpointId: number): [PublicKey, number] {\n // todo: @zzz find the address of receive library timeout config\n // if it is default config, then get the address of default timeout config\n // otherwise, get the address of the custom one\n return [this.program, 0]\n }\n\n defaultMessageLib(): [PublicKey, number] {\n return this.messageLibraryAuthority(PublicKey.default)\n }\n\n blockMessageLib(blockMsgLib: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, 'utf8'), blockMsgLib.toBytes()],\n this.program\n )\n }\n\n /**\n * @param remoteOapp [u8; 32] remote oapp address\n */\n nonce(localOapp: PublicKey, remoteChainId: number, remoteOapp: Uint8Array): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(NONCE_SEED, 'utf8'),\n localOapp.toBytes(),\n // U32 to Uint8Array([0,0,0,0])\n new BN(remoteChainId).toArrayLike(Buffer, 'be', 4),\n remoteOapp,\n ],\n this.program\n )\n }\n\n pendingNonce(receiver: PublicKey, srcEid: number, sender: Uint8Array): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(PENDING_NONCE_SEED, 'utf8'),\n receiver.toBytes(),\n // U32 to Uint8Array([0,0,0,0])\n new BN(srcEid).toArrayLike(Buffer, 'be', 4),\n sender,\n ],\n this.program\n )\n }\n\n /***\n * @param receiver\n * @param srcEid\n * @param sender\n * @param nonce\n * @param payloadHash\n * @srcChainId u32 to Uint8Array([0,0,0,0])\n * @sender [u8; 32] sender Address\n * @nonce u64 to Uint8Array([0,0,0,0,0,0,0,0])\n * @payloadHash [u8; 32]\n */\n payloadHash(\n receiver: PublicKey,\n srcEid: number,\n sender: Uint8Array,\n nonce: number,\n payloadHash: Uint8Array\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(PAYLOAD_HASH_SEED, 'utf8'),\n receiver.toBytes(),\n new BN(srcEid).toArrayLike(Buffer, 'be', 4),\n sender,\n new BN(nonce).toArrayLike(Buffer, 'be', 8),\n payloadHash,\n ],\n this.program\n )\n }\n\n composedMessage(\n receiver: PublicKey,\n guid: Uint8Array,\n composer: PublicKey,\n messageHash: Uint8Array\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(COMPOSED_MESSAGE_HASH_SEED, 'utf8'),\n receiver.toBytes(),\n guid,\n composer.toBytes(),\n messageHash,\n ],\n this.program\n )\n }\n}\n\n/***\n * derive address by message lib program\n */\nexport class MessageLibPDADeriver {\n program: PublicKey\n\n constructor(program: PublicKey) {\n this.program = program\n }\n\n messageLib(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(MESSAGE_LIB_SEED, 'utf8')], this.program)\n }\n}\n\nexport class UlnPDADeriver extends MessageLibPDADeriver {\n constructor(program: PublicKey) {\n super(program)\n }\n\n setting(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(ULN_SEED, 'utf8')], this.program)\n }\n\n config(eid: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(ULN_CONFIG_SEED, 'utf8'), new BN(eid).toArrayLike(Buffer, 'be', 4)],\n this.program\n )\n }\n\n options(eit: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(OPTIONS_SEED, 'utf8'), new BN(eit).toArrayLike(Buffer, 'be', 4)],\n this.program\n )\n }\n\n oappConfig(oappID: PublicKey, eid: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(ULN_CONFIG_SEED, 'utf8'), new BN(eid).toArrayLike(Buffer, 'be', 4), oappID.toBuffer()],\n this.program\n )\n }\n\n workerConfig(worker: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(WORKER_SEED, 'utf8'), worker.toBuffer()], this.program)\n }\n\n confirmations(headerHash: Uint8Array, payloadHash: Uint8Array, oracle: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(CONFIRMATIONS_SEED, 'utf8'), headerHash, payloadHash, oracle.toBytes()],\n this.program\n )\n }\n}\n\n/**\n * derive address by base oapp program\n */\nexport class OAppBasePDADeriver {\n program: PublicKey\n\n constructor(program: PublicKey) {\n this.program = program\n }\n\n remote(dstChainId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(REMOTE_SEED), new BN(dstChainId).toArrayLike(Buffer, 'be', 4)],\n this.program\n )\n }\n\n lzReceiveTypesAccounts(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_RECEIVE_TYPES_SEED, 'utf8')], this.program)\n }\n\n lzComposeTypesAccounts(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_COMPOSE_TYPES_SEED, 'utf8')], this.program)\n }\n}\n\n/**\n * derive address by omnicounter program\n */\nexport class OmniCounterPDADeriver extends OAppBasePDADeriver {\n constructor(\n program: PublicKey,\n public counterId: number\n ) {\n super(program)\n }\n\n count(): [PublicKey, number] {\n // return PublicKey.findProgramAddressSync([Buffer.from(COUNT_SEED, 'utf8')], this.program)\n return oappIDPDA(this.program, COUNT_SEED, this.counterId)\n }\n\n remote(dstChainId: number): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(REMOTE_SEED), this.count()[0].toBytes(), new BN(dstChainId).toArrayLike(Buffer, 'be', 4)],\n this.program\n )\n }\n\n lzReceiveTypesAccounts(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(LZ_RECEIVE_TYPES_SEED, 'utf8'), this.count()[0].toBytes()],\n this.program\n )\n }\n\n lzComposeTypesAccounts(): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(LZ_COMPOSE_TYPES_SEED, 'utf8'), this.count()[0].toBytes()],\n this.program\n )\n }\n}\n","import { BN, web3 } from '@coral-xyz/anchor'\nimport {\n BeetArgsStruct,\n FixableBeetArgsStruct,\n array,\n bignum,\n bool,\n bytes,\n u32,\n u64,\n u8,\n uniformFixedSizeArray,\n} from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport {\n AccountInfo,\n AccountMeta,\n Connection,\n PublicKey,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n} from '@solana/web3.js'\nimport { sha256 } from 'ethers/lib/utils'\n\nimport * as EndpointProgram from './endpoint'\nimport {\n COUNT_SEED,\n EndpointPDADeriver,\n LZ_COMPOSE_TYPES_SEED,\n LZ_RECEIVE_TYPES_SEED,\n MessageLibPDADeriver,\n OAppBasePDADeriver,\n} from './pda-deriver'\n\n// TODO - replace default seed to a convention ID Seed\nexport function oappIDPDA(program: PublicKey, seed = COUNT_SEED, id?: number): [PublicKey, number] {\n if (id != undefined) {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(seed, 'utf8'), new BN(id).toArrayLike(Buffer, 'be', 1)],\n program\n )\n } else {\n return PublicKey.findProgramAddressSync([Buffer.from(seed, 'utf8')], program)\n }\n}\n\nexport function deriveLzReceiveTypesAccountsPDA(program: PublicKey, oappId?: PublicKey): [PublicKey, number] {\n if (oappId != undefined) {\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_RECEIVE_TYPES_SEED, 'utf8'), oappId.toBytes()], program)\n }\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_RECEIVE_TYPES_SEED, 'utf8')], program)\n}\n\nexport function deriveLzComposeTypesAccountsPDA(program: PublicKey, oappId?: PublicKey): [PublicKey, number] {\n if (oappId != undefined) {\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_COMPOSE_TYPES_SEED, 'utf8'), oappId.toBytes()], program)\n }\n return PublicKey.findProgramAddressSync([Buffer.from(LZ_COMPOSE_TYPES_SEED, 'utf8')], program)\n}\n\nconst AddressType = uniformFixedSizeArray(u8, 32)\n\nexport const MSG_TYPE_OFFSET = 0\n\nexport enum MessageType {\n VANILLA = 1,\n COMPOSED_TYPE = 2,\n}\n\nexport type LzReceiveParams = {\n srcEid: number\n sender: number[] /* size: 32 */\n nonce: bignum\n guid: number[] /* size: 32 */\n message: Uint8Array\n extraData: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const lzReceiveParamsBeet = new FixableBeetArgsStruct<LzReceiveParams>(\n [\n ['srcEid', u32],\n ['sender', uniformFixedSizeArray(u8, 32)],\n ['nonce', u64],\n ['guid', uniformFixedSizeArray(u8, 32)],\n ['message', bytes],\n ['extraData', bytes],\n ],\n 'LzReceiveParams'\n)\n\nexport type LzComposeParams = {\n receiver: PublicKey\n guid: number[] /* size: 32 */\n message: Uint8Array\n extraData: Uint8Array\n}\n\nexport const LzComposeParamsBeet = new FixableBeetArgsStruct<LzComposeParams>(\n [\n ['receiver', beetSolana.publicKey],\n ['guid', uniformFixedSizeArray(u8, 32)],\n ['message', bytes],\n ['extraData', bytes],\n ],\n 'LzComposeParams'\n)\n\nexport type LzReceiveAccount = {\n pubkey: web3.PublicKey\n isSigner: boolean\n isWritable: boolean\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const lzReceiveAccountBeet = new BeetArgsStruct<LzReceiveAccount>(\n [\n ['pubkey', beetSolana.publicKey],\n ['isSigner', bool],\n ['isWritable', bool],\n ],\n 'LzReceiveAccount'\n)\n\nexport class OAppBase {\n endpointDeriver: EndpointPDADeriver\n oappBaseDeriver: OAppBasePDADeriver\n\n constructor(\n public program: PublicKey,\n public endpointProgram: PublicKey\n ) {\n this.endpointDeriver = new EndpointPDADeriver(endpointProgram)\n this.oappBaseDeriver = new OAppBasePDADeriver(program)\n }\n\n async queryIDPDAInfo(\n connection: Connection,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<AccountInfo<Buffer> | null> {\n return this.queryPDAInfo(connection, this.idPDA()[0], commitmentOrConfig)\n }\n\n async queryPDAInfo(\n connection: Connection,\n pda: PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<AccountInfo<Buffer> | null> {\n return connection.getAccountInfo(pda, commitmentOrConfig)\n }\n\n idPDA(): [PublicKey, number] {\n return oappIDPDA(this.program)\n }\n\n async getRemote(\n connection: Connection,\n dstEid: number,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<Uint8Array | null> {\n const [remotePDA] = this.oappBaseDeriver.remote(dstEid)\n const info = await this.queryPDAInfo(connection, remotePDA, commitmentOrConfig)\n if (info) {\n // the first 8 bytes is account discriminator, so skip it. After that, the next 32 bytes is the address.\n const result = AddressType.read(info.data, 8)\n return Uint8Array.from(result)\n }\n return null\n }\n\n async updateSendLibrary(\n connection: Connection,\n newSendLibProgram: PublicKey,\n dstEid: number,\n instructionAccounts?: AccountMeta[],\n instructionData?: Buffer,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [idPDA] = this.idPDA()\n const endpoint = new EndpointProgram.Endpoint(this.endpointProgram)\n const sendLibrary = await endpoint.getSendLibrary(connection, idPDA, dstEid, commitmentOrConfig)\n if (!sendLibrary) {\n throw new Error('please call endpoint.initSendLibrary first')\n }\n if (!instructionAccounts || !instructionData) {\n throw new Error('instructionAccounts or instructionData is undefined')\n }\n const [newSendLib] = new MessageLibPDADeriver(newSendLibProgram).messageLib()\n // If the newSendLibrary not equal sendLibrary, then set the newSendLibProgram as the send library.\n if (!sendLibrary.msgLib.equals(newSendLib)) {\n return this.updateSendLibraryWithoutChecking(\n newSendLibProgram,\n dstEid,\n instructionAccounts,\n instructionData\n )\n } else {\n console.log('sendLibrary is not changed')\n return null\n }\n }\n\n async updateSendLibraryWithoutChecking(\n newSendLibProgram: PublicKey,\n dstEid: number,\n instructionAccounts?: AccountMeta[],\n instructionData?: Buffer\n ): Promise<TransactionInstruction> {\n const [idPDA] = this.idPDA()\n const [newSendLib] = new MessageLibPDADeriver(newSendLibProgram).messageLib()\n const [sendLibraryPDA] = this.endpointDeriver.sendLibrary(idPDA, dstEid)\n const [sendLibraryAuthority] = this.endpointDeriver.messageLibraryAuthority(newSendLib)\n\n // This code is used to get the cpi(Cross-Program-invocation) accounts.\n // We can then add these accounts to the original instruction accounts.\n const endpointSetSendLibraryIx = EndpointProgram.instructions.createSetSendLibraryInstruction(\n <EndpointProgram.instructions.SetSendLibraryInstructionAccounts>{\n sender: idPDA,\n sendLibraryConfig: sendLibraryPDA,\n messageLibAuthority: sendLibraryAuthority,\n },\n /// Fake value. params is useless.\n <EndpointProgram.instructions.SetSendLibraryInstructionArgs>{\n params: <EndpointProgram.types.SetSendLibraryParams>{\n eid: 0,\n newLib: this.endpointProgram,\n },\n },\n this.endpointProgram\n )\n const endpointSetSendLibraryAccounts = [\n <AccountMeta>{\n pubkey: this.endpointProgram,\n isSigner: false,\n isWritable: false,\n },\n ].concat(endpointSetSendLibraryIx.keys)\n endpointSetSendLibraryAccounts[1].isSigner = false\n return new web3.TransactionInstruction({\n programId: this.program,\n keys: instructionAccounts.concat(endpointSetSendLibraryAccounts),\n data: instructionData,\n })\n }\n\n async updateReceiveLibrary(\n connection: Connection,\n newReceiveLibProgram: PublicKey,\n srcEid: number,\n instructionAccounts?: Array<AccountMeta>,\n instructionData?: Buffer,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [idPDA] = this.idPDA()\n const endpoint = new EndpointProgram.Endpoint(this.endpointProgram)\n const receiveLibrary = await endpoint.getReceiveLibrary(connection, idPDA, srcEid, commitmentOrConfig)\n if (!receiveLibrary) {\n throw new Error('please call endpoint.initReceiveLibrary first')\n }\n if (!instructionAccounts || !instructionData) {\n throw new Error('instructionAccounts or instructionData is undefined')\n }\n // TODO: Check if the new send library has been registered at the endpoint.\n const [newReceiveLib] = new MessageLibPDADeriver(newReceiveLibProgram).messageLib()\n // If the newReceiveLibrary not equal receiveLibrary, then set the newReceiveLibProgram as the receive library.\n if (!receiveLibrary.msgLib.equals(newReceiveLib)) {\n return this.updateReceiveLibraryWithoutChecking(\n newReceiveLibProgram,\n srcEid,\n instructionAccounts,\n instructionData\n )\n } else {\n console.log('receiveLibrary is not changed')\n return null\n }\n }\n\n async updateReceiveLibraryWithoutChecking(\n newReceiveLibProgram: PublicKey,\n srcEid: number,\n instructionAccounts?: Array<AccountMeta>,\n instructionData?: Buffer\n ): Promise<TransactionInstruction> {\n if (!instructionAccounts || !instructionData) {\n throw new Error('instructionAccounts or instructionData is null')\n }\n\n const [idPDA] = this.idPDA()\n const [newReceiveLib] = new MessageLibPDADeriver(newReceiveLibProgram).messageLib()\n const [receiveLibraryPDA] = this.endpointDeriver.receiveLibrary(idPDA, srcEid)\n const [receiveLibraryAuthority] = this.endpointDeriver.messageLibraryAuthority(newReceiveLib)\n\n // This code is used to get the cpi(Cross-Program-invocation) accounts.\n // We can then add these accounts to the original instruction accounts.\n const endpointSetReceiveLibraryIx = EndpointProgram.instructions.createSetReceiveLibraryInstruction(\n <EndpointProgram.instructions.SetReceiveLibraryInstructionAccounts>{\n receiver: idPDA,\n receiveLibraryConfig: receiveLibraryPDA,\n messageLibAuthority: receiveLibraryAuthority,\n },\n /// Fake value. params is useless.\n <EndpointProgram.instructions.SetReceiveLibraryInstructionArgs>{\n params: <EndpointProgram.types.SetReceiveLibraryParams>{\n eid: 0,\n newLib: this.endpointProgram,\n },\n },\n this.endpointProgram\n )\n const endpointSetReceiveLibraryAccounts = [\n <AccountMeta>{\n pubkey: this.endpointProgram,\n isSigner: false,\n isWritable: false,\n },\n ].concat(endpointSetReceiveLibraryIx.keys)\n endpointSetReceiveLibraryAccounts[1].isSigner = false\n\n return new web3.TransactionInstruction({\n programId: this.program,\n keys: instructionAccounts.concat(endpointSetReceiveLibraryAccounts),\n data: instructionData,\n })\n }\n\n async getLzReceiveAccountMeta(\n connection: Connection,\n payer: PublicKey,\n packet: {\n sender: Uint8Array\n receiver: PublicKey\n srcEid: number\n guid: Uint8Array\n message: Uint8Array\n nonce: string\n },\n extraData: Uint8Array = Uint8Array.from([0, 0]),\n commitmentOrConfig: web3.Commitment | web3.GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<AccountMeta>> {\n const appIDPDA = packet.receiver\n const appIDPDAInfo = await connection.getParsedAccountInfo(appIDPDA, commitmentOrConfig)\n const appProgram = new PublicKey((appIDPDAInfo.value as AccountInfo<Buffer>).owner)\n\n const [lzReceiveTypesAccountsPDA] = deriveLzReceiveTypesAccountsPDA(appProgram, appIDPDA)\n const guid = packet.guid\n const message = packet.message\n\n const lzReceiveTypesAccounts: AccountMeta[] = []\n // Get the lzReceiveTypesAccounts. Deserialize the AccountInfo.data to get the lzReceiveTypesAccounts.\n const info = await connection.getAccountInfo(lzReceiveTypesAccountsPDA, commitmentOrConfig)\n if (info) {\n const buffer = Buffer.from(info.data)\n const len = buffer.length - 8\n if (len % 32 !== 0) {\n throw new Error(\n `Invalid length of AccountInfo.data. The length must be a multiple of 32 plus 8.(n*32+8). Current length is ${buffer.length}`\n )\n }\n for (let i = 8; i < len; i += 32) {\n const address = AddressType.read(buffer, i)\n lzReceiveTypesAccounts.push({\n pubkey: new PublicKey(address),\n isSigner: false,\n isWritable: false,\n })\n }\n }\n\n const instructionDiscriminator = Buffer.from(\n sha256(Buffer.from('global:lz_receive_types')).substring(2),\n 'hex'\n ).subarray(0, 8)\n const params: LzReceiveParams = {\n srcEid: packet.srcEid,\n sender: Array.from(packet.sender),\n guid: Array.from(guid),\n message,\n extraData,\n nonce: parseInt(packet.nonce),\n }\n const [data] = lzReceiveParamsBeet.serialize(params)\n const lzReceiveTypesIx = new web3.TransactionInstruction({\n programId: appProgram,\n keys: lzReceiveTypesAccounts,\n data: Buffer.concat([instructionDiscriminator, data]),\n })\n\n let keys: AccountMeta[]\n const tx = new VersionedTransaction(\n new TransactionMessage({\n instructions: [lzReceiveTypesIx],\n payerKey: payer,\n recentBlockhash: (await connection.getLatestBlockhash()).blockhash,\n }).compileToV0Message()\n )\n const simulateResp = await connection.simulateTransaction(tx, { sigVerify: false })\n const returnPrefix = `Program return: ${appProgram} `\n const returnLog = simulateResp.value.logs?.find((l) => l.startsWith(returnPrefix))\n if (!returnLog) {\n console.error('error logs', simulateResp.value.logs)\n throw new Error('View expected return log')\n } else {\n const buffer = Buffer.from(returnLog.slice(returnPrefix.length), 'base64')\n const result = array(lzReceiveAccountBeet)\n const fixedBeet = result.toFixedFromData(buffer, 0)\n const results = fixedBeet.read(buffer, 0)\n keys = results.map((r) => {\n if (r.pubkey.toBase58() == PublicKey.default.toBase58() && r.isSigner) {\n return <AccountMeta>{\n pubkey: payer,\n isSigner: true,\n isWritable: r.isWritable,\n }\n } else {\n return <AccountMeta>{\n pubkey: r.pubkey,\n isSigner: r.isSigner,\n isWritable: r.isWritable,\n }\n }\n })\n }\n return keys\n }\n\n async getLzComposeAccountMeta(\n connection: Connection,\n payer: PublicKey,\n packet: { receiver: PublicKey; guid: Uint8Array; message: Uint8Array },\n extraData: Uint8Array = Uint8Array.from([0, 0]),\n commitmentOrConfig: web3.Commitment | web3.GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<AccountMeta>> {\n const appIDPDA = packet.receiver\n const appIDPDAInfo = await connection.getParsedAccountInfo(appIDPDA, commitmentOrConfig)\n const appProgram = new PublicKey((appIDPDAInfo.value as AccountInfo<Buffer>).owner)\n\n const [lzComposeTypesAccountsPDA] = deriveLzComposeTypesAccountsPDA(appProgram, appIDPDA)\n\n const lzComposeTypesAccounts: AccountMeta[] = []\n // Get the lzComposeTypesAccounts. Deserialize the AccountInfo.data to get the lzComposeTypesAccounts.\n const info = await connection.getAccountInfo(lzComposeTypesAccountsPDA, commitmentOrConfig)\n if (info) {\n const buffer = Buffer.from(info.data)\n const len = buffer.length - 8\n if (len % 32 !== 0) {\n throw new Error(\n `Invalid length of AccountInfo.data. The length must be a multiple of 32 plus 8.(n*32+8). Current length is ${buffer.length}`\n )\n }\n for (let i = 8; i < len; i += 32) {\n const address = AddressType.read(buffer, i)\n lzComposeTypesAccounts.push({\n pubkey: new PublicKey(address),\n isSigner: false,\n isWritable: false,\n })\n }\n }\n\n const instructionDiscriminator = Buffer.from(\n sha256(Buffer.from('global:lz_compose_types')).substring(2),\n 'hex'\n ).subarray(0, 8)\n const params: LzComposeParams = {\n receiver: appIDPDA,\n guid: Array.from(packet.guid),\n message: packet.message,\n extraData,\n }\n const [data] = LzComposeParamsBeet.serialize(params)\n const lzComposeTypesIx = new web3.TransactionInstruction({\n programId: appProgram,\n keys: lzComposeTypesAccounts,\n data: Buffer.concat([instructionDiscriminator, data]),\n })\n\n let keys: AccountMeta[]\n const tx = new VersionedTransaction(\n new TransactionMessage({\n instructions: [lzComposeTypesIx],\n payerKey: payer,\n recentBlockhash: (await connection.getLatestBlockhash()).blockhash,\n }).compileToV0Message()\n )\n const simulateResp = await connection.simulateTransaction(tx, { sigVerify: false })\n const returnPrefix = `Program return: ${appProgram} `\n const returnLog = simulateResp.value.logs?.find((l) => l.startsWith(returnPrefix))\n if (!returnLog) {\n console.error('error logs', simulateResp.value.logs)\n throw new Error('View expected return log')\n } else {\n const buffer = Buffer.from(returnLog.slice(returnPrefix.length), 'base64')\n const result = array(lzReceiveAccountBeet)\n const fixedBeet = result.toFixedFromData(buffer, 0)\n const results = fixedBeet.read(buffer, 0)\n keys = results.map((r) => {\n if (r.pubkey.toBase58() == PublicKey.default.toBase58() && r.isSigner) {\n return <AccountMeta>{\n pubkey: payer,\n isSigner: true,\n isWritable: r.isWritable,\n }\n } else {\n return <AccountMeta>{\n pubkey: r.pubkey,\n isSigner: r.isSigner,\n isWritable: r.isWritable,\n }\n }\n })\n }\n return keys\n }\n\n async lzCompose(\n connection: Connection,\n payer: PublicKey,\n accountMetas: Array<AccountMeta> | null,\n packet: { receiver: PublicKey; guid: Uint8Array; message: Uint8Array },\n extraData: Uint8Array = Uint8Array.from([0, 0]),\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n if (accountMetas == null) {\n accountMetas = await this.getLzComposeAccountMeta(connection, payer, packet, extraData, commitmentOrConfig)\n }\n const receiver = packet.receiver\n\n const instructionDiscriminator = Buffer.from(\n sha256(Buffer.from('global:lz_compose')).substring(2),\n 'hex'\n ).subarray(0, 8)\n\n const receiverInfo = await connection.getParsedAccountInfo(receiver, commitmentOrConfig)\n const appProgram = new PublicKey((receiverInfo.value as AccountInfo<Buffer>).owner)\n const params: LzComposeParams = {\n receiver: receiver,\n guid: Array.from(packet.guid),\n message: packet.message,\n extraData,\n }\n const [data] = LzComposeParamsBeet.serialize(params)\n return new TransactionInstruction({\n programId: appProgram,\n keys: accountMetas,\n data: Buffer.concat([instructionDiscriminator, data]),\n })\n }\n\n /**\n * @param payer. If the msgType is COMPOSED_TYPE, then the payer is required to pay for initializing the account.\n */\n public async lzReceive(\n connection: Connection,\n payer: PublicKey,\n accountMetas: Array<AccountMeta> | null,\n packet: {\n sender: Uint8Array\n receiver: PublicKey\n srcEid: number\n guid: Uint8Array\n message: Uint8Array\n nonce: string\n },\n extraData: Uint8Array = Uint8Array.from([0, 0]),\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n if (accountMetas == null) {\n accountMetas = await this.getLzReceiveAccountMeta(connection, payer, packet, extraData, commitmentOrConfig)\n }\n\n const appIDPDA = packet.receiver\n\n const srcEid = packet.srcEid\n const sender = packet.sender\n const msgType = packet.message[MSG_TYPE_OFFSET]\n if (msgType !== MessageType.COMPOSED_TYPE && msgType !== MessageType.VANILLA) {\n throw new Error(`Invalid message type ${msgType}`)\n }\n const params: LzReceiveParams = {\n srcEid: srcEid,\n sender: Array.from(sender),\n guid: Array.from(packet.guid),\n message: packet.message,\n extraData,\n nonce: parseInt(packet.nonce),\n }\n\n const instructionDiscriminator = Buffer.from(\n sha256(Buffer.from('global:lz_receive')).substring(2),\n 'hex'\n ).subarray(0, 8)\n const [data] = lzReceiveParamsBeet.serialize(params)\n const appIDPDAInfo = await connection.getParsedAccountInfo(appIDPDA, commitmentOrConfig)\n const appProgram = new PublicKey((appIDPDAInfo.value as AccountInfo<Buffer>).owner)\n return new TransactionInstruction({\n programId: appProgram,\n keys: accountMetas,\n data: Buffer.concat([instructionDiscriminator, data]),\n })\n }\n}\n","import {\n AccountMeta,\n Commitment,\n ComputeBudgetProgram,\n Connection,\n GetAccountInfoConfig,\n PublicKey,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n} from '@solana/web3.js'\nimport { arrayify, keccak256 } from 'ethers/lib/utils'\n\nimport { PacketV1Codec, addressToBytes32 } from '@layerzerolabs/lz-v2-utilities'\n\nimport {\n EndpointSettings,\n MessageLibAuthority,\n MessageState,\n ReceiveLibraryConfig,\n SendLibraryConfig,\n createSetLayerzeroTokenInstruction,\n} from './generated/endpoint'\nimport * as accounts from './generated/endpoint/accounts'\nimport * as errors from './generated/endpoint/errors'\nimport * as instructions from './generated/endpoint/instructions'\nimport * as types from './generated/endpoint/types'\nimport * as pdaDeriver from './pda-deriver'\n\nimport { SimpleMessageLibProgram, UlnProgram } from '.'\n\nexport { accounts, errors, instructions, types }\n\nexport const LogDiscriminator = '8de6d6f209d1cfaa' // hash(global:log)\n\nexport const DefaultMessageLib = PublicKey.default // [0u8; 32]\n\nexport class Endpoint {\n endpointDeriver: pdaDeriver.EndpointPDADeriver\n\n constructor(public program: PublicKey) {\n this.endpointDeriver = new pdaDeriver.EndpointPDADeriver(program)\n }\n\n /**\n * init endpoint settings, including eid, admin, it also registers the blocked message lib\n */\n async initEndpoint(\n connection: Connection,\n endpointId: number,\n payer: PublicKey,\n admin: PublicKey,\n blockMsgLibProgram: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [blockMsgLib] = this.endpointDeriver.blockMessageLib(blockMsgLibProgram)\n const [defaultMsgLib] = this.endpointDeriver.defaultMessageLib()\n const [settingPDA] = this.endpointDeriver.setting()\n const info = await connection.getAccountInfo(settingPDA, commitmentOrConfig)\n\n if (!info) {\n return instructions.createInitEndpointInstruction(\n <instructions.InitEndpointInstructionAccounts>{\n payer,\n endpoint: settingPDA,\n blockedMessageLibAuthority: blockMsgLib,\n defaultMessageLibAuthority: defaultMsgLib,\n },\n <instructions.InitEndpointInstructionArgs>{\n params: <types.InitEndpointParams>{\n eid: endpointId,\n admin,\n blockedMessageLib: blockMsgLibProgram,\n },\n },\n this.program\n )\n } else {\n console.warn('endpoint already initialized')\n return null\n }\n }\n\n // async initOrUpdateConfig(connection:Connection,)\n\n /***\n * call this function after endpoint initialized. Only admin can call this function.\n */\n async registerLibrary(\n connection: Connection,\n admin: PublicKey,\n messageLibProgram: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n const info = await connection.getAccountInfo(msgLibAuthority, commitmentOrConfig)\n if (info) {\n console.warn('library already registered')\n return null\n }\n\n const [settingPDA] = this.endpointDeriver.setting()\n return instructions.createRegisterLibraryInstruction(\n <instructions.RegisterLibraryInstructionAccounts>{\n admin,\n endpoint: settingPDA,\n messageLib: msgLib,\n messageLibAuthority: msgLibAuthority,\n },\n this.program\n )\n }\n\n async setDefaultSendLibrary(\n connection: Connection,\n admin: PublicKey,\n messageLibProgram: PublicKey,\n dstEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const [defaultSendLib] = this.endpointDeriver.defaultSendLibrary(dstEid)\n const [settingPDA] = this.endpointDeriver.setting()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n const info = await connection.getAccountInfo(defaultSendLib, commitmentOrConfig)\n if (!info) {\n return instructions.createInitDefaultSendLibraryInstruction(\n <instructions.InitDefaultSendLibraryInstructionAccounts>{\n admin,\n endpoint: settingPDA,\n defaultSendLibraryConfig: defaultSendLib,\n messageLibAuthority: msgLibAuthority,\n },\n <instructions.InitDefaultSendLibraryInstructionArgs>{\n params: <types.InitDefaultSendLibraryParams>{\n eid: dstEid,\n newLib: msgLib,\n },\n },\n this.program\n )\n } else {\n return instructions.createSetDefaultSendLibraryInstruction(\n <instructions.SetDefaultSendLibraryInstructionAccounts>{\n admin,\n endpoint: settingPDA,\n defaultSendLibraryConfig: defaultSendLib,\n messageLibAuthority: msgLibAuthority,\n },\n <instructions.SetDefaultSendLibraryInstructionArgs>{\n params: <types.SetDefaultSendLibraryParams>{\n eid: dstEid,\n newLib: msgLib,\n },\n },\n this.program\n )\n }\n }\n\n async setDefaultReceiveLibrary(\n connection: Connection,\n admin: PublicKey,\n messageLibProgram: PublicKey,\n srcEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const [defaultReceiveLib] = this.endpointDeriver.defaultReceiveLibrary(srcEid)\n const [settingPDA] = this.endpointDeriver.setting()\n const [defaultMsgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n const info = await connection.getAccountInfo(defaultReceiveLib, commitmentOrConfig)\n if (!info) {\n return instructions.createInitDefaultReceiveLibraryInstruction(\n <instructions.InitDefaultReceiveLibraryInstructionAccounts>{\n admin,\n endpoint: settingPDA,\n defaultReceiveLibraryConfig: defaultReceiveLib,\n messageLibAuthority: defaultMsgLibAuthority,\n },\n <instructions.InitDefaultReceiveLibraryInstructionArgs>{\n params: <types.InitDefaultReceiveLibraryParams>{\n eid: srcEid,\n newLib: msgLib,\n },\n },\n this.program\n )\n } else {\n return instructions.createSetDefaultReceiveLibraryInstruction(\n <instructions.SetDefaultReceiveLibraryInstructionAccounts>{\n admin,\n endpoint: settingPDA,\n defaultReceiveLibraryConfig: defaultReceiveLib,\n messageLibAuthority: defaultMsgLibAuthority,\n },\n <instructions.SetDefaultReceiveLibraryInstructionArgs>{\n params: <types.SetDefaultReceiveLibraryParams>{\n eid: srcEid,\n newLib: msgLib,\n },\n },\n this.program\n )\n }\n }\n\n async setLayerZeroToken(\n connection: Connection,\n admin: PublicKey,\n tokenProgram: PublicKey | null,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [setting] = this.endpointDeriver.setting()\n const settingInfo = await connection.getAccountInfoAndContext(setting, commitmentOrConfig)\n if (!settingInfo) {\n console.warn('please init endpoint first')\n return null\n }\n return createSetLayerzeroTokenInstruction(\n <instructions.SetLayerzeroTokenInstructionAccounts>{\n admin,\n endpoint: setting,\n },\n <instructions.SetLayerzeroTokenInstructionArgs>{\n params: <types.SetLayerzeroTokenParams>{\n lzToken: tokenProgram,\n },\n },\n this.program\n )\n }\n\n async initOappConfig(\n msgLibProgram: PublicKey,\n payer: PublicKey,\n oappID: PublicKey,\n eid: number,\n msgLibPrograms: { simpleMsgLib: PublicKey; uln: PublicKey }\n ): Promise<TransactionInstruction> {\n if (msgLibPrograms.simpleMsgLib.toBase58() === msgLibProgram.toBase58()) {\n throw new Error('not implemented')\n }\n const uln = new UlnProgram.Uln(msgLibProgram)\n const [msgLib] = uln.ulnDeriver.messageLib()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n // if (!(await connection.getAccountInfo(setting, commitmentOrConfig))) {\n // console.warn('please register ULN to endpoint first')\n // return null\n // }\n // if (!(await uln.getOappConfig(connection, oappID, eid, commitmentOrConfig))) {\n // init oapp config\n return instructions.createInitConfigInstruction(\n <instructions.InitConfigInstructionAccounts>{\n messageLib: msgLib,\n messageLibAuthority: msgLibAuthority,\n anchorRemainingAccounts: await uln.getInitConfigIXAccountMetaForCPI(this.program, payer, oappID, eid),\n },\n <instructions.InitConfigInstructionArgs>{\n params: <types.InitConfigParams>{\n eid: eid,\n oapp: oappID,\n },\n },\n this.program\n )\n }\n\n async initOappNonce(\n payer: PublicKey,\n dstEid: number,\n oappIDPDA: PublicKey,\n remoteOappAddr: Uint8Array\n ): Promise<TransactionInstruction> {\n const [nonce] = this.endpointDeriver.nonce(oappIDPDA, dstEid, remoteOappAddr)\n const [pendingNonce] = this.endpointDeriver.pendingNonce(oappIDPDA, dstEid, remoteOappAddr)\n // const info = await connection.getAccountInfo(nonce, commitmentOrConfig)\n // if (!info) {\n return instructions.createInitNonceInstruction(\n <instructions.InitNonceInstructionAccounts>{\n payer,\n nonce,\n pendingNonce,\n },\n <instructions.InitNonceInstructionArgs>{\n params: <types.InitNonceParams>{\n localOapp: oappIDPDA,\n remoteOapp: Array.from(remoteOappAddr),\n remoteEid: dstEid,\n },\n },\n this.program\n )\n // }\n // return null\n }\n\n async initSendLibrary(\n connection: Connection,\n payer: PublicKey,\n sender: PublicKey,\n dstEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [sendLibraryPDA] = this.endpointDeriver.sendLibrary(sender, dstEid)\n const info = await connection.getAccountInfo(sendLibraryPDA, commitmentOrConfig)\n if (!info) {\n return instructions.createInitSendLibraryInstruction(\n <instructions.InitSendLibraryInstructionAccounts>{\n payer,\n sendLibraryConfig: sendLibraryPDA,\n },\n <instructions.InitSendLibraryInstructionArgs>{\n params: <types.InitSendLibraryParams>{\n sender,\n eid: dstEid,\n },\n },\n this.program\n )\n }\n return null\n }\n\n async initReceiveLibrary(\n connection: Connection,\n payer: PublicKey,\n receiver: PublicKey,\n srcEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [receiveLibraryPDA] = this.endpointDeriver.receiveLibrary(receiver, srcEid)\n const info = await connection.getAccountInfo(receiveLibraryPDA, commitmentOrConfig)\n if (!info) {\n return instructions.createInitReceiveLibraryInstruction(\n <instructions.InitReceiveLibraryInstructionAccounts>{\n payer,\n receiveLibraryConfig: receiveLibraryPDA,\n },\n <instructions.InitReceiveLibraryInstructionArgs>{\n params: <types.InitReceiveLibraryParams>{\n receiver,\n eid: srcEid,\n },\n },\n this.program\n )\n }\n return null\n }\n\n /// send a simulated transaction to the endpoint to get the fee for sending a message\n /***\n *\n * caculate the fee for sending a message with ULN:\n * 1. executorFee: feeForGas + feeForOptionType\n * * feeForGas: ((gas + gasForCalldata) * gasPriceInUnit * priceRatio / priceRatioDenominator) * multiplier_bps / 10000\n * * feeForOptionType: nativeDrop/lzReceive/lzCompose\n * 2. oracleFee: feeForGas\n * * feeForGas: same above\n *\n * The priceRatioDenominator is 10^20\n * totalFee = executorFee + oracleFee * numOracles(requiredOracles + optionalOracles)\n */\n async getMessageFee(\n connection: Connection,\n payer: PublicKey,\n oappIDPDA: PublicKey,\n dstEid: number,\n options: Uint8Array,\n payInLzToken: boolean,\n msgLibPrograms: { simpleMsgLib: PublicKey; uln: PublicKey },\n commitment?: Commitment\n ): Promise<types.MessagingFee> {\n const { msgLib, owner } = await this.getSendLibrary(connection, oappIDPDA, dstEid)\n const remainingAccounts = await (async (): Promise<AccountMeta[]> => {\n if (msgLibPrograms.simpleMsgLib.toBase58() === owner.toBase58()) {\n const simpleMsgLib = new SimpleMessageLibProgram.SimpleMessageLib(msgLibPrograms.simpleMsgLib)\n return simpleMsgLib.getQuoteIXAccountMetaForCPI(payInLzToken)\n } else if (msgLibPrograms.uln.toBase58() === owner.toBase58()) {\n const uln = new UlnProgram.Uln(msgLibPrograms.uln)\n return await uln.getQuoteIXAccountMetaForCPI(connection, oappIDPDA, dstEid, payInLzToken, commitment)\n } else {\n throw new Error('invalid msgLibProgram')\n }\n })()\n\n const [setting] = this.endpointDeriver.setting()\n const [defaultSendLibrary] = this.endpointDeriver.defaultSendLibrary(dstEid)\n const [sendLibrary] = this.endpointDeriver.sendLibrary(oappIDPDA, dstEid)\n const [sendLibraryAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n const message = Uint8Array.from(Buffer.from('counter')) //TODO: dummy message\n\n const quoteFeeIx = instructions.createQuoteInstruction(\n <instructions.QuoteInstructionAccounts>{\n sendLibrary: msgLib,\n sendLibraryConfig: sendLibrary,\n defaultSendLibraryConfig: defaultSendLibrary,\n sendLibraryAuthority: sendLibraryAuthority,\n endpoint: setting,\n anchorRemainingAccounts: remainingAccounts,\n },\n <instructions.QuoteInstructionArgs>{\n params: <types.QuoteParams>{\n sender: oappIDPDA,\n dstEid,\n message,\n payInLzToken,\n options,\n },\n },\n this.program\n )\n //TODO: how to get the correct compute units?\n const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({\n units: 1000000,\n })\n const tx = new VersionedTransaction(\n new TransactionMessage({\n instructions: [modifyComputeUnits, quoteFeeIx],\n payerKey: payer,\n recentBlockhash: (await connection.getLatestBlockhash()).blockhash,\n }).compileToV0Message()\n )\n const simulateResp = await connection.simulateTransaction(tx, {\n sigVerify: false,\n commitment: commitment ?? 'confirmed',\n })\n const returnPrefix = `Program return: ${this.program} `\n const returnLog = simulateResp.value.logs.find((l) => l.startsWith(returnPrefix))\n if (!returnLog) {\n console.error('error logs', simulateResp.value.logs)\n throw new Error('View expected return log')\n } else {\n const buffer = Buffer.from(returnLog.slice(returnPrefix.length), 'base64')\n const fee = types.messagingFeeBeet.read(buffer, 0)\n return fee\n }\n }\n\n /***\n * Get the account meta of the send instruction for CPI(Cross-Program Invocation )\n */\n async getSendIXAccountMetaForCPI(\n connection: Connection,\n payer: PublicKey,\n oappIDPDA: PublicKey,\n remoteOapp: Uint8Array,\n eid: number,\n payInLzToken: boolean,\n mint: PublicKey | null,\n msgLibPrograms: { simpleMsgLib: PublicKey; uln: PublicKey },\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const { msgLib: sendLibrary, owner } = await (async (): Promise<{ msgLib: PublicKey; owner: PublicKey }> => {\n const sendLib = await this.getSendLibrary(connection, oappIDPDA, eid, commitmentOrConfig)\n if (!sendLib) {\n throw new Error('default send library not initialized')\n } else {\n return sendLib\n }\n })()\n\n const endpointProgram = this.program\n\n async function getAccountMetaFromMsgLib(): Promise<Array<AccountMeta>> {\n if (owner.toBase58() === msgLibPrograms.simpleMsgLib.toBase58()) {\n const program = new SimpleMessageLibProgram.SimpleMessageLib(owner)\n return await program.getSendIXAccountMetaForCPI(endpointProgram, payer)\n } else if (owner.toBase58() === msgLibPrograms.uln.toBase58() && !payInLzToken) {\n const program = new UlnProgram.Uln(owner)\n return await program.getSendIXAccountMetaForCPI(\n connection,\n endpointProgram,\n payer,\n oappIDPDA,\n eid,\n commitmentOrConfig\n )\n } else if (owner.toBase58() === msgLibPrograms.uln.toBase58() && payInLzToken && mint) {\n const program = new UlnProgram.Uln(owner)\n return await program.getSendWithLzTokenIXAccountMetaForCPI(\n connection,\n endpointProgram,\n mint,\n payer,\n oappIDPDA,\n eid,\n commitmentOrConfig\n )\n } else {\n throw new Error('unknown msgLibType')\n }\n }\n\n const [defaultSendLibrary] = this.endpointDeriver.defaultSendLibrary(eid)\n const [sendLibraryConfig] = this.endpointDeriver.sendLibrary(oappIDPDA, eid)\n const [nonce] = this.endpointDeriver.nonce(oappIDPDA, eid, remoteOapp)\n const [sendLibraryAuthority] = this.endpointDeriver.messageLibraryAuthority(sendLibrary)\n const ix = instructions.createSendInstruction(\n <instructions.SendInstructionAccounts>{\n sender: oappIDPDA, //signer\n sendLibrary,\n /// this account shoud be derived from message lib\n sendLibraryConfig,\n defaultSendLibraryConfig: defaultSendLibrary,\n sendLibraryAuthority: sendLibraryAuthority,\n endpoint: this.endpointDeriver.setting()[0],\n // messageLibAuthority: auth,\n endpointProgram: this.program,\n nonce: nonce,\n anchorRemainingAccounts: await getAccountMetaFromMsgLib(),\n },\n /// Fake value. params is useless.\n <instructions.SendInstructionArgs>{\n params: <types.SendParams>{\n dstEid: eid,\n receiver: Array.from(oappIDPDA.toBytes()),\n message: Uint8Array.from(Buffer.from('test')),\n options: Uint8Array.from(Buffer.from('test')),\n nativeFee: 0,\n lzTokenFee: 0,\n },\n },\n this.program\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n async getDeliverIXAccountMetaForCPI(\n connection: Connection,\n payer: PublicKey,\n packet: PacketV1Codec,\n receiveLibrary: PublicKey\n ): Promise<Array<AccountMeta>> {\n const receiver = new PublicKey(Buffer.from(packet.receiver().slice(2), 'hex'))\n const srcEid = packet.srcEid()\n const sender = addressToBytes32(packet.sender())\n\n const payloadHashBytes = Uint8Array.from(Buffer.from(packet.payloadHash().slice(2), 'hex'))\n const [payloadHash] = this.endpointDeriver.payloadHash(\n receiver,\n srcEid,\n sender,\n parseInt(packet.nonce()),\n payloadHashBytes\n )\n const [defaultReceiveLibrary] = this.endpointDeriver.defaultReceiveLibrary(srcEid)\n const [receiveLibraryConfig] = this.endpointDeriver.receiveLibrary(receiver, srcEid)\n\n const [nonce] = this.endpointDeriver.nonce(receiver, srcEid, sender)\n const [pendingNonce] = this.endpointDeriver.pendingNonce(receiver, srcEid, sender)\n const [receiveLibTimeout] = this.endpointDeriver.receiveLibraryTimeout(srcEid)\n const [endpoint] = this.endpointDeriver.setting()\n const ix = instructions.createDeliverInstruction(\n <instructions.DeliverInstructionAccounts>{\n payer,\n receiveLibraryTimeoutConfig: receiveLibTimeout,\n receiveLibrary: receiveLibrary,\n receiveLibraryConfig: receiveLibraryConfig,\n defaultReceiveLibraryConfig: defaultReceiveLibrary,\n nonce: nonce,\n pendingNonce: pendingNonce,\n payloadHash: payloadHash,\n endpointProgram: this.program,\n endpoint: endpoint,\n },\n // Fake params\n <instructions.DeliverInstructionArgs>{\n params: <types.DeliverParams>{\n srcEid,\n sender: Array.from(addressToBytes32(packet.sender())),\n receiver,\n nonce: 1,\n payloadHash: Array.from(addressToBytes32(packet.sender())),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n /***\n * setConfig is only supported by ULN\n */\n async getSetConfigIXAccountMetaForCPI(\n connection: Connection,\n msgLibProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig: Commitment | GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<AccountMeta>> {\n const uln = new UlnProgram.Uln(msgLibProgram)\n const [msgLib] = uln.ulnDeriver.messageLib()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n\n const ix = instructions.createSetConfigInstruction(\n <instructions.SetConfigInstructionAccounts>{\n oapp: oappID,\n messageLibAuthority: msgLibAuthority,\n messageLib: msgLib,\n anchorRemainingAccounts: await uln.getSetConfigIXAccountMetaForCPI(\n connection,\n this.program,\n oappID,\n eid,\n commitmentOrConfig\n ),\n },\n // Fake params. Just to get the ix.keys\n <instructions.SetConfigInstructionArgs>{\n params: <types.SetConfigParams>{\n eid: eid,\n messageLib: msgLib,\n configType: 1,\n config: Uint8Array.from([]),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n /***\n * resetConfig is only supported by ULN\n */\n async getResetConfigIXAccountMetaForCPI(\n connection: Connection,\n msgLibProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig: Commitment | GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<AccountMeta>> {\n const uln = new UlnProgram.Uln(msgLibProgram)\n const [msgLib] = uln.ulnDeriver.messageLib()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n\n const ix = instructions.createResetConfigInstruction(\n <instructions.ResetConfigInstructionAccounts>{\n oapp: oappID,\n messageLibAuthority: msgLibAuthority,\n messageLib: msgLib,\n anchorRemainingAccounts: await uln.getResetConfigIXAccountMetaForCPI(\n connection,\n this.program,\n oappID,\n eid,\n commitmentOrConfig\n ),\n },\n // Fake params. Just to get the ix.keys\n <instructions.ResetConfigInstructionArgs>{\n params: <types.ResetConfigParams>{\n eid: eid,\n messageLib: msgLib,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n /**\n * snapshotConfig is only supported by ULN\n */\n async getSnapshotConfigIXAccountMetaForCPI(\n connection: Connection,\n msgLibProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig: Commitment | GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<AccountMeta>> {\n const uln = new UlnProgram.Uln(msgLibProgram)\n const [msgLib] = uln.ulnDeriver.messageLib()\n const [msgLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n\n const ix = instructions.createSnapshotConfigInstruction(\n <instructions.SnapshotConfigInstructionAccounts>{\n oapp: oappID,\n messageLibAuthority: msgLibAuthority,\n messageLib: msgLib,\n anchorRemainingAccounts: await uln.getSnapshotConfigIXAccountMetaForCPI(\n connection,\n this.program,\n oappID,\n eid,\n commitmentOrConfig\n ),\n },\n // Fake params. Just to get the ix.keys\n <instructions.SnapshotConfigInstructionArgs>{\n params: <types.SnapshotConfigParams>{\n eid: eid,\n messageLib: msgLib,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n /**\n * @param composer. The composer is usually the PDA of the app's ID. It depends on the oapp's implementation.\n */\n getDeliverComposedMessageIXAccountMetaForCPI(\n payer: PublicKey,\n composer: PublicKey,\n packet: PacketV1Codec\n ): Array<AccountMeta> {\n const receiver = new PublicKey(Buffer.from(packet.receiver().slice(2), 'hex'))\n const guid = Uint8Array.from(Buffer.from(packet.guid().slice(2), 'hex'))\n const message = arrayify(keccak256(packet.message()))\n const ix = instructions.createDeliverComposedMessageInstruction(\n <instructions.DeliverComposedMessageInstructionAccounts>{\n payer,\n receiver,\n composedMessage: this.endpointDeriver.composedMessage(receiver, guid, composer, message)[0],\n endpoint: this.endpointDeriver.setting()[0],\n endpointProgram: this.program,\n },\n // Fake params. Just to get the ix.keys\n <instructions.DeliverComposedMessageInstructionArgs>{\n params: <types.DeliverComposedMessageParams>{\n composer: payer,\n guid: Array.from(guid),\n message: Uint8Array.from([]),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n /**\n * @param composer. The composer is usually the PDA of the app's ID. It depends on the oapp's implementation.\n */\n getClearComposedMessageIXAccountMetaForCPI(composer: PublicKey, packet: PacketV1Codec): Array<AccountMeta> {\n const receiver = new PublicKey(Buffer.from(packet.receiver().slice(2), 'hex'))\n const guid = Uint8Array.from(Buffer.from(packet.guid().slice(2), 'hex'))\n const message = arrayify(keccak256(packet.message()))\n const ix = instructions.createClearComposedMessageInstruction(\n <instructions.ClearComposedMessageInstructionAccounts>{\n composer,\n composedMessage: this.endpointDeriver.composedMessage(receiver, guid, composer, message)[0],\n endpoint: this.endpointDeriver.setting()[0],\n endpointProgram: this.program,\n },\n // Fake params. Just to get the ix.keys\n <instructions.ClearComposedMessageInstructionArgs>{\n params: <types.ClearComposedMessageParams>{\n receiver: composer,\n guid: Array.from(guid),\n message: Uint8Array.from([]),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n getSkipIxAccountMetaForCPI(\n receiver: PublicKey,\n sender: Uint8Array,\n srcEid: number,\n nonce: number\n ): Array<AccountMeta> {\n const [noncePDA] = this.endpointDeriver.nonce(receiver, srcEid, sender)\n const [pendingNonce] = this.endpointDeriver.pendingNonce(receiver, srcEid, sender)\n const ix = instructions.createSkipInstruction(\n <instructions.SkipInstructionAccounts>{\n receiver,\n nonce: noncePDA,\n pendingNonce,\n },\n <instructions.SkipInstructionArgs>{\n params: <types.SkipParams>{\n srcEid,\n sender: Array.from(sender),\n nonce,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n async isDefaultSendLibrary(\n connection: Connection,\n messageLibProgram: PublicKey,\n dstEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<boolean> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const info = await this.getDefaultSendLibrary(connection, dstEid, commitmentOrConfig)\n if (info) {\n // const [defaultSendLib] = new MessageLibPDADeriver(messageLibProgram).messageLib()\n return info.messageLib.equals(msgLib)\n }\n return false\n }\n\n async isDefaultReceiveLibrary(\n connection: Connection,\n messageLibProgram: PublicKey,\n srcEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<boolean> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const info = await this.getDefaultReceiveLibrary(connection, srcEid, commitmentOrConfig)\n if (info) {\n // const [defaultReceiveLib] = new MessageLibPDADeriver(messageLibProgram).messageLib()\n return info.messageLib.equals(msgLib)\n }\n return false\n }\n\n // all of below functions are retrieving accounts state\n async getSetting(\n connection: Connection,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<EndpointSettings | null> {\n const [setting] = this.endpointDeriver.setting()\n try {\n return await accounts.EndpointSettings.fromAccountAddress(connection, setting, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n /**\n *\n * @param messageLib It is a PDA of the message library program\n */\n async getMessageLibAuthority(\n connection: Connection,\n messageLibProgram: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<MessageLibAuthority | null> {\n const [msgLib] = new pdaDeriver.MessageLibPDADeriver(messageLibProgram).messageLib()\n const [messageLibAuthority] = this.endpointDeriver.messageLibraryAuthority(msgLib)\n try {\n return await accounts.MessageLibAuthority.fromAccountAddress(\n connection,\n messageLibAuthority,\n commitmentOrConfig\n )\n } catch (e) {\n return null\n }\n }\n\n async getDefaultReceiveLibrary(\n connection: Connection,\n srcEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<ReceiveLibraryConfig | null> {\n const [defaultReceiveLib] = this.endpointDeriver.defaultReceiveLibrary(srcEid)\n try {\n return await accounts.ReceiveLibraryConfig.fromAccountAddress(\n connection,\n defaultReceiveLib,\n commitmentOrConfig\n )\n } catch (e) {\n return null\n }\n }\n\n async getDefaultSendLibrary(\n connection: Connection,\n dstEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<SendLibraryConfig | null> {\n const [defaultSendLib] = this.endpointDeriver.defaultSendLibrary(dstEid)\n try {\n return await accounts.SendLibraryConfig.fromAccountAddress(connection, defaultSendLib, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n /**\n * get app configured send library\n */\n async getSendLibrary(\n connection: Connection,\n oappPda: PublicKey,\n dstEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<{ msgLib: PublicKey; owner: PublicKey; isDefault: boolean } | null> {\n const [sendLibPda] = this.endpointDeriver.sendLibrary(oappPda, dstEid)\n const accountInfo = await connection.getAccountInfo(sendLibPda, commitmentOrConfig)\n if (accountInfo == null) {\n // throw new Error(`Unable to find MessageLibConfig account at ${sendLibPda}`)\n return null\n }\n const info = accounts.SendLibraryConfig.fromAccountInfo(accountInfo, 0)[0]\n if (info.messageLib.toString() == DefaultMessageLib.toString()) {\n // use default message lib\n const [defaultSendLibPda] = this.endpointDeriver.defaultSendLibrary(dstEid)\n const defaultInfo = await accounts.SendLibraryConfig.fromAccountAddress(\n connection,\n defaultSendLibPda,\n commitmentOrConfig\n )\n const messageLibInfo = await connection.getAccountInfo(defaultInfo.messageLib, commitmentOrConfig)\n return {\n owner: messageLibInfo.owner,\n msgLib: defaultInfo.messageLib,\n isDefault: true,\n }\n }\n const messageLibInfo = await connection.getAccountInfo(info.messageLib, commitmentOrConfig)\n return {\n owner: messageLibInfo.owner,\n msgLib: info.messageLib,\n isDefault: false,\n }\n }\n\n /**\n * get app configured receive library\n */\n async getReceiveLibrary(\n connection: Connection,\n oappPda: PublicKey,\n srcEid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<{\n msgLib: PublicKey\n owner: PublicKey\n isDefault: boolean\n timeout: { msgLib: PublicKey; isValid: boolean } | null\n } | null> {\n const [receiveLibPda] = this.endpointDeriver.receiveLibrary(oappPda, srcEid)\n const accountInfo = await connection.getAccountInfo(receiveLibPda, commitmentOrConfig)\n if (accountInfo == null) {\n // throw new Error(`Unable to find MessageLibConfig account at ${sendLibPda}`)\n return null\n }\n const info = accounts.ReceiveLibraryConfig.fromAccountInfo(accountInfo, 0)[0]\n if (info.messageLib.toString() == DefaultMessageLib.toString()) {\n // use default message lib\n const [defaultReceiveLibPda] = this.endpointDeriver.defaultReceiveLibrary(srcEid)\n const defaultInfo = await accounts.ReceiveLibraryConfig.fromAccountAddress(\n connection,\n defaultReceiveLibPda,\n commitmentOrConfig\n )\n const messageLibInfo = await connection.getAccountInfo(defaultInfo.messageLib, commitmentOrConfig)\n const timeout = defaultInfo.timeout\n if (timeout) {\n const slot = await connection.getSlot()\n const timestamp = await connection.getBlockTime(slot)\n const isValid = timeout.expiry > timestamp\n return {\n owner: messageLibInfo.owner,\n msgLib: defaultInfo.messageLib,\n isDefault: true,\n timeout: { msgLib: timeout.messageLib, isValid },\n }\n }\n return {\n owner: messageLibInfo.owner,\n msgLib: defaultInfo.messageLib,\n isDefault: true,\n timeout: null,\n }\n }\n const messageLibInfo = await connection.getAccountInfo(info.messageLib, commitmentOrConfig)\n const timeout = info.timeout\n if (timeout) {\n const slot = await connection.getSlot()\n const timestamp = await connection.getBlockTime(slot)\n const isValid = timeout.expiry > timestamp\n return {\n owner: messageLibInfo.owner,\n msgLib: info.messageLib,\n isDefault: false,\n timeout: { msgLib: timeout.messageLib, isValid },\n }\n }\n return { owner: messageLibInfo.owner, msgLib: info.messageLib, isDefault: false, timeout: null }\n }\n\n // rename to a more generic name\n async getInboundPayloadHash(\n connection: Connection,\n receiver: PublicKey,\n srcEid: number,\n sender: Uint8Array,\n nonce: number,\n payloadHash: Uint8Array,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<MessageState | null> {\n const [payloadHashPDA] = this.endpointDeriver.payloadHash(receiver, srcEid, sender, nonce, payloadHash)\n const accountInfo = await connection.getAccountInfo(payloadHashPDA, commitmentOrConfig)\n if (!accountInfo) {\n return null\n }\n return MessageState.fromAccountInfo(accountInfo, 0)[0]\n }\n\n async getComposedMessageState(\n connection: Connection,\n receiver: PublicKey,\n params: types.DeliverComposedMessageParams,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<MessageState | null> {\n const message = arrayify(keccak256(params.message))\n const [composedMessagePDA] = this.endpointDeriver.composedMessage(\n receiver,\n Uint8Array.from(params.guid),\n params.composer,\n message\n )\n const accountInfo = await connection.getAccountInfo(composedMessagePDA, commitmentOrConfig)\n if (!accountInfo) {\n return null\n }\n return MessageState.fromAccountInfo(accountInfo, 0)[0]\n }\n\n async getNonce(\n connection: Connection,\n oappIDPDA: PublicKey,\n remoteEid: number,\n remoteOappAddr: Uint8Array,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.Nonce | null> {\n const [nonce] = this.endpointDeriver.nonce(oappIDPDA, remoteEid, remoteOappAddr)\n try {\n return await accounts.Nonce.fromAccountAddress(connection, nonce, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getPendingInboundNonce(\n connection: Connection,\n receiver: PublicKey,\n srcEid: number,\n sender: Uint8Array,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.PendingInboundNonce | null> {\n const [nonce] = this.endpointDeriver.pendingNonce(receiver, srcEid, sender)\n try {\n return await accounts.PendingInboundNonce.fromAccountAddress(connection, nonce, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n}\n","import { PublicKey } from '@solana/web3.js'\nexport * from './accounts'\nexport * from './errors'\nexport * from './instructions'\nexport * from './types'\n\n/**\n * Program address\n *\n * @category constants\n * @category generated\n */\nexport const PROGRAM_ADDRESS = '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n\n/**\n * Program public key\n *\n * @category constants\n * @category generated\n */\nexport const PROGRAM_ID = new PublicKey(PROGRAM_ADDRESS)\n","export * from './EndpointSettings'\nexport * from './MessageLibAuthority'\nexport * from './MessageState'\nexport * from './Nonce'\nexport * from './PendingInboundNonce'\nexport * from './ReceiveLibraryConfig'\nexport * from './SendLibraryConfig'\n\nimport { EndpointSettings } from './EndpointSettings'\nimport { MessageLibAuthority } from './MessageLibAuthority'\nimport { SendLibraryConfig } from './SendLibraryConfig'\nimport { ReceiveLibraryConfig } from './ReceiveLibraryConfig'\nimport { Nonce } from './Nonce'\nimport { PendingInboundNonce } from './PendingInboundNonce'\nimport { MessageState } from './MessageState'\n\nexport const accountProviders = {\n EndpointSettings,\n MessageLibAuthority,\n SendLibraryConfig,\n ReceiveLibraryConfig,\n Nonce,\n PendingInboundNonce,\n MessageState,\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link EndpointSettings}\n * @category Accounts\n * @category generated\n */\nexport type EndpointSettingsArgs = {\n eid: number\n blockedMessageLib: web3.PublicKey\n bump: number\n admin: web3.PublicKey\n lzToken: beet.COption<web3.PublicKey>\n}\n\nexport const endpointSettingsDiscriminator = [221, 232, 73, 56, 10, 66, 72, 14]\n/**\n * Holds the data for the {@link EndpointSettings} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class EndpointSettings implements EndpointSettingsArgs {\n private constructor(\n readonly eid: number,\n readonly blockedMessageLib: web3.PublicKey,\n readonly bump: number,\n readonly admin: web3.PublicKey,\n readonly lzToken: beet.COption<web3.PublicKey>\n ) {}\n\n /**\n * Creates a {@link EndpointSettings} instance from the provided args.\n */\n static fromArgs(args: EndpointSettingsArgs) {\n return new EndpointSettings(\n args.eid,\n args.blockedMessageLib,\n args.bump,\n args.admin,\n args.lzToken\n )\n }\n\n /**\n * Deserializes the {@link EndpointSettings} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [EndpointSettings, number] {\n return EndpointSettings.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link EndpointSettings} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<EndpointSettings> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find EndpointSettings account at ${address}`)\n }\n return EndpointSettings.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, endpointSettingsBeet)\n }\n\n /**\n * Deserializes the {@link EndpointSettings} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [EndpointSettings, number] {\n return endpointSettingsBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link EndpointSettings} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return endpointSettingsBeet.serialize({\n accountDiscriminator: endpointSettingsDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link EndpointSettings} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: EndpointSettingsArgs) {\n const instance = EndpointSettings.fromArgs(args)\n return endpointSettingsBeet.toFixedFromValue({\n accountDiscriminator: endpointSettingsDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link EndpointSettings} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: EndpointSettingsArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n EndpointSettings.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link EndpointSettings} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n eid: this.eid,\n blockedMessageLib: this.blockedMessageLib.toBase58(),\n bump: this.bump,\n admin: this.admin.toBase58(),\n lzToken: this.lzToken,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const endpointSettingsBeet = new beet.FixableBeetStruct<\n EndpointSettings,\n EndpointSettingsArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['eid', beet.u32],\n ['blockedMessageLib', beetSolana.publicKey],\n ['bump', beet.u8],\n ['admin', beetSolana.publicKey],\n ['lzToken', beet.coption(beetSolana.publicKey)],\n ],\n EndpointSettings.fromArgs,\n 'EndpointSettings'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link MessageLibAuthority}\n * @category Accounts\n * @category generated\n */\nexport type MessageLibAuthorityArgs = {\n bump: number\n}\n\nexport const messageLibAuthorityDiscriminator = [\n 153, 245, 224, 52, 225, 224, 186, 40,\n]\n/**\n * Holds the data for the {@link MessageLibAuthority} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class MessageLibAuthority implements MessageLibAuthorityArgs {\n private constructor(readonly bump: number) {}\n\n /**\n * Creates a {@link MessageLibAuthority} instance from the provided args.\n */\n static fromArgs(args: MessageLibAuthorityArgs) {\n return new MessageLibAuthority(args.bump)\n }\n\n /**\n * Deserializes the {@link MessageLibAuthority} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [MessageLibAuthority, number] {\n return MessageLibAuthority.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link MessageLibAuthority} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<MessageLibAuthority> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(\n `Unable to find MessageLibAuthority account at ${address}`\n )\n }\n return MessageLibAuthority.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, messageLibAuthorityBeet)\n }\n\n /**\n * Deserializes the {@link MessageLibAuthority} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [MessageLibAuthority, number] {\n return messageLibAuthorityBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link MessageLibAuthority} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return messageLibAuthorityBeet.serialize({\n accountDiscriminator: messageLibAuthorityDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link MessageLibAuthority}\n */\n static get byteSize() {\n return messageLibAuthorityBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link MessageLibAuthority} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n MessageLibAuthority.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link MessageLibAuthority} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === MessageLibAuthority.byteSize\n }\n\n /**\n * Returns a readable version of {@link MessageLibAuthority} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const messageLibAuthorityBeet = new beet.BeetStruct<\n MessageLibAuthority,\n MessageLibAuthorityArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ],\n MessageLibAuthority.fromArgs,\n 'MessageLibAuthority'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link MessageState}\n * @category Accounts\n * @category generated\n */\nexport type MessageStateArgs = {\n received: boolean\n bump: number\n}\n\nexport const messageStateDiscriminator = [197, 165, 251, 177, 41, 114, 136, 150]\n/**\n * Holds the data for the {@link MessageState} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class MessageState implements MessageStateArgs {\n private constructor(readonly received: boolean, readonly bump: number) {}\n\n /**\n * Creates a {@link MessageState} instance from the provided args.\n */\n static fromArgs(args: MessageStateArgs) {\n return new MessageState(args.received, args.bump)\n }\n\n /**\n * Deserializes the {@link MessageState} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [MessageState, number] {\n return MessageState.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link MessageState} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<MessageState> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find MessageState account at ${address}`)\n }\n return MessageState.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, messageStateBeet)\n }\n\n /**\n * Deserializes the {@link MessageState} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [MessageState, number] {\n return messageStateBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link MessageState} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return messageStateBeet.serialize({\n accountDiscriminator: messageStateDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link MessageState}\n */\n static get byteSize() {\n return messageStateBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link MessageState} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n MessageState.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link MessageState} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === MessageState.byteSize\n }\n\n /**\n * Returns a readable version of {@link MessageState} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n received: this.received,\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const messageStateBeet = new beet.BeetStruct<\n MessageState,\n MessageStateArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['received', beet.bool],\n ['bump', beet.u8],\n ],\n MessageState.fromArgs,\n 'MessageState'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link Nonce}\n * @category Accounts\n * @category generated\n */\nexport type NonceArgs = {\n bump: number\n inboundNonce: beet.bignum\n outboundNonce: beet.bignum\n}\n\nexport const nonceDiscriminator = [143, 197, 147, 95, 106, 165, 50, 43]\n/**\n * Holds the data for the {@link Nonce} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class Nonce implements NonceArgs {\n private constructor(\n readonly bump: number,\n readonly inboundNonce: beet.bignum,\n readonly outboundNonce: beet.bignum\n ) {}\n\n /**\n * Creates a {@link Nonce} instance from the provided args.\n */\n static fromArgs(args: NonceArgs) {\n return new Nonce(args.bump, args.inboundNonce, args.outboundNonce)\n }\n\n /**\n * Deserializes the {@link Nonce} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [Nonce, number] {\n return Nonce.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link Nonce} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<Nonce> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find Nonce account at ${address}`)\n }\n return Nonce.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, nonceBeet)\n }\n\n /**\n * Deserializes the {@link Nonce} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [Nonce, number] {\n return nonceBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link Nonce} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return nonceBeet.serialize({\n accountDiscriminator: nonceDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link Nonce}\n */\n static get byteSize() {\n return nonceBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link Nonce} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n Nonce.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link Nonce} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === Nonce.byteSize\n }\n\n /**\n * Returns a readable version of {@link Nonce} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n inboundNonce: (() => {\n const x = <{ toNumber: () => number }>this.inboundNonce\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n outboundNonce: (() => {\n const x = <{ toNumber: () => number }>this.outboundNonce\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const nonceBeet = new beet.BeetStruct<\n Nonce,\n NonceArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ['inboundNonce', beet.u64],\n ['outboundNonce', beet.u64],\n ],\n Nonce.fromArgs,\n 'Nonce'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link PendingInboundNonce}\n * @category Accounts\n * @category generated\n */\nexport type PendingInboundNonceArgs = {\n bump: number\n nonces: beet.bignum[]\n}\n\nexport const pendingInboundNonceDiscriminator = [\n 170, 176, 95, 240, 120, 231, 241, 218,\n]\n/**\n * Holds the data for the {@link PendingInboundNonce} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class PendingInboundNonce implements PendingInboundNonceArgs {\n private constructor(readonly bump: number, readonly nonces: beet.bignum[]) {}\n\n /**\n * Creates a {@link PendingInboundNonce} instance from the provided args.\n */\n static fromArgs(args: PendingInboundNonceArgs) {\n return new PendingInboundNonce(args.bump, args.nonces)\n }\n\n /**\n * Deserializes the {@link PendingInboundNonce} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [PendingInboundNonce, number] {\n return PendingInboundNonce.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link PendingInboundNonce} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<PendingInboundNonce> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(\n `Unable to find PendingInboundNonce account at ${address}`\n )\n }\n return PendingInboundNonce.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, pendingInboundNonceBeet)\n }\n\n /**\n * Deserializes the {@link PendingInboundNonce} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [PendingInboundNonce, number] {\n return pendingInboundNonceBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link PendingInboundNonce} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return pendingInboundNonceBeet.serialize({\n accountDiscriminator: pendingInboundNonceDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link PendingInboundNonce} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: PendingInboundNonceArgs) {\n const instance = PendingInboundNonce.fromArgs(args)\n return pendingInboundNonceBeet.toFixedFromValue({\n accountDiscriminator: pendingInboundNonceDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link PendingInboundNonce} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: PendingInboundNonceArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n PendingInboundNonce.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link PendingInboundNonce} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n nonces: this.nonces,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const pendingInboundNonceBeet = new beet.FixableBeetStruct<\n PendingInboundNonce,\n PendingInboundNonceArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ['nonces', beet.array(beet.u64)],\n ],\n PendingInboundNonce.fromArgs,\n 'PendingInboundNonce'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport {\n ReceiveLibraryTimeout,\n receiveLibraryTimeoutBeet,\n} from '../types/ReceiveLibraryTimeout'\n\n/**\n * Arguments used to create {@link ReceiveLibraryConfig}\n * @category Accounts\n * @category generated\n */\nexport type ReceiveLibraryConfigArgs = {\n messageLib: web3.PublicKey\n timeout: beet.COption<ReceiveLibraryTimeout>\n bump: number\n}\n\nexport const receiveLibraryConfigDiscriminator = [\n 142, 226, 251, 138, 1, 206, 91, 193,\n]\n/**\n * Holds the data for the {@link ReceiveLibraryConfig} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class ReceiveLibraryConfig implements ReceiveLibraryConfigArgs {\n private constructor(\n readonly messageLib: web3.PublicKey,\n readonly timeout: beet.COption<ReceiveLibraryTimeout>,\n readonly bump: number\n ) {}\n\n /**\n * Creates a {@link ReceiveLibraryConfig} instance from the provided args.\n */\n static fromArgs(args: ReceiveLibraryConfigArgs) {\n return new ReceiveLibraryConfig(args.messageLib, args.timeout, args.bump)\n }\n\n /**\n * Deserializes the {@link ReceiveLibraryConfig} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [ReceiveLibraryConfig, number] {\n return ReceiveLibraryConfig.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link ReceiveLibraryConfig} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<ReceiveLibraryConfig> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(\n `Unable to find ReceiveLibraryConfig account at ${address}`\n )\n }\n return ReceiveLibraryConfig.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, receiveLibraryConfigBeet)\n }\n\n /**\n * Deserializes the {@link ReceiveLibraryConfig} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [ReceiveLibraryConfig, number] {\n return receiveLibraryConfigBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link ReceiveLibraryConfig} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return receiveLibraryConfigBeet.serialize({\n accountDiscriminator: receiveLibraryConfigDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link ReceiveLibraryConfig} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: ReceiveLibraryConfigArgs) {\n const instance = ReceiveLibraryConfig.fromArgs(args)\n return receiveLibraryConfigBeet.toFixedFromValue({\n accountDiscriminator: receiveLibraryConfigDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link ReceiveLibraryConfig} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: ReceiveLibraryConfigArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n ReceiveLibraryConfig.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link ReceiveLibraryConfig} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n messageLib: this.messageLib.toBase58(),\n timeout: this.timeout,\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const receiveLibraryConfigBeet = new beet.FixableBeetStruct<\n ReceiveLibraryConfig,\n ReceiveLibraryConfigArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['messageLib', beetSolana.publicKey],\n ['timeout', beet.coption(receiveLibraryTimeoutBeet)],\n ['bump', beet.u8],\n ],\n ReceiveLibraryConfig.fromArgs,\n 'ReceiveLibraryConfig'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type ReceiveLibraryTimeout = {\n messageLib: web3.PublicKey\n expiry: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const receiveLibraryTimeoutBeet =\n new beet.BeetArgsStruct<ReceiveLibraryTimeout>(\n [\n ['messageLib', beetSolana.publicKey],\n ['expiry', beet.i64],\n ],\n 'ReceiveLibraryTimeout'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\n\n/**\n * Arguments used to create {@link SendLibraryConfig}\n * @category Accounts\n * @category generated\n */\nexport type SendLibraryConfigArgs = {\n messageLib: web3.PublicKey\n bump: number\n}\n\nexport const sendLibraryConfigDiscriminator = [\n 61, 238, 31, 72, 251, 117, 66, 176,\n]\n/**\n * Holds the data for the {@link SendLibraryConfig} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class SendLibraryConfig implements SendLibraryConfigArgs {\n private constructor(\n readonly messageLib: web3.PublicKey,\n readonly bump: number\n ) {}\n\n /**\n * Creates a {@link SendLibraryConfig} instance from the provided args.\n */\n static fromArgs(args: SendLibraryConfigArgs) {\n return new SendLibraryConfig(args.messageLib, args.bump)\n }\n\n /**\n * Deserializes the {@link SendLibraryConfig} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [SendLibraryConfig, number] {\n return SendLibraryConfig.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link SendLibraryConfig} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<SendLibraryConfig> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find SendLibraryConfig account at ${address}`)\n }\n return SendLibraryConfig.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, sendLibraryConfigBeet)\n }\n\n /**\n * Deserializes the {@link SendLibraryConfig} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [SendLibraryConfig, number] {\n return sendLibraryConfigBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link SendLibraryConfig} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return sendLibraryConfigBeet.serialize({\n accountDiscriminator: sendLibraryConfigDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link SendLibraryConfig}\n */\n static get byteSize() {\n return sendLibraryConfigBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link SendLibraryConfig} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n SendLibraryConfig.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link SendLibraryConfig} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === SendLibraryConfig.byteSize\n }\n\n /**\n * Returns a readable version of {@link SendLibraryConfig} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n messageLib: this.messageLib.toBase58(),\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const sendLibraryConfigBeet = new beet.BeetStruct<\n SendLibraryConfig,\n SendLibraryConfigArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['messageLib', beetSolana.publicKey],\n ['bump', beet.u8],\n ],\n SendLibraryConfig.fromArgs,\n 'SendLibraryConfig'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\ntype ErrorWithCode = Error & { code: number }\ntype MaybeErrorWithCode = ErrorWithCode | null | undefined\n\nconst createErrorFromCodeLookup: Map<number, () => ErrorWithCode> = new Map()\nconst createErrorFromNameLookup: Map<string, () => ErrorWithCode> = new Map()\n\n/**\n * InvalidArgument: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidArgumentError extends Error {\n readonly code: number = 0x11770\n readonly name: string = 'InvalidArgument'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidArgumentError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11770, () => new InvalidArgumentError())\ncreateErrorFromNameLookup.set(\n 'InvalidArgument',\n () => new InvalidArgumentError()\n)\n\n/**\n * OnlyRegistered: ''\n *\n * @category Errors\n * @category generated\n */\nexport class OnlyRegisteredError extends Error {\n readonly code: number = 0x11771\n readonly name: string = 'OnlyRegistered'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, OnlyRegisteredError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11771, () => new OnlyRegisteredError())\ncreateErrorFromNameLookup.set('OnlyRegistered', () => new OnlyRegisteredError())\n\n/**\n * InvalidAmount: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidAmountError extends Error {\n readonly code: number = 0x11773\n readonly name: string = 'InvalidAmount'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidAmountError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11773, () => new InvalidAmountError())\ncreateErrorFromNameLookup.set('InvalidAmount', () => new InvalidAmountError())\n\n/**\n * InvalidNonce: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidNonceError extends Error {\n readonly code: number = 0x11774\n readonly name: string = 'InvalidNonce'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidNonceError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11774, () => new InvalidNonceError())\ncreateErrorFromNameLookup.set('InvalidNonce', () => new InvalidNonceError())\n\n/**\n * InsufficientFee: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InsufficientFeeError extends Error {\n readonly code: number = 0x11775\n readonly name: string = 'InsufficientFee'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InsufficientFeeError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11775, () => new InsufficientFeeError())\ncreateErrorFromNameLookup.set(\n 'InsufficientFee',\n () => new InsufficientFeeError()\n)\n\n/**\n * Unsorted: ''\n *\n * @category Errors\n * @category generated\n */\nexport class UnsortedError extends Error {\n readonly code: number = 0x11776\n readonly name: string = 'Unsorted'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, UnsortedError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11776, () => new UnsortedError())\ncreateErrorFromNameLookup.set('Unsorted', () => new UnsortedError())\n\n/**\n * InvalidOptionsFormatType: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidOptionsFormatTypeError extends Error {\n readonly code: number = 0x11778\n readonly name: string = 'InvalidOptionsFormatType'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidOptionsFormatTypeError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(\n 0x11778,\n () => new InvalidOptionsFormatTypeError()\n)\ncreateErrorFromNameLookup.set(\n 'InvalidOptionsFormatType',\n () => new InvalidOptionsFormatTypeError()\n)\n\n/**\n * InvalidSize: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidSizeError extends Error {\n readonly code: number = 0x11779\n readonly name: string = 'InvalidSize'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidSizeError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x11779, () => new InvalidSizeError())\ncreateErrorFromNameLookup.set('InvalidSize', () => new InvalidSizeError())\n\n/**\n * OutOfRange: ''\n *\n * @category Errors\n * @category generated\n */\nexport class OutOfRangeError extends Error {\n readonly code: number = 0x21770\n readonly name: string = 'OutOfRange'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, OutOfRangeError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x21770, () => new OutOfRangeError())\ncreateErrorFromNameLookup.set('OutOfRange', () => new OutOfRangeError())\n\n/**\n * InvalidState: ''\n *\n * @category Errors\n * @category generated\n */\nexport class InvalidStateError extends Error {\n readonly code: number = 0x31770\n readonly name: string = 'InvalidState'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidStateError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x31770, () => new InvalidStateError())\ncreateErrorFromNameLookup.set('InvalidState', () => new InvalidStateError())\n\n/**\n * PermissionDenied: ''\n *\n * @category Errors\n * @category generated\n */\nexport class PermissionDeniedError extends Error {\n readonly code: number = 0x51770\n readonly name: string = 'PermissionDenied'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, PermissionDeniedError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x51770, () => new PermissionDeniedError())\ncreateErrorFromNameLookup.set(\n 'PermissionDenied',\n () => new PermissionDeniedError()\n)\n\n/**\n * NotFound: ''\n *\n * @category Errors\n * @category generated\n */\nexport class NotFoundError extends Error {\n readonly code: number = 0x61770\n readonly name: string = 'NotFound'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, NotFoundError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0x61770, () => new NotFoundError())\ncreateErrorFromNameLookup.set('NotFound', () => new NotFoundError())\n\n/**\n * NotImplemented: ''\n *\n * @category Errors\n * @category generated\n */\nexport class NotImplementedError extends Error {\n readonly code: number = 0xc1770\n readonly name: string = 'NotImplemented'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, NotImplementedError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0xc1770, () => new NotImplementedError())\ncreateErrorFromNameLookup.set('NotImplemented', () => new NotImplementedError())\n\n/**\n * Unavailable: ''\n *\n * @category Errors\n * @category generated\n */\nexport class UnavailableError extends Error {\n readonly code: number = 0xd1770\n readonly name: string = 'Unavailable'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, UnavailableError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0xd1770, () => new UnavailableError())\ncreateErrorFromNameLookup.set('Unavailable', () => new UnavailableError())\n\n/**\n * LzTokenUnavailable: ''\n *\n * @category Errors\n * @category generated\n */\nexport class LzTokenUnavailableError extends Error {\n readonly code: number = 0xd1773\n readonly name: string = 'LzTokenUnavailable'\n constructor() {\n super('')\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, LzTokenUnavailableError)\n }\n }\n}\n\ncreateErrorFromCodeLookup.set(0xd1773, () => new LzTokenUnavailableError())\ncreateErrorFromNameLookup.set(\n 'LzTokenUnavailable',\n () => new LzTokenUnavailableError()\n)\n\n/**\n * Attempts to resolve a custom program error from the provided error code.\n * @category Errors\n * @category generated\n */\nexport function errorFromCode(code: number): MaybeErrorWithCode {\n const createError = createErrorFromCodeLookup.get(code)\n return createError != null ? createError() : null\n}\n\n/**\n * Attempts to resolve a custom program error from the provided error name, i.e. 'Unauthorized'.\n * @category Errors\n * @category generated\n */\nexport function errorFromName(name: string): MaybeErrorWithCode {\n const createError = createErrorFromNameLookup.get(name)\n return createError != null ? createError() : null\n}\n","export * from './clear'\nexport * from './clearComposedMessage'\nexport * from './deliver'\nexport * from './deliverComposedMessage'\nexport * from './initConfig'\nexport * from './initDefaultReceiveLibrary'\nexport * from './initDefaultSendLibrary'\nexport * from './initEndpoint'\nexport * from './initNonce'\nexport * from './initReceiveLibrary'\nexport * from './initSendLibrary'\nexport * from './log'\nexport * from './quote'\nexport * from './registerLibrary'\nexport * from './resetConfig'\nexport * from './send'\nexport * from './setConfig'\nexport * from './setDefaultReceiveLibrary'\nexport * from './setDefaultReceiveLibraryTimeout'\nexport * from './setDefaultSendLibrary'\nexport * from './setLayerzeroToken'\nexport * from './setReceiveLibrary'\nexport * from './setReceiveLibraryTimeout'\nexport * from './setSendLibrary'\nexport * from './skip'\nexport * from './snapshotConfig'\nexport * from './transferAdmin'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { ClearParams, clearParamsBeet } from '../types/ClearParams'\n\n/**\n * @category Instructions\n * @category Clear\n * @category generated\n */\nexport type ClearInstructionArgs = {\n params: ClearParams\n}\n/**\n * @category Instructions\n * @category Clear\n * @category generated\n */\nexport const clearStruct = new beet.FixableBeetArgsStruct<\n ClearInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', clearParamsBeet],\n ],\n 'ClearInstructionArgs'\n)\n/**\n * Accounts required by the _clear_ instruction\n *\n * @property [**signer**] receiver\n * @property [] nonce\n * @property [_writable_] payloadHash\n * @property [] endpoint\n * @property [] endpointProgram\n * @category Instructions\n * @category Clear\n * @category generated\n */\nexport type ClearInstructionAccounts = {\n receiver: web3.PublicKey\n nonce: web3.PublicKey\n payloadHash: web3.PublicKey\n endpoint: web3.PublicKey\n endpointProgram: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const clearInstructionDiscriminator = [\n 250, 39, 28, 213, 123, 163, 133, 5,\n]\n\n/**\n * Creates a _Clear_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Clear\n * @category generated\n */\nexport function createClearInstruction(\n accounts: ClearInstructionAccounts,\n args: ClearInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = clearStruct.serialize({\n instructionDiscriminator: clearInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.receiver,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.nonce,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.payloadHash,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointProgram,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type ClearParams = {\n srcEid: number\n sender: number[] /* size: 32 */\n nonce: beet.bignum\n guid: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const clearParamsBeet = new beet.FixableBeetArgsStruct<ClearParams>(\n [\n ['srcEid', beet.u32],\n ['sender', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['nonce', beet.u64],\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'ClearParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n ClearComposedMessageParams,\n clearComposedMessageParamsBeet,\n} from '../types/ClearComposedMessageParams'\n\n/**\n * @category Instructions\n * @category ClearComposedMessage\n * @category generated\n */\nexport type ClearComposedMessageInstructionArgs = {\n params: ClearComposedMessageParams\n}\n/**\n * @category Instructions\n * @category ClearComposedMessage\n * @category generated\n */\nexport const clearComposedMessageStruct = new beet.FixableBeetArgsStruct<\n ClearComposedMessageInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', clearComposedMessageParamsBeet],\n ],\n 'ClearComposedMessageInstructionArgs'\n)\n/**\n * Accounts required by the _clearComposedMessage_ instruction\n *\n * @property [**signer**] composer\n * @property [_writable_] composedMessage\n * @property [] endpoint\n * @property [] endpointProgram\n * @category Instructions\n * @category ClearComposedMessage\n * @category generated\n */\nexport type ClearComposedMessageInstructionAccounts = {\n composer: web3.PublicKey\n composedMessage: web3.PublicKey\n endpoint: web3.PublicKey\n endpointProgram: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const clearComposedMessageInstructionDiscriminator = [\n 18, 231, 148, 207, 84, 195, 146, 251,\n]\n\n/**\n * Creates a _ClearComposedMessage_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category ClearComposedMessage\n * @category generated\n */\nexport function createClearComposedMessageInstruction(\n accounts: ClearComposedMessageInstructionAccounts,\n args: ClearComposedMessageInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = clearComposedMessageStruct.serialize({\n instructionDiscriminator: clearComposedMessageInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.composer,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.composedMessage,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointProgram,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type ClearComposedMessageParams = {\n receiver: web3.PublicKey\n guid: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const clearComposedMessageParamsBeet =\n new beet.FixableBeetArgsStruct<ClearComposedMessageParams>(\n [\n ['receiver', beetSolana.publicKey],\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'ClearComposedMessageParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { DeliverParams, deliverParamsBeet } from '../types/DeliverParams'\n\n/**\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport type DeliverInstructionArgs = {\n params: DeliverParams\n}\n/**\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport const deliverStruct = new beet.BeetArgsStruct<\n DeliverInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', deliverParamsBeet],\n ],\n 'DeliverInstructionArgs'\n)\n/**\n * Accounts required by the _deliver_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [**signer**] receiveLibrary\n * @property [] receiveLibraryConfig\n * @property [] defaultReceiveLibraryConfig\n * @property [_writable_] nonce\n * @property [_writable_] pendingNonce\n * @property [_writable_] payloadHash\n * @property [] endpoint\n * @property [] endpointProgram\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport type DeliverInstructionAccounts = {\n payer: web3.PublicKey\n receiveLibrary: web3.PublicKey\n receiveLibraryConfig: web3.PublicKey\n defaultReceiveLibraryConfig: web3.PublicKey\n nonce: web3.PublicKey\n pendingNonce: web3.PublicKey\n payloadHash: web3.PublicKey\n endpoint: web3.PublicKey\n endpointProgram: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const deliverInstructionDiscriminator = [\n 250, 131, 222, 57, 211, 229, 209, 147,\n]\n\n/**\n * Creates a _Deliver_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport function createDeliverInstruction(\n accounts: DeliverInstructionAccounts,\n args: DeliverInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = deliverStruct.serialize({\n instructionDiscriminator: deliverInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibrary,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultReceiveLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.nonce,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.pendingNonce,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.payloadHash,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointProgram,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type DeliverParams = {\n srcEid: number\n sender: number[] /* size: 32 */\n receiver: web3.PublicKey\n nonce: beet.bignum\n payloadHash: number[] /* size: 32 */\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const deliverParamsBeet = new beet.BeetArgsStruct<DeliverParams>(\n [\n ['srcEid', beet.u32],\n ['sender', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['receiver', beetSolana.publicKey],\n ['nonce', beet.u64],\n ['payloadHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ],\n 'DeliverParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n DeliverComposedMessageParams,\n deliverComposedMessageParamsBeet,\n} from '../types/DeliverComposedMessageParams'\n\n/**\n * @category Instructions\n * @category DeliverComposedMessage\n * @category generated\n */\nexport type DeliverComposedMessageInstructionArgs = {\n params: DeliverComposedMessageParams\n}\n/**\n * @category Instructions\n * @category DeliverComposedMessage\n * @category generated\n */\nexport const deliverComposedMessageStruct = new beet.FixableBeetArgsStruct<\n DeliverComposedMessageInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', deliverComposedMessageParamsBeet],\n ],\n 'DeliverComposedMessageInstructionArgs'\n)\n/**\n * Accounts required by the _deliverComposedMessage_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [**signer**] receiver\n * @property [_writable_] composedMessage\n * @property [] endpoint\n * @property [] endpointProgram\n * @category Instructions\n * @category DeliverComposedMessage\n * @category generated\n */\nexport type DeliverComposedMessageInstructionAccounts = {\n payer: web3.PublicKey\n receiver: web3.PublicKey\n composedMessage: web3.PublicKey\n endpoint: web3.PublicKey\n endpointProgram: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const deliverComposedMessageInstructionDiscriminator = [\n 171, 153, 14, 101, 137, 75, 246, 220,\n]\n\n/**\n * Creates a _DeliverComposedMessage_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category DeliverComposedMessage\n * @category generated\n */\nexport function createDeliverComposedMessageInstruction(\n accounts: DeliverComposedMessageInstructionAccounts,\n args: DeliverComposedMessageInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = deliverComposedMessageStruct.serialize({\n instructionDiscriminator: deliverComposedMessageInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.receiver,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.composedMessage,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointProgram,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type DeliverComposedMessageParams = {\n composer: web3.PublicKey\n guid: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const deliverComposedMessageParamsBeet =\n new beet.FixableBeetArgsStruct<DeliverComposedMessageParams>(\n [\n ['composer', beetSolana.publicKey],\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'DeliverComposedMessageParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitConfigParams,\n initConfigParamsBeet,\n} from '../types/InitConfigParams'\n\n/**\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport type InitConfigInstructionArgs = {\n params: InitConfigParams\n}\n/**\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport const initConfigStruct = new beet.BeetArgsStruct<\n InitConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initConfigParamsBeet],\n ],\n 'InitConfigInstructionArgs'\n)\n/**\n * Accounts required by the _initConfig_ instruction\n *\n * @property [] messageLibAuthority\n * @property [] messageLib\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport type InitConfigInstructionAccounts = {\n messageLibAuthority: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initConfigInstructionDiscriminator = [\n 23, 235, 115, 232, 168, 96, 1, 231,\n]\n\n/**\n * Creates a _InitConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport function createInitConfigInstruction(\n accounts: InitConfigInstructionAccounts,\n args: InitConfigInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initConfigStruct.serialize({\n instructionDiscriminator: initConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initConfigParamsBeet = new beet.BeetArgsStruct<InitConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'InitConfigParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitDefaultReceiveLibraryParams,\n initDefaultReceiveLibraryParamsBeet,\n} from '../types/InitDefaultReceiveLibraryParams'\n\n/**\n * @category Instructions\n * @category InitDefaultReceiveLibrary\n * @category generated\n */\nexport type InitDefaultReceiveLibraryInstructionArgs = {\n params: InitDefaultReceiveLibraryParams\n}\n/**\n * @category Instructions\n * @category InitDefaultReceiveLibrary\n * @category generated\n */\nexport const initDefaultReceiveLibraryStruct = new beet.BeetArgsStruct<\n InitDefaultReceiveLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initDefaultReceiveLibraryParamsBeet],\n ],\n 'InitDefaultReceiveLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _initDefaultReceiveLibrary_ instruction\n *\n * @property [_writable_, **signer**] admin\n * @property [] endpoint\n * @property [_writable_] defaultReceiveLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category InitDefaultReceiveLibrary\n * @category generated\n */\nexport type InitDefaultReceiveLibraryInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n defaultReceiveLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initDefaultReceiveLibraryInstructionDiscriminator = [\n 32, 202, 76, 22, 42, 249, 227, 109,\n]\n\n/**\n * Creates a _InitDefaultReceiveLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitDefaultReceiveLibrary\n * @category generated\n */\nexport function createInitDefaultReceiveLibraryInstruction(\n accounts: InitDefaultReceiveLibraryInstructionAccounts,\n args: InitDefaultReceiveLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initDefaultReceiveLibraryStruct.serialize({\n instructionDiscriminator: initDefaultReceiveLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultReceiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitDefaultReceiveLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initDefaultReceiveLibraryParamsBeet =\n new beet.BeetArgsStruct<InitDefaultReceiveLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ],\n 'InitDefaultReceiveLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitDefaultSendLibraryParams,\n initDefaultSendLibraryParamsBeet,\n} from '../types/InitDefaultSendLibraryParams'\n\n/**\n * @category Instructions\n * @category InitDefaultSendLibrary\n * @category generated\n */\nexport type InitDefaultSendLibraryInstructionArgs = {\n params: InitDefaultSendLibraryParams\n}\n/**\n * @category Instructions\n * @category InitDefaultSendLibrary\n * @category generated\n */\nexport const initDefaultSendLibraryStruct = new beet.BeetArgsStruct<\n InitDefaultSendLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initDefaultSendLibraryParamsBeet],\n ],\n 'InitDefaultSendLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _initDefaultSendLibrary_ instruction\n *\n * @property [_writable_, **signer**] admin\n * @property [] endpoint\n * @property [_writable_] defaultSendLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category InitDefaultSendLibrary\n * @category generated\n */\nexport type InitDefaultSendLibraryInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n defaultSendLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initDefaultSendLibraryInstructionDiscriminator = [\n 120, 187, 15, 31, 174, 97, 138, 58,\n]\n\n/**\n * Creates a _InitDefaultSendLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitDefaultSendLibrary\n * @category generated\n */\nexport function createInitDefaultSendLibraryInstruction(\n accounts: InitDefaultSendLibraryInstructionAccounts,\n args: InitDefaultSendLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initDefaultSendLibraryStruct.serialize({\n instructionDiscriminator: initDefaultSendLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultSendLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitDefaultSendLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initDefaultSendLibraryParamsBeet =\n new beet.BeetArgsStruct<InitDefaultSendLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ],\n 'InitDefaultSendLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitEndpointParams,\n initEndpointParamsBeet,\n} from '../types/InitEndpointParams'\n\n/**\n * @category Instructions\n * @category InitEndpoint\n * @category generated\n */\nexport type InitEndpointInstructionArgs = {\n params: InitEndpointParams\n}\n/**\n * @category Instructions\n * @category InitEndpoint\n * @category generated\n */\nexport const initEndpointStruct = new beet.BeetArgsStruct<\n InitEndpointInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initEndpointParamsBeet],\n ],\n 'InitEndpointInstructionArgs'\n)\n/**\n * Accounts required by the _initEndpoint_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] endpoint\n * @property [_writable_] blockedMessageLibAuthority\n * @property [_writable_] defaultMessageLibAuthority\n * @category Instructions\n * @category InitEndpoint\n * @category generated\n */\nexport type InitEndpointInstructionAccounts = {\n payer: web3.PublicKey\n endpoint: web3.PublicKey\n blockedMessageLibAuthority: web3.PublicKey\n defaultMessageLibAuthority: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initEndpointInstructionDiscriminator = [\n 178, 30, 29, 207, 120, 225, 246, 134,\n]\n\n/**\n * Creates a _InitEndpoint_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitEndpoint\n * @category generated\n */\nexport function createInitEndpointInstruction(\n accounts: InitEndpointInstructionAccounts,\n args: InitEndpointInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initEndpointStruct.serialize({\n instructionDiscriminator: initEndpointInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.blockedMessageLibAuthority,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultMessageLibAuthority,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitEndpointParams = {\n eid: number\n admin: web3.PublicKey\n blockedMessageLib: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initEndpointParamsBeet =\n new beet.BeetArgsStruct<InitEndpointParams>(\n [\n ['eid', beet.u32],\n ['admin', beetSolana.publicKey],\n ['blockedMessageLib', beetSolana.publicKey],\n ],\n 'InitEndpointParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { InitNonceParams, initNonceParamsBeet } from '../types/InitNonceParams'\n\n/**\n * @category Instructions\n * @category InitNonce\n * @category generated\n */\nexport type InitNonceInstructionArgs = {\n params: InitNonceParams\n}\n/**\n * @category Instructions\n * @category InitNonce\n * @category generated\n */\nexport const initNonceStruct = new beet.BeetArgsStruct<\n InitNonceInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initNonceParamsBeet],\n ],\n 'InitNonceInstructionArgs'\n)\n/**\n * Accounts required by the _initNonce_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] nonce\n * @property [_writable_] pendingNonce\n * @category Instructions\n * @category InitNonce\n * @category generated\n */\nexport type InitNonceInstructionAccounts = {\n payer: web3.PublicKey\n nonce: web3.PublicKey\n pendingNonce: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initNonceInstructionDiscriminator = [\n 204, 171, 16, 214, 182, 191, 27, 196,\n]\n\n/**\n * Creates a _InitNonce_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitNonce\n * @category generated\n */\nexport function createInitNonceInstruction(\n accounts: InitNonceInstructionAccounts,\n args: InitNonceInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initNonceStruct.serialize({\n instructionDiscriminator: initNonceInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.nonce,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.pendingNonce,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type InitNonceParams = {\n localOapp: web3.PublicKey\n remoteEid: number\n remoteOapp: number[] /* size: 32 */\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initNonceParamsBeet = new beet.BeetArgsStruct<InitNonceParams>(\n [\n ['localOapp', beetSolana.publicKey],\n ['remoteEid', beet.u32],\n ['remoteOapp', beet.uniformFixedSizeArray(beet.u8, 32)],\n ],\n 'InitNonceParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitReceiveLibraryParams,\n initReceiveLibraryParamsBeet,\n} from '../types/InitReceiveLibraryParams'\n\n/**\n * @category Instructions\n * @category InitReceiveLibrary\n * @category generated\n */\nexport type InitReceiveLibraryInstructionArgs = {\n params: InitReceiveLibraryParams\n}\n/**\n * @category Instructions\n * @category InitReceiveLibrary\n * @category generated\n */\nexport const initReceiveLibraryStruct = new beet.BeetArgsStruct<\n InitReceiveLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initReceiveLibraryParamsBeet],\n ],\n 'InitReceiveLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _initReceiveLibrary_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] receiveLibraryConfig\n * @category Instructions\n * @category InitReceiveLibrary\n * @category generated\n */\nexport type InitReceiveLibraryInstructionAccounts = {\n payer: web3.PublicKey\n receiveLibraryConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initReceiveLibraryInstructionDiscriminator = [\n 197, 114, 81, 100, 45, 233, 36, 230,\n]\n\n/**\n * Creates a _InitReceiveLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitReceiveLibrary\n * @category generated\n */\nexport function createInitReceiveLibraryInstruction(\n accounts: InitReceiveLibraryInstructionAccounts,\n args: InitReceiveLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initReceiveLibraryStruct.serialize({\n instructionDiscriminator: initReceiveLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type InitReceiveLibraryParams = {\n receiver: web3.PublicKey\n eid: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initReceiveLibraryParamsBeet =\n new beet.BeetArgsStruct<InitReceiveLibraryParams>(\n [\n ['receiver', beetSolana.publicKey],\n ['eid', beet.u32],\n ],\n 'InitReceiveLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitSendLibraryParams,\n initSendLibraryParamsBeet,\n} from '../types/InitSendLibraryParams'\n\n/**\n * @category Instructions\n * @category InitSendLibrary\n * @category generated\n */\nexport type InitSendLibraryInstructionArgs = {\n params: InitSendLibraryParams\n}\n/**\n * @category Instructions\n * @category InitSendLibrary\n * @category generated\n */\nexport const initSendLibraryStruct = new beet.BeetArgsStruct<\n InitSendLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initSendLibraryParamsBeet],\n ],\n 'InitSendLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _initSendLibrary_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] sendLibraryConfig\n * @category Instructions\n * @category InitSendLibrary\n * @category generated\n */\nexport type InitSendLibraryInstructionAccounts = {\n payer: web3.PublicKey\n sendLibraryConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initSendLibraryInstructionDiscriminator = [\n 156, 24, 235, 120, 73, 193, 144, 19,\n]\n\n/**\n * Creates a _InitSendLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitSendLibrary\n * @category generated\n */\nexport function createInitSendLibraryInstruction(\n accounts: InitSendLibraryInstructionAccounts,\n args: InitSendLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = initSendLibraryStruct.serialize({\n instructionDiscriminator: initSendLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.sendLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type InitSendLibraryParams = {\n sender: web3.PublicKey\n eid: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initSendLibraryParamsBeet =\n new beet.BeetArgsStruct<InitSendLibraryParams>(\n [\n ['sender', beetSolana.publicKey],\n ['eid', beet.u32],\n ],\n 'InitSendLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { EndpointEvent, endpointEventBeet } from '../types/EndpointEvent'\n\n/**\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport type LogInstructionArgs = {\n events: EndpointEvent\n}\n/**\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport const logStruct = new beet.FixableBeetArgsStruct<\n LogInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['events', endpointEventBeet],\n ],\n 'LogInstructionArgs'\n)\n/**\n * Accounts required by the _log_ instruction\n *\n * @property [] endpoint\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport type LogInstructionAccounts = {\n endpoint: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const logInstructionDiscriminator = [\n 141, 230, 214, 242, 9, 209, 207, 170,\n]\n\n/**\n * Creates a _Log_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport function createLogInstruction(\n accounts: LogInstructionAccounts,\n args: LogInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = logStruct.serialize({\n instructionDiscriminator: logInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n/**\n * This type is used to derive the {@link EndpointEvent} type as well as the de/serializer.\n * However don't refer to it in your code but use the {@link EndpointEvent} type instead.\n *\n * @category userTypes\n * @category enums\n * @category generated\n * @private\n */\nexport type EndpointEventRecord = {\n PacketSent: {\n encodedPacket: Uint8Array\n options: Uint8Array\n sendLibrary: web3.PublicKey\n }\n PacketDelivered: {\n srcEid: number\n sender: number[] /* size: 32 */\n receiver: web3.PublicKey\n nonce: beet.bignum\n payloadHash: number[] /* size: 32 */\n receiveLibrary: web3.PublicKey\n }\n PacketReceived: {\n srcEid: number\n sender: number[] /* size: 32 */\n receiver: web3.PublicKey\n nonce: beet.bignum\n payloadHash: number[] /* size: 32 */\n }\n ComposedMessageDelivered: {\n receiver: web3.PublicKey\n composer: web3.PublicKey\n guid: number[] /* size: 32 */\n message: Uint8Array\n }\n ComposedMessageReceived: {\n receiver: web3.PublicKey\n composer: web3.PublicKey\n guid: number[] /* size: 32 */\n messageHash: number[] /* size: 32 */\n }\n}\n\n/**\n * Union type respresenting the EndpointEvent data enum defined in Rust.\n *\n * NOTE: that it includes a `__kind` property which allows to narrow types in\n * switch/if statements.\n * Additionally `isEndpointEvent*` type guards are exposed below to narrow to a specific variant.\n *\n * @category userTypes\n * @category enums\n * @category generated\n */\nexport type EndpointEvent = beet.DataEnumKeyAsKind<EndpointEventRecord>\n\nexport const isEndpointEventPacketSent = (\n x: EndpointEvent\n): x is EndpointEvent & { __kind: 'PacketSent' } => x.__kind === 'PacketSent'\nexport const isEndpointEventPacketDelivered = (\n x: EndpointEvent\n): x is EndpointEvent & { __kind: 'PacketDelivered' } =>\n x.__kind === 'PacketDelivered'\nexport const isEndpointEventPacketReceived = (\n x: EndpointEvent\n): x is EndpointEvent & { __kind: 'PacketReceived' } =>\n x.__kind === 'PacketReceived'\nexport const isEndpointEventComposedMessageDelivered = (\n x: EndpointEvent\n): x is EndpointEvent & { __kind: 'ComposedMessageDelivered' } =>\n x.__kind === 'ComposedMessageDelivered'\nexport const isEndpointEventComposedMessageReceived = (\n x: EndpointEvent\n): x is EndpointEvent & { __kind: 'ComposedMessageReceived' } =>\n x.__kind === 'ComposedMessageReceived'\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const endpointEventBeet = beet.dataEnum<EndpointEventRecord>([\n [\n 'PacketSent',\n new beet.FixableBeetArgsStruct<EndpointEventRecord['PacketSent']>(\n [\n ['encodedPacket', beet.bytes],\n ['options', beet.bytes],\n ['sendLibrary', beetSolana.publicKey],\n ],\n 'EndpointEventRecord[\"PacketSent\"]'\n ),\n ],\n\n [\n 'PacketDelivered',\n new beet.BeetArgsStruct<EndpointEventRecord['PacketDelivered']>(\n [\n ['srcEid', beet.u32],\n ['sender', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['receiver', beetSolana.publicKey],\n ['nonce', beet.u64],\n ['payloadHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['receiveLibrary', beetSolana.publicKey],\n ],\n 'EndpointEventRecord[\"PacketDelivered\"]'\n ),\n ],\n\n [\n 'PacketReceived',\n new beet.BeetArgsStruct<EndpointEventRecord['PacketReceived']>(\n [\n ['srcEid', beet.u32],\n ['sender', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['receiver', beetSolana.publicKey],\n ['nonce', beet.u64],\n ['payloadHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ],\n 'EndpointEventRecord[\"PacketReceived\"]'\n ),\n ],\n\n [\n 'ComposedMessageDelivered',\n new beet.FixableBeetArgsStruct<\n EndpointEventRecord['ComposedMessageDelivered']\n >(\n [\n ['receiver', beetSolana.publicKey],\n ['composer', beetSolana.publicKey],\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'EndpointEventRecord[\"ComposedMessageDelivered\"]'\n ),\n ],\n\n [\n 'ComposedMessageReceived',\n new beet.BeetArgsStruct<EndpointEventRecord['ComposedMessageReceived']>(\n [\n ['receiver', beetSolana.publicKey],\n ['composer', beetSolana.publicKey],\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['messageHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ],\n 'EndpointEventRecord[\"ComposedMessageReceived\"]'\n ),\n ],\n]) as beet.FixableBeet<EndpointEvent, EndpointEvent>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { QuoteParams, quoteParamsBeet } from '../types/QuoteParams'\n\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionArgs = {\n params: QuoteParams\n}\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport const quoteStruct = new beet.FixableBeetArgsStruct<\n QuoteInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', quoteParamsBeet],\n ],\n 'QuoteInstructionArgs'\n)\n/**\n * Accounts required by the _quote_ instruction\n *\n * @property [] sendLibrary\n * @property [] sendLibraryConfig\n * @property [] defaultSendLibraryConfig\n * @property [] sendLibraryAuthority\n * @property [] endpoint\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionAccounts = {\n sendLibrary: web3.PublicKey\n sendLibraryConfig: web3.PublicKey\n defaultSendLibraryConfig: web3.PublicKey\n sendLibraryAuthority: web3.PublicKey\n endpoint: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const quoteInstructionDiscriminator = [\n 149, 42, 109, 247, 134, 146, 213, 123,\n]\n\n/**\n * Creates a _Quote_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport function createQuoteInstruction(\n accounts: QuoteInstructionAccounts,\n args: QuoteInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = quoteStruct.serialize({\n instructionDiscriminator: quoteInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.sendLibrary,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.sendLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultSendLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.sendLibraryAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type QuoteParams = {\n sender: web3.PublicKey\n dstEid: number\n message: Uint8Array\n payInLzToken: boolean\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const quoteParamsBeet = new beet.FixableBeetArgsStruct<QuoteParams>(\n [\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['message', beet.bytes],\n ['payInLzToken', beet.bool],\n ['options', beet.bytes],\n ],\n 'QuoteParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\n\n/**\n * @category Instructions\n * @category RegisterLibrary\n * @category generated\n */\nexport const registerLibraryStruct = new beet.BeetArgsStruct<{\n instructionDiscriminator: number[] /* size: 8 */\n}>(\n [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],\n 'RegisterLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _registerLibrary_ instruction\n *\n * @property [_writable_, **signer**] admin\n * @property [] endpoint\n * @property [] messageLib\n * @property [_writable_] messageLibAuthority\n * @category Instructions\n * @category RegisterLibrary\n * @category generated\n */\nexport type RegisterLibraryInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n messageLib: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const registerLibraryInstructionDiscriminator = [\n 23, 171, 28, 116, 111, 193, 238, 142,\n]\n\n/**\n * Creates a _RegisterLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @category Instructions\n * @category RegisterLibrary\n * @category generated\n */\nexport function createRegisterLibraryInstruction(\n accounts: RegisterLibraryInstructionAccounts,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = registerLibraryStruct.serialize({\n instructionDiscriminator: registerLibraryInstructionDiscriminator,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n ResetConfigParams,\n resetConfigParamsBeet,\n} from '../types/ResetConfigParams'\n\n/**\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport type ResetConfigInstructionArgs = {\n params: ResetConfigParams\n}\n/**\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport const resetConfigStruct = new beet.BeetArgsStruct<\n ResetConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', resetConfigParamsBeet],\n ],\n 'ResetConfigInstructionArgs'\n)\n/**\n * Accounts required by the _resetConfig_ instruction\n *\n * @property [**signer**] oapp\n * @property [] messageLibAuthority\n * @property [] messageLib\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport type ResetConfigInstructionAccounts = {\n oapp: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const resetConfigInstructionDiscriminator = [\n 81, 97, 49, 46, 19, 200, 8, 99,\n]\n\n/**\n * Creates a _ResetConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport function createResetConfigInstruction(\n accounts: ResetConfigInstructionAccounts,\n args: ResetConfigInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = resetConfigStruct.serialize({\n instructionDiscriminator: resetConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.oapp,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type ResetConfigParams = {\n messageLib: web3.PublicKey\n eid: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const resetConfigParamsBeet = new beet.BeetArgsStruct<ResetConfigParams>(\n [\n ['messageLib', beetSolana.publicKey],\n ['eid', beet.u32],\n ],\n 'ResetConfigParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SendParams, sendParamsBeet } from '../types/SendParams'\n\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionArgs = {\n params: SendParams\n}\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport const sendStruct = new beet.FixableBeetArgsStruct<\n SendInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', sendParamsBeet],\n ],\n 'SendInstructionArgs'\n)\n/**\n * Accounts required by the _send_ instruction\n *\n * @property [**signer**] sender\n * @property [_writable_] sendLibrary\n * @property [] sendLibraryConfig\n * @property [] defaultSendLibraryConfig\n * @property [] sendLibraryAuthority\n * @property [] endpoint\n * @property [] endpointProgram\n * @property [_writable_] nonce\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionAccounts = {\n sender: web3.PublicKey\n sendLibrary: web3.PublicKey\n sendLibraryConfig: web3.PublicKey\n defaultSendLibraryConfig: web3.PublicKey\n sendLibraryAuthority: web3.PublicKey\n endpoint: web3.PublicKey\n endpointProgram: web3.PublicKey\n nonce: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const sendInstructionDiscriminator = [102, 251, 20, 187, 65, 75, 12, 69]\n\n/**\n * Creates a _Send_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport function createSendInstruction(\n accounts: SendInstructionAccounts,\n args: SendInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = sendStruct.serialize({\n instructionDiscriminator: sendInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.sender,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.sendLibrary,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.sendLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultSendLibraryConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.sendLibraryAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointProgram,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.nonce,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SendParams = {\n dstEid: number\n receiver: number[] /* size: 32 */\n message: Uint8Array\n options: Uint8Array\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const sendParamsBeet = new beet.FixableBeetArgsStruct<SendParams>(\n [\n ['dstEid', beet.u32],\n ['receiver', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ['options', beet.bytes],\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'SendParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetConfigParams, setConfigParamsBeet } from '../types/SetConfigParams'\n\n/**\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport type SetConfigInstructionArgs = {\n params: SetConfigParams\n}\n/**\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport const setConfigStruct = new beet.FixableBeetArgsStruct<\n SetConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setConfigParamsBeet],\n ],\n 'SetConfigInstructionArgs'\n)\n/**\n * Accounts required by the _setConfig_ instruction\n *\n * @property [**signer**] oapp\n * @property [] messageLibAuthority\n * @property [] messageLib\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport type SetConfigInstructionAccounts = {\n oapp: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setConfigInstructionDiscriminator = [\n 108, 158, 154, 175, 212, 98, 52, 66,\n]\n\n/**\n * Creates a _SetConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport function createSetConfigInstruction(\n accounts: SetConfigInstructionAccounts,\n args: SetConfigInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setConfigStruct.serialize({\n instructionDiscriminator: setConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.oapp,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetConfigParams = {\n messageLib: web3.PublicKey\n eid: number\n configType: number\n config: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setConfigParamsBeet =\n new beet.FixableBeetArgsStruct<SetConfigParams>(\n [\n ['messageLib', beetSolana.publicKey],\n ['eid', beet.u32],\n ['configType', beet.u32],\n ['config', beet.bytes],\n ],\n 'SetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultReceiveLibraryParams,\n setDefaultReceiveLibraryParamsBeet,\n} from '../types/SetDefaultReceiveLibraryParams'\n\n/**\n * @category Instructions\n * @category SetDefaultReceiveLibrary\n * @category generated\n */\nexport type SetDefaultReceiveLibraryInstructionArgs = {\n params: SetDefaultReceiveLibraryParams\n}\n/**\n * @category Instructions\n * @category SetDefaultReceiveLibrary\n * @category generated\n */\nexport const setDefaultReceiveLibraryStruct = new beet.BeetArgsStruct<\n SetDefaultReceiveLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultReceiveLibraryParamsBeet],\n ],\n 'SetDefaultReceiveLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultReceiveLibrary_ instruction\n *\n * @property [**signer**] admin\n * @property [] endpoint\n * @property [_writable_] defaultReceiveLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetDefaultReceiveLibrary\n * @category generated\n */\nexport type SetDefaultReceiveLibraryInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n defaultReceiveLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultReceiveLibraryInstructionDiscriminator = [\n 14, 162, 167, 212, 13, 20, 151, 129,\n]\n\n/**\n * Creates a _SetDefaultReceiveLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultReceiveLibrary\n * @category generated\n */\nexport function createSetDefaultReceiveLibraryInstruction(\n accounts: SetDefaultReceiveLibraryInstructionAccounts,\n args: SetDefaultReceiveLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setDefaultReceiveLibraryStruct.serialize({\n instructionDiscriminator: setDefaultReceiveLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultReceiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetDefaultReceiveLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n gracePeriod: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultReceiveLibraryParamsBeet =\n new beet.BeetArgsStruct<SetDefaultReceiveLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ['gracePeriod', beet.u64],\n ],\n 'SetDefaultReceiveLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultReceiveLibraryTimeoutParams,\n setDefaultReceiveLibraryTimeoutParamsBeet,\n} from '../types/SetDefaultReceiveLibraryTimeoutParams'\n\n/**\n * @category Instructions\n * @category SetDefaultReceiveLibraryTimeout\n * @category generated\n */\nexport type SetDefaultReceiveLibraryTimeoutInstructionArgs = {\n params: SetDefaultReceiveLibraryTimeoutParams\n}\n/**\n * @category Instructions\n * @category SetDefaultReceiveLibraryTimeout\n * @category generated\n */\nexport const setDefaultReceiveLibraryTimeoutStruct = new beet.BeetArgsStruct<\n SetDefaultReceiveLibraryTimeoutInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultReceiveLibraryTimeoutParamsBeet],\n ],\n 'SetDefaultReceiveLibraryTimeoutInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultReceiveLibraryTimeout_ instruction\n *\n * @property [**signer**] admin\n * @property [] endpoint\n * @property [_writable_] defaultReceiveLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetDefaultReceiveLibraryTimeout\n * @category generated\n */\nexport type SetDefaultReceiveLibraryTimeoutInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n defaultReceiveLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultReceiveLibraryTimeoutInstructionDiscriminator = [\n 118, 32, 94, 51, 25, 247, 16, 232,\n]\n\n/**\n * Creates a _SetDefaultReceiveLibraryTimeout_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultReceiveLibraryTimeout\n * @category generated\n */\nexport function createSetDefaultReceiveLibraryTimeoutInstruction(\n accounts: SetDefaultReceiveLibraryTimeoutInstructionAccounts,\n args: SetDefaultReceiveLibraryTimeoutInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setDefaultReceiveLibraryTimeoutStruct.serialize({\n instructionDiscriminator:\n setDefaultReceiveLibraryTimeoutInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultReceiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetDefaultReceiveLibraryTimeoutParams = {\n eid: number\n lib: web3.PublicKey\n expiry: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultReceiveLibraryTimeoutParamsBeet =\n new beet.BeetArgsStruct<SetDefaultReceiveLibraryTimeoutParams>(\n [\n ['eid', beet.u32],\n ['lib', beetSolana.publicKey],\n ['expiry', beet.i64],\n ],\n 'SetDefaultReceiveLibraryTimeoutParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultSendLibraryParams,\n setDefaultSendLibraryParamsBeet,\n} from '../types/SetDefaultSendLibraryParams'\n\n/**\n * @category Instructions\n * @category SetDefaultSendLibrary\n * @category generated\n */\nexport type SetDefaultSendLibraryInstructionArgs = {\n params: SetDefaultSendLibraryParams\n}\n/**\n * @category Instructions\n * @category SetDefaultSendLibrary\n * @category generated\n */\nexport const setDefaultSendLibraryStruct = new beet.BeetArgsStruct<\n SetDefaultSendLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultSendLibraryParamsBeet],\n ],\n 'SetDefaultSendLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultSendLibrary_ instruction\n *\n * @property [**signer**] admin\n * @property [] endpoint\n * @property [_writable_] defaultSendLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetDefaultSendLibrary\n * @category generated\n */\nexport type SetDefaultSendLibraryInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n defaultSendLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultSendLibraryInstructionDiscriminator = [\n 220, 215, 110, 127, 237, 178, 215, 170,\n]\n\n/**\n * Creates a _SetDefaultSendLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultSendLibrary\n * @category generated\n */\nexport function createSetDefaultSendLibraryInstruction(\n accounts: SetDefaultSendLibraryInstructionAccounts,\n args: SetDefaultSendLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setDefaultSendLibraryStruct.serialize({\n instructionDiscriminator: setDefaultSendLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultSendLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetDefaultSendLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultSendLibraryParamsBeet =\n new beet.BeetArgsStruct<SetDefaultSendLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ],\n 'SetDefaultSendLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetLayerzeroTokenParams,\n setLayerzeroTokenParamsBeet,\n} from '../types/SetLayerzeroTokenParams'\n\n/**\n * @category Instructions\n * @category SetLayerzeroToken\n * @category generated\n */\nexport type SetLayerzeroTokenInstructionArgs = {\n params: SetLayerzeroTokenParams\n}\n/**\n * @category Instructions\n * @category SetLayerzeroToken\n * @category generated\n */\nexport const setLayerzeroTokenStruct = new beet.FixableBeetArgsStruct<\n SetLayerzeroTokenInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setLayerzeroTokenParamsBeet],\n ],\n 'SetLayerzeroTokenInstructionArgs'\n)\n/**\n * Accounts required by the _setLayerzeroToken_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] endpoint\n * @category Instructions\n * @category SetLayerzeroToken\n * @category generated\n */\nexport type SetLayerzeroTokenInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setLayerzeroTokenInstructionDiscriminator = [\n 53, 136, 83, 234, 245, 223, 194, 248,\n]\n\n/**\n * Creates a _SetLayerzeroToken_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetLayerzeroToken\n * @category generated\n */\nexport function createSetLayerzeroTokenInstruction(\n accounts: SetLayerzeroTokenInstructionAccounts,\n args: SetLayerzeroTokenInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setLayerzeroTokenStruct.serialize({\n instructionDiscriminator: setLayerzeroTokenInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetLayerzeroTokenParams = {\n lzToken: beet.COption<web3.PublicKey>\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setLayerzeroTokenParamsBeet =\n new beet.FixableBeetArgsStruct<SetLayerzeroTokenParams>(\n [['lzToken', beet.coption(beetSolana.publicKey)]],\n 'SetLayerzeroTokenParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetReceiveLibraryParams,\n setReceiveLibraryParamsBeet,\n} from '../types/SetReceiveLibraryParams'\n\n/**\n * @category Instructions\n * @category SetReceiveLibrary\n * @category generated\n */\nexport type SetReceiveLibraryInstructionArgs = {\n params: SetReceiveLibraryParams\n}\n/**\n * @category Instructions\n * @category SetReceiveLibrary\n * @category generated\n */\nexport const setReceiveLibraryStruct = new beet.BeetArgsStruct<\n SetReceiveLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setReceiveLibraryParamsBeet],\n ],\n 'SetReceiveLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _setReceiveLibrary_ instruction\n *\n * @property [**signer**] receiver\n * @property [_writable_] receiveLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetReceiveLibrary\n * @category generated\n */\nexport type SetReceiveLibraryInstructionAccounts = {\n receiver: web3.PublicKey\n receiveLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setReceiveLibraryInstructionDiscriminator = [\n 223, 172, 180, 105, 165, 161, 147, 228,\n]\n\n/**\n * Creates a _SetReceiveLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetReceiveLibrary\n * @category generated\n */\nexport function createSetReceiveLibraryInstruction(\n accounts: SetReceiveLibraryInstructionAccounts,\n args: SetReceiveLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setReceiveLibraryStruct.serialize({\n instructionDiscriminator: setReceiveLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.receiver,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetReceiveLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n gracePeriod: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setReceiveLibraryParamsBeet =\n new beet.BeetArgsStruct<SetReceiveLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ['gracePeriod', beet.u64],\n ],\n 'SetReceiveLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetReceiveLibraryTimeoutParams,\n setReceiveLibraryTimeoutParamsBeet,\n} from '../types/SetReceiveLibraryTimeoutParams'\n\n/**\n * @category Instructions\n * @category SetReceiveLibraryTimeout\n * @category generated\n */\nexport type SetReceiveLibraryTimeoutInstructionArgs = {\n params: SetReceiveLibraryTimeoutParams\n}\n/**\n * @category Instructions\n * @category SetReceiveLibraryTimeout\n * @category generated\n */\nexport const setReceiveLibraryTimeoutStruct = new beet.BeetArgsStruct<\n SetReceiveLibraryTimeoutInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setReceiveLibraryTimeoutParamsBeet],\n ],\n 'SetReceiveLibraryTimeoutInstructionArgs'\n)\n/**\n * Accounts required by the _setReceiveLibraryTimeout_ instruction\n *\n * @property [**signer**] receiver\n * @property [_writable_] receiveLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetReceiveLibraryTimeout\n * @category generated\n */\nexport type SetReceiveLibraryTimeoutInstructionAccounts = {\n receiver: web3.PublicKey\n receiveLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setReceiveLibraryTimeoutInstructionDiscriminator = [\n 33, 159, 29, 53, 218, 156, 41, 192,\n]\n\n/**\n * Creates a _SetReceiveLibraryTimeout_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetReceiveLibraryTimeout\n * @category generated\n */\nexport function createSetReceiveLibraryTimeoutInstruction(\n accounts: SetReceiveLibraryTimeoutInstructionAccounts,\n args: SetReceiveLibraryTimeoutInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setReceiveLibraryTimeoutStruct.serialize({\n instructionDiscriminator: setReceiveLibraryTimeoutInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.receiver,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetReceiveLibraryTimeoutParams = {\n eid: number\n lib: web3.PublicKey\n expiry: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setReceiveLibraryTimeoutParamsBeet =\n new beet.BeetArgsStruct<SetReceiveLibraryTimeoutParams>(\n [\n ['eid', beet.u32],\n ['lib', beetSolana.publicKey],\n ['expiry', beet.i64],\n ],\n 'SetReceiveLibraryTimeoutParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetSendLibraryParams,\n setSendLibraryParamsBeet,\n} from '../types/SetSendLibraryParams'\n\n/**\n * @category Instructions\n * @category SetSendLibrary\n * @category generated\n */\nexport type SetSendLibraryInstructionArgs = {\n params: SetSendLibraryParams\n}\n/**\n * @category Instructions\n * @category SetSendLibrary\n * @category generated\n */\nexport const setSendLibraryStruct = new beet.BeetArgsStruct<\n SetSendLibraryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setSendLibraryParamsBeet],\n ],\n 'SetSendLibraryInstructionArgs'\n)\n/**\n * Accounts required by the _setSendLibrary_ instruction\n *\n * @property [**signer**] sender\n * @property [_writable_] sendLibraryConfig\n * @property [] messageLibAuthority\n * @category Instructions\n * @category SetSendLibrary\n * @category generated\n */\nexport type SetSendLibraryInstructionAccounts = {\n sender: web3.PublicKey\n sendLibraryConfig: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setSendLibraryInstructionDiscriminator = [\n 251, 118, 78, 158, 134, 149, 129, 5,\n]\n\n/**\n * Creates a _SetSendLibrary_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetSendLibrary\n * @category generated\n */\nexport function createSetSendLibraryInstruction(\n accounts: SetSendLibraryInstructionAccounts,\n args: SetSendLibraryInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = setSendLibraryStruct.serialize({\n instructionDiscriminator: setSendLibraryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.sender,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.sendLibraryConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type SetSendLibraryParams = {\n eid: number\n newLib: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setSendLibraryParamsBeet =\n new beet.BeetArgsStruct<SetSendLibraryParams>(\n [\n ['eid', beet.u32],\n ['newLib', beetSolana.publicKey],\n ],\n 'SetSendLibraryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SkipParams, skipParamsBeet } from '../types/SkipParams'\n\n/**\n * @category Instructions\n * @category Skip\n * @category generated\n */\nexport type SkipInstructionArgs = {\n params: SkipParams\n}\n/**\n * @category Instructions\n * @category Skip\n * @category generated\n */\nexport const skipStruct = new beet.BeetArgsStruct<\n SkipInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', skipParamsBeet],\n ],\n 'SkipInstructionArgs'\n)\n/**\n * Accounts required by the _skip_ instruction\n *\n * @property [**signer**] receiver\n * @property [_writable_] nonce\n * @property [_writable_] pendingNonce\n * @category Instructions\n * @category Skip\n * @category generated\n */\nexport type SkipInstructionAccounts = {\n receiver: web3.PublicKey\n nonce: web3.PublicKey\n pendingNonce: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const skipInstructionDiscriminator = [154, 63, 181, 53, 19, 26, 117, 45]\n\n/**\n * Creates a _Skip_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Skip\n * @category generated\n */\nexport function createSkipInstruction(\n accounts: SkipInstructionAccounts,\n args: SkipInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = skipStruct.serialize({\n instructionDiscriminator: skipInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.receiver,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.nonce,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.pendingNonce,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SkipParams = {\n srcEid: number\n sender: number[] /* size: 32 */\n nonce: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const skipParamsBeet = new beet.BeetArgsStruct<SkipParams>(\n [\n ['srcEid', beet.u32],\n ['sender', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['nonce', beet.u64],\n ],\n 'SkipParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SnapshotConfigParams,\n snapshotConfigParamsBeet,\n} from '../types/SnapshotConfigParams'\n\n/**\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport type SnapshotConfigInstructionArgs = {\n params: SnapshotConfigParams\n}\n/**\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport const snapshotConfigStruct = new beet.BeetArgsStruct<\n SnapshotConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', snapshotConfigParamsBeet],\n ],\n 'SnapshotConfigInstructionArgs'\n)\n/**\n * Accounts required by the _snapshotConfig_ instruction\n *\n * @property [**signer**] oapp\n * @property [] messageLibAuthority\n * @property [] messageLib\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport type SnapshotConfigInstructionAccounts = {\n oapp: web3.PublicKey\n messageLibAuthority: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const snapshotConfigInstructionDiscriminator = [\n 11, 153, 235, 114, 93, 177, 208, 119,\n]\n\n/**\n * Creates a _SnapshotConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport function createSnapshotConfigInstruction(\n accounts: SnapshotConfigInstructionAccounts,\n args: SnapshotConfigInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = snapshotConfigStruct.serialize({\n instructionDiscriminator: snapshotConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.oapp,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLibAuthority,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SnapshotConfigParams = {\n messageLib: web3.PublicKey\n eid: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const snapshotConfigParamsBeet =\n new beet.BeetArgsStruct<SnapshotConfigParams>(\n [\n ['messageLib', beetSolana.publicKey],\n ['eid', beet.u32],\n ],\n 'SnapshotConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n TransferAdminParams,\n transferAdminParamsBeet,\n} from '../types/TransferAdminParams'\n\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionArgs = {\n params: TransferAdminParams\n}\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport const transferAdminStruct = new beet.BeetArgsStruct<\n TransferAdminInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', transferAdminParamsBeet],\n ],\n 'TransferAdminInstructionArgs'\n)\n/**\n * Accounts required by the _transferAdmin_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] endpoint\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionAccounts = {\n admin: web3.PublicKey\n endpoint: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const transferAdminInstructionDiscriminator = [\n 42, 242, 66, 106, 228, 10, 111, 156,\n]\n\n/**\n * Creates a _TransferAdmin_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport function createTransferAdminInstruction(\n accounts: TransferAdminInstructionAccounts,\n args: TransferAdminInstructionArgs,\n programId = new web3.PublicKey('76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')\n) {\n const [data] = transferAdminStruct.serialize({\n instructionDiscriminator: transferAdminInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.endpoint,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type TransferAdminParams = {\n admin: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const transferAdminParamsBeet =\n new beet.BeetArgsStruct<TransferAdminParams>(\n [['admin', beetSolana.publicKey]],\n 'TransferAdminParams'\n )\n","export * from './ClearComposedMessageParams'\nexport * from './ClearParams'\nexport * from './DeliverComposedMessageParams'\nexport * from './DeliverParams'\nexport * from './EndpointEvent'\nexport * from './InitConfigParams'\nexport * from './InitDefaultReceiveLibraryParams'\nexport * from './InitDefaultSendLibraryParams'\nexport * from './InitEndpointParams'\nexport * from './InitNonceParams'\nexport * from './InitReceiveLibraryParams'\nexport * from './InitSendLibraryParams'\nexport * from './MessageLibQuoteParams'\nexport * from './MessageLibResetConfigParams'\nexport * from './MessageLibSendParams'\nexport * from './MessageLibSetConfigParams'\nexport * from './MessageLibSnapshotConfigParams'\nexport * from './MessagingFee'\nexport * from './MessagingReceipt'\nexport * from './Packet'\nexport * from './PacketForQuote'\nexport * from './QuoteParams'\nexport * from './ReceiveLibraryTimeout'\nexport * from './ResetConfigParams'\nexport * from './SendParams'\nexport * from './SetConfigParams'\nexport * from './SetDefaultReceiveLibraryParams'\nexport * from './SetDefaultReceiveLibraryTimeoutParams'\nexport * from './SetDefaultSendLibraryParams'\nexport * from './SetLayerzeroTokenParams'\nexport * from './SetReceiveLibraryParams'\nexport * from './SetReceiveLibraryTimeoutParams'\nexport * from './SetSendLibraryParams'\nexport * from './SkipParams'\nexport * from './SnapshotConfigParams'\nexport * from './TransferAdminParams'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { PacketForQuote, packetForQuoteBeet } from './PacketForQuote'\nexport type MessageLibQuoteParams = {\n packet: PacketForQuote\n payInLzToken: boolean\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibQuoteParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibQuoteParams>(\n [\n ['packet', packetForQuoteBeet],\n ['payInLzToken', beet.bool],\n ['options', beet.bytes],\n ],\n 'MessageLibQuoteParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type PacketForQuote = {\n sender: web3.PublicKey\n dstEid: number\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetForQuoteBeet =\n new beet.FixableBeetArgsStruct<PacketForQuote>(\n [\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['message', beet.bytes],\n ],\n 'PacketForQuote'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibResetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibResetConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibResetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibResetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Packet, packetBeet } from './Packet'\nexport type MessageLibSendParams = {\n guid: number[] /* size: 32 */\n packet: Packet\n options: Uint8Array\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSendParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSendParams>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['packet', packetBeet],\n ['options', beet.bytes],\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessageLibSendParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type Packet = {\n nonce: beet.bignum\n srcEid: number\n sender: web3.PublicKey\n dstEid: number\n receiver: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetBeet = new beet.FixableBeetArgsStruct<Packet>(\n [\n ['nonce', beet.u64],\n ['srcEid', beet.u32],\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['receiver', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'Packet'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n configType: number\n config: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSetConfigParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ['configType', beet.u32],\n ['config', beet.bytes],\n ],\n 'MessageLibSetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSnapshotConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSnapshotConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibSnapshotConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibSnapshotConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type MessagingFee = {\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingFeeBeet = new beet.BeetArgsStruct<MessagingFee>(\n [\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessagingFee'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { MessagingFee, messagingFeeBeet } from './MessagingFee'\nexport type MessagingReceipt = {\n guid: number[] /* size: 32 */\n nonce: beet.bignum\n fee: MessagingFee\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingReceiptBeet = new beet.BeetArgsStruct<MessagingReceipt>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['nonce', beet.u64],\n ['fee', messagingFeeBeet],\n ],\n 'MessagingReceipt'\n)\n","import {\n AccountMeta,\n Commitment,\n Connection,\n GetAccountInfoConfig,\n PublicKey,\n TransactionInstruction,\n} from '@solana/web3.js'\n\nimport { PacketV1Codec } from '@layerzerolabs/lz-v2-utilities'\n\nimport * as accounts from './generated/simple_messagelib/accounts'\nimport * as instructions from './generated/simple_messagelib/instructions'\nimport * as types from './generated/simple_messagelib/types'\nimport { EndpointPDADeriver, MessageLibPDADeriver } from './pda-deriver'\n\nimport { EndpointProgram } from '.'\n\nexport { accounts, instructions, types }\n\nexport class SimpleMessageLib {\n messageLibDeriver: MessageLibPDADeriver\n\n constructor(public program: PublicKey) {\n this.messageLibDeriver = new MessageLibPDADeriver(program)\n }\n\n async initSimpleMessageLib(\n connection: Connection,\n endpointProgram: PublicKey,\n payer: PublicKey,\n admin: PublicKey,\n eid: number,\n nativeFee: number\n ): Promise<TransactionInstruction | null> {\n const [messageLib] = this.messageLibDeriver.messageLib()\n const info = await connection.getAccountInfo(messageLib)\n if (!info) {\n const [endpointAuth] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(messageLib)\n return instructions.createInitMessageLibInstruction(\n <instructions.InitMessageLibInstructionAccounts>{\n payer,\n messageLib,\n },\n {\n params: <types.InitMessageLibParams>{\n endpoint: endpointAuth,\n eid,\n admin,\n fee: nativeFee,\n },\n },\n this.program\n )\n }\n return null\n }\n\n async setWhitelistCaller(admin: PublicKey, newCaller: PublicKey): Promise<TransactionInstruction> {\n const [messageLibPDA] = this.messageLibDeriver.messageLib()\n return instructions.createSetWlCallerInstruction(\n <instructions.SetWlCallerInstructionAccounts>{\n admin,\n messageLib: messageLibPDA,\n },\n <instructions.SetWlCallerInstructionArgs>{\n params: <types.SetWlCallerParams>{\n newCaller,\n },\n },\n this.program\n )\n }\n\n async isWhiteListed(\n connection: Connection,\n caller: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<boolean> {\n try {\n const exceptedCaller = await this.getWhiteListCaller(connection, commitmentOrConfig)\n return exceptedCaller.equals(caller)\n } catch (e) {\n return false\n }\n }\n\n async getWhiteListCaller(\n connection: Connection,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<PublicKey> {\n const [messageLibPDA] = this.messageLibDeriver.messageLib()\n const messageLibInfo = await accounts.MessageLib.fromAccountAddress(\n connection,\n messageLibPDA,\n commitmentOrConfig\n )\n return messageLibInfo.wlCaller\n }\n\n async validatePacket(\n connection: Connection,\n endpointProgram: PublicKey,\n payer: PublicKey,\n encodedPacket: Uint8Array\n ): Promise<TransactionInstruction> {\n const packet = PacketV1Codec.fromBytes(encodedPacket)\n const [receiveLibrary] = this.messageLibDeriver.messageLib()\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return instructions.createValidatePacketInstruction(\n <instructions.ValidatePacketInstructionAccounts>{\n payer: payer,\n receiveLibrary,\n anchorRemainingAccounts: await endpoint.getDeliverIXAccountMetaForCPI(\n connection,\n payer,\n packet,\n receiveLibrary\n ),\n },\n <instructions.ValidatePacketInstructionArgs>{\n params: <types.ValidatePacketParams>{ packet: encodedPacket },\n },\n this.program\n )\n }\n\n /***\n * Get the account meta of the send instruction for CPI(Cross-Program Invocation )\n */\n async getSendIXAccountMetaForCPI(endpointProgram: PublicKey, payer: PublicKey): Promise<Array<AccountMeta>> {\n const [msgLib] = this.messageLibDeriver.messageLib()\n const [endpointAuth] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n const ix = instructions.createSendInstruction(\n <instructions.SendInstructionAccounts>{\n endpoint: endpointAuth, //signer\n messageLib: msgLib,\n payer,\n },\n /// Fake value. params is useless.\n <instructions.SendInstructionArgs>{\n params: <types.MessageLibSendParams>{\n guid: Array.from(endpointProgram.toBytes()),\n packet: <types.Packet>{\n nonce: 0,\n srcEid: 0,\n sender: endpointProgram,\n dstEid: 0,\n receiver: Array.from(endpointProgram.toBytes()),\n message: Uint8Array.from(Buffer.from('test')),\n },\n options: Uint8Array.from(Buffer.from('test')),\n nativeFee: 0,\n lzTokenFee: 0,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n async getQuoteIXAccountMetaForCPI(payInLzToken: boolean): Promise<Array<AccountMeta>> {\n const [msgLib] = this.messageLibDeriver.messageLib()\n const ix = instructions.createQuoteInstruction(\n <instructions.QuoteInstructionAccounts>{\n messageLib: msgLib,\n },\n // Fake params, just to get ix.keys\n <instructions.QuoteInstructionArgs>{\n params: <types.MessageLibQuoteParams>{\n packet: <types.PacketForQuote>{\n sender: msgLib,\n dstEid: 1,\n message: Uint8Array.from([]),\n },\n payInLzToken,\n options: Uint8Array.from([]),\n },\n }\n )\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n}\n","export * from './MessageLib'\n\nimport { MessageLib } from './MessageLib'\n\nexport const accountProviders = { MessageLib }\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link MessageLib}\n * @category Accounts\n * @category generated\n */\nexport type MessageLibArgs = {\n eid: number\n endpoint: web3.PublicKey\n bump: number\n admin: web3.PublicKey\n treasury: web3.PublicKey\n fee: beet.bignum\n wlCaller: web3.PublicKey\n}\n\nexport const messageLibDiscriminator = [141, 191, 244, 48, 52, 174, 199, 209]\n/**\n * Holds the data for the {@link MessageLib} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class MessageLib implements MessageLibArgs {\n private constructor(\n readonly eid: number,\n readonly endpoint: web3.PublicKey,\n readonly bump: number,\n readonly admin: web3.PublicKey,\n readonly treasury: web3.PublicKey,\n readonly fee: beet.bignum,\n readonly wlCaller: web3.PublicKey\n ) {}\n\n /**\n * Creates a {@link MessageLib} instance from the provided args.\n */\n static fromArgs(args: MessageLibArgs) {\n return new MessageLib(\n args.eid,\n args.endpoint,\n args.bump,\n args.admin,\n args.treasury,\n args.fee,\n args.wlCaller\n )\n }\n\n /**\n * Deserializes the {@link MessageLib} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [MessageLib, number] {\n return MessageLib.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link MessageLib} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<MessageLib> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find MessageLib account at ${address}`)\n }\n return MessageLib.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, messageLibBeet)\n }\n\n /**\n * Deserializes the {@link MessageLib} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [MessageLib, number] {\n return messageLibBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link MessageLib} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return messageLibBeet.serialize({\n accountDiscriminator: messageLibDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link MessageLib}\n */\n static get byteSize() {\n return messageLibBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link MessageLib} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n MessageLib.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link MessageLib} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === MessageLib.byteSize\n }\n\n /**\n * Returns a readable version of {@link MessageLib} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n eid: this.eid,\n endpoint: this.endpoint.toBase58(),\n bump: this.bump,\n admin: this.admin.toBase58(),\n treasury: this.treasury.toBase58(),\n fee: (() => {\n const x = <{ toNumber: () => number }>this.fee\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n wlCaller: this.wlCaller.toBase58(),\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const messageLibBeet = new beet.BeetStruct<\n MessageLib,\n MessageLibArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['eid', beet.u32],\n ['endpoint', beetSolana.publicKey],\n ['bump', beet.u8],\n ['admin', beetSolana.publicKey],\n ['treasury', beetSolana.publicKey],\n ['fee', beet.u64],\n ['wlCaller', beetSolana.publicKey],\n ],\n MessageLib.fromArgs,\n 'MessageLib'\n)\n","export * from './initMessageLib'\nexport * from './quote'\nexport * from './send'\nexport * from './setFee'\nexport * from './setWlCaller'\nexport * from './transferAdmin'\nexport * from './validatePacket'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitMessageLibParams,\n initMessageLibParamsBeet,\n} from '../types/InitMessageLibParams'\n\n/**\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport type InitMessageLibInstructionArgs = {\n params: InitMessageLibParams\n}\n/**\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport const initMessageLibStruct = new beet.BeetArgsStruct<\n InitMessageLibInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initMessageLibParamsBeet],\n ],\n 'InitMessageLibInstructionArgs'\n)\n/**\n * Accounts required by the _initMessageLib_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] messageLib\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport type InitMessageLibInstructionAccounts = {\n payer: web3.PublicKey\n messageLib: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initMessageLibInstructionDiscriminator = [\n 184, 93, 59, 206, 98, 238, 225, 54,\n]\n\n/**\n * Creates a _InitMessageLib_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport function createInitMessageLibInstruction(\n accounts: InitMessageLibInstructionAccounts,\n args: InitMessageLibInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = initMessageLibStruct.serialize({\n instructionDiscriminator: initMessageLibInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitMessageLibParams = {\n eid: number\n endpoint: web3.PublicKey\n admin: web3.PublicKey\n fee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initMessageLibParamsBeet =\n new beet.BeetArgsStruct<InitMessageLibParams>(\n [\n ['eid', beet.u32],\n ['endpoint', beetSolana.publicKey],\n ['admin', beetSolana.publicKey],\n ['fee', beet.u64],\n ],\n 'InitMessageLibParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibQuoteParams,\n messageLibQuoteParamsBeet,\n} from '../types/MessageLibQuoteParams'\n\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionArgs = {\n params: MessageLibQuoteParams\n}\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport const quoteStruct = new beet.FixableBeetArgsStruct<\n QuoteInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibQuoteParamsBeet],\n ],\n 'QuoteInstructionArgs'\n)\n/**\n * Accounts required by the _quote_ instruction\n *\n * @property [] messageLib\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionAccounts = {\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const quoteInstructionDiscriminator = [\n 149, 42, 109, 247, 134, 146, 213, 123,\n]\n\n/**\n * Creates a _Quote_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport function createQuoteInstruction(\n accounts: QuoteInstructionAccounts,\n args: QuoteInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = quoteStruct.serialize({\n instructionDiscriminator: quoteInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.messageLib,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { PacketForQuote, packetForQuoteBeet } from './PacketForQuote'\nexport type MessageLibQuoteParams = {\n packet: PacketForQuote\n payInLzToken: boolean\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibQuoteParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibQuoteParams>(\n [\n ['packet', packetForQuoteBeet],\n ['payInLzToken', beet.bool],\n ['options', beet.bytes],\n ],\n 'MessageLibQuoteParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type PacketForQuote = {\n sender: web3.PublicKey\n dstEid: number\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetForQuoteBeet =\n new beet.FixableBeetArgsStruct<PacketForQuote>(\n [\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['message', beet.bytes],\n ],\n 'PacketForQuote'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibSendParams,\n messageLibSendParamsBeet,\n} from '../types/MessageLibSendParams'\n\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionArgs = {\n params: MessageLibSendParams\n}\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport const sendStruct = new beet.FixableBeetArgsStruct<\n SendInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibSendParamsBeet],\n ],\n 'SendInstructionArgs'\n)\n/**\n * Accounts required by the _send_ instruction\n *\n * @property [**signer**] endpoint\n * @property [_writable_] messageLib\n * @property [_writable_, **signer**] payer\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionAccounts = {\n endpoint: web3.PublicKey\n messageLib: web3.PublicKey\n payer: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const sendInstructionDiscriminator = [102, 251, 20, 187, 65, 75, 12, 69]\n\n/**\n * Creates a _Send_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport function createSendInstruction(\n accounts: SendInstructionAccounts,\n args: SendInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = sendStruct.serialize({\n instructionDiscriminator: sendInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Packet, packetBeet } from './Packet'\nexport type MessageLibSendParams = {\n guid: number[] /* size: 32 */\n packet: Packet\n options: Uint8Array\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSendParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSendParams>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['packet', packetBeet],\n ['options', beet.bytes],\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessageLibSendParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type Packet = {\n nonce: beet.bignum\n srcEid: number\n sender: web3.PublicKey\n dstEid: number\n receiver: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetBeet = new beet.FixableBeetArgsStruct<Packet>(\n [\n ['nonce', beet.u64],\n ['srcEid', beet.u32],\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['receiver', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'Packet'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetFeeParams, setFeeParamsBeet } from '../types/SetFeeParams'\n\n/**\n * @category Instructions\n * @category SetFee\n * @category generated\n */\nexport type SetFeeInstructionArgs = {\n params: SetFeeParams\n}\n/**\n * @category Instructions\n * @category SetFee\n * @category generated\n */\nexport const setFeeStruct = new beet.BeetArgsStruct<\n SetFeeInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setFeeParamsBeet],\n ],\n 'SetFeeInstructionArgs'\n)\n/**\n * Accounts required by the _setFee_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] messageLib\n * @category Instructions\n * @category SetFee\n * @category generated\n */\nexport type SetFeeInstructionAccounts = {\n admin: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setFeeInstructionDiscriminator = [\n 18, 154, 24, 18, 237, 214, 19, 80,\n]\n\n/**\n * Creates a _SetFee_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetFee\n * @category generated\n */\nexport function createSetFeeInstruction(\n accounts: SetFeeInstructionAccounts,\n args: SetFeeInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = setFeeStruct.serialize({\n instructionDiscriminator: setFeeInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetFeeParams = {\n fee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setFeeParamsBeet = new beet.BeetArgsStruct<SetFeeParams>(\n [['fee', beet.u64]],\n 'SetFeeParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetWlCallerParams,\n setWlCallerParamsBeet,\n} from '../types/SetWlCallerParams'\n\n/**\n * @category Instructions\n * @category SetWlCaller\n * @category generated\n */\nexport type SetWlCallerInstructionArgs = {\n params: SetWlCallerParams\n}\n/**\n * @category Instructions\n * @category SetWlCaller\n * @category generated\n */\nexport const setWlCallerStruct = new beet.BeetArgsStruct<\n SetWlCallerInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setWlCallerParamsBeet],\n ],\n 'SetWlCallerInstructionArgs'\n)\n/**\n * Accounts required by the _setWlCaller_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] messageLib\n * @category Instructions\n * @category SetWlCaller\n * @category generated\n */\nexport type SetWlCallerInstructionAccounts = {\n admin: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setWlCallerInstructionDiscriminator = [\n 153, 41, 240, 37, 126, 107, 14, 253,\n]\n\n/**\n * Creates a _SetWlCaller_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetWlCaller\n * @category generated\n */\nexport function createSetWlCallerInstruction(\n accounts: SetWlCallerInstructionAccounts,\n args: SetWlCallerInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = setWlCallerStruct.serialize({\n instructionDiscriminator: setWlCallerInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetWlCallerParams = {\n newCaller: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setWlCallerParamsBeet = new beet.BeetArgsStruct<SetWlCallerParams>(\n [['newCaller', beetSolana.publicKey]],\n 'SetWlCallerParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n TransferAdminParams,\n transferAdminParamsBeet,\n} from '../types/TransferAdminParams'\n\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionArgs = {\n params: TransferAdminParams\n}\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport const transferAdminStruct = new beet.BeetArgsStruct<\n TransferAdminInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', transferAdminParamsBeet],\n ],\n 'TransferAdminInstructionArgs'\n)\n/**\n * Accounts required by the _transferAdmin_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] messageLib\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionAccounts = {\n admin: web3.PublicKey\n messageLib: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const transferAdminInstructionDiscriminator = [\n 42, 242, 66, 106, 228, 10, 111, 156,\n]\n\n/**\n * Creates a _TransferAdmin_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport function createTransferAdminInstruction(\n accounts: TransferAdminInstructionAccounts,\n args: TransferAdminInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = transferAdminStruct.serialize({\n instructionDiscriminator: transferAdminInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type TransferAdminParams = {\n admin: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const transferAdminParamsBeet =\n new beet.BeetArgsStruct<TransferAdminParams>(\n [['admin', beetSolana.publicKey]],\n 'TransferAdminParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n ValidatePacketParams,\n validatePacketParamsBeet,\n} from '../types/ValidatePacketParams'\n\n/**\n * @category Instructions\n * @category ValidatePacket\n * @category generated\n */\nexport type ValidatePacketInstructionArgs = {\n params: ValidatePacketParams\n}\n/**\n * @category Instructions\n * @category ValidatePacket\n * @category generated\n */\nexport const validatePacketStruct = new beet.FixableBeetArgsStruct<\n ValidatePacketInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', validatePacketParamsBeet],\n ],\n 'ValidatePacketInstructionArgs'\n)\n/**\n * Accounts required by the _validatePacket_ instruction\n *\n * @property [**signer**] payer\n * @property [] receiveLibrary\n * @category Instructions\n * @category ValidatePacket\n * @category generated\n */\nexport type ValidatePacketInstructionAccounts = {\n payer: web3.PublicKey\n receiveLibrary: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const validatePacketInstructionDiscriminator = [\n 34, 146, 107, 76, 157, 98, 105, 211,\n]\n\n/**\n * Creates a _ValidatePacket_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category ValidatePacket\n * @category generated\n */\nexport function createValidatePacketInstruction(\n accounts: ValidatePacketInstructionAccounts,\n args: ValidatePacketInstructionArgs,\n programId = new web3.PublicKey('6GsmxMTHAAiFKfemuM4zBjumTjNSX5CAiw4xSSXM2Toy')\n) {\n const [data] = validatePacketStruct.serialize({\n instructionDiscriminator: validatePacketInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.receiveLibrary,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type ValidatePacketParams = {\n packet: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const validatePacketParamsBeet =\n new beet.FixableBeetArgsStruct<ValidatePacketParams>(\n [['packet', beet.bytes]],\n 'ValidatePacketParams'\n )\n","export * from './InitConfigParams'\nexport * from './InitMessageLibParams'\nexport * from './MessageLibQuoteParams'\nexport * from './MessageLibResetConfigParams'\nexport * from './MessageLibSendParams'\nexport * from './MessageLibSetConfigParams'\nexport * from './MessageLibSnapshotConfigParams'\nexport * from './MessagingFee'\nexport * from './MessagingReceipt'\nexport * from './Packet'\nexport * from './PacketForQuote'\nexport * from './SetFeeParams'\nexport * from './SetWlCallerParams'\nexport * from './TransferAdminParams'\nexport * from './ValidatePacketParams'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initConfigParamsBeet = new beet.BeetArgsStruct<InitConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'InitConfigParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibResetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibResetConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibResetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibResetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n configType: number\n config: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSetConfigParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ['configType', beet.u32],\n ['config', beet.bytes],\n ],\n 'MessageLibSetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSnapshotConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSnapshotConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibSnapshotConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibSnapshotConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type MessagingFee = {\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingFeeBeet = new beet.BeetArgsStruct<MessagingFee>(\n [\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessagingFee'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { MessagingFee, messagingFeeBeet } from './MessagingFee'\nexport type MessagingReceipt = {\n guid: number[] /* size: 32 */\n nonce: beet.bignum\n fee: MessagingFee\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingReceiptBeet = new beet.BeetArgsStruct<MessagingReceipt>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['nonce', beet.u64],\n ['fee', messagingFeeBeet],\n ],\n 'MessagingReceipt'\n)\n","import * as assert from 'assert'\n\nimport { BN } from '@coral-xyz/anchor'\nimport { array as BeetArray, bool as BeetBool, FixableBeetArgsStruct, u32, u64, u8 } from '@metaplex-foundation/beet'\nimport { publicKey as BeetPublicKey } from '@metaplex-foundation/beet-solana'\nimport {\n TOKEN_PROGRAM_ID,\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n getAccount,\n getAssociatedTokenAddress,\n} from '@solana/spl-token'\nimport {\n AccountMeta,\n Commitment,\n Connection,\n GetAccountInfoConfig,\n PublicKey,\n TransactionInstruction,\n} from '@solana/web3.js'\n\nimport { PacketV1Codec } from '@layerzerolabs/lz-v2-utilities'\n\nimport * as accounts from './generated/uln/accounts'\nimport * as instructions from './generated/uln/instructions'\nimport * as types from './generated/uln/types'\nimport { CONFIRMATIONS_SEED, EndpointPDADeriver, UlnPDADeriver } from './pda-deriver'\n\nimport { EndpointProgram } from '.'\nexport { accounts, instructions, types }\n\nexport enum SetConfigType {\n MAX_MESSAGE_SIZE = 1,\n OUTBOUND_CONFIRMATIONS = 2,\n EXECUTOR = 3,\n INBOUND_CONFIRMATIONS = 4,\n ORACLES = 5,\n OPTIONAL_ORACLES = 6,\n}\n\nexport type MaxMessageSize = {\n size: number\n __kind: 'MaxMessageSize'\n}\n\nexport type OutboundConfirmations = {\n confirmations: number\n __kind: 'OutboundConfirmations'\n}\n\nexport type Executor = {\n executor: PublicKey\n __kind: 'Executor'\n}\n\nexport type InboundConfirmations = {\n confirmations: number\n __kind: 'InboundConfirmations'\n}\n\nexport type Oracles = {\n useCustomOracles: boolean\n oracles: PublicKey[]\n __kind: 'Oracles'\n}\n\nexport type OptionalOracles = {\n useCustomOptionalOracles: boolean\n optionalOracles: PublicKey[]\n threshold: number\n __kind: 'OptionalOracles'\n}\n\nexport function constructSetConfigData(\n configType: SetConfigType,\n configData: (\n | MaxMessageSize\n | InboundConfirmations\n | OutboundConfirmations\n | Executor\n | Oracles\n | OptionalOracles\n ) & { __kind: string }\n): Uint8Array {\n let data: Buffer\n if (configType === SetConfigType.MAX_MESSAGE_SIZE && configData.__kind === 'MaxMessageSize') {\n const beetConfigData = new FixableBeetArgsStruct<MaxMessageSize>([['size', u32]])\n ;[data] = beetConfigData.serialize(configData)\n } else if (configType === SetConfigType.INBOUND_CONFIRMATIONS && configData.__kind === 'InboundConfirmations') {\n const beetConfigData = new FixableBeetArgsStruct<InboundConfirmations>([['confirmations', u64]])\n ;[data] = beetConfigData.serialize(configData)\n } else if (configType === SetConfigType.OUTBOUND_CONFIRMATIONS && configData.__kind === 'OutboundConfirmations') {\n const beetConfigData = new FixableBeetArgsStruct<OutboundConfirmations>([['confirmations', u64]])\n ;[data] = beetConfigData.serialize(configData)\n } else if (configType === SetConfigType.EXECUTOR && configData.__kind === 'Executor') {\n const beetConfigData = new FixableBeetArgsStruct<Executor>([['executor', BeetPublicKey]])\n ;[data] = beetConfigData.serialize(configData)\n } else if (configType === SetConfigType.ORACLES && configData.__kind === 'Oracles') {\n const beetConfigData = new FixableBeetArgsStruct<Oracles>([\n ['useCustomOracles', BeetBool],\n ['oracles', BeetArray(BeetPublicKey)],\n ])\n ;[data] = beetConfigData.serialize(configData)\n } else if (configType === SetConfigType.OPTIONAL_ORACLES && configData.__kind === 'OptionalOracles') {\n const beetConfigData = new FixableBeetArgsStruct<OptionalOracles>([\n ['useCustomOptionalOracles', BeetBool],\n ['optionalOracles', BeetArray(BeetPublicKey)],\n ['threshold', u8],\n ])\n ;[data] = beetConfigData.serialize(configData)\n } else {\n throw new Error('invalid config type')\n }\n return Uint8Array.from(data)\n}\n\nexport class Uln {\n ulnDeriver: UlnPDADeriver\n\n constructor(public program: PublicKey) {\n this.ulnDeriver = new UlnPDADeriver(program)\n }\n\n async initUln(\n connection: Connection,\n payer: PublicKey,\n admin: PublicKey,\n endpointProgram: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [setting] = this.ulnDeriver.setting()\n const [msgLib] = this.ulnDeriver.messageLib()\n const [endpointAuth] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n const info = await connection.getAccountInfo(setting, commitmentOrConfig)\n if (info) {\n console.warn('uln already initialized')\n return null\n }\n\n return instructions.createInitUlnInstruction(\n <instructions.InitUlnInstructionAccounts>{\n payer,\n uln: setting,\n messageLib: msgLib,\n },\n <instructions.InitUlnInstructionArgs>{\n params: <types.InitUlnParams>{\n eid,\n admin,\n endpoint: endpointAuth,\n },\n },\n this.program\n )\n }\n\n /**\n * before calling this function, you should call initUln to initialize the uln\n */\n async initOrUpdateDefaultConfig(\n connection: Connection,\n admin: PublicKey,\n eid: number,\n config: types.UlnConfig,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [setting] = this.ulnDeriver.setting()\n const [configPDA] = this.ulnDeriver.config(eid)\n const configInfo = await connection.getAccountInfo(configPDA, commitmentOrConfig)\n if (configInfo) {\n // update default config\n return instructions.createSetDefaultUlnConfigInstruction(\n <instructions.SetDefaultUlnConfigInstructionAccounts>{\n admin,\n uln: setting,\n ulnConfig: configPDA,\n },\n <instructions.SetDefaultUlnConfigInstructionArgs>{\n params: <types.SetDefaultUlnConfigParams>{\n eid,\n config,\n },\n },\n this.program\n )\n } else {\n // init default config\n return instructions.createInitDefaultUlnConfigInstruction(\n <instructions.InitDefaultUlnConfigInstructionAccounts>{\n admin,\n uln: setting,\n ulnConfig: configPDA,\n },\n <instructions.InitDefaultUlnConfigInstructionArgs>{\n params: <types.InitDefaultUlnConfigParams>{\n eid,\n config,\n },\n },\n this.program\n )\n }\n }\n\n /**\n * before calling this function, you should call initUln to initialize the uln\n */\n async setTreasury(\n admin: PublicKey,\n treasury: {\n nativeReceiver: PublicKey\n nativeBp: number\n lzToken: { receiver: PublicKey; fee: number } | null\n } | null\n ): Promise<TransactionInstruction> {\n const [setting] = this.ulnDeriver.setting()\n return instructions.createSetTreasuryInstruction(\n <instructions.SetTreasuryInstructionAccounts>{\n admin,\n uln: setting,\n },\n <instructions.SetTreasuryInstructionArgs>{\n params: <types.SetTreasuryParams>{\n treasury,\n },\n },\n this.program\n )\n }\n\n async transferAdmin(\n connection: Connection,\n admin: PublicKey,\n newAdmin: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction | null> {\n const [setting] = this.ulnDeriver.setting()\n const info = await connection.getAccountInfo(setting, commitmentOrConfig)\n if (!info) {\n console.warn('uln not initialized')\n return null\n }\n return instructions.createTransferAdminInstruction(\n <instructions.TransferAdminInstructionAccounts>{\n admin,\n uln: setting,\n },\n <instructions.TransferAdminInstructionArgs>{\n params: <types.TransferAdminParams>{\n admin: newAdmin,\n },\n },\n this.program\n )\n }\n\n async initOrUpdateDefaultOptions(\n connection: Connection,\n admin: PublicKey,\n eid: number,\n options: Uint8Array,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [setting] = this.ulnDeriver.setting()\n const [defaultOptions] = this.ulnDeriver.options(eid)\n if (!(await connection.getAccountInfo(defaultOptions, commitmentOrConfig))) {\n // init default options\n return instructions.createInitDefaultOptionsInstruction(\n <instructions.InitDefaultOptionsInstructionAccounts>{\n admin,\n uln: setting,\n defaultOptions,\n },\n <instructions.InitDefaultOptionsInstructionArgs>{\n params: <types.InitDefaultOptionsParams>{\n eid,\n options,\n },\n },\n this.program\n )\n } else {\n // update default options\n return instructions.createSetDefaultOptionsInstruction(\n <instructions.SetDefaultOptionsInstructionAccounts>{\n admin,\n uln: setting,\n defaultOptions,\n },\n <instructions.SetDefaultOptionsInstructionArgs>{\n params: <types.SetDefaultOptionsParams>{\n eid,\n options,\n },\n },\n this.program\n )\n }\n }\n\n async registerWorker(\n connection: Connection,\n worker: PublicKey,\n workerId: types.WorkerId,\n admins: Array<PublicKey> | null,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n if (admins && admins.length > 3) {\n throw new Error('too many admins. The maximum is 3')\n } else if (admins && admins.length < 3) {\n // fill with default\n for (let i = admins.length; i < 3; i++) {\n admins.push(PublicKey.default)\n }\n }\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n if (await connection.getAccountInfo(workerConfig, commitmentOrConfig)) {\n throw new Error('worker already registered')\n }\n\n return instructions.createRegisterWorkerInstruction(\n <instructions.RegisterWorkerInstructionAccounts>{\n worker: worker,\n workerConfig,\n },\n <instructions.RegisterWorkerInstructionArgs>{\n params: <types.RegisterWorkerParams>{\n workerId,\n admins,\n },\n },\n this.program\n )\n }\n\n async setWorkerAllowlist(\n connection: Connection,\n worker: PublicKey,\n oappID: Array<PublicKey>,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n if (!(await connection.getAccountInfo(workerConfig, commitmentOrConfig))) {\n throw new Error('worker not registered')\n }\n\n return instructions.createSetAllowlistInstruction(\n <instructions.SetAllowlistInstructionAccounts>{\n worker,\n workerConfig,\n },\n <instructions.SetAllowlistInstructionArgs>{\n params: <types.SetAllowlistParams>{\n allowlist: oappID,\n },\n },\n this.program\n )\n }\n\n async setWorkerDenylist(\n connection: Connection,\n worker: PublicKey,\n oappID: Array<PublicKey>,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n if (!(await connection.getAccountInfo(workerConfig, commitmentOrConfig))) {\n throw new Error('worker not registered')\n }\n\n return instructions.createSetDenylistInstruction(\n <instructions.SetDenylistInstructionAccounts>{\n worker,\n workerConfig,\n },\n <instructions.SetDenylistInstructionArgs>{\n params: <types.SetDenylistParams>{\n denylist: oappID,\n },\n },\n this.program\n )\n }\n\n async setWorkerDstConfig(\n connection: Connection,\n worker: PublicKey,\n dstConfigs: Array<types.DstConfig>,\n admin: PublicKey\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n return instructions.createSetDstConfigInstruction(\n <instructions.SetDstConfigInstructionAccounts>{\n admin,\n workerConfig,\n },\n <instructions.SetDstConfigInstructionArgs>{\n params: <types.SetDstConfigParams>{\n worker,\n dstConfigs,\n },\n },\n this.program\n )\n }\n\n /**\n *\n * @param prices - prices to set. the structure like: [{__kind: 'Price', fields: [{eid: dstEid, priceRatio: 1, gasPriceInUnit: 1, gasPerByte: 1s}]}]\n * @returns\n */\n async setWorkerPrice(\n worker: PublicKey,\n prices: Array<types.PriceParams>,\n admin: PublicKey\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n return instructions.createSetPriceInstruction(\n <instructions.SetPriceInstructionAccounts>{\n admin,\n workerConfig,\n },\n <instructions.SetPriceInstructionArgs>{\n params: <types.SetPriceParams>{\n worker,\n prices,\n },\n },\n this.program\n )\n }\n\n async setWorkerAdmin(\n connection: Connection,\n worker: PublicKey,\n admins: Array<PublicKey> | null\n ): Promise<TransactionInstruction> {\n if (admins && admins.length > 3) {\n throw new Error('too many admins. The maximum is 3')\n } else if (admins && admins.length < 3) {\n // fill with default\n for (let i = admins.length; i < 3; i++) {\n admins.push(PublicKey.default)\n }\n }\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n // if (!(await connection.getAccountInfo(workerConfig, commitmentOrConfig))) {\n // throw new Error('worker not registered')\n // }\n return instructions.createSetAdminInstruction(\n <instructions.SetAdminInstructionAccounts>{\n worker,\n workerConfig,\n },\n <instructions.SetAdminInstructionArgs>{\n params: <types.SetAdminParams>{\n admins,\n },\n },\n this.program\n )\n }\n\n async setWorkerDefaultMultiplierBps(\n connection: Connection,\n worker: PublicKey,\n admin: PublicKey,\n multiplierBps: number\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n return instructions.createSetDefaultMultiplierBpsInstruction(\n <instructions.SetDefaultMultiplierBpsInstructionAccounts>{\n admin,\n workerConfig,\n },\n <instructions.SetDefaultMultiplierBpsInstructionArgs>{\n params: <types.SetDefaultMultiplierBpsParams>{\n worker,\n defaultMultiplierBps: multiplierBps,\n },\n },\n this.program\n )\n }\n\n async setWorkerPaused(\n connection: Connection,\n worker: PublicKey,\n paused: boolean,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n if (!(await connection.getAccountInfo(workerConfig, commitmentOrConfig))) {\n throw new Error('worker not registered')\n }\n return instructions.createSetPausedInstruction(\n <instructions.SetPausedInstructionAccounts>{\n worker,\n workerConfig,\n },\n <instructions.SetPausedInstructionArgs>{\n params: <types.SetPausedParams>{\n paused,\n },\n },\n this.program\n )\n }\n\n async setOracleQuorum(\n connection: Connection,\n oracle: PublicKey,\n quorum: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [oracleConfig] = this.ulnDeriver.workerConfig(oracle)\n const oracleConfigState = await this.getWorkerConfig(connection, oracle, commitmentOrConfig)\n if (oracleConfig == null) {\n throw new Error('worker not registered')\n } else if (oracleConfigState?.id !== types.WorkerId.Oracle) {\n throw new Error('worker is not oracle')\n }\n return instructions.createSetQuorumInstruction(\n <instructions.SetQuorumInstructionAccounts>{\n oracle,\n oracleConfig,\n },\n <instructions.SetQuorumInstructionArgs>{\n params: <types.SetQuorumParams>{\n quorum,\n },\n },\n this.program\n )\n }\n\n async oracleSignPacket(\n oracle: PublicKey,\n packetBytes: Uint8Array,\n confirmations: number | string\n ): Promise<TransactionInstruction> {\n const packet = PacketV1Codec.fromBytes(packetBytes)\n const headerHash = packet.headerHash()\n const headerHashBytes = Uint8Array.from(Buffer.from(headerHash.slice(2), 'hex'))\n const payloadHash = packet.payloadHash()\n const payloadHashBytes = Uint8Array.from(Buffer.from(payloadHash.slice(2), 'hex'))\n const [confirmationsPDA] = this.ulnDeriver.confirmations(headerHashBytes, payloadHashBytes, oracle)\n return instructions.createSignInstruction(\n <instructions.SignInstructionAccounts>{\n oracle,\n confirmations: confirmationsPDA,\n },\n <instructions.SignInstructionArgs>{\n params: <types.SignParams>{\n packetHeader: Uint8Array.from(Buffer.from(packet.header().slice(2), 'hex')),\n payloadHash: Array.from(payloadHashBytes),\n confirmations: typeof confirmations === 'string' ? new BN(confirmations) : confirmations,\n },\n },\n this.program\n )\n }\n\n async deliverPacket(\n connection: Connection,\n payer: PublicKey,\n endpointProgram: PublicKey,\n packetBytes: Uint8Array,\n optionalOraclesIndexes?: Array<number>,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const packet = PacketV1Codec.fromBytes(packetBytes)\n const receiver = new PublicKey(Buffer.from(packet.receiver().slice(2), 'hex'))\n const srcEid = packet.srcEid()\n if (!(await this.getSetting(connection))) {\n throw new Error('uln not initialized')\n }\n const defaultConfigState = await this.getConfig(connection, srcEid, commitmentOrConfig)\n if (!defaultConfigState) {\n throw new Error('uln default config not initialized')\n }\n let oracles = defaultConfigState.oracles\n let optionalOracles = defaultConfigState.optionalOracles\n\n const endpointConfigState = await this.getOappConfig(connection, receiver, srcEid, commitmentOrConfig)\n if (endpointConfigState && endpointConfigState.useCustomOracles && endpointConfigState.oracles.length > 0) {\n oracles = endpointConfigState.oracles\n }\n if (\n endpointConfigState &&\n endpointConfigState.useCustomOptionalOracles &&\n endpointConfigState.optionalOracles.length > 0\n ) {\n optionalOracles = endpointConfigState.optionalOracles\n }\n const optionalOraclesThreshold = endpointConfigState\n ? defaultConfigState.optionalOraclesThreshold\n : defaultConfigState.optionalOraclesThreshold\n const inboundConfirmations = endpointConfigState\n ? endpointConfigState.inboundConfirmations\n : defaultConfigState.inboundConfirmations\n const [oappConfig] = this.ulnDeriver.oappConfig(receiver, srcEid)\n const [defaultConfig] = this.ulnDeriver.config(srcEid)\n const [setting] = this.ulnDeriver.setting()\n const headerBytes = Uint8Array.from(Buffer.from(packet.header().slice(2), 'hex'))\n const headerHashBytes = Uint8Array.from(Buffer.from(packet.headerHash().slice(2), 'hex'))\n const payloadHashBytes = Uint8Array.from(Buffer.from(packet.payloadHash().slice(2), 'hex'))\n const orclesAccounts = oracles.concat(optionalOracles).map((oracle) => {\n const [pubkey] = this.ulnDeriver.confirmations(headerHashBytes, payloadHashBytes, oracle)\n return <AccountMeta>{\n pubkey,\n isSigner: false,\n isWritable: false,\n }\n })\n if (!optionalOraclesIndexes) {\n optionalOraclesIndexes = []\n await Promise.all(\n optionalOracles.map(async (oracle, index) => {\n const [confirmationsAccount] = this.ulnDeriver.confirmations(\n headerHashBytes,\n payloadHashBytes,\n oracle\n )\n const confirmationsAccountInfo = await this.getConfirmations(\n connection,\n confirmationsAccount,\n commitmentOrConfig\n )\n if (confirmationsAccountInfo && confirmationsAccountInfo.value >= inboundConfirmations) {\n ;(optionalOraclesIndexes as Array<number>).push(index)\n }\n })\n )\n if (optionalOraclesIndexes.length > optionalOraclesThreshold) {\n optionalOraclesIndexes = optionalOraclesIndexes.slice(0, optionalOraclesThreshold)\n }\n optionalOraclesIndexes.sort((a, b) => a - b)\n }\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return instructions.createDeliverInstruction(\n <instructions.DeliverInstructionAccounts>{\n ulnConfig: oappConfig,\n defaultUlnConfig: defaultConfig,\n uln: setting,\n anchorRemainingAccounts: orclesAccounts.concat(\n await endpoint.getDeliverIXAccountMetaForCPI(\n connection,\n payer,\n packet,\n this.ulnDeriver.messageLib()[0]\n )\n ),\n },\n <instructions.DeliverInstructionArgs>{\n params: <types.DeliverParams>{\n packetHeader: headerBytes,\n payloadHash: Array.from(payloadHashBytes),\n confirmations: inboundConfirmations,\n optionalOraclesIndexes: Uint8Array.from(optionalOraclesIndexes),\n },\n },\n this.program\n )\n }\n\n async workerWithdrawFee(\n connection: Connection,\n worker: PublicKey,\n admin: PublicKey,\n receiver: PublicKey,\n amount: string,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<TransactionInstruction> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n const [setting] = this.ulnDeriver.setting()\n const workerState = await this.getWorkerConfig(connection, worker, commitmentOrConfig)\n if (!workerState) {\n throw new Error('worker not registered')\n }\n\n const amountBN = new BN(amount)\n if (workerState.accumulatedFee.lt(amountBN)) {\n throw new Error('insufficient fee')\n }\n return instructions.createWithdrawFeeInstruction(\n <instructions.WithdrawFeeInstructionAccounts>{\n admin,\n workerConfig,\n receiver,\n uln: setting,\n },\n <instructions.WithdrawFeeInstructionArgs>{\n params: <types.WithdrawFeeParams>{\n amount: amountBN,\n worker,\n },\n }\n )\n }\n\n /***\n * Get the account meta of the send instruction for CPI(Cross-Program Invocation )\n */\n async getSendIXAccountMetaForCPI(\n connection: Connection,\n endpointProgram: PublicKey,\n payer: PublicKey,\n oappIDPDA: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappIDPDA, eid)\n const [defaultConfig] = this.ulnDeriver.config(eid)\n const [defaultOptions] = this.ulnDeriver.options(eid)\n const [setting] = this.ulnDeriver.setting()\n const ulnState = await this.getSetting(connection, commitmentOrConfig)\n const treasury = ulnState.treasury == null ? this.program : ulnState.treasury.nativeReceiver\n const [msgLib] = this.ulnDeriver.messageLib()\n const [endpointAuth] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n\n const ix = instructions.createSendInstruction(\n <instructions.SendInstructionAccounts>{\n endpoint: endpointAuth, //signer\n uln: setting,\n ulnConfig: oappConfig,\n defaultUlnConfig: defaultConfig,\n defaultOptions,\n ulnProgram: this.program,\n payer,\n treasury,\n anchorRemainingAccounts: (await this.getWorkers(connection, oappIDPDA, eid, commitmentOrConfig)).map(\n (p) => {\n return {\n pubkey: p,\n isSigner: false,\n isWritable: true,\n }\n }\n ),\n },\n /// Fake value. params is useless.\n <instructions.SendInstructionArgs>{\n params: <types.MessageLibSendParams>{\n guid: Array.from(oappIDPDA.toBytes()),\n packet: <types.Packet>{\n nonce: 0,\n srcEid: 0,\n sender: oappIDPDA,\n dstEid: 0,\n receiver: Array.from(oappIDPDA.toBytes()),\n message: Uint8Array.from(Buffer.from('test')),\n },\n nativeFee: 0,\n lzTokenFee: 0,\n options: Uint8Array.from(Buffer.from('test')),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n if (treasury === this.program) {\n ix.keys[7].isWritable = false // treasury account\n } else {\n ix.keys[7].isWritable = true // treasury account\n }\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n async getSendWithLzTokenIXAccountMetaForCPI(\n connection: Connection,\n endpointProgram: PublicKey,\n mint: PublicKey,\n payer: PublicKey,\n oappIDPDA: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappIDPDA, eid)\n const [defaultConfig] = this.ulnDeriver.config(eid)\n const [defaultOptions] = this.ulnDeriver.options(eid)\n const [setting] = this.ulnDeriver.setting()\n const [msgLib] = this.ulnDeriver.messageLib()\n const endpointDeriver = new EndpointPDADeriver(endpointProgram)\n const [endpointAuth] = endpointDeriver.messageLibraryAuthority(msgLib)\n const endpointSetting = await new EndpointProgram.Endpoint(endpointProgram).getSetting(\n connection,\n commitmentOrConfig\n )\n const ulnState = await this.getSetting(connection, commitmentOrConfig)\n const treasury = ulnState.treasury\n if (!endpointSetting || !endpointSetting.lzToken || !treasury.lzToken) {\n throw new Error('lzToken is not set')\n }\n\n const payerTokenAccount = await getAssociatedTokenAddress(mint, payer)\n try {\n await getAccount(connection, payerTokenAccount, 'confirmed', TOKEN_PROGRAM_ID)\n } catch (error: unknown) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n // As this isn't atomic, it's possible others can create associated accounts meanwhile.\n throw error\n } else {\n throw error\n }\n }\n const ix = instructions.createSendWithLzTokenInstruction(\n <instructions.SendWithLzTokenInstructionAccounts>{\n endpoint: endpointAuth, //signer\n uln: setting,\n ulnConfig: oappConfig,\n defaultUlnConfig: defaultConfig,\n defaultOptions,\n ulnProgram: this.program,\n payer,\n payerTokenAccount,\n treasury: treasury.lzToken.receiver,\n mint,\n // tokenProgram:TOKEN_2022_PROGRAM_ID,\n endpointSettings: endpointDeriver.setting()[0],\n anchorRemainingAccounts: (await this.getWorkers(connection, oappIDPDA, eid, commitmentOrConfig)).map(\n (p) => {\n return {\n pubkey: p,\n isSigner: false,\n isWritable: true,\n }\n }\n ),\n },\n <instructions.SendWithLzTokenInstructionArgs>{\n /// Fake value. Just for get the account meta.\n params: <types.MessageLibSendParams>{\n guid: Array.from(oappIDPDA.toBytes()),\n packet: <types.Packet>{\n nonce: 0,\n srcEid: 0,\n sender: oappIDPDA,\n dstEid: 0,\n receiver: Array.from(oappIDPDA.toBytes()),\n message: Uint8Array.from(Buffer.from('test')),\n },\n nativeFee: 0,\n lzTokenFee: 0,\n options: Uint8Array.from(Buffer.from('test')),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n async getQuoteIXAccountMetaForCPI(\n connection: Connection,\n oappIDPDA: PublicKey,\n dstEid: number,\n payInLzToken: boolean,\n commitment?: Commitment\n ): Promise<AccountMeta[]> {\n const workers = (await this.getWorkers(connection, oappIDPDA, dstEid, commitment)).map((p) => {\n return {\n // TODO: check if the worker is registered\n pubkey: p,\n isSigner: false,\n isWritable: false,\n }\n })\n const [oappConfig] = this.ulnDeriver.oappConfig(oappIDPDA, dstEid)\n const [defaultConfig] = this.ulnDeriver.config(dstEid)\n const [defaultOptions] = this.ulnDeriver.options(dstEid)\n const [setting] = this.ulnDeriver.setting()\n\n const ix = instructions.createQuoteInstruction(\n <instructions.QuoteInstructionAccounts>{\n uln: setting,\n ulnConfig: oappConfig,\n defaultUlnConfig: defaultConfig,\n defaultOptions,\n anchorRemainingAccounts: workers,\n },\n // Fake params, just to get ix.keys\n <instructions.QuoteInstructionArgs>{\n params: <types.MessageLibQuoteParams>{\n packet: <types.PacketForQuote>{\n sender: oappIDPDA,\n dstEid,\n message: Uint8Array.from([]),\n },\n payInLzToken,\n options: Uint8Array.from([]),\n },\n },\n this.program\n )\n return [\n <AccountMeta>{\n pubkey: this.program,\n isSigner: false,\n isWritable: false,\n },\n ].concat(ix.keys)\n }\n\n /***\n * Get all workers(executor&oracle)\n */\n async getWorkers(\n connection: Connection,\n oappIDPDA: PublicKey,\n eid: number,\n commitment: Commitment | GetAccountInfoConfig = 'confirmed'\n ): Promise<Array<PublicKey>> {\n const defaultConfigState = await this.getConfig(connection, eid, commitment)\n if (!defaultConfigState) {\n throw new Error('default config not initialized')\n }\n let executor = defaultConfigState.executor\n let oracles = defaultConfigState.oracles\n let optionalOracles = defaultConfigState.optionalOracles\n const endpointConfigState = await this.getOappConfig(connection, oappIDPDA, eid, commitment)\n if (\n endpointConfigState &&\n endpointConfigState.executor &&\n !endpointConfigState.executor.equals(PublicKey.default)\n ) {\n executor = endpointConfigState.executor\n }\n if (endpointConfigState && endpointConfigState.useCustomOracles) {\n oracles = endpointConfigState.oracles.filter((p) => {\n return !p.equals(PublicKey.default)\n })\n }\n if (endpointConfigState && endpointConfigState.useCustomOptionalOracles) {\n optionalOracles = endpointConfigState.optionalOracles.filter((p) => {\n return !p.equals(PublicKey.default)\n })\n }\n return [executor]\n .concat(oracles)\n .concat(optionalOracles)\n .map((p) => {\n return this.ulnDeriver.workerConfig(p)[0]\n })\n }\n\n /***\n * Get the account meta of the send instruction for CPI(Cross-Program Invocation )\n */\n async getInitConfigIXAccountMetaForCPI(\n endpointProgram: PublicKey,\n payer: PublicKey,\n oappID: PublicKey,\n eid: number\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappID, eid)\n const [msgLib] = this.ulnDeriver.messageLib()\n const [setting] = this.ulnDeriver.setting()\n const [msgLibAuthority] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n const ix = instructions.createInitConfigInstruction(\n <instructions.InitConfigInstructionAccounts>{\n endpoint: msgLibAuthority,\n payer,\n uln: setting,\n ulnConfig: oappConfig,\n },\n // Fake params, just to get the ix.keys\n <instructions.InitConfigInstructionArgs>{\n params: <types.InitConfigParams>{\n eid,\n oapp: oappID,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n async getSetConfigIXAccountMetaForCPI(\n connection: Connection,\n endpointProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappID, eid)\n const [setting] = this.ulnDeriver.setting()\n const [msgLib] = this.ulnDeriver.messageLib()\n const [msgLibAuthority] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n if (!(await this.getOappConfig(connection, oappID, eid, commitmentOrConfig))) {\n throw new Error('endpoint config not initialized')\n }\n const ix = instructions.createSetConfigInstruction(\n <instructions.SetConfigInstructionAccounts>{\n endpoint: msgLibAuthority,\n uln: setting,\n ulnConfig: oappConfig,\n },\n // Fake params, just to get the ix.keys\n <instructions.SetConfigInstructionArgs>{\n params: <types.MessageLibSetConfigParams>{\n eid,\n oapp: oappID,\n configType: 1,\n config: Uint8Array.from([]),\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n async getResetConfigIXAccountMetaForCPI(\n connection: Connection,\n endpointProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappID, eid)\n const [setting] = this.ulnDeriver.setting()\n const [msgLib] = this.ulnDeriver.messageLib()\n const [msgLibAuthority] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n if (!(await this.getOappConfig(connection, oappID, eid, commitmentOrConfig))) {\n throw new Error('endpoint config not initialized')\n }\n const ix = instructions.createResetConfigInstruction(\n <instructions.ResetConfigInstructionAccounts>{\n endpoint: msgLibAuthority,\n uln: setting,\n ulnConfig: oappConfig,\n },\n // Fake params, just to get the ix.keys\n <instructions.ResetConfigInstructionArgs>{\n params: <types.MessageLibResetConfigParams>{\n eid,\n oapp: oappID,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n async getSnapshotConfigIXAccountMetaForCPI(\n connection: Connection,\n endpointProgram: PublicKey,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<Array<AccountMeta>> {\n const [oappConfig] = this.ulnDeriver.oappConfig(oappID, eid)\n const [defaultConfig] = this.ulnDeriver.config(eid)\n const [setting] = this.ulnDeriver.setting()\n const [msgLib] = this.ulnDeriver.messageLib()\n const [msgLibAuthority] = new EndpointPDADeriver(endpointProgram).messageLibraryAuthority(msgLib)\n if (!(await this.getOappConfig(connection, oappID, eid, commitmentOrConfig))) {\n throw new Error('endpoint config not initialized')\n }\n const ix = instructions.createSnapshotConfigInstruction(\n <instructions.SnapshotConfigInstructionAccounts>{\n endpoint: msgLibAuthority,\n uln: setting,\n ulnConfig: oappConfig,\n defaultUlnConfig: defaultConfig,\n },\n // Fake params, just to get the ix.keys\n <instructions.SnapshotConfigInstructionArgs>{\n params: <types.MessageLibSnapshotConfigParams>{\n eid,\n oapp: oappID,\n },\n }\n )\n ix.keys.forEach((key) => {\n key.isSigner = false\n })\n return [\n <AccountMeta>{\n pubkey: this.program,\n isWritable: false,\n isSigner: false,\n },\n ].concat(ix.keys)\n }\n\n async packetDeliverable(\n connection: Connection,\n packetBytes: Uint8Array,\n commitment?: Commitment | GetAccountInfoConfig\n ): Promise<boolean> {\n const packet = PacketV1Codec.fromBytes(packetBytes)\n const receiver = new PublicKey(Buffer.from(packet.receiver().slice(2), 'hex'))\n const srcEid = packet.srcEid()\n\n const defaultConfigState = await this.getConfig(connection, srcEid, commitment)\n if (!defaultConfigState) {\n throw new Error('default config not initialized')\n }\n\n let oracles = defaultConfigState.oracles\n let optionalOracles = defaultConfigState.optionalOracles\n let optionalOraclesThreshold = defaultConfigState.optionalOraclesThreshold\n const endpointConfigState = await this.getOappConfig(connection, receiver, srcEid, commitment)\n const inboundConfirmations = endpointConfigState\n ? endpointConfigState.inboundConfirmations\n : defaultConfigState.inboundConfirmations\n\n if (endpointConfigState && endpointConfigState.useCustomOracles && endpointConfigState.oracles.length > 0) {\n oracles = endpointConfigState.oracles\n }\n if (\n endpointConfigState &&\n endpointConfigState.useCustomOptionalOracles &&\n endpointConfigState.optionalOracles.length > 0\n ) {\n optionalOracles = endpointConfigState.optionalOracles\n optionalOraclesThreshold = endpointConfigState.optionalOraclesThreshold\n }\n\n const packetHeader = packet.headerHash()\n const payloadHash = packet.payloadHash()\n const headerHashBytes = Uint8Array.from(Buffer.from(packetHeader.slice(2), 'hex'))\n const payloadHashBytes = Uint8Array.from(Buffer.from(payloadHash.slice(2), 'hex'))\n const oracleToConfirmationAccount = (oracle: PublicKey): PublicKey => {\n return this.ulnDeriver.confirmations(headerHashBytes, payloadHashBytes, oracle)[0]\n }\n const assertConfirmations = async (oracle: PublicKey, confirmationAccount: PublicKey): Promise<void> => {\n const confirmations = await this.getConfirmations(connection, confirmationAccount, commitment)\n if (confirmations) {\n const expectedAddress = PublicKey.createProgramAddressSync(\n [\n Buffer.from(CONFIRMATIONS_SEED, 'utf8'),\n headerHashBytes,\n payloadHashBytes,\n oracle.toBytes(),\n Uint8Array.from([confirmations.bump]),\n ],\n this.program\n )\n assert.strictEqual(expectedAddress.toBase58(), confirmationAccount.toBase58())\n assert.ok(confirmations.value >= inboundConfirmations)\n } else {\n throw new Error('confirmations not found')\n }\n }\n\n try {\n await Promise.all(\n oracles.map(async (oracle) => {\n const confirmationAccount = oracleToConfirmationAccount(oracle)\n await assertConfirmations(oracle, confirmationAccount)\n })\n )\n } catch (e) {\n console.error(\"oracle's confirmations not enough\", e)\n return false\n }\n if (optionalOraclesThreshold == 0) {\n return true\n }\n\n const optionalOraclesIndexes: Array<number> = []\n\n await Promise.all(\n optionalOracles.map(async (oracle, index) => {\n const confirmationAccount = oracleToConfirmationAccount(oracle)\n try {\n await assertConfirmations(oracle, confirmationAccount)\n optionalOraclesIndexes.push(index)\n } catch (e) {\n //skip\n }\n })\n )\n if (optionalOraclesIndexes.length < optionalOraclesThreshold) {\n console.error('optional oracle confirmations not enough')\n return false\n }\n return true\n }\n\n // all of below functions are retrieving accounts state\n async getSetting(\n connection: Connection,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.UlnSettings | null> {\n const [setting] = this.ulnDeriver.setting()\n try {\n return await accounts.UlnSettings.fromAccountAddress(connection, setting, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getConfig(\n connection: Connection,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.UlnConfigStore | null> {\n const [config] = this.ulnDeriver.config(eid)\n try {\n return await accounts.UlnConfigStore.fromAccountAddress(connection, config, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getOptions(\n connection: Connection,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.DefaultOptions | null> {\n const [options] = this.ulnDeriver.options(eid)\n try {\n return await accounts.DefaultOptions.fromAccountAddress(connection, options, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getOappConfig(\n connection: Connection,\n oappID: PublicKey,\n eid: number,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.UlnConfigStore | null> {\n const [config] = this.ulnDeriver.oappConfig(oappID, eid)\n try {\n return await accounts.UlnConfigStore.fromAccountAddress(connection, config, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getWorkerConfig(\n connection: Connection,\n worker: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.WorkerConfig | null> {\n const [workerConfig] = this.ulnDeriver.workerConfig(worker)\n try {\n return await accounts.WorkerConfig.fromAccountAddress(connection, workerConfig, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n\n async getConfirmations(\n connection: Connection,\n confirmations: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig\n ): Promise<accounts.Confirmations | null> {\n try {\n return await accounts.Confirmations.fromAccountAddress(connection, confirmations, commitmentOrConfig)\n } catch (e) {\n return null\n }\n }\n}\n","export * from './Confirmations'\nexport * from './DefaultOptions'\nexport * from './UlnConfigStore'\nexport * from './UlnSettings'\nexport * from './WorkerConfig'\n\nimport { Confirmations } from './Confirmations'\nimport { DefaultOptions } from './DefaultOptions'\nimport { UlnSettings } from './UlnSettings'\nimport { UlnConfigStore } from './UlnConfigStore'\nimport { WorkerConfig } from './WorkerConfig'\n\nexport const accountProviders = {\n Confirmations,\n DefaultOptions,\n UlnSettings,\n UlnConfigStore,\n WorkerConfig,\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link Confirmations}\n * @category Accounts\n * @category generated\n */\nexport type ConfirmationsArgs = {\n value: beet.bignum\n bump: number\n}\n\nexport const confirmationsDiscriminator = [206, 57, 50, 8, 124, 133, 138, 112]\n/**\n * Holds the data for the {@link Confirmations} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class Confirmations implements ConfirmationsArgs {\n private constructor(readonly value: beet.bignum, readonly bump: number) {}\n\n /**\n * Creates a {@link Confirmations} instance from the provided args.\n */\n static fromArgs(args: ConfirmationsArgs) {\n return new Confirmations(args.value, args.bump)\n }\n\n /**\n * Deserializes the {@link Confirmations} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [Confirmations, number] {\n return Confirmations.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link Confirmations} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<Confirmations> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find Confirmations account at ${address}`)\n }\n return Confirmations.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, confirmationsBeet)\n }\n\n /**\n * Deserializes the {@link Confirmations} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [Confirmations, number] {\n return confirmationsBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link Confirmations} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return confirmationsBeet.serialize({\n accountDiscriminator: confirmationsDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link Confirmations}\n */\n static get byteSize() {\n return confirmationsBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link Confirmations} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n Confirmations.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link Confirmations} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === Confirmations.byteSize\n }\n\n /**\n * Returns a readable version of {@link Confirmations} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n value: (() => {\n const x = <{ toNumber: () => number }>this.value\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const confirmationsBeet = new beet.BeetStruct<\n Confirmations,\n ConfirmationsArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['value', beet.u64],\n ['bump', beet.u8],\n ],\n Confirmations.fromArgs,\n 'Confirmations'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link DefaultOptions}\n * @category Accounts\n * @category generated\n */\nexport type DefaultOptionsArgs = {\n bump: number\n options: Uint8Array\n}\n\nexport const defaultOptionsDiscriminator = [235, 143, 163, 47, 171, 237, 68, 98]\n/**\n * Holds the data for the {@link DefaultOptions} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class DefaultOptions implements DefaultOptionsArgs {\n private constructor(readonly bump: number, readonly options: Uint8Array) {}\n\n /**\n * Creates a {@link DefaultOptions} instance from the provided args.\n */\n static fromArgs(args: DefaultOptionsArgs) {\n return new DefaultOptions(args.bump, args.options)\n }\n\n /**\n * Deserializes the {@link DefaultOptions} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [DefaultOptions, number] {\n return DefaultOptions.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link DefaultOptions} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<DefaultOptions> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find DefaultOptions account at ${address}`)\n }\n return DefaultOptions.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, defaultOptionsBeet)\n }\n\n /**\n * Deserializes the {@link DefaultOptions} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [DefaultOptions, number] {\n return defaultOptionsBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link DefaultOptions} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return defaultOptionsBeet.serialize({\n accountDiscriminator: defaultOptionsDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link DefaultOptions} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: DefaultOptionsArgs) {\n const instance = DefaultOptions.fromArgs(args)\n return defaultOptionsBeet.toFixedFromValue({\n accountDiscriminator: defaultOptionsDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link DefaultOptions} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: DefaultOptionsArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n DefaultOptions.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link DefaultOptions} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n options: this.options,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const defaultOptionsBeet = new beet.FixableBeetStruct<\n DefaultOptions,\n DefaultOptionsArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ['options', beet.bytes],\n ],\n DefaultOptions.fromArgs,\n 'DefaultOptions'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link UlnConfigStore}\n * @category Accounts\n * @category generated\n */\nexport type UlnConfigStoreArgs = {\n bump: number\n maxMessageSize: number\n outboundConfirmations: beet.bignum\n executor: web3.PublicKey\n inboundConfirmations: beet.bignum\n useCustomOracles: boolean\n oracles: web3.PublicKey[]\n useCustomOptionalOracles: boolean\n optionalOraclesThreshold: number\n optionalOracles: web3.PublicKey[]\n}\n\nexport const ulnConfigStoreDiscriminator = [138, 5, 237, 226, 134, 177, 5, 58]\n/**\n * Holds the data for the {@link UlnConfigStore} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class UlnConfigStore implements UlnConfigStoreArgs {\n private constructor(\n readonly bump: number,\n readonly maxMessageSize: number,\n readonly outboundConfirmations: beet.bignum,\n readonly executor: web3.PublicKey,\n readonly inboundConfirmations: beet.bignum,\n readonly useCustomOracles: boolean,\n readonly oracles: web3.PublicKey[],\n readonly useCustomOptionalOracles: boolean,\n readonly optionalOraclesThreshold: number,\n readonly optionalOracles: web3.PublicKey[]\n ) {}\n\n /**\n * Creates a {@link UlnConfigStore} instance from the provided args.\n */\n static fromArgs(args: UlnConfigStoreArgs) {\n return new UlnConfigStore(\n args.bump,\n args.maxMessageSize,\n args.outboundConfirmations,\n args.executor,\n args.inboundConfirmations,\n args.useCustomOracles,\n args.oracles,\n args.useCustomOptionalOracles,\n args.optionalOraclesThreshold,\n args.optionalOracles\n )\n }\n\n /**\n * Deserializes the {@link UlnConfigStore} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [UlnConfigStore, number] {\n return UlnConfigStore.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link UlnConfigStore} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<UlnConfigStore> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find UlnConfigStore account at ${address}`)\n }\n return UlnConfigStore.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, ulnConfigStoreBeet)\n }\n\n /**\n * Deserializes the {@link UlnConfigStore} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [UlnConfigStore, number] {\n return ulnConfigStoreBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link UlnConfigStore} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return ulnConfigStoreBeet.serialize({\n accountDiscriminator: ulnConfigStoreDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link UlnConfigStore} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: UlnConfigStoreArgs) {\n const instance = UlnConfigStore.fromArgs(args)\n return ulnConfigStoreBeet.toFixedFromValue({\n accountDiscriminator: ulnConfigStoreDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link UlnConfigStore} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: UlnConfigStoreArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n UlnConfigStore.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link UlnConfigStore} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n maxMessageSize: this.maxMessageSize,\n outboundConfirmations: (() => {\n const x = <{ toNumber: () => number }>this.outboundConfirmations\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n executor: this.executor.toBase58(),\n inboundConfirmations: (() => {\n const x = <{ toNumber: () => number }>this.inboundConfirmations\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n useCustomOracles: this.useCustomOracles,\n oracles: this.oracles,\n useCustomOptionalOracles: this.useCustomOptionalOracles,\n optionalOraclesThreshold: this.optionalOraclesThreshold,\n optionalOracles: this.optionalOracles,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const ulnConfigStoreBeet = new beet.FixableBeetStruct<\n UlnConfigStore,\n UlnConfigStoreArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ['maxMessageSize', beet.u32],\n ['outboundConfirmations', beet.u64],\n ['executor', beetSolana.publicKey],\n ['inboundConfirmations', beet.u64],\n ['useCustomOracles', beet.bool],\n ['oracles', beet.array(beetSolana.publicKey)],\n ['useCustomOptionalOracles', beet.bool],\n ['optionalOraclesThreshold', beet.u8],\n ['optionalOracles', beet.array(beetSolana.publicKey)],\n ],\n UlnConfigStore.fromArgs,\n 'UlnConfigStore'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport { Treasury, treasuryBeet } from '../types/Treasury'\n\n/**\n * Arguments used to create {@link UlnSettings}\n * @category Accounts\n * @category generated\n */\nexport type UlnSettingsArgs = {\n eid: number\n endpoint: web3.PublicKey\n bump: number\n admin: web3.PublicKey\n treasury: beet.COption<Treasury>\n}\n\nexport const ulnSettingsDiscriminator = [226, 199, 100, 253, 38, 115, 167, 154]\n/**\n * Holds the data for the {@link UlnSettings} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class UlnSettings implements UlnSettingsArgs {\n private constructor(\n readonly eid: number,\n readonly endpoint: web3.PublicKey,\n readonly bump: number,\n readonly admin: web3.PublicKey,\n readonly treasury: beet.COption<Treasury>\n ) {}\n\n /**\n * Creates a {@link UlnSettings} instance from the provided args.\n */\n static fromArgs(args: UlnSettingsArgs) {\n return new UlnSettings(\n args.eid,\n args.endpoint,\n args.bump,\n args.admin,\n args.treasury\n )\n }\n\n /**\n * Deserializes the {@link UlnSettings} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [UlnSettings, number] {\n return UlnSettings.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link UlnSettings} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<UlnSettings> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find UlnSettings account at ${address}`)\n }\n return UlnSettings.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, ulnSettingsBeet)\n }\n\n /**\n * Deserializes the {@link UlnSettings} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [UlnSettings, number] {\n return ulnSettingsBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link UlnSettings} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return ulnSettingsBeet.serialize({\n accountDiscriminator: ulnSettingsDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link UlnSettings} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: UlnSettingsArgs) {\n const instance = UlnSettings.fromArgs(args)\n return ulnSettingsBeet.toFixedFromValue({\n accountDiscriminator: ulnSettingsDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link UlnSettings} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: UlnSettingsArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n UlnSettings.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link UlnSettings} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n eid: this.eid,\n endpoint: this.endpoint.toBase58(),\n bump: this.bump,\n admin: this.admin.toBase58(),\n treasury: this.treasury,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const ulnSettingsBeet = new beet.FixableBeetStruct<\n UlnSettings,\n UlnSettingsArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['eid', beet.u32],\n ['endpoint', beetSolana.publicKey],\n ['bump', beet.u8],\n ['admin', beetSolana.publicKey],\n ['treasury', beet.coption(treasuryBeet)],\n ],\n UlnSettings.fromArgs,\n 'UlnSettings'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport { LzTokenTreasury, lzTokenTreasuryBeet } from './LzTokenTreasury'\nexport type Treasury = {\n nativeReceiver: web3.PublicKey\n nativeBp: beet.bignum\n lzToken: beet.COption<LzTokenTreasury>\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const treasuryBeet = new beet.FixableBeetArgsStruct<Treasury>(\n [\n ['nativeReceiver', beetSolana.publicKey],\n ['nativeBp', beet.u64],\n ['lzToken', beet.coption(lzTokenTreasuryBeet)],\n ],\n 'Treasury'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type LzTokenTreasury = {\n receiver: web3.PublicKey\n fee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const lzTokenTreasuryBeet = new beet.BeetArgsStruct<LzTokenTreasury>(\n [\n ['receiver', beetSolana.publicKey],\n ['fee', beet.u64],\n ],\n 'LzTokenTreasury'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport { WorkerId, workerIdBeet } from '../types/WorkerId'\nimport { Acl, aclBeet } from '../types/Acl'\nimport { PriceFeed, priceFeedBeet } from '../types/PriceFeed'\nimport { WorkerExtConfig, workerExtConfigBeet } from '../types/WorkerExtConfig'\n\n/**\n * Arguments used to create {@link WorkerConfig}\n * @category Accounts\n * @category generated\n */\nexport type WorkerConfigArgs = {\n id: WorkerId\n acl: Acl\n defaultMultiplierBps: number\n priceFeed: PriceFeed\n admins: web3.PublicKey[] /* size: 3 */\n paused: boolean\n extConfig: WorkerExtConfig\n accumulatedFee: beet.bignum\n bump: number\n}\n\nexport const workerConfigDiscriminator = [224, 157, 240, 147, 170, 78, 48, 227]\n/**\n * Holds the data for the {@link WorkerConfig} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class WorkerConfig implements WorkerConfigArgs {\n private constructor(\n readonly id: WorkerId,\n readonly acl: Acl,\n readonly defaultMultiplierBps: number,\n readonly priceFeed: PriceFeed,\n readonly admins: web3.PublicKey[] /* size: 3 */,\n readonly paused: boolean,\n readonly extConfig: WorkerExtConfig,\n readonly accumulatedFee: beet.bignum,\n readonly bump: number\n ) {}\n\n /**\n * Creates a {@link WorkerConfig} instance from the provided args.\n */\n static fromArgs(args: WorkerConfigArgs) {\n return new WorkerConfig(\n args.id,\n args.acl,\n args.defaultMultiplierBps,\n args.priceFeed,\n args.admins,\n args.paused,\n args.extConfig,\n args.accumulatedFee,\n args.bump\n )\n }\n\n /**\n * Deserializes the {@link WorkerConfig} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [WorkerConfig, number] {\n return WorkerConfig.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link WorkerConfig} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<WorkerConfig> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find WorkerConfig account at ${address}`)\n }\n return WorkerConfig.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, workerConfigBeet)\n }\n\n /**\n * Deserializes the {@link WorkerConfig} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [WorkerConfig, number] {\n return workerConfigBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link WorkerConfig} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return workerConfigBeet.serialize({\n accountDiscriminator: workerConfigDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link WorkerConfig} for the provided args.\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n */\n static byteSize(args: WorkerConfigArgs) {\n const instance = WorkerConfig.fromArgs(args)\n return workerConfigBeet.toFixedFromValue({\n accountDiscriminator: workerConfigDiscriminator,\n ...instance,\n }).byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link WorkerConfig} data from rent\n *\n * @param args need to be provided since the byte size for this account\n * depends on them\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n args: WorkerConfigArgs,\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n WorkerConfig.byteSize(args),\n commitment\n )\n }\n\n /**\n * Returns a readable version of {@link WorkerConfig} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n id: 'WorkerId.' + WorkerId[this.id],\n acl: this.acl,\n defaultMultiplierBps: this.defaultMultiplierBps,\n priceFeed: this.priceFeed,\n admins: this.admins,\n paused: this.paused,\n extConfig: this.extConfig.__kind,\n accumulatedFee: (() => {\n const x = <{ toNumber: () => number }>this.accumulatedFee\n if (typeof x.toNumber === 'function') {\n try {\n return x.toNumber()\n } catch (_) {\n return x\n }\n }\n return x\n })(),\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const workerConfigBeet = new beet.FixableBeetStruct<\n WorkerConfig,\n WorkerConfigArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['id', workerIdBeet],\n ['acl', aclBeet],\n ['defaultMultiplierBps', beet.u16],\n ['priceFeed', priceFeedBeet],\n ['admins', beet.uniformFixedSizeArray(beetSolana.publicKey, 3)],\n ['paused', beet.bool],\n ['extConfig', workerExtConfigBeet],\n ['accumulatedFee', beet.u64],\n ['bump', beet.u8],\n ],\n WorkerConfig.fromArgs,\n 'WorkerConfig'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\n/**\n * @category enums\n * @category generated\n */\nexport enum WorkerId {\n Executor,\n Oracle,\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const workerIdBeet = beet.fixedScalarEnum(\n WorkerId\n) as beet.FixedSizeBeet<WorkerId, WorkerId>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type Acl = {\n allowList: web3.PublicKey[]\n denyList: web3.PublicKey[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const aclBeet = new beet.FixableBeetArgsStruct<Acl>(\n [\n ['allowList', beet.array(beetSolana.publicKey)],\n ['denyList', beet.array(beetSolana.publicKey)],\n ],\n 'Acl'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Price, priceBeet } from './Price'\nimport { ArbitrumPriceExt, arbitrumPriceExtBeet } from './ArbitrumPriceExt'\nexport type PriceFeed = {\n priceRatioDenominator: beet.bignum\n defaultModelPrice: Price[]\n arbitrumPriceExt: ArbitrumPriceExt\n nativeTokenPriceUsd: beet.COption<beet.bignum>\n arbitrumCompressionPercent: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const priceFeedBeet = new beet.FixableBeetArgsStruct<PriceFeed>(\n [\n ['priceRatioDenominator', beet.u128],\n ['defaultModelPrice', beet.array(priceBeet)],\n ['arbitrumPriceExt', arbitrumPriceExtBeet],\n ['nativeTokenPriceUsd', beet.coption(beet.u128)],\n ['arbitrumCompressionPercent', beet.u128],\n ],\n 'PriceFeed'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type Price = {\n eid: number\n priceRatio: beet.bignum\n gasPriceInUnit: beet.bignum\n gasPerByte: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const priceBeet = new beet.BeetArgsStruct<Price>(\n [\n ['eid', beet.u32],\n ['priceRatio', beet.u128],\n ['gasPriceInUnit', beet.u64],\n ['gasPerByte', beet.u32],\n ],\n 'Price'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type ArbitrumPriceExt = {\n gasPerL2Tx: beet.bignum\n gasPerL1CalldataByte: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const arbitrumPriceExtBeet = new beet.BeetArgsStruct<ArbitrumPriceExt>(\n [\n ['gasPerL2Tx', beet.u64],\n ['gasPerL1CalldataByte', beet.u32],\n ],\n 'ArbitrumPriceExt'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { ExecutorDstConfig, executorDstConfigBeet } from './ExecutorDstConfig'\nimport { OracleDstConfig, oracleDstConfigBeet } from './OracleDstConfig'\n/**\n * This type is used to derive the {@link WorkerExtConfig} type as well as the de/serializer.\n * However don't refer to it in your code but use the {@link WorkerExtConfig} type instead.\n *\n * @category userTypes\n * @category enums\n * @category generated\n * @private\n */\nexport type WorkerExtConfigRecord = {\n Executor: { dstConfigs: ExecutorDstConfig[] }\n Oracle: { quorum: number; dstConfigs: OracleDstConfig[] }\n}\n\n/**\n * Union type respresenting the WorkerExtConfig data enum defined in Rust.\n *\n * NOTE: that it includes a `__kind` property which allows to narrow types in\n * switch/if statements.\n * Additionally `isWorkerExtConfig*` type guards are exposed below to narrow to a specific variant.\n *\n * @category userTypes\n * @category enums\n * @category generated\n */\nexport type WorkerExtConfig = beet.DataEnumKeyAsKind<WorkerExtConfigRecord>\n\nexport const isWorkerExtConfigExecutor = (\n x: WorkerExtConfig\n): x is WorkerExtConfig & { __kind: 'Executor' } => x.__kind === 'Executor'\nexport const isWorkerExtConfigOracle = (\n x: WorkerExtConfig\n): x is WorkerExtConfig & { __kind: 'Oracle' } => x.__kind === 'Oracle'\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const workerExtConfigBeet = beet.dataEnum<WorkerExtConfigRecord>([\n [\n 'Executor',\n new beet.FixableBeetArgsStruct<WorkerExtConfigRecord['Executor']>(\n [['dstConfigs', beet.array(executorDstConfigBeet)]],\n 'WorkerExtConfigRecord[\"Executor\"]'\n ),\n ],\n\n [\n 'Oracle',\n new beet.FixableBeetArgsStruct<WorkerExtConfigRecord['Oracle']>(\n [\n ['quorum', beet.u8],\n ['dstConfigs', beet.array(oracleDstConfigBeet)],\n ],\n 'WorkerExtConfigRecord[\"Oracle\"]'\n ),\n ],\n]) as beet.FixableBeet<WorkerExtConfig, WorkerExtConfig>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type ExecutorDstConfig = {\n eid: number\n baseGas: beet.bignum\n multiplierBps: beet.COption<number>\n floorMarginUsd: beet.COption<beet.bignum>\n nativeDropCap: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const executorDstConfigBeet =\n new beet.FixableBeetArgsStruct<ExecutorDstConfig>(\n [\n ['eid', beet.u32],\n ['baseGas', beet.u64],\n ['multiplierBps', beet.coption(beet.u16)],\n ['floorMarginUsd', beet.coption(beet.u128)],\n ['nativeDropCap', beet.u128],\n ],\n 'ExecutorDstConfig'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type OracleDstConfig = {\n eid: number\n dstGas: beet.bignum\n multiplierBps: beet.COption<number>\n floorMarginUsd: beet.COption<beet.bignum>\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const oracleDstConfigBeet =\n new beet.FixableBeetArgsStruct<OracleDstConfig>(\n [\n ['eid', beet.u32],\n ['dstGas', beet.u64],\n ['multiplierBps', beet.coption(beet.u16)],\n ['floorMarginUsd', beet.coption(beet.u128)],\n ],\n 'OracleDstConfig'\n )\n","export * from './deliver'\nexport * from './initConfig'\nexport * from './initDefaultOptions'\nexport * from './initDefaultUlnConfig'\nexport * from './initUln'\nexport * from './log'\nexport * from './quote'\nexport * from './registerWorker'\nexport * from './resetConfig'\nexport * from './send'\nexport * from './sendWithLzToken'\nexport * from './setAdmin'\nexport * from './setAllowlist'\nexport * from './setConfig'\nexport * from './setDefaultMultiplierBps'\nexport * from './setDefaultOptions'\nexport * from './setDefaultUlnConfig'\nexport * from './setDenylist'\nexport * from './setDstConfig'\nexport * from './setPaused'\nexport * from './setPrice'\nexport * from './setQuorum'\nexport * from './setTreasury'\nexport * from './sign'\nexport * from './snapshotConfig'\nexport * from './transferAdmin'\nexport * from './withdrawFee'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { DeliverParams, deliverParamsBeet } from '../types/DeliverParams'\n\n/**\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport type DeliverInstructionArgs = {\n params: DeliverParams\n}\n/**\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport const deliverStruct = new beet.FixableBeetArgsStruct<\n DeliverInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', deliverParamsBeet],\n ],\n 'DeliverInstructionArgs'\n)\n/**\n * Accounts required by the _deliver_ instruction\n *\n * @property [] ulnConfig\n * @property [] defaultUlnConfig\n * @property [] uln\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport type DeliverInstructionAccounts = {\n ulnConfig: web3.PublicKey\n defaultUlnConfig: web3.PublicKey\n uln: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const deliverInstructionDiscriminator = [\n 250, 131, 222, 57, 211, 229, 209, 147,\n]\n\n/**\n * Creates a _Deliver_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Deliver\n * @category generated\n */\nexport function createDeliverInstruction(\n accounts: DeliverInstructionAccounts,\n args: DeliverInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = deliverStruct.serialize({\n instructionDiscriminator: deliverInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.ulnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultUlnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type DeliverParams = {\n packetHeader: Uint8Array\n payloadHash: number[] /* size: 32 */\n optionalOraclesIndexes: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const deliverParamsBeet = new beet.FixableBeetArgsStruct<DeliverParams>(\n [\n ['packetHeader', beet.bytes],\n ['payloadHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['optionalOraclesIndexes', beet.bytes],\n ],\n 'DeliverParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitConfigParams,\n initConfigParamsBeet,\n} from '../types/InitConfigParams'\n\n/**\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport type InitConfigInstructionArgs = {\n params: InitConfigParams\n}\n/**\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport const initConfigStruct = new beet.BeetArgsStruct<\n InitConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initConfigParamsBeet],\n ],\n 'InitConfigInstructionArgs'\n)\n/**\n * Accounts required by the _initConfig_ instruction\n *\n * @property [**signer**] endpoint\n * @property [_writable_, **signer**] payer\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport type InitConfigInstructionAccounts = {\n endpoint: web3.PublicKey\n payer: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initConfigInstructionDiscriminator = [\n 23, 235, 115, 232, 168, 96, 1, 231,\n]\n\n/**\n * Creates a _InitConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitConfig\n * @category generated\n */\nexport function createInitConfigInstruction(\n accounts: InitConfigInstructionAccounts,\n args: InitConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = initConfigStruct.serialize({\n instructionDiscriminator: initConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initConfigParamsBeet = new beet.BeetArgsStruct<InitConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'InitConfigParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitDefaultOptionsParams,\n initDefaultOptionsParamsBeet,\n} from '../types/InitDefaultOptionsParams'\n\n/**\n * @category Instructions\n * @category InitDefaultOptions\n * @category generated\n */\nexport type InitDefaultOptionsInstructionArgs = {\n params: InitDefaultOptionsParams\n}\n/**\n * @category Instructions\n * @category InitDefaultOptions\n * @category generated\n */\nexport const initDefaultOptionsStruct = new beet.FixableBeetArgsStruct<\n InitDefaultOptionsInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initDefaultOptionsParamsBeet],\n ],\n 'InitDefaultOptionsInstructionArgs'\n)\n/**\n * Accounts required by the _initDefaultOptions_ instruction\n *\n * @property [_writable_, **signer**] admin\n * @property [] uln\n * @property [_writable_] defaultOptions\n * @category Instructions\n * @category InitDefaultOptions\n * @category generated\n */\nexport type InitDefaultOptionsInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n defaultOptions: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initDefaultOptionsInstructionDiscriminator = [\n 197, 148, 220, 150, 131, 22, 185, 48,\n]\n\n/**\n * Creates a _InitDefaultOptions_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitDefaultOptions\n * @category generated\n */\nexport function createInitDefaultOptionsInstruction(\n accounts: InitDefaultOptionsInstructionAccounts,\n args: InitDefaultOptionsInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = initDefaultOptionsStruct.serialize({\n instructionDiscriminator: initDefaultOptionsInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultOptions,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type InitDefaultOptionsParams = {\n eid: number\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initDefaultOptionsParamsBeet =\n new beet.FixableBeetArgsStruct<InitDefaultOptionsParams>(\n [\n ['eid', beet.u32],\n ['options', beet.bytes],\n ],\n 'InitDefaultOptionsParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n InitDefaultUlnConfigParams,\n initDefaultUlnConfigParamsBeet,\n} from '../types/InitDefaultUlnConfigParams'\n\n/**\n * @category Instructions\n * @category InitDefaultUlnConfig\n * @category generated\n */\nexport type InitDefaultUlnConfigInstructionArgs = {\n params: InitDefaultUlnConfigParams\n}\n/**\n * @category Instructions\n * @category InitDefaultUlnConfig\n * @category generated\n */\nexport const initDefaultUlnConfigStruct = new beet.FixableBeetArgsStruct<\n InitDefaultUlnConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initDefaultUlnConfigParamsBeet],\n ],\n 'InitDefaultUlnConfigInstructionArgs'\n)\n/**\n * Accounts required by the _initDefaultUlnConfig_ instruction\n *\n * @property [_writable_, **signer**] admin\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @category Instructions\n * @category InitDefaultUlnConfig\n * @category generated\n */\nexport type InitDefaultUlnConfigInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initDefaultUlnConfigInstructionDiscriminator = [\n 145, 94, 211, 155, 228, 140, 71, 34,\n]\n\n/**\n * Creates a _InitDefaultUlnConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitDefaultUlnConfig\n * @category generated\n */\nexport function createInitDefaultUlnConfigInstruction(\n accounts: InitDefaultUlnConfigInstructionAccounts,\n args: InitDefaultUlnConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = initDefaultUlnConfigStruct.serialize({\n instructionDiscriminator: initDefaultUlnConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { UlnConfig, ulnConfigBeet } from './UlnConfig'\nexport type InitDefaultUlnConfigParams = {\n eid: number\n config: UlnConfig\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initDefaultUlnConfigParamsBeet =\n new beet.FixableBeetArgsStruct<InitDefaultUlnConfigParams>(\n [\n ['eid', beet.u32],\n ['config', ulnConfigBeet],\n ],\n 'InitDefaultUlnConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type UlnConfig = {\n maxMessageSize: number\n outboundConfirmations: beet.bignum\n executor: web3.PublicKey\n inboundConfirmations: beet.bignum\n oracles: web3.PublicKey[]\n optionalOraclesThreshold: number\n optionalOracles: web3.PublicKey[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const ulnConfigBeet = new beet.FixableBeetArgsStruct<UlnConfig>(\n [\n ['maxMessageSize', beet.u32],\n ['outboundConfirmations', beet.u64],\n ['executor', beetSolana.publicKey],\n ['inboundConfirmations', beet.u64],\n ['oracles', beet.array(beetSolana.publicKey)],\n ['optionalOraclesThreshold', beet.u8],\n ['optionalOracles', beet.array(beetSolana.publicKey)],\n ],\n 'UlnConfig'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { InitUlnParams, initUlnParamsBeet } from '../types/InitUlnParams'\n\n/**\n * @category Instructions\n * @category InitUln\n * @category generated\n */\nexport type InitUlnInstructionArgs = {\n params: InitUlnParams\n}\n/**\n * @category Instructions\n * @category InitUln\n * @category generated\n */\nexport const initUlnStruct = new beet.BeetArgsStruct<\n InitUlnInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', initUlnParamsBeet],\n ],\n 'InitUlnInstructionArgs'\n)\n/**\n * Accounts required by the _initUln_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] uln\n * @category Instructions\n * @category InitUln\n * @category generated\n */\nexport type InitUlnInstructionAccounts = {\n payer: web3.PublicKey\n uln: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initUlnInstructionDiscriminator = [\n 19, 215, 207, 92, 197, 112, 119, 240,\n]\n\n/**\n * Creates a _InitUln_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category InitUln\n * @category generated\n */\nexport function createInitUlnInstruction(\n accounts: InitUlnInstructionAccounts,\n args: InitUlnInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = initUlnStruct.serialize({\n instructionDiscriminator: initUlnInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type InitUlnParams = {\n eid: number\n endpoint: web3.PublicKey\n admin: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const initUlnParamsBeet = new beet.BeetArgsStruct<InitUlnParams>(\n [\n ['eid', beet.u32],\n ['endpoint', beetSolana.publicKey],\n ['admin', beetSolana.publicKey],\n ],\n 'InitUlnParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { UlnEvent, ulnEventBeet } from '../types/UlnEvent'\n\n/**\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport type LogInstructionArgs = {\n event: UlnEvent\n}\n/**\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport const logStruct = new beet.FixableBeetArgsStruct<\n LogInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['event', ulnEventBeet],\n ],\n 'LogInstructionArgs'\n)\n/**\n * Accounts required by the _log_ instruction\n *\n * @property [] uln\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport type LogInstructionAccounts = {\n uln: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const logInstructionDiscriminator = [\n 141, 230, 214, 242, 9, 209, 207, 170,\n]\n\n/**\n * Creates a _Log_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Log\n * @category generated\n */\nexport function createLogInstruction(\n accounts: LogInstructionAccounts,\n args: LogInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = logStruct.serialize({\n instructionDiscriminator: logInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\n/**\n * This type is used to derive the {@link UlnEvent} type as well as the de/serializer.\n * However don't refer to it in your code but use the {@link UlnEvent} type instead.\n *\n * @category userTypes\n * @category enums\n * @category generated\n * @private\n */\nexport type UlnEventRecord = {\n JobAssigned: { executor: web3.PublicKey; oracles: web3.PublicKey[] }\n}\n\n/**\n * Union type respresenting the UlnEvent data enum defined in Rust.\n *\n * NOTE: that it includes a `__kind` property which allows to narrow types in\n * switch/if statements.\n * Additionally `isUlnEvent*` type guards are exposed below to narrow to a specific variant.\n *\n * @category userTypes\n * @category enums\n * @category generated\n */\nexport type UlnEvent = beet.DataEnumKeyAsKind<UlnEventRecord>\n\nexport const isUlnEventJobAssigned = (\n x: UlnEvent\n): x is UlnEvent & { __kind: 'JobAssigned' } => x.__kind === 'JobAssigned'\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const ulnEventBeet = beet.dataEnum<UlnEventRecord>([\n [\n 'JobAssigned',\n new beet.FixableBeetArgsStruct<UlnEventRecord['JobAssigned']>(\n [\n ['executor', beetSolana.publicKey],\n ['oracles', beet.array(beetSolana.publicKey)],\n ],\n 'UlnEventRecord[\"JobAssigned\"]'\n ),\n ],\n]) as beet.FixableBeet<UlnEvent, UlnEvent>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibQuoteParams,\n messageLibQuoteParamsBeet,\n} from '../types/MessageLibQuoteParams'\n\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionArgs = {\n params: MessageLibQuoteParams\n}\n/**\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport const quoteStruct = new beet.FixableBeetArgsStruct<\n QuoteInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibQuoteParamsBeet],\n ],\n 'QuoteInstructionArgs'\n)\n/**\n * Accounts required by the _quote_ instruction\n *\n * @property [] uln\n * @property [] ulnConfig\n * @property [] defaultUlnConfig\n * @property [] defaultOptions\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport type QuoteInstructionAccounts = {\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n defaultUlnConfig: web3.PublicKey\n defaultOptions: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const quoteInstructionDiscriminator = [\n 149, 42, 109, 247, 134, 146, 213, 123,\n]\n\n/**\n * Creates a _Quote_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Quote\n * @category generated\n */\nexport function createQuoteInstruction(\n accounts: QuoteInstructionAccounts,\n args: QuoteInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = quoteStruct.serialize({\n instructionDiscriminator: quoteInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultUlnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultOptions,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { PacketForQuote, packetForQuoteBeet } from './PacketForQuote'\nexport type MessageLibQuoteParams = {\n packet: PacketForQuote\n payInLzToken: boolean\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibQuoteParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibQuoteParams>(\n [\n ['packet', packetForQuoteBeet],\n ['payInLzToken', beet.bool],\n ['options', beet.bytes],\n ],\n 'MessageLibQuoteParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type PacketForQuote = {\n sender: web3.PublicKey\n dstEid: number\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetForQuoteBeet =\n new beet.FixableBeetArgsStruct<PacketForQuote>(\n [\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['message', beet.bytes],\n ],\n 'PacketForQuote'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n RegisterWorkerParams,\n registerWorkerParamsBeet,\n} from '../types/RegisterWorkerParams'\n\n/**\n * @category Instructions\n * @category RegisterWorker\n * @category generated\n */\nexport type RegisterWorkerInstructionArgs = {\n params: RegisterWorkerParams\n}\n/**\n * @category Instructions\n * @category RegisterWorker\n * @category generated\n */\nexport const registerWorkerStruct = new beet.FixableBeetArgsStruct<\n RegisterWorkerInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', registerWorkerParamsBeet],\n ],\n 'RegisterWorkerInstructionArgs'\n)\n/**\n * Accounts required by the _registerWorker_ instruction\n *\n * @property [_writable_, **signer**] worker\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category RegisterWorker\n * @category generated\n */\nexport type RegisterWorkerInstructionAccounts = {\n worker: web3.PublicKey\n workerConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const registerWorkerInstructionDiscriminator = [\n 22, 253, 23, 225, 230, 31, 6, 192,\n]\n\n/**\n * Creates a _RegisterWorker_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category RegisterWorker\n * @category generated\n */\nexport function createRegisterWorkerInstruction(\n accounts: RegisterWorkerInstructionAccounts,\n args: RegisterWorkerInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = registerWorkerStruct.serialize({\n instructionDiscriminator: registerWorkerInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.worker,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport { WorkerId, workerIdBeet } from './WorkerId'\nexport type RegisterWorkerParams = {\n workerId: WorkerId\n admins: beet.COption<web3.PublicKey[] /* size: 3 */>\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const registerWorkerParamsBeet =\n new beet.FixableBeetArgsStruct<RegisterWorkerParams>(\n [\n ['workerId', workerIdBeet],\n [\n 'admins',\n beet.coption(beet.uniformFixedSizeArray(beetSolana.publicKey, 3)),\n ],\n ],\n 'RegisterWorkerParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibResetConfigParams,\n messageLibResetConfigParamsBeet,\n} from '../types/MessageLibResetConfigParams'\n\n/**\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport type ResetConfigInstructionArgs = {\n params: MessageLibResetConfigParams\n}\n/**\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport const resetConfigStruct = new beet.BeetArgsStruct<\n ResetConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibResetConfigParamsBeet],\n ],\n 'ResetConfigInstructionArgs'\n)\n/**\n * Accounts required by the _resetConfig_ instruction\n *\n * @property [**signer**] endpoint\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport type ResetConfigInstructionAccounts = {\n endpoint: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const resetConfigInstructionDiscriminator = [\n 81, 97, 49, 46, 19, 200, 8, 99,\n]\n\n/**\n * Creates a _ResetConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category ResetConfig\n * @category generated\n */\nexport function createResetConfigInstruction(\n accounts: ResetConfigInstructionAccounts,\n args: ResetConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = resetConfigStruct.serialize({\n instructionDiscriminator: resetConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibResetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibResetConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibResetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibResetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibSendParams,\n messageLibSendParamsBeet,\n} from '../types/MessageLibSendParams'\n\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionArgs = {\n params: MessageLibSendParams\n}\n/**\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport const sendStruct = new beet.FixableBeetArgsStruct<\n SendInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibSendParamsBeet],\n ],\n 'SendInstructionArgs'\n)\n/**\n * Accounts required by the _send_ instruction\n *\n * @property [**signer**] endpoint\n * @property [_writable_] uln\n * @property [] ulnConfig\n * @property [] defaultUlnConfig\n * @property [] defaultOptions\n * @property [] ulnProgram\n * @property [_writable_, **signer**] payer\n * @property [] treasury (optional)\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport type SendInstructionAccounts = {\n endpoint: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n defaultUlnConfig: web3.PublicKey\n defaultOptions: web3.PublicKey\n ulnProgram: web3.PublicKey\n payer: web3.PublicKey\n treasury?: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const sendInstructionDiscriminator = [102, 251, 20, 187, 65, 75, 12, 69]\n\n/**\n * Creates a _Send_ instruction.\n *\n * Optional accounts that are not provided will be omitted from the accounts\n * array passed with the instruction.\n * An optional account that is set cannot follow an optional account that is unset.\n * Otherwise an Error is raised.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Send\n * @category generated\n */\nexport function createSendInstruction(\n accounts: SendInstructionAccounts,\n args: SendInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = sendStruct.serialize({\n instructionDiscriminator: sendInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultUlnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultOptions,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnProgram,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n ]\n\n if (accounts.treasury != null) {\n keys.push({\n pubkey: accounts.treasury,\n isWritable: false,\n isSigner: false,\n })\n }\n keys.push({\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n })\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Packet, packetBeet } from './Packet'\nexport type MessageLibSendParams = {\n guid: number[] /* size: 32 */\n packet: Packet\n options: Uint8Array\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSendParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSendParams>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['packet', packetBeet],\n ['options', beet.bytes],\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessageLibSendParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type Packet = {\n nonce: beet.bignum\n srcEid: number\n sender: web3.PublicKey\n dstEid: number\n receiver: number[] /* size: 32 */\n message: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const packetBeet = new beet.FixableBeetArgsStruct<Packet>(\n [\n ['nonce', beet.u64],\n ['srcEid', beet.u32],\n ['sender', beetSolana.publicKey],\n ['dstEid', beet.u32],\n ['receiver', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['message', beet.bytes],\n ],\n 'Packet'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as splToken from '@solana/spl-token'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibSendParams,\n messageLibSendParamsBeet,\n} from '../types/MessageLibSendParams'\n\n/**\n * @category Instructions\n * @category SendWithLzToken\n * @category generated\n */\nexport type SendWithLzTokenInstructionArgs = {\n params: MessageLibSendParams\n}\n/**\n * @category Instructions\n * @category SendWithLzToken\n * @category generated\n */\nexport const sendWithLzTokenStruct = new beet.FixableBeetArgsStruct<\n SendWithLzTokenInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibSendParamsBeet],\n ],\n 'SendWithLzTokenInstructionArgs'\n)\n/**\n * Accounts required by the _sendWithLzToken_ instruction\n *\n * @property [**signer**] endpoint\n * @property [_writable_] uln\n * @property [] ulnConfig\n * @property [] defaultUlnConfig\n * @property [] defaultOptions\n * @property [] ulnProgram\n * @property [_writable_, **signer**] payer\n * @property [_writable_] payerTokenAccount\n * @property [_writable_] treasury\n * @property [] endpointSettings\n * @category Instructions\n * @category SendWithLzToken\n * @category generated\n */\nexport type SendWithLzTokenInstructionAccounts = {\n endpoint: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n defaultUlnConfig: web3.PublicKey\n defaultOptions: web3.PublicKey\n ulnProgram: web3.PublicKey\n payer: web3.PublicKey\n systemProgram?: web3.PublicKey\n payerTokenAccount: web3.PublicKey\n treasury: web3.PublicKey\n tokenProgram?: web3.PublicKey\n endpointSettings: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const sendWithLzTokenInstructionDiscriminator = [\n 165, 161, 84, 48, 129, 26, 193, 19,\n]\n\n/**\n * Creates a _SendWithLzToken_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SendWithLzToken\n * @category generated\n */\nexport function createSendWithLzTokenInstruction(\n accounts: SendWithLzTokenInstructionAccounts,\n args: SendWithLzTokenInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = sendWithLzTokenStruct.serialize({\n instructionDiscriminator: sendWithLzTokenInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultUlnConfig,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultOptions,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnProgram,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.payerTokenAccount,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.treasury,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.tokenProgram ?? splToken.TOKEN_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.endpointSettings,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetAdminParams, setAdminParamsBeet } from '../types/SetAdminParams'\n\n/**\n * @category Instructions\n * @category SetAdmin\n * @category generated\n */\nexport type SetAdminInstructionArgs = {\n params: SetAdminParams\n}\n/**\n * @category Instructions\n * @category SetAdmin\n * @category generated\n */\nexport const setAdminStruct = new beet.BeetArgsStruct<\n SetAdminInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setAdminParamsBeet],\n ],\n 'SetAdminInstructionArgs'\n)\n/**\n * Accounts required by the _setAdmin_ instruction\n *\n * @property [**signer**] worker\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetAdmin\n * @category generated\n */\nexport type SetAdminInstructionAccounts = {\n worker: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setAdminInstructionDiscriminator = [\n 251, 163, 0, 52, 91, 194, 187, 92,\n]\n\n/**\n * Creates a _SetAdmin_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetAdmin\n * @category generated\n */\nexport function createSetAdminInstruction(\n accounts: SetAdminInstructionAccounts,\n args: SetAdminInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setAdminStruct.serialize({\n instructionDiscriminator: setAdminInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.worker,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetAdminParams = {\n admins: web3.PublicKey[] /* size: 3 */\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setAdminParamsBeet = new beet.BeetArgsStruct<SetAdminParams>(\n [['admins', beet.uniformFixedSizeArray(beetSolana.publicKey, 3)]],\n 'SetAdminParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetAllowlistParams,\n setAllowlistParamsBeet,\n} from '../types/SetAllowlistParams'\n\n/**\n * @category Instructions\n * @category SetAllowlist\n * @category generated\n */\nexport type SetAllowlistInstructionArgs = {\n params: SetAllowlistParams\n}\n/**\n * @category Instructions\n * @category SetAllowlist\n * @category generated\n */\nexport const setAllowlistStruct = new beet.FixableBeetArgsStruct<\n SetAllowlistInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setAllowlistParamsBeet],\n ],\n 'SetAllowlistInstructionArgs'\n)\n/**\n * Accounts required by the _setAllowlist_ instruction\n *\n * @property [**signer**] worker\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetAllowlist\n * @category generated\n */\nexport type SetAllowlistInstructionAccounts = {\n worker: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setAllowlistInstructionDiscriminator = [\n 141, 30, 41, 131, 132, 7, 216, 134,\n]\n\n/**\n * Creates a _SetAllowlist_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetAllowlist\n * @category generated\n */\nexport function createSetAllowlistInstruction(\n accounts: SetAllowlistInstructionAccounts,\n args: SetAllowlistInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setAllowlistStruct.serialize({\n instructionDiscriminator: setAllowlistInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.worker,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetAllowlistParams = {\n allowlist: web3.PublicKey[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setAllowlistParamsBeet =\n new beet.FixableBeetArgsStruct<SetAllowlistParams>(\n [['allowlist', beet.array(beetSolana.publicKey)]],\n 'SetAllowlistParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibSetConfigParams,\n messageLibSetConfigParamsBeet,\n} from '../types/MessageLibSetConfigParams'\n\n/**\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport type SetConfigInstructionArgs = {\n params: MessageLibSetConfigParams\n}\n/**\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport const setConfigStruct = new beet.FixableBeetArgsStruct<\n SetConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibSetConfigParamsBeet],\n ],\n 'SetConfigInstructionArgs'\n)\n/**\n * Accounts required by the _setConfig_ instruction\n *\n * @property [**signer**] endpoint\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport type SetConfigInstructionAccounts = {\n endpoint: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setConfigInstructionDiscriminator = [\n 108, 158, 154, 175, 212, 98, 52, 66,\n]\n\n/**\n * Creates a _SetConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetConfig\n * @category generated\n */\nexport function createSetConfigInstruction(\n accounts: SetConfigInstructionAccounts,\n args: SetConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setConfigStruct.serialize({\n instructionDiscriminator: setConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSetConfigParams = {\n eid: number\n oapp: web3.PublicKey\n configType: number\n config: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSetConfigParamsBeet =\n new beet.FixableBeetArgsStruct<MessageLibSetConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ['configType', beet.u32],\n ['config', beet.bytes],\n ],\n 'MessageLibSetConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultMultiplierBpsParams,\n setDefaultMultiplierBpsParamsBeet,\n} from '../types/SetDefaultMultiplierBpsParams'\n\n/**\n * @category Instructions\n * @category SetDefaultMultiplierBps\n * @category generated\n */\nexport type SetDefaultMultiplierBpsInstructionArgs = {\n params: SetDefaultMultiplierBpsParams\n}\n/**\n * @category Instructions\n * @category SetDefaultMultiplierBps\n * @category generated\n */\nexport const setDefaultMultiplierBpsStruct = new beet.BeetArgsStruct<\n SetDefaultMultiplierBpsInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultMultiplierBpsParamsBeet],\n ],\n 'SetDefaultMultiplierBpsInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultMultiplierBps_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetDefaultMultiplierBps\n * @category generated\n */\nexport type SetDefaultMultiplierBpsInstructionAccounts = {\n admin: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultMultiplierBpsInstructionDiscriminator = [\n 244, 68, 126, 136, 12, 126, 191, 122,\n]\n\n/**\n * Creates a _SetDefaultMultiplierBps_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultMultiplierBps\n * @category generated\n */\nexport function createSetDefaultMultiplierBpsInstruction(\n accounts: SetDefaultMultiplierBpsInstructionAccounts,\n args: SetDefaultMultiplierBpsInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setDefaultMultiplierBpsStruct.serialize({\n instructionDiscriminator: setDefaultMultiplierBpsInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetDefaultMultiplierBpsParams = {\n worker: web3.PublicKey\n defaultMultiplierBps: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultMultiplierBpsParamsBeet =\n new beet.BeetArgsStruct<SetDefaultMultiplierBpsParams>(\n [\n ['worker', beetSolana.publicKey],\n ['defaultMultiplierBps', beet.u16],\n ],\n 'SetDefaultMultiplierBpsParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultOptionsParams,\n setDefaultOptionsParamsBeet,\n} from '../types/SetDefaultOptionsParams'\n\n/**\n * @category Instructions\n * @category SetDefaultOptions\n * @category generated\n */\nexport type SetDefaultOptionsInstructionArgs = {\n params: SetDefaultOptionsParams\n}\n/**\n * @category Instructions\n * @category SetDefaultOptions\n * @category generated\n */\nexport const setDefaultOptionsStruct = new beet.FixableBeetArgsStruct<\n SetDefaultOptionsInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultOptionsParamsBeet],\n ],\n 'SetDefaultOptionsInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultOptions_ instruction\n *\n * @property [**signer**] admin\n * @property [] uln\n * @property [_writable_] defaultOptions\n * @category Instructions\n * @category SetDefaultOptions\n * @category generated\n */\nexport type SetDefaultOptionsInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n defaultOptions: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultOptionsInstructionDiscriminator = [\n 151, 78, 199, 102, 253, 237, 105, 126,\n]\n\n/**\n * Creates a _SetDefaultOptions_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultOptions\n * @category generated\n */\nexport function createSetDefaultOptionsInstruction(\n accounts: SetDefaultOptionsInstructionAccounts,\n args: SetDefaultOptionsInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setDefaultOptionsStruct.serialize({\n instructionDiscriminator: setDefaultOptionsInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultOptions,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetDefaultOptionsParams = {\n eid: number\n options: Uint8Array\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultOptionsParamsBeet =\n new beet.FixableBeetArgsStruct<SetDefaultOptionsParams>(\n [\n ['eid', beet.u32],\n ['options', beet.bytes],\n ],\n 'SetDefaultOptionsParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDefaultUlnConfigParams,\n setDefaultUlnConfigParamsBeet,\n} from '../types/SetDefaultUlnConfigParams'\n\n/**\n * @category Instructions\n * @category SetDefaultUlnConfig\n * @category generated\n */\nexport type SetDefaultUlnConfigInstructionArgs = {\n params: SetDefaultUlnConfigParams\n}\n/**\n * @category Instructions\n * @category SetDefaultUlnConfig\n * @category generated\n */\nexport const setDefaultUlnConfigStruct = new beet.FixableBeetArgsStruct<\n SetDefaultUlnConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDefaultUlnConfigParamsBeet],\n ],\n 'SetDefaultUlnConfigInstructionArgs'\n)\n/**\n * Accounts required by the _setDefaultUlnConfig_ instruction\n *\n * @property [**signer**] admin\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @category Instructions\n * @category SetDefaultUlnConfig\n * @category generated\n */\nexport type SetDefaultUlnConfigInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDefaultUlnConfigInstructionDiscriminator = [\n 212, 155, 143, 239, 171, 53, 194, 119,\n]\n\n/**\n * Creates a _SetDefaultUlnConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDefaultUlnConfig\n * @category generated\n */\nexport function createSetDefaultUlnConfigInstruction(\n accounts: SetDefaultUlnConfigInstructionAccounts,\n args: SetDefaultUlnConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setDefaultUlnConfigStruct.serialize({\n instructionDiscriminator: setDefaultUlnConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { UlnConfig, ulnConfigBeet } from './UlnConfig'\nexport type SetDefaultUlnConfigParams = {\n eid: number\n config: UlnConfig\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDefaultUlnConfigParamsBeet =\n new beet.FixableBeetArgsStruct<SetDefaultUlnConfigParams>(\n [\n ['eid', beet.u32],\n ['config', ulnConfigBeet],\n ],\n 'SetDefaultUlnConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDenylistParams,\n setDenylistParamsBeet,\n} from '../types/SetDenylistParams'\n\n/**\n * @category Instructions\n * @category SetDenylist\n * @category generated\n */\nexport type SetDenylistInstructionArgs = {\n params: SetDenylistParams\n}\n/**\n * @category Instructions\n * @category SetDenylist\n * @category generated\n */\nexport const setDenylistStruct = new beet.FixableBeetArgsStruct<\n SetDenylistInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDenylistParamsBeet],\n ],\n 'SetDenylistInstructionArgs'\n)\n/**\n * Accounts required by the _setDenylist_ instruction\n *\n * @property [**signer**] worker\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetDenylist\n * @category generated\n */\nexport type SetDenylistInstructionAccounts = {\n worker: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDenylistInstructionDiscriminator = [\n 165, 80, 247, 83, 173, 165, 39, 102,\n]\n\n/**\n * Creates a _SetDenylist_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDenylist\n * @category generated\n */\nexport function createSetDenylistInstruction(\n accounts: SetDenylistInstructionAccounts,\n args: SetDenylistInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setDenylistStruct.serialize({\n instructionDiscriminator: setDenylistInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.worker,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetDenylistParams = {\n denylist: web3.PublicKey[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDenylistParamsBeet =\n new beet.FixableBeetArgsStruct<SetDenylistParams>(\n [['denylist', beet.array(beetSolana.publicKey)]],\n 'SetDenylistParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetDstConfigParams,\n setDstConfigParamsBeet,\n} from '../types/SetDstConfigParams'\n\n/**\n * @category Instructions\n * @category SetDstConfig\n * @category generated\n */\nexport type SetDstConfigInstructionArgs = {\n params: SetDstConfigParams\n}\n/**\n * @category Instructions\n * @category SetDstConfig\n * @category generated\n */\nexport const setDstConfigStruct = new beet.FixableBeetArgsStruct<\n SetDstConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setDstConfigParamsBeet],\n ],\n 'SetDstConfigInstructionArgs'\n)\n/**\n * Accounts required by the _setDstConfig_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetDstConfig\n * @category generated\n */\nexport type SetDstConfigInstructionAccounts = {\n admin: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setDstConfigInstructionDiscriminator = [\n 237, 77, 127, 180, 150, 239, 195, 214,\n]\n\n/**\n * Creates a _SetDstConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetDstConfig\n * @category generated\n */\nexport function createSetDstConfigInstruction(\n accounts: SetDstConfigInstructionAccounts,\n args: SetDstConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setDstConfigStruct.serialize({\n instructionDiscriminator: setDstConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nimport { DstConfig, dstConfigBeet } from './DstConfig'\nexport type SetDstConfigParams = {\n worker: web3.PublicKey\n dstConfigs: DstConfig[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setDstConfigParamsBeet =\n new beet.FixableBeetArgsStruct<SetDstConfigParams>(\n [\n ['worker', beetSolana.publicKey],\n ['dstConfigs', beet.array(dstConfigBeet)],\n ],\n 'SetDstConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { ExecutorDstConfig, executorDstConfigBeet } from './ExecutorDstConfig'\nimport { OracleDstConfig, oracleDstConfigBeet } from './OracleDstConfig'\n/**\n * This type is used to derive the {@link DstConfig} type as well as the de/serializer.\n * However don't refer to it in your code but use the {@link DstConfig} type instead.\n *\n * @category userTypes\n * @category enums\n * @category generated\n * @private\n */\nexport type DstConfigRecord = {\n Executor: { fields: [ExecutorDstConfig] }\n Oracle: { fields: [OracleDstConfig] }\n}\n\n/**\n * Union type respresenting the DstConfig data enum defined in Rust.\n *\n * NOTE: that it includes a `__kind` property which allows to narrow types in\n * switch/if statements.\n * Additionally `isDstConfig*` type guards are exposed below to narrow to a specific variant.\n *\n * @category userTypes\n * @category enums\n * @category generated\n */\nexport type DstConfig = beet.DataEnumKeyAsKind<DstConfigRecord>\n\nexport const isDstConfigExecutor = (\n x: DstConfig\n): x is DstConfig & { __kind: 'Executor' } => x.__kind === 'Executor'\nexport const isDstConfigOracle = (\n x: DstConfig\n): x is DstConfig & { __kind: 'Oracle' } => x.__kind === 'Oracle'\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const dstConfigBeet = beet.dataEnum<DstConfigRecord>([\n [\n 'Executor',\n new beet.FixableBeetArgsStruct<DstConfigRecord['Executor']>(\n [['fields', beet.tuple([executorDstConfigBeet])]],\n 'DstConfigRecord[\"Executor\"]'\n ),\n ],\n [\n 'Oracle',\n new beet.FixableBeetArgsStruct<DstConfigRecord['Oracle']>(\n [['fields', beet.tuple([oracleDstConfigBeet])]],\n 'DstConfigRecord[\"Oracle\"]'\n ),\n ],\n]) as beet.FixableBeet<DstConfig, DstConfig>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetPausedParams, setPausedParamsBeet } from '../types/SetPausedParams'\n\n/**\n * @category Instructions\n * @category SetPaused\n * @category generated\n */\nexport type SetPausedInstructionArgs = {\n params: SetPausedParams\n}\n/**\n * @category Instructions\n * @category SetPaused\n * @category generated\n */\nexport const setPausedStruct = new beet.BeetArgsStruct<\n SetPausedInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setPausedParamsBeet],\n ],\n 'SetPausedInstructionArgs'\n)\n/**\n * Accounts required by the _setPaused_ instruction\n *\n * @property [**signer**] worker\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetPaused\n * @category generated\n */\nexport type SetPausedInstructionAccounts = {\n worker: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setPausedInstructionDiscriminator = [\n 91, 60, 125, 192, 176, 225, 166, 218,\n]\n\n/**\n * Creates a _SetPaused_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetPaused\n * @category generated\n */\nexport function createSetPausedInstruction(\n accounts: SetPausedInstructionAccounts,\n args: SetPausedInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setPausedStruct.serialize({\n instructionDiscriminator: setPausedInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.worker,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetPausedParams = {\n paused: boolean\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setPausedParamsBeet = new beet.BeetArgsStruct<SetPausedParams>(\n [['paused', beet.bool]],\n 'SetPausedParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetPriceParams, setPriceParamsBeet } from '../types/SetPriceParams'\n\n/**\n * @category Instructions\n * @category SetPrice\n * @category generated\n */\nexport type SetPriceInstructionArgs = {\n params: SetPriceParams\n}\n/**\n * @category Instructions\n * @category SetPrice\n * @category generated\n */\nexport const setPriceStruct = new beet.FixableBeetArgsStruct<\n SetPriceInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setPriceParamsBeet],\n ],\n 'SetPriceInstructionArgs'\n)\n/**\n * Accounts required by the _setPrice_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] workerConfig\n * @category Instructions\n * @category SetPrice\n * @category generated\n */\nexport type SetPriceInstructionAccounts = {\n admin: web3.PublicKey\n workerConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setPriceInstructionDiscriminator = [\n 16, 19, 182, 8, 149, 83, 72, 181,\n]\n\n/**\n * Creates a _SetPrice_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetPrice\n * @category generated\n */\nexport function createSetPriceInstruction(\n accounts: SetPriceInstructionAccounts,\n args: SetPriceInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setPriceStruct.serialize({\n instructionDiscriminator: setPriceInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nimport { PriceParams, priceParamsBeet } from './PriceParams'\nexport type SetPriceParams = {\n worker: web3.PublicKey\n prices: PriceParams[]\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setPriceParamsBeet =\n new beet.FixableBeetArgsStruct<SetPriceParams>(\n [\n ['worker', beetSolana.publicKey],\n ['prices', beet.array(priceParamsBeet)],\n ],\n 'SetPriceParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Price, priceBeet } from './Price'\nimport { ArbitrumPriceExt, arbitrumPriceExtBeet } from './ArbitrumPriceExt'\n/**\n * This type is used to derive the {@link PriceParams} type as well as the de/serializer.\n * However don't refer to it in your code but use the {@link PriceParams} type instead.\n *\n * @category userTypes\n * @category enums\n * @category generated\n * @private\n */\nexport type PriceParamsRecord = {\n Price: { fields: [Price] }\n PriceForArbitrum: { fields: [Price, ArbitrumPriceExt] }\n}\n\n/**\n * Union type respresenting the PriceParams data enum defined in Rust.\n *\n * NOTE: that it includes a `__kind` property which allows to narrow types in\n * switch/if statements.\n * Additionally `isPriceParams*` type guards are exposed below to narrow to a specific variant.\n *\n * @category userTypes\n * @category enums\n * @category generated\n */\nexport type PriceParams = beet.DataEnumKeyAsKind<PriceParamsRecord>\n\nexport const isPriceParamsPrice = (\n x: PriceParams\n): x is PriceParams & { __kind: 'Price' } => x.__kind === 'Price'\nexport const isPriceParamsPriceForArbitrum = (\n x: PriceParams\n): x is PriceParams & { __kind: 'PriceForArbitrum' } =>\n x.__kind === 'PriceForArbitrum'\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const priceParamsBeet = beet.dataEnum<PriceParamsRecord>([\n [\n 'Price',\n new beet.BeetArgsStruct<PriceParamsRecord['Price']>(\n [['fields', beet.fixedSizeTuple([priceBeet])]],\n 'PriceParamsRecord[\"Price\"]'\n ),\n ],\n [\n 'PriceForArbitrum',\n new beet.BeetArgsStruct<PriceParamsRecord['PriceForArbitrum']>(\n [['fields', beet.fixedSizeTuple([priceBeet, arbitrumPriceExtBeet])]],\n 'PriceParamsRecord[\"PriceForArbitrum\"]'\n ),\n ],\n]) as beet.FixableBeet<PriceParams, PriceParams>\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SetQuorumParams, setQuorumParamsBeet } from '../types/SetQuorumParams'\n\n/**\n * @category Instructions\n * @category SetQuorum\n * @category generated\n */\nexport type SetQuorumInstructionArgs = {\n params: SetQuorumParams\n}\n/**\n * @category Instructions\n * @category SetQuorum\n * @category generated\n */\nexport const setQuorumStruct = new beet.BeetArgsStruct<\n SetQuorumInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setQuorumParamsBeet],\n ],\n 'SetQuorumInstructionArgs'\n)\n/**\n * Accounts required by the _setQuorum_ instruction\n *\n * @property [**signer**] oracle\n * @property [_writable_] oracleConfig\n * @category Instructions\n * @category SetQuorum\n * @category generated\n */\nexport type SetQuorumInstructionAccounts = {\n oracle: web3.PublicKey\n oracleConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setQuorumInstructionDiscriminator = [\n 122, 137, 22, 36, 212, 64, 130, 122,\n]\n\n/**\n * Creates a _SetQuorum_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetQuorum\n * @category generated\n */\nexport function createSetQuorumInstruction(\n accounts: SetQuorumInstructionAccounts,\n args: SetQuorumInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setQuorumStruct.serialize({\n instructionDiscriminator: setQuorumInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.oracle,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.oracleConfig,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SetQuorumParams = {\n quorum: number\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setQuorumParamsBeet = new beet.BeetArgsStruct<SetQuorumParams>(\n [['quorum', beet.u8]],\n 'SetQuorumParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n SetTreasuryParams,\n setTreasuryParamsBeet,\n} from '../types/SetTreasuryParams'\n\n/**\n * @category Instructions\n * @category SetTreasury\n * @category generated\n */\nexport type SetTreasuryInstructionArgs = {\n params: SetTreasuryParams\n}\n/**\n * @category Instructions\n * @category SetTreasury\n * @category generated\n */\nexport const setTreasuryStruct = new beet.FixableBeetArgsStruct<\n SetTreasuryInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', setTreasuryParamsBeet],\n ],\n 'SetTreasuryInstructionArgs'\n)\n/**\n * Accounts required by the _setTreasury_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] uln\n * @category Instructions\n * @category SetTreasury\n * @category generated\n */\nexport type SetTreasuryInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const setTreasuryInstructionDiscriminator = [\n 57, 97, 196, 95, 195, 206, 106, 136,\n]\n\n/**\n * Creates a _SetTreasury_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SetTreasury\n * @category generated\n */\nexport function createSetTreasuryInstruction(\n accounts: SetTreasuryInstructionAccounts,\n args: SetTreasuryInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = setTreasuryStruct.serialize({\n instructionDiscriminator: setTreasuryInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { Treasury, treasuryBeet } from './Treasury'\nexport type SetTreasuryParams = {\n treasury: beet.COption<Treasury>\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const setTreasuryParamsBeet =\n new beet.FixableBeetArgsStruct<SetTreasuryParams>(\n [['treasury', beet.coption(treasuryBeet)]],\n 'SetTreasuryParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport { SignParams, signParamsBeet } from '../types/SignParams'\n\n/**\n * @category Instructions\n * @category Sign\n * @category generated\n */\nexport type SignInstructionArgs = {\n params: SignParams\n}\n/**\n * @category Instructions\n * @category Sign\n * @category generated\n */\nexport const signStruct = new beet.FixableBeetArgsStruct<\n SignInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', signParamsBeet],\n ],\n 'SignInstructionArgs'\n)\n/**\n * Accounts required by the _sign_ instruction\n *\n * @property [_writable_, **signer**] oracle\n * @property [_writable_] confirmations\n * @category Instructions\n * @category Sign\n * @category generated\n */\nexport type SignInstructionAccounts = {\n oracle: web3.PublicKey\n confirmations: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const signInstructionDiscriminator = [5, 221, 155, 46, 237, 91, 28, 236]\n\n/**\n * Creates a _Sign_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category Sign\n * @category generated\n */\nexport function createSignInstruction(\n accounts: SignInstructionAccounts,\n args: SignInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = signStruct.serialize({\n instructionDiscriminator: signInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.oracle,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.confirmations,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type SignParams = {\n packetHeader: Uint8Array\n payloadHash: number[] /* size: 32 */\n confirmations: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const signParamsBeet = new beet.FixableBeetArgsStruct<SignParams>(\n [\n ['packetHeader', beet.bytes],\n ['payloadHash', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['confirmations', beet.u64],\n ],\n 'SignParams'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n MessageLibSnapshotConfigParams,\n messageLibSnapshotConfigParamsBeet,\n} from '../types/MessageLibSnapshotConfigParams'\n\n/**\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport type SnapshotConfigInstructionArgs = {\n params: MessageLibSnapshotConfigParams\n}\n/**\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport const snapshotConfigStruct = new beet.BeetArgsStruct<\n SnapshotConfigInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', messageLibSnapshotConfigParamsBeet],\n ],\n 'SnapshotConfigInstructionArgs'\n)\n/**\n * Accounts required by the _snapshotConfig_ instruction\n *\n * @property [**signer**] endpoint\n * @property [] uln\n * @property [_writable_] ulnConfig\n * @property [] defaultUlnConfig\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport type SnapshotConfigInstructionAccounts = {\n endpoint: web3.PublicKey\n uln: web3.PublicKey\n ulnConfig: web3.PublicKey\n defaultUlnConfig: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const snapshotConfigInstructionDiscriminator = [\n 11, 153, 235, 114, 93, 177, 208, 119,\n]\n\n/**\n * Creates a _SnapshotConfig_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category SnapshotConfig\n * @category generated\n */\nexport function createSnapshotConfigInstruction(\n accounts: SnapshotConfigInstructionAccounts,\n args: SnapshotConfigInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = snapshotConfigStruct.serialize({\n instructionDiscriminator: snapshotConfigInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.endpoint,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: accounts.ulnConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.defaultUlnConfig,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type MessageLibSnapshotConfigParams = {\n eid: number\n oapp: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messageLibSnapshotConfigParamsBeet =\n new beet.BeetArgsStruct<MessageLibSnapshotConfigParams>(\n [\n ['eid', beet.u32],\n ['oapp', beetSolana.publicKey],\n ],\n 'MessageLibSnapshotConfigParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n TransferAdminParams,\n transferAdminParamsBeet,\n} from '../types/TransferAdminParams'\n\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionArgs = {\n params: TransferAdminParams\n}\n/**\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport const transferAdminStruct = new beet.BeetArgsStruct<\n TransferAdminInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', transferAdminParamsBeet],\n ],\n 'TransferAdminInstructionArgs'\n)\n/**\n * Accounts required by the _transferAdmin_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] uln\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport type TransferAdminInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const transferAdminInstructionDiscriminator = [\n 42, 242, 66, 106, 228, 10, 111, 156,\n]\n\n/**\n * Creates a _TransferAdmin_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category TransferAdmin\n * @category generated\n */\nexport function createTransferAdminInstruction(\n accounts: TransferAdminInstructionAccounts,\n args: TransferAdminInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = transferAdminStruct.serialize({\n instructionDiscriminator: transferAdminInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nimport * as beet from '@metaplex-foundation/beet'\nexport type TransferAdminParams = {\n admin: web3.PublicKey\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const transferAdminParamsBeet =\n new beet.BeetArgsStruct<TransferAdminParams>(\n [['admin', beetSolana.publicKey]],\n 'TransferAdminParams'\n )\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport {\n WithdrawFeeParams,\n withdrawFeeParamsBeet,\n} from '../types/WithdrawFeeParams'\n\n/**\n * @category Instructions\n * @category WithdrawFee\n * @category generated\n */\nexport type WithdrawFeeInstructionArgs = {\n params: WithdrawFeeParams\n}\n/**\n * @category Instructions\n * @category WithdrawFee\n * @category generated\n */\nexport const withdrawFeeStruct = new beet.BeetArgsStruct<\n WithdrawFeeInstructionArgs & {\n instructionDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['params', withdrawFeeParamsBeet],\n ],\n 'WithdrawFeeInstructionArgs'\n)\n/**\n * Accounts required by the _withdrawFee_ instruction\n *\n * @property [**signer**] admin\n * @property [_writable_] uln\n * @property [_writable_] workerConfig\n * @property [_writable_] receiver\n * @category Instructions\n * @category WithdrawFee\n * @category generated\n */\nexport type WithdrawFeeInstructionAccounts = {\n admin: web3.PublicKey\n uln: web3.PublicKey\n workerConfig: web3.PublicKey\n receiver: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const withdrawFeeInstructionDiscriminator = [\n 14, 122, 231, 218, 31, 238, 223, 150,\n]\n\n/**\n * Creates a _WithdrawFee_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @param args to provide as instruction data to the program\n *\n * @category Instructions\n * @category WithdrawFee\n * @category generated\n */\nexport function createWithdrawFeeInstruction(\n accounts: WithdrawFeeInstructionAccounts,\n args: WithdrawFeeInstructionArgs,\n programId = new web3.PublicKey('7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH')\n) {\n const [data] = withdrawFeeStruct.serialize({\n instructionDiscriminator: withdrawFeeInstructionDiscriminator,\n ...args,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.admin,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: accounts.uln,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.workerConfig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.receiver,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as web3 from '@solana/web3.js'\nimport * as beet from '@metaplex-foundation/beet'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\nexport type WithdrawFeeParams = {\n worker: web3.PublicKey\n amount: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const withdrawFeeParamsBeet = new beet.BeetArgsStruct<WithdrawFeeParams>(\n [\n ['worker', beetSolana.publicKey],\n ['amount', beet.u64],\n ],\n 'WithdrawFeeParams'\n)\n","export * from './Acl'\nexport * from './ArbitrumPriceExt'\nexport * from './DeliverParams'\nexport * from './DstConfig'\nexport * from './ExecutorDstConfig'\nexport * from './InitConfigParams'\nexport * from './InitDefaultOptionsParams'\nexport * from './InitDefaultUlnConfigParams'\nexport * from './InitUlnParams'\nexport * from './LzTokenTreasury'\nexport * from './MessageLibQuoteParams'\nexport * from './MessageLibResetConfigParams'\nexport * from './MessageLibSendParams'\nexport * from './MessageLibSetConfigParams'\nexport * from './MessageLibSnapshotConfigParams'\nexport * from './MessagingFee'\nexport * from './MessagingReceipt'\nexport * from './OracleDstConfig'\nexport * from './Packet'\nexport * from './PacketForQuote'\nexport * from './Price'\nexport * from './PriceFeed'\nexport * from './PriceParams'\nexport * from './RegisterWorkerParams'\nexport * from './SetAdminParams'\nexport * from './SetAllowlistParams'\nexport * from './SetDefaultMultiplierBpsParams'\nexport * from './SetDefaultOptionsParams'\nexport * from './SetDefaultUlnConfigParams'\nexport * from './SetDenylistParams'\nexport * from './SetDstConfigParams'\nexport * from './SetPausedParams'\nexport * from './SetPriceParams'\nexport * from './SetQuorumParams'\nexport * from './SetTreasuryParams'\nexport * from './SignParams'\nexport * from './TransferAdminParams'\nexport * from './Treasury'\nexport * from './UlnConfig'\nexport * from './UlnEvent'\nexport * from './WithdrawFeeParams'\nexport * from './WorkerExtConfig'\nexport * from './WorkerId'\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nexport type MessagingFee = {\n nativeFee: beet.bignum\n lzTokenFee: beet.bignum\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingFeeBeet = new beet.BeetArgsStruct<MessagingFee>(\n [\n ['nativeFee', beet.u64],\n ['lzTokenFee', beet.u64],\n ],\n 'MessagingFee'\n)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport { MessagingFee, messagingFeeBeet } from './MessagingFee'\nexport type MessagingReceipt = {\n guid: number[] /* size: 32 */\n nonce: beet.bignum\n fee: MessagingFee\n}\n\n/**\n * @category userTypes\n * @category generated\n */\nexport const messagingReceiptBeet = new beet.BeetArgsStruct<MessagingReceipt>(\n [\n ['guid', beet.uniformFixedSizeArray(beet.u8, 32)],\n ['nonce', beet.u64],\n ['fee', messagingFeeBeet],\n ],\n 'MessagingReceipt'\n)\n","import {\n AddressLookupTableAccount,\n AddressLookupTableProgram,\n Blockhash,\n CloseLookupTableParams,\n Connection,\n DeactivateLookupTableParams,\n Finality,\n Keypair,\n NONCE_ACCOUNT_LENGTH,\n NonceAccount,\n PartiallyDecodedInstruction,\n PublicKey,\n SystemProgram,\n Transaction,\n TransactionInstruction,\n TransactionMessage,\n TransactionSignature,\n VersionedTransaction,\n} from '@solana/web3.js'\nimport * as base58 from 'bs58'\nimport invariant from 'tiny-invariant'\n\nimport { LogDiscriminator } from './endpoint'\nimport {\n EndpointEvent,\n endpointEventBeet,\n isEndpointEventComposedMessageDelivered,\n isEndpointEventComposedMessageReceived,\n isEndpointEventPacketDelivered,\n isEndpointEventPacketReceived,\n isEndpointEventPacketSent,\n} from './generated/endpoint'\n\nexport function loadKeypair(filepath: string): Keypair {\n return Keypair.fromSecretKey(\n Buffer.from(\n JSON.parse(\n require('fs').readFileSync(filepath, {\n encoding: 'utf-8',\n })\n )\n )\n )\n}\n\nexport function saveKeypair(keypair: Keypair, keypairPath: string): void {\n require('fs').writeFileSync(keypairPath, JSON.stringify(Array.from(keypair.secretKey)))\n}\n\nexport function loadAnchorKeypair(): Keypair {\n invariant(process.env.ANCHOR_WALLET, 'missing ANCHOR_WALLET env')\n return loadKeypair(process.env.ANCHOR_WALLET)\n}\n\nexport async function parseSentPacketByTxHash(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature | Awaited<ReturnType<typeof connection.getParsedTransaction>>,\n commitment?: Finality\n): Promise<EndpointEvent | null> {\n const events = await parseSignatureToEndpointEvent(connection, program, signature, commitment)\n if (!events) return null\n const tmp = events.filter(isEndpointEventPacketSent)\n if (tmp.length === 0) return null\n return tmp[0]\n}\n\nexport async function parseDeliveredPacketByTxHash(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature | Awaited<ReturnType<typeof connection.getParsedTransaction>>,\n commitment?: Finality\n): Promise<EndpointEvent | null> {\n const events = await parseSignatureToEndpointEvent(connection, program, signature, commitment)\n if (!events) return null\n const tmp = events.filter(isEndpointEventPacketDelivered)\n if (tmp.length === 0) return null\n return tmp[0]\n}\n\n// TODO: refactor\nexport async function parseReceivedPacketByTxHash(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature | Awaited<ReturnType<typeof connection.getParsedTransaction>>,\n commitment?: Finality\n): Promise<EndpointEvent | null> {\n const events = await parseSignatureToEndpointEvent(connection, program, signature, commitment)\n if (!events) return null\n const tmp = events.filter(isEndpointEventPacketReceived)\n if (tmp.length === 0) return null\n return tmp[0]\n}\n\nexport async function parseComposedMessageDeliveredByTxHash(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature,\n commitment?: Finality\n): Promise<EndpointEvent | null> {\n const events = await parseSignatureToEndpointEvent(connection, program, signature, commitment)\n if (!events) return null\n const tmp = events.filter(isEndpointEventComposedMessageDelivered)\n if (tmp.length === 0) return null\n return tmp[0]\n}\n\nexport async function parseComposedMessageReceivedByTxHash(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature,\n commitment?: Finality\n): Promise<EndpointEvent | null> {\n const events = await parseSignatureToEndpointEvent(connection, program, signature, commitment)\n if (!events) return null\n const tmp = events.filter(isEndpointEventComposedMessageReceived)\n if (tmp.length === 0) return null\n return tmp[0]\n}\n\nasync function parseSignatureToEndpointEvent(\n connection: Connection,\n program: PublicKey,\n signature: TransactionSignature | Awaited<ReturnType<typeof connection.getParsedTransaction>>,\n commitment?: Finality\n): Promise<EndpointEvent[] | null> {\n const tx =\n typeof signature === 'string'\n ? await connection.getParsedTransaction(signature, {\n commitment: commitment ?? 'confirmed',\n maxSupportedTransactionVersion: 0,\n })\n : signature\n const events = new Array<EndpointEvent>()\n for (const instruction of tx?.meta?.innerInstructions || []) {\n for (const innerInstruction of instruction.instructions) {\n const inst = innerInstruction as PartiallyDecodedInstruction\n if (!inst.programId.equals(program)) {\n continue\n }\n const decoded = base58.decode(inst.data)\n const discriminator = Buffer.from(decoded.subarray(0, 8)).toString('hex')\n if (discriminator !== LogDiscriminator) {\n continue\n }\n const dataBuffer = Buffer.from(decoded.subarray(8, decoded.length))\n const beet = endpointEventBeet.toFixedFromData(dataBuffer, 0)\n events.push(beet.read(dataBuffer, 0))\n }\n }\n return events.length > 0 ? events : null\n}\n\nexport async function generateAddressLookupTable(\n connection: Connection,\n payer: PublicKey,\n authority: PublicKey,\n addresses: Array<PublicKey>\n): Promise<{ instructinos: Array<TransactionInstruction>; address: PublicKey }> {\n const slot = await connection.getSlot('finalized')\n const [createInstruction, lookupTableAddress] = AddressLookupTableProgram.createLookupTable({\n payer,\n authority,\n recentSlot: slot,\n })\n const extendInstruction = AddressLookupTableProgram.extendLookupTable({\n payer,\n authority,\n lookupTable: lookupTableAddress,\n addresses,\n })\n\n return {\n instructinos: [createInstruction, extendInstruction],\n address: lookupTableAddress,\n }\n}\n\n// To properly terminate the lookup table, it is advisable to initially invoke `deactivateLookupTable`,\n// pause for a duration of 500 blocks, and subsequently invoke `closeLookupTable`.\nexport function deactivateLookupTable(authority: PublicKey, lookupTable: PublicKey): TransactionInstruction {\n return AddressLookupTableProgram.deactivateLookupTable({\n authority,\n lookupTable,\n } as DeactivateLookupTableParams)\n}\n\n// same above\nexport function closeLookupTable(\n recipient: PublicKey,\n authority: PublicKey,\n lookupTable: PublicKey\n): TransactionInstruction {\n return AddressLookupTableProgram.closeLookupTable({\n authority,\n recipient,\n lookupTable,\n } as CloseLookupTableParams)\n}\n\nexport async function txWithAddressLookupTable(\n connection: Connection,\n payer: PublicKey,\n instructions: Array<TransactionInstruction>,\n tableAddr?: PublicKey,\n recentBlockhash?: Blockhash\n): Promise<VersionedTransaction> {\n recentBlockhash = recentBlockhash || (await connection.getLatestBlockhash()).blockhash\n if (!tableAddr) {\n return new VersionedTransaction(\n new TransactionMessage({\n instructions,\n payerKey: payer,\n recentBlockhash,\n }).compileToV0Message()\n )\n }\n const lookupTableAccount = await connection.getAddressLookupTable(tableAddr).then((res) => res.value)\n return new VersionedTransaction(\n new TransactionMessage({\n instructions,\n payerKey: payer,\n recentBlockhash,\n }).compileToV0Message([lookupTableAccount as AddressLookupTableAccount])\n )\n}\n\nexport async function createNonceAccountTX(\n connection: Connection,\n auth: PublicKey,\n lamportsForRent?: number\n): Promise<{ tx: Transaction; nonceAccount: Keypair }> {\n const nonceAccount = Keypair.generate()\n\n const lamports = lamportsForRent || (await connection.getMinimumBalanceForRentExemption(NONCE_ACCOUNT_LENGTH))\n\n const tx = new Transaction()\n tx.add(\n // create nonce account\n SystemProgram.createAccount({\n fromPubkey: auth,\n newAccountPubkey: nonceAccount.publicKey,\n lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: SystemProgram.programId,\n }),\n // init nonce account\n SystemProgram.nonceInitialize({\n noncePubkey: nonceAccount.publicKey, // nonce account pubkey\n authorizedPubkey: auth, // nonce account auth\n })\n )\n return { tx, nonceAccount }\n}\n\nexport async function txWithNonce(\n connection: Connection,\n noncePubkey: PublicKey,\n instructinos: Array<TransactionInstruction>,\n nonceInfo?: NonceAccount\n): Promise<Transaction | null> {\n const tx = new Transaction()\n\n if (!nonceInfo) {\n const accountInfo = await connection.getAccountInfo(noncePubkey)\n if (accountInfo) {\n nonceInfo = NonceAccount.fromAccountData(accountInfo.data)\n } else {\n return null\n }\n }\n\n tx.add(\n // nonce advance must be the first insturction\n SystemProgram.nonceAdvance({\n noncePubkey: noncePubkey,\n authorizedPubkey: nonceInfo.authorizedPubkey,\n })\n )\n tx.add(...instructinos)\n tx.recentBlockhash = nonceInfo.nonce\n return tx\n}\n","import { Environment } from '@layerzerolabs/lz-definitions'\n\nexport const idlTypes = [\n 'MessageLibQuoteParams',\n 'MessageLibSendParams',\n 'MessagingFee',\n 'MessagingReceipt',\n 'PacketForQuote',\n 'Packet',\n 'InitConfigParams',\n 'MessageLibSetConfigParams',\n 'MessageLibSnapshotConfigParams',\n 'MessageLibResetConfigParams',\n]\nexport const messageLibs = ['uln', 'simple_messagelib']\n\nexport const FAUCET_URL: { [env in Environment]: string } = {\n [Environment.MAINNET]: '',\n [Environment.TESTNET]: '',\n [Environment.DEVNET]: '',\n [Environment.LOCAL]: 'http://127.0.0.1:9900',\n}\n","import { ProcessEnvOptions, execSync } from 'child_process'\nimport fs from 'fs'\nimport path from 'path'\n\nimport { Keypair, PublicKey } from '@solana/web3.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { loadKeypair } from './utility'\n\nconst keypairCache: Record<string, Keypair> = {}\n\nexport type SupportedPrograms = 'endpoint' | 'simple_messagelib' | 'uln' | 'blocked_messagelib'\n\nexport function programKeypairPath(network: Network | 'default', program: SupportedPrograms): string {\n if (network === 'default') {\n return path.join(__dirname, '../deployments', 'default-keypair', `${program}-keypair.json`)\n }\n return path.join(__dirname, '../deployments', network, `${program}-keypair.json`)\n}\n\nexport function getProgramKeypair(network: Network | 'default', program: SupportedPrograms): Keypair {\n if (keypairCache[`program-${network}-${program}`]) {\n return keypairCache[`program-${network}-${program}`]\n }\n const keypairPath = programKeypairPath(network, program)\n if (!fs.existsSync(keypairPath)) {\n throw new Error(`keypair file not found: ${keypairPath}`)\n } else {\n const keypair = loadKeypair(keypairPath)\n keypairCache[`program-${network}-${program}`] = keypair\n return keypair\n }\n}\n\nexport function getEndpointProgramId(network: Network | 'default'): PublicKey {\n return getProgramKeypair(network, 'endpoint').publicKey\n}\n\nexport function getSimpleMessageLibProgramId(network: Network | 'default'): PublicKey {\n return getProgramKeypair(network, 'simple_messagelib').publicKey\n}\n\nexport function getULNProgramId(network: Network | 'default'): PublicKey {\n return getProgramKeypair(network, 'uln').publicKey\n}\n\nexport function getBlockedMessageLibProgramId(network: Network | 'default'): PublicKey {\n return getProgramKeypair(network, 'blocked_messagelib').publicKey\n}\n\nexport function getProgramPath(program: SupportedPrograms, targetDir = '../target/deploy'): string {\n const rootDir = path.dirname(require.resolve('@layerzerolabs/lz-solana-sdk-v2/package.json'))\n const programDir = path.join(rootDir, targetDir)\n return `${programDir}/${program}.so`\n}\n\n// this function is used to build the program with the random program id and deploy it to the local cluster.\nexport async function buildProgram(\n program: SupportedPrograms,\n program_id: Keypair,\n ops: ProcessEnvOptions,\n programDir?: string,\n targetDir?: string\n): Promise<string> {\n const rootDir = path.dirname(require.resolve('@layerzerolabs/lz-solana-sdk-v2/package.json'))\n if (!programDir) {\n programDir = path.join(rootDir, `../target/deploy`)\n }\n if (!targetDir) {\n targetDir = path.join(rootDir, `../target/deploy`)\n }\n ops.cwd = path.join(rootDir, '../')\n console.log(ops.cwd)\n ops.env = {\n ...ops.env,\n CARGO_TARGET_DIR: targetDir,\n }\n // create the program directory if not exist\n !fs.existsSync(programDir) && fs.mkdirSync(programDir, { recursive: true })\n\n console.debug(`building ${program} program. Address: ${program_id.publicKey.toBase58()}`)\n const cmd = `anchor build --arch sbf -p ${program} -- --sbf-out-dir ${programDir}`\n // const cmd = `cargo +sbf build --profile ${profile} --target sbf-solana-solana -p ${program.replace(/_/g, '-')}`\n console.log(`Running command: ${cmd}`)\n execSync(cmd, ops)\n console.debug(`building ${program} program done`)\n\n const program_id_path = path.join(programDir, `${program}-keypair.json`)\n // console.debug(`overide the original:${program_id_path} keypair`)\n fs.writeFileSync(program_id_path, JSON.stringify(Array.from(program_id.secretKey)))\n return `${programDir}/${program}.so`\n // fs.copyFileSync(`${programDir}/sbf-solana-solana/${profile}/${program}.so`, `${programDir}/${program}.so`)\n}\n\nexport function deploy(\n network: Network,\n program: SupportedPrograms,\n programDir: string,\n programIdDir: string,\n keypair: string,\n rpc: string\n): Buffer {\n const programIdKeypair = path.join(programIdDir, `${program}-keypair.json`)\n const programSo = path.join(programDir, `${program}.so`)\n const cmd = `solana program deploy --program-id ${programIdKeypair} ${programSo} -k ${keypair} -u ${rpc}`\n console.log(`Running command: ${cmd}`)\n const result = execSync(cmd)\n const deploymentsPath = path.join(__dirname, '../deployments', network)\n !fs.existsSync(deploymentsPath) && fs.mkdirSync(deploymentsPath, { recursive: true })\n // copy the keypair and so to deployments\n fs.copyFileSync(programIdKeypair, path.resolve(deploymentsPath, `${program}-keypair.json`))\n // fs.copyFileSync(programSo, path.resolve(deploymentsPath, `${program}.so`)) // don't need so file\n return result\n}\n","import { PublicKey } from '@solana/web3.js'\nexport * from './accounts'\nexport * from './instructions'\n\n/**\n * Program address\n *\n * @category constants\n * @category generated\n */\nexport const PROGRAM_ADDRESS = '2XrYqmhBMPJgDsb4SVbjV1PnJBprurd5bzRCkHwiFCJB'\n\n/**\n * Program public key\n *\n * @category constants\n * @category generated\n */\nexport const PROGRAM_ID = new PublicKey(PROGRAM_ADDRESS)\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\nimport * as beetSolana from '@metaplex-foundation/beet-solana'\n\n/**\n * Arguments used to create {@link MessageLib}\n * @category Accounts\n * @category generated\n */\nexport type MessageLibArgs = {\n bump: number\n}\n\nexport const messageLibDiscriminator = [141, 191, 244, 48, 52, 174, 199, 209]\n/**\n * Holds the data for the {@link MessageLib} Account and provides de/serialization\n * functionality for that data\n *\n * @category Accounts\n * @category generated\n */\nexport class MessageLib implements MessageLibArgs {\n private constructor(readonly bump: number) {}\n\n /**\n * Creates a {@link MessageLib} instance from the provided args.\n */\n static fromArgs(args: MessageLibArgs) {\n return new MessageLib(args.bump)\n }\n\n /**\n * Deserializes the {@link MessageLib} from the data of the provided {@link web3.AccountInfo}.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static fromAccountInfo(\n accountInfo: web3.AccountInfo<Buffer>,\n offset = 0\n ): [MessageLib, number] {\n return MessageLib.deserialize(accountInfo.data, offset)\n }\n\n /**\n * Retrieves the account info from the provided address and deserializes\n * the {@link MessageLib} from its data.\n *\n * @throws Error if no account info is found at the address or if deserialization fails\n */\n static async fromAccountAddress(\n connection: web3.Connection,\n address: web3.PublicKey,\n commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig\n ): Promise<MessageLib> {\n const accountInfo = await connection.getAccountInfo(\n address,\n commitmentOrConfig\n )\n if (accountInfo == null) {\n throw new Error(`Unable to find MessageLib account at ${address}`)\n }\n return MessageLib.fromAccountInfo(accountInfo, 0)[0]\n }\n\n /**\n * Provides a {@link web3.Connection.getProgramAccounts} config builder,\n * to fetch accounts matching filters that can be specified via that builder.\n *\n * @param programId - the program that owns the accounts we are filtering\n */\n static gpaBuilder(\n programId: web3.PublicKey = new web3.PublicKey(\n '2XrYqmhBMPJgDsb4SVbjV1PnJBprurd5bzRCkHwiFCJB'\n )\n ) {\n return beetSolana.GpaBuilder.fromStruct(programId, messageLibBeet)\n }\n\n /**\n * Deserializes the {@link MessageLib} from the provided data Buffer.\n * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.\n */\n static deserialize(buf: Buffer, offset = 0): [MessageLib, number] {\n return messageLibBeet.deserialize(buf, offset)\n }\n\n /**\n * Serializes the {@link MessageLib} into a Buffer.\n * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.\n */\n serialize(): [Buffer, number] {\n return messageLibBeet.serialize({\n accountDiscriminator: messageLibDiscriminator,\n ...this,\n })\n }\n\n /**\n * Returns the byteSize of a {@link Buffer} holding the serialized data of\n * {@link MessageLib}\n */\n static get byteSize() {\n return messageLibBeet.byteSize\n }\n\n /**\n * Fetches the minimum balance needed to exempt an account holding\n * {@link MessageLib} data from rent\n *\n * @param connection used to retrieve the rent exemption information\n */\n static async getMinimumBalanceForRentExemption(\n connection: web3.Connection,\n commitment?: web3.Commitment\n ): Promise<number> {\n return connection.getMinimumBalanceForRentExemption(\n MessageLib.byteSize,\n commitment\n )\n }\n\n /**\n * Determines if the provided {@link Buffer} has the correct byte size to\n * hold {@link MessageLib} data.\n */\n static hasCorrectByteSize(buf: Buffer, offset = 0) {\n return buf.byteLength - offset === MessageLib.byteSize\n }\n\n /**\n * Returns a readable version of {@link MessageLib} properties\n * and can be used to convert to JSON and/or logging\n */\n pretty() {\n return {\n bump: this.bump,\n }\n }\n}\n\n/**\n * @category Accounts\n * @category generated\n */\nexport const messageLibBeet = new beet.BeetStruct<\n MessageLib,\n MessageLibArgs & {\n accountDiscriminator: number[] /* size: 8 */\n }\n>(\n [\n ['accountDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)],\n ['bump', beet.u8],\n ],\n MessageLib.fromArgs,\n 'MessageLib'\n)\n","export * from './MessageLib'\n\nimport { MessageLib } from './MessageLib'\n\nexport const accountProviders = { MessageLib }\n","/**\n * This code was GENERATED using the solita package.\n * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.\n *\n * See: https://github.com/metaplex-foundation/solita\n */\n\nimport * as beet from '@metaplex-foundation/beet'\nimport * as web3 from '@solana/web3.js'\n\n/**\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport const initMessageLibStruct = new beet.BeetArgsStruct<{\n instructionDiscriminator: number[] /* size: 8 */\n}>(\n [['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)]],\n 'InitMessageLibInstructionArgs'\n)\n/**\n * Accounts required by the _initMessageLib_ instruction\n *\n * @property [_writable_, **signer**] payer\n * @property [_writable_] messageLib\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport type InitMessageLibInstructionAccounts = {\n payer: web3.PublicKey\n messageLib: web3.PublicKey\n systemProgram?: web3.PublicKey\n anchorRemainingAccounts?: web3.AccountMeta[]\n}\n\nexport const initMessageLibInstructionDiscriminator = [\n 184, 93, 59, 206, 98, 238, 225, 54,\n]\n\n/**\n * Creates a _InitMessageLib_ instruction.\n *\n * @param accounts that will be accessed while the instruction is processed\n * @category Instructions\n * @category InitMessageLib\n * @category generated\n */\nexport function createInitMessageLibInstruction(\n accounts: InitMessageLibInstructionAccounts,\n programId = new web3.PublicKey('2XrYqmhBMPJgDsb4SVbjV1PnJBprurd5bzRCkHwiFCJB')\n) {\n const [data] = initMessageLibStruct.serialize({\n instructionDiscriminator: initMessageLibInstructionDiscriminator,\n })\n const keys: web3.AccountMeta[] = [\n {\n pubkey: accounts.payer,\n isWritable: true,\n isSigner: true,\n },\n {\n pubkey: accounts.messageLib,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: accounts.systemProgram ?? web3.SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n ]\n\n if (accounts.anchorRemainingAccounts != null) {\n for (const acc of accounts.anchorRemainingAccounts) {\n keys.push(acc)\n }\n }\n\n const ix = new web3.TransactionInstruction({\n programId,\n keys,\n data,\n })\n return ix\n}\n","{\n \"version\": \"0.1.0\",\n \"name\": \"endpoint\",\n \"instructions\": [\n {\n \"name\": \"log\",\n \"accounts\": [\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"events\",\n \"type\": {\n \"defined\": \"EndpointEvent\"\n }\n }\n ]\n },\n {\n \"name\": \"initEndpoint\",\n \"docs\": [\n \"--------------------------- Admin Instructions ---------------------------\"\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"blockedMessageLibAuthority\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultMessageLibAuthority\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitEndpointParams\"\n }\n }\n ]\n },\n {\n \"name\": \"transferAdmin\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"TransferAdminParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setLayerzeroToken\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetLayerzeroTokenParams\"\n }\n }\n ]\n },\n {\n \"name\": \"registerLibrary\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLib\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": true,\n \"isSigner\": false,\n \"docs\": [\n \"Each message lib has one independent PDA, used as a signer for the authentication of the\",\n \"endpoint when the endpoint calls the message lib.\"\n ]\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initDefaultSendLibrary\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultSendLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitDefaultSendLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setDefaultSendLibrary\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultSendLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetDefaultSendLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"initDefaultReceiveLibrary\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultReceiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitDefaultReceiveLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setDefaultReceiveLibrary\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultReceiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetDefaultReceiveLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setDefaultReceiveLibraryTimeout\",\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultReceiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetDefaultReceiveLibraryTimeoutParams\"\n }\n }\n ]\n },\n {\n \"name\": \"initNonce\",\n \"docs\": [\n \"--------------------------- OApp Instructions ---------------------------\"\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"nonce\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pendingNonce\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitNonceParams\"\n }\n }\n ]\n },\n {\n \"name\": \"initSendLibrary\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"sendLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitSendLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setSendLibrary\",\n \"accounts\": [\n {\n \"name\": \"sender\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"sendLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetSendLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"initReceiveLibrary\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"receiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitReceiveLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setReceiveLibrary\",\n \"accounts\": [\n {\n \"name\": \"receiver\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"receiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetReceiveLibraryParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setReceiveLibraryTimeout\",\n \"accounts\": [\n {\n \"name\": \"receiver\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"receiveLibraryConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetReceiveLibraryTimeoutParams\"\n }\n }\n ]\n },\n {\n \"name\": \"initConfig\",\n \"accounts\": [\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLib\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"InitConfigParams\"\n }\n }\n ]\n },\n {\n \"name\": \"setConfig\",\n \"accounts\": [\n {\n \"name\": \"oapp\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLib\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SetConfigParams\"\n }\n }\n ]\n },\n {\n \"name\": \"snapshotConfig\",\n \"accounts\": [\n {\n \"name\": \"oapp\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLib\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SnapshotConfigParams\"\n }\n }\n ]\n },\n {\n \"name\": \"resetConfig\",\n \"accounts\": [\n {\n \"name\": \"oapp\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"messageLibAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"messageLib\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"ResetConfigParams\"\n }\n }\n ]\n },\n {\n \"name\": \"quote\",\n \"accounts\": [\n {\n \"name\": \"sendLibrary\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"it should be the same as the custom one [`send_library_config.message_lib`],\",\n \"otherwise it should be the default one [`default_send_library_config.message_lib`].\"\n ]\n },\n {\n \"name\": \"sendLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultSendLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"sendLibraryAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"QuoteParams\"\n }\n }\n ],\n \"returns\": {\n \"defined\": \"MessagingFee\"\n }\n },\n {\n \"name\": \"send\",\n \"accounts\": [\n {\n \"name\": \"sender\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"sendLibrary\",\n \"isMut\": true,\n \"isSigner\": false,\n \"docs\": [\n \"should meet the requirement: If the sender sets a custom send library,\",\n \"it should be the same as the custom one [`send_library_config.message_lib`],\",\n \"otherwise it should be the default one [`default_send_library_config.message_lib`].\"\n ]\n },\n {\n \"name\": \"sendLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultSendLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"sendLibraryAuthority\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"As a signer to the send library when the endpoint calls the send library.\"\n ]\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpointProgram\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"for logging\"\n ]\n },\n {\n \"name\": \"nonce\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SendParams\"\n }\n }\n ],\n \"returns\": {\n \"defined\": \"MessagingReceipt\"\n }\n },\n {\n \"name\": \"deliver\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"receiveLibrary\",\n \"isMut\": false,\n \"isSigner\": true,\n \"docs\": [\n \"The PDA of the receive library.\"\n ]\n },\n {\n \"name\": \"receiveLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"defaultReceiveLibraryConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"nonce\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pendingNonce\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"payloadHash\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpointProgram\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"for logging\"\n ]\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"DeliverParams\"\n }\n }\n ]\n },\n {\n \"name\": \"skip\",\n \"accounts\": [\n {\n \"name\": \"receiver\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"nonce\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pendingNonce\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"SkipParams\"\n }\n }\n ]\n },\n {\n \"name\": \"clear\",\n \"accounts\": [\n {\n \"name\": \"receiver\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"nonce\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"payloadHash\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpointProgram\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"for logging\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"ClearParams\"\n }\n }\n ],\n \"returns\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"deliverComposedMessage\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"receiver\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"composedMessage\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpointProgram\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"for logging\"\n ]\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"DeliverComposedMessageParams\"\n }\n }\n ]\n },\n {\n \"name\": \"clearComposedMessage\",\n \"accounts\": [\n {\n \"name\": \"composer\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"composedMessage\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"endpoint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"endpointProgram\",\n \"isMut\": false,\n \"isSigner\": false,\n \"docs\": [\n \"for logging\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": \"ClearComposedMessageParams\"\n }\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"EndpointSettings\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"blockedMessageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"lzToken\",\n \"type\": {\n \"option\": \"publicKey\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibAuthority\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"SendLibraryConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ReceiveLibraryConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"timeout\",\n \"type\": {\n \"option\": {\n \"defined\": \"ReceiveLibraryTimeout\"\n }\n }\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"Nonce\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"inboundNonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"outboundNonce\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PendingInboundNonce\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"nonces\",\n \"type\": {\n \"vec\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"MessageState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"received\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n }\n ],\n \"types\": [\n {\n \"name\": \"InitDefaultReceiveLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"InitDefaultSendLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"InitEndpointParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"blockedMessageLib\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"SetDefaultReceiveLibraryTimeoutParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"lib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"SetDefaultReceiveLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"gracePeriod\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SetDefaultSendLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"SetLayerzeroTokenParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"lzToken\",\n \"type\": {\n \"option\": \"publicKey\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"TransferAdminParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"DeliverParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"srcEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payloadHash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ClearComposedMessageParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"ClearParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"srcEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"DeliverComposedMessageParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"composer\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"InitConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"oapp\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"InitNonceParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"localOapp\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"remoteEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"remoteOapp\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"InitReceiveLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"InitSendLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"sender\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"QuoteParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"sender\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"dstEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"payInLzToken\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"options\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibQuoteParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"packet\",\n \"type\": {\n \"defined\": \"PacketForQuote\"\n }\n },\n {\n \"name\": \"payInLzToken\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"options\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"PacketForQuote\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"sender\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"dstEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"ResetConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibResetConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"oapp\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"SendParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"dstEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"receiver\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"options\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"nativeFee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lzTokenFee\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibSendParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"packet\",\n \"type\": {\n \"defined\": \"Packet\"\n }\n },\n {\n \"name\": \"options\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"nativeFee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lzTokenFee\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Packet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"srcEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"dstEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"receiver\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"MessagingFee\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"nativeFee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lzTokenFee\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MessagingReceipt\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fee\",\n \"type\": {\n \"defined\": \"MessagingFee\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"SetConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"configType\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"config\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibSetConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"oapp\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"configType\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"config\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"SetReceiveLibraryTimeoutParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"lib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"SetReceiveLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"gracePeriod\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SetSendLibraryParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"newLib\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"SkipParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"srcEid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SnapshotConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"MessageLibSnapshotConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"oapp\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"ReceiveLibraryTimeout\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"messageLib\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"EndpointEvent\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"PacketSent\",\n \"fields\": [\n {\n \"name\": \"encoded_packet\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"options\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"send_library\",\n \"type\": \"publicKey\"\n }\n ]\n },\n {\n \"name\": \"PacketDelivered\",\n \"fields\": [\n {\n \"name\": \"src_eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payload_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"receive_library\",\n \"type\": \"publicKey\"\n }\n ]\n },\n {\n \"name\": \"PacketReceived\",\n \"fields\": [\n {\n \"name\": \"src_eid\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sender\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payload_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"ComposedMessageDelivered\",\n \"fields\": [\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"composer\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"ComposedMessageReceived\",\n \"fields\": [\n {\n \"name\": \"receiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"composer\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"guid\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"message_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n ]\n }\n }\n ],\n \"errors\": [\n {\n \"code\": 71536,\n \"name\": \"InvalidArgument\"\n },\n {\n \"code\": 71537,\n \"name\": \"OnlyRegistered\"\n },\n {\n \"code\": 71539,\n \"name\": \"InvalidAmount\"\n },\n {\n \"code\": 71540,\n \"name\": \"InvalidNonce\"\n },\n {\n \"code\": 71541,\n \"name\": \"InsufficientFee\"\n },\n {\n \"code\": 71542,\n \"name\": \"Unsorted\"\n },\n {\n \"code\": 71544,\n \"name\": \"InvalidOptionsFormatType\"\n },\n {\n \"code\": 71545,\n \"name\": \"InvalidSize\"\n },\n {\n \"code\": 137072,\n \"name\": \"OutOfRange\"\n },\n {\n \"code\": 202608,\n \"name\": \"InvalidState\"\n },\n {\n \"code\": 333680,\n \"name\": \"PermissionDenied\"\n },\n {\n \"code\": 399216,\n \"name\": \"NotFound\"\n },\n {\n \"code\": 792432,\n \"name\": \"NotImplemented\"\n },\n {\n \"code\": 857968,\n \"name\": \"Unavailable\"\n },\n {\n \"code\": 857971,\n \"name\": \"LzTokenUnavailable\"\n }\n ],\n \"metadata\": {\n \"address\": \"76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6\"\n }\n}","export * from './pda-deriver'\nexport * as EndpointProgram from './endpoint'\nexport * as SimpleMessageLibProgram from './simple-message-lib'\nexport * as UlnProgram from './uln'\nexport * from './oapp-base'\nexport * from './utility'\nexport * from './config'\nexport * from './deployment'\nexport * as BlockedMessageLibProgram from './generated/blocked_messagelib'\nimport * as endpoint from '../idl/endpoint.json'\n\nexport const IdlTypes = {\n endpoint: endpoint.types,\n}\n"]}