@layerzerolabs/oft-v2-solana-sdk 3.0.135-sui.0 → 3.0.136

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/oft302.ts","../../../../../../node_modules/.store/@solana-spl-token-virtual-3f511f2cc7/package/src/constants.ts","../src/consts.ts","../src/generated/oft302/accounts/index.ts","../src/generated/oft302/accounts/lzReceiveTypesAccounts.ts","../src/generated/oft302/types/index.ts","../src/generated/oft302/types/enforcedOptions.ts","../src/generated/oft302/types/lzAccount.ts","../src/generated/oft302/types/lzReceiveParams.ts","../src/generated/oft302/types/messagingFee.ts","../src/generated/oft302/types/oFTFeeDetail.ts","../src/generated/oft302/types/oFTLimits.ts","../src/generated/oft302/types/oFTReceipt.ts","../src/generated/oft302/types/oFTType.ts","../src/generated/oft302/types/peerConfigParam.ts","../src/generated/oft302/types/quoteOFTResult.ts","../src/generated/oft302/types/rateLimiter.ts","../src/generated/oft302/types/rateLimitParams.ts","../src/generated/oft302/types/setOFTConfigParams.ts","../src/generated/oft302/types/version.ts","../src/generated/oft302/accounts/oFTStore.ts","../src/generated/oft302/accounts/peerConfig.ts","../src/generated/oft302/errors/index.ts","../src/generated/oft302/errors/oft.ts","../src/generated/oft302/instructions/index.ts","../src/generated/oft302/shared/index.ts","../src/generated/oft302/instructions/initOft.ts","../src/generated/oft302/instructions/lzReceive.ts","../src/generated/oft302/instructions/lzReceiveTypes.ts","../src/generated/oft302/instructions/oftVersion.ts","../src/generated/oft302/instructions/quoteOft.ts","../src/generated/oft302/instructions/quoteSend.ts","../src/generated/oft302/instructions/send.ts","../src/generated/oft302/instructions/setOftConfig.ts","../src/generated/oft302/instructions/setPause.ts","../src/generated/oft302/instructions/setPeerConfig.ts","../src/generated/oft302/instructions/withdrawFee.ts","../src/pda.ts","../src/generated/oft302/programs/index.ts","../src/generated/oft302/programs/oft.ts","../src/oft202.ts","../src/generated/oft202/accounts/index.ts","../src/generated/oft202/accounts/lzReceiveTypesAccounts.ts","../src/generated/oft202/types/index.ts","../src/generated/oft202/types/composeParams.ts","../src/generated/oft202/types/enforcedOptions.ts","../src/generated/oft202/types/lzAccount.ts","../src/generated/oft202/types/lzReceiveParams.ts","../src/generated/oft202/types/messagingFee.ts","../src/generated/oft202/types/oFTFeeDetail.ts","../src/generated/oft202/types/oFTLimits.ts","../src/generated/oft202/types/oFTReceipt.ts","../src/generated/oft202/types/oFTType.ts","../src/generated/oft202/types/peerConfigParam.ts","../src/generated/oft202/types/quoteOFTResult.ts","../src/generated/oft202/types/rateLimiter.ts","../src/generated/oft202/types/rateLimitParams.ts","../src/generated/oft202/types/setOFTConfigParams.ts","../src/generated/oft202/accounts/oFTStore.ts","../src/generated/oft202/accounts/peerConfig.ts","../src/generated/oft202/errors/index.ts","../src/generated/oft202/errors/oft.ts","../src/generated/oft202/instructions/index.ts","../src/generated/oft202/shared/index.ts","../src/generated/oft202/instructions/initOft.ts","../src/generated/oft202/instructions/lzReceive.ts","../src/generated/oft202/instructions/lzReceiveTypes.ts","../src/generated/oft202/instructions/quoteOft.ts","../src/generated/oft202/instructions/quoteSend.ts","../src/generated/oft202/instructions/send.ts","../src/generated/oft202/instructions/setOftConfig.ts","../src/generated/oft202/instructions/setPause.ts","../src/generated/oft202/instructions/setPeerConfig.ts","../src/generated/oft202/instructions/withdrawFee.ts","../src/generated/oft202/programs/index.ts","../src/generated/oft202/programs/oft.ts"],"names":["initOft","quoteOft","send","setPeerConfig","withdrawFee","PublicKey","mapSerializer","struct","bytes","publicKeySerializer","deserializeAccount","publicKey","toPublicKey","assertAccountExists","gpaBuilder","u32","bool","u64","string","OFTType","scalarEnum","dataEnum","tuple","option","u16","array","u8","ProgramError","isPda","isSigner","transactionBuilder","createWeb3JsEddsa","publicKeyBytes","Endian","LZ_RECEIVE_TYPES_SEED","EndpointProgram","UlnProgram","createNullRpc","createDefaultProgramRepository","lzReceiveTypes","fromWeb3JsPublicKey","some","none","SimpleMessageLibProgram","EventPDA","toWeb3JsInstruction","ComputeBudgetProgram","simulateWeb3JsTransaction","toWeb3JsPublicKey","EndpointPDA","UlnPDA","defaultPublicKey","hexlify","accounts_exports","createOFTProgramRepo","errors_exports","instructions_exports","programs_exports","quote","setOFTConfig","shared_exports","types_exports","deserializeLzReceiveTypesAccounts","deserializeOFTStore","deserializePeerConfig","fetchAllLzReceiveTypesAccounts","fetchAllOFTStore","fetchAllPeerConfig","fetchLzReceiveTypesAccounts","fetchOFTStore","fetchPeerConfig","getLzReceiveTypesAccountsAccountDataSerializer","getLzReceiveTypesAccountsGpaBuilder","getLzReceiveTypesAccountsSize","getOFTStoreAccountDataSerializer","getOFTStoreGpaBuilder","getPeerConfigAccountDataSerializer","getPeerConfigGpaBuilder","safeFetchAllLzReceiveTypesAccounts","safeFetchAllOFTStore","safeFetchAllPeerConfig","safeFetchLzReceiveTypesAccounts","safeFetchOFTStore","safeFetchPeerConfig","getEnforcedOptionsSerializer","getLzAccountSerializer","getLzReceiveParamsSerializer","getMessagingFeeSerializer","getOFTFeeDetailSerializer","getOFTLimitsSerializer","getOFTReceiptSerializer","getOFTTypeSerializer","getPeerConfigParamSerializer","getQuoteOFTResultSerializer","getRateLimitParamsSerializer","getRateLimiterSerializer","getSetOFTConfigParamsSerializer","isPeerConfigParam","isSetOFTConfigParams","peerConfigParam","setOFTConfigParams","InvalidDecimalsError","InvalidFeeError","InvalidMintAuthorityError","InvalidSenderError","InvalidTokenDestError","PausedError","RateLimitExceededError","SlippageExceededError","UnauthorizedError","getOftErrorFromCode","getOftErrorFromName","codeToErrorMap","nameToErrorMap","getInitOftInstructionDataSerializer","getLzReceiveInstructionDataSerializer","getLzReceiveTypesInstructionDataSerializer","getQuoteOftInstructionDataSerializer","getQuoteSendInstructionDataSerializer","getSendInstructionDataSerializer","getSetOftConfigInstructionDataSerializer","getSetPauseInstructionDataSerializer","getSetPeerConfigInstructionDataSerializer","getWithdrawFeeInstructionDataSerializer","lzReceive","quoteSend","setOftConfig","setPause","expectPda","expectPublicKey","expectSome","getAccountMetasAndSigners","OFT_PROGRAM_ID","createOftProgram","getOftProgram","getOftProgramId","ENDPOINT_PROGRAM_ID","getSendLibraryProgram"],"mappings":"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","file":"index.cjs","sourcesContent":["/* eslint-disable @typescript-eslint/require-await */\n\n// 1. init native OFT from existing mint\n// 2. init adapter OFT from existing mint, optionally an existing escrow\n// 3. Wire a peer\n// 4. Set the DVN etc. options\nimport { hexlify } from '@ethersproject/bytes'\nimport {\n AccountMeta,\n Cluster,\n Program,\n ProgramError,\n ProgramRepositoryInterface,\n PublicKey,\n RpcInterface,\n Signer,\n WrappedInstruction,\n createNullRpc,\n defaultPublicKey,\n none,\n some,\n} from '@metaplex-foundation/umi'\nimport { createDefaultProgramRepository } from '@metaplex-foundation/umi-program-repository'\nimport { fromWeb3JsPublicKey, toWeb3JsInstruction, toWeb3JsPublicKey } from '@metaplex-foundation/umi-web3js-adapters'\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token'\nimport { ComputeBudgetProgram } from '@solana/web3.js'\n\nimport {\n EndpointPDA,\n EndpointProgram,\n EventPDA,\n MessageLibInterface,\n SetConfigType,\n SimpleMessageLibProgram,\n SolanaPacketPath,\n UlnPDA,\n UlnProgram,\n simulateWeb3JsTransaction,\n} from '@layerzerolabs/lz-solana-sdk-v2/umi'\n\nimport { OFT_DECIMALS } from './consts'\nimport * as OFTAccounts from './generated/oft302/accounts'\nimport * as errors from './generated/oft302/errors'\nimport * as instructions from './generated/oft302/instructions'\nimport * as types from './generated/oft302/types'\nimport { OftPDA } from './pda'\nimport {\n SetOFTConfigParams,\n SetPeerAddressParam,\n SetPeerEnforcedOptionsParam,\n SetPeerFeeBpsParam,\n SetPeerRateLimitParam,\n} from './types'\n\nexport * as accounts from './generated/oft302/accounts'\nexport * as instructions from './generated/oft302/instructions'\nexport * as programs from './generated/oft302/programs'\nexport * as shared from './generated/oft302/shared'\nexport * as types from './generated/oft302/types'\nexport * as errors from './generated/oft302/errors'\n\nconst ENDPOINT_PROGRAM_ID: PublicKey = EndpointProgram.ENDPOINT_PROGRAM_ID\nconst ULN_PROGRAM_ID: PublicKey = UlnProgram.ULN_PROGRAM_ID\n\nexport function createOFTProgramRepo(oftProgram: PublicKey, rpc?: RpcInterface): ProgramRepositoryInterface {\n if (rpc === undefined) {\n rpc = createNullRpc()\n rpc.getCluster = (): Cluster => 'custom'\n }\n return createDefaultProgramRepository({ rpc: rpc }, [\n {\n name: 'oft',\n publicKey: oftProgram,\n getErrorFromCode(code: number, cause?: Error): ProgramError | null {\n return errors.getOftErrorFromCode(code, this, cause)\n },\n getErrorFromName(name: string, cause?: Error): ProgramError | null {\n return errors.getOftErrorFromName(name, this, cause)\n },\n isOnCluster(): boolean {\n return true\n },\n } satisfies Program,\n ])\n}\n\nexport function initOft(\n accounts: { payer: Signer; admin: PublicKey; mint: PublicKey; escrow: Signer },\n oftType: types.OFTType,\n sharedDecimals = OFT_DECIMALS,\n programs: { oft: PublicKey; endpoint?: PublicKey; token?: PublicKey }\n): WrappedInstruction {\n const programsRepo = typeof programs.oft === 'string' ? createOFTProgramRepo(programs.oft) : programs.oft\n const deriver = new OftPDA(programsRepo.getPublicKey('oft'))\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const { payer, admin, mint, escrow } = accounts\n const [oftStore] = deriver.oftStore(escrow.publicKey)\n const [lzReceiveTypes] = deriver.lzReceiveTypesAccounts(oftStore)\n\n const txBuilder = instructions.initOft(\n {\n payer: payer,\n programs: programsRepo,\n },\n {\n // accounts\n oftStore: oftStore,\n lzReceiveTypesAccounts: lzReceiveTypes,\n tokenMint: mint,\n tokenEscrow: escrow,\n tokenProgram: programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID),\n // params\n oftType: oftType,\n admin: admin,\n sharedDecimals: sharedDecimals,\n endpointProgram: endpoint.programId,\n }\n )\n const retval = txBuilder.addRemainingAccounts(\n endpoint.getRegisterOappIxAccountMetaForCPI(payer.publicKey, oftStore).map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n retval.signers = [payer, escrow]\n return retval\n}\n\nexport function setOFTConfig(\n accounts: {\n oftStore: PublicKey\n admin: Signer\n },\n params: SetOFTConfigParams,\n programs: {\n oft: PublicKey\n endpoint?: PublicKey\n }\n): WrappedInstruction {\n let actualParams: types.SetOFTConfigParamsArgs\n const { oftStore, admin } = accounts\n const remainingAccounts: AccountMeta[] = []\n if (params.__kind === 'Admin') {\n if (params.admin === undefined) {\n throw new Error('Admin is required')\n }\n actualParams = {\n __kind: 'Admin',\n fields: [params.admin],\n }\n } else if (params.__kind === 'Delegate') {\n if (params.delegate === undefined) {\n throw new Error('Delegate is required')\n }\n actualParams = {\n __kind: 'Delegate',\n fields: [params.delegate],\n }\n const endpointProgram = programs.endpoint ?? ENDPOINT_PROGRAM_ID\n const endpointSDK = new EndpointProgram.Endpoint(endpointProgram)\n const keys = endpointSDK.getSetDelegateIxAccountMetaForCPI(oftStore)\n for (const acc of keys) {\n acc.isSigner = false\n }\n remainingAccounts.push(...keys)\n } else if (params.__kind === 'DefaultFee') {\n if (params.defaultFee === undefined) {\n throw new Error('DefaultFee is required')\n }\n actualParams = {\n __kind: 'DefaultFee',\n fields: [params.defaultFee],\n }\n } else if (params.__kind === 'Paused') {\n if (params.paused === undefined) {\n throw new Error('Paused is required')\n }\n actualParams = {\n __kind: 'Paused',\n fields: [params.paused],\n }\n } else if (params.__kind === 'Pauser') {\n actualParams = {\n __kind: 'Pauser',\n fields: [params.pauser ? some(params.pauser) : none()],\n }\n } else {\n actualParams = {\n __kind: 'Unpauser',\n fields: [params.unpauser ? some(params.unpauser) : none()],\n }\n }\n\n const txBuilder = instructions.setOftConfig(\n { programs: createOFTProgramRepo(programs.oft) },\n {\n admin: admin,\n oftStore: oftStore,\n params: actualParams,\n }\n )\n return txBuilder.addRemainingAccounts(\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n}\n\n/**\n * Sets the peer configuration.\n *\n * @param {Object} accounts - The accounts object.\n * @param {Signer} accounts.admin - The admin signer.\n * @param {PublicKey} accounts.oftStore - The OFT store public key.\n * @param {Object} param - The parameter object.\n * @param {number} param.remote - The remote endpoint ID.\n * @param {string} [param.__kind] - The kind of parameter.\n * @param {Uint8Array} [param.peer] - The peer address (for PeerAddress kind).\n * @param {number} [param.feeBps] - The fee basis points (for FeeBps kind).\n * @param {Uint8Array} [param.send] - The send option (for EnforcedOptions kind).\n * @param {Uint8Array} [param.sendAndCall] - The send and call option (for EnforcedOptions kind).\n * @param {Object} [param.rateLimit] - The rate limit option (for OutboundRateLimit or InboundRateLimit kind).\n * @param {bigint} [param.rateLimit.refillPerSecond] - The rate limit refill per second.\n * @param {bigint} [param.rateLimit.capacity] - The rate limit capacity.\n * @param {PublicKey} oftProgramId - The OFT program ID.\n * @throws {Error} If the remote ID is invalid or if the peer address is not 32 bytes.\n * @returns {WrappedInstruction} - The wrapped instruction.\n */\nexport function setPeerConfig(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n param: (SetPeerAddressParam | SetPeerFeeBpsParam | SetPeerEnforcedOptionsParam | SetPeerRateLimitParam) & {\n remote: number\n },\n oftProgramId: PublicKey | ProgramRepositoryInterface\n): WrappedInstruction {\n const programsRepo = typeof oftProgramId === 'string' ? createOFTProgramRepo(oftProgramId) : oftProgramId\n const { remote: remoteId } = param\n if (remoteId % 30000 == 0) {\n throw new Error('Invalid remote ID')\n }\n const { admin, oftStore } = accounts\n const [peerPda] = new OftPDA(programsRepo.getPublicKey('oft')).peer(oftStore, remoteId)\n let config: types.PeerConfigParamArgs\n if (param.__kind === 'PeerAddress') {\n if (param.peer.length !== 32) {\n throw new Error('Peer must be 32 bytes (left-padded with zeroes)')\n }\n config = types.peerConfigParam('PeerAddress', [param.peer])\n } else if (param.__kind === 'FeeBps') {\n config = { __kind: 'FeeBps', fields: [some(param.feeBps)] }\n } else if (param.__kind === 'EnforcedOptions') {\n config = {\n __kind: 'EnforcedOptions',\n send: param.send,\n sendAndCall: param.sendAndCall,\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n } else if (param.__kind === 'OutboundRateLimit' || param.__kind === 'InboundRateLimit') {\n config = {\n __kind: param.__kind,\n fields: [\n param.rateLimit\n ? some({\n refillPerSecond: some(param.rateLimit.refillPerSecond),\n capacity: some(param.rateLimit.capacity),\n })\n : null,\n ],\n }\n } else {\n throw new Error('Invalid peer config')\n }\n\n return instructions.setPeerConfig(\n { programs: programsRepo },\n {\n admin: admin,\n peer: peerPda,\n oftStore: oftStore,\n // params\n remoteEid: remoteId,\n config: config,\n }\n ).items[0]\n}\n\nexport function initSendLibrary(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n remoteEid: number,\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): WrappedInstruction {\n const { admin, oftStore } = accounts\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return endpoint.initOAppSendLibrary(admin, { sender: oftStore, remote: remoteEid })\n}\n\nexport function initReceiveLibrary(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n remoteEid: number,\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): WrappedInstruction {\n const { admin, oftStore } = accounts\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return endpoint.initOAppReceiveLibrary(admin, { receiver: oftStore, remote: remoteEid })\n}\n\nexport function setSendLibrary(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n params: {\n sendLibraryProgram: PublicKey\n remoteEid: number\n },\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): WrappedInstruction {\n const { sendLibraryProgram, remoteEid } = params\n const { admin, oftStore } = accounts\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return endpoint.setOAppSendLibrary(admin, {\n sender: oftStore,\n remote: remoteEid,\n msgLibProgram: sendLibraryProgram,\n })\n}\n\nexport function setReceiveLibrary(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n params: {\n receiveLibraryProgram: PublicKey\n remoteEid: number\n gracePeriod?: bigint\n },\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): WrappedInstruction {\n const { receiveLibraryProgram, remoteEid, gracePeriod } = params\n const { admin, oftStore } = accounts\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return endpoint.setOAppReceiveLibrary(admin, {\n receiver: oftStore,\n remote: remoteEid,\n msgLibProgram: receiveLibraryProgram,\n gracePeriod: gracePeriod,\n })\n}\n\nexport function initConfig(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n payer: Signer\n },\n remoteEid: number,\n programs?: {\n msgLib?: PublicKey\n endpoint?: PublicKey\n }\n): WrappedInstruction {\n const { admin, oftStore, payer } = accounts\n\n let msgLibProgram: PublicKey, endpointProgram: PublicKey\n if (programs === undefined) {\n msgLibProgram = ULN_PROGRAM_ID\n endpointProgram = ENDPOINT_PROGRAM_ID\n } else {\n msgLibProgram = programs.msgLib ?? ULN_PROGRAM_ID\n endpointProgram = programs.endpoint ?? ENDPOINT_PROGRAM_ID\n }\n\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n let msgLib: MessageLibInterface\n if (msgLibProgram === SimpleMessageLibProgram.SIMPLE_MESSAGELIB_PROGRAM_ID) {\n msgLib = new SimpleMessageLibProgram.SimpleMessageLib(SimpleMessageLibProgram.SIMPLE_MESSAGELIB_PROGRAM_ID)\n } else {\n msgLib = new UlnProgram.Uln(msgLibProgram)\n }\n return endpoint.initOAppConfig(\n {\n delegate: admin,\n payer: payer.publicKey,\n },\n {\n msgLibSDK: msgLib,\n oapp: oftStore,\n remote: remoteEid,\n }\n )\n}\n\nexport async function setConfig(\n rpc: RpcInterface,\n accounts: {\n signer: Signer\n oftStore: PublicKey\n },\n params: {\n remoteEid: number\n configType: SetConfigType\n config: UlnProgram.types.ExecutorConfig | UlnProgram.types.UlnConfig\n },\n programs?: {\n msgLib?: PublicKey\n endpoint?: PublicKey\n }\n): Promise<WrappedInstruction> {\n const { signer, oftStore } = accounts\n const { remoteEid, configType, config } = params\n let msgLibProgram: PublicKey, endpointProgram: PublicKey\n if (programs === undefined) {\n msgLibProgram = ULN_PROGRAM_ID\n endpointProgram = ENDPOINT_PROGRAM_ID\n } else {\n msgLibProgram = programs.msgLib ?? ULN_PROGRAM_ID\n endpointProgram = programs.endpoint ?? ENDPOINT_PROGRAM_ID\n }\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return endpoint.setOAppConfig(rpc, signer, {\n oapp: oftStore,\n eid: remoteEid,\n config: {\n configType,\n value: config,\n },\n msgLibProgram: msgLibProgram,\n })\n}\n\nexport function withdrawFee(\n accounts: {\n admin: Signer\n mint: PublicKey\n escrow: PublicKey\n dest: PublicKey\n },\n amount: bigint,\n programs: {\n oft: PublicKey | ProgramRepositoryInterface\n token?: PublicKey\n }\n): WrappedInstruction {\n const { admin, mint, escrow, dest } = accounts\n const programsRepo = typeof programs.oft === 'string' ? createOFTProgramRepo(programs.oft) : programs.oft\n const [oftStore] = new OftPDA(programsRepo.getPublicKey('oft')).oftStore(escrow)\n return instructions.withdrawFee(\n { programs: programsRepo },\n {\n admin: admin,\n tokenEscrow: escrow,\n tokenDest: dest,\n tokenProgram: programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID),\n oftStore: oftStore,\n tokenMint: mint,\n // params\n feeLd: amount,\n }\n ).items[0]\n}\n\nexport async function send(\n rpc: RpcInterface,\n accounts: {\n payer: Signer\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n tokenSource: PublicKey\n peerAddr?: Uint8Array\n },\n sendParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n composeMsg?: Uint8Array\n nativeFee: bigint\n lzTokenFee?: bigint\n },\n programs: {\n oft: PublicKey\n endpoint?: PublicKey // default is ENDPOINT_PROGRAM(76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6)\n token?: PublicKey // default is TOKEN_PROGRAM_ID(TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA)\n },\n remainingAccounts?: AccountMeta[]\n): Promise<WrappedInstruction> {\n const { payer, tokenMint, tokenEscrow, tokenSource } = accounts\n const { dstEid, to, amountLd, minAmountLd, options, composeMsg, nativeFee, lzTokenFee } = sendParams\n const deriver = new OftPDA(programs.oft)\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n\n if (remainingAccounts === undefined || remainingAccounts.length === 0) {\n const peerAddr: Uint8Array =\n accounts.peerAddr ??\n (await OFTAccounts.fetchPeerConfig({ rpc }, peer).then((peerInfo) => peerInfo.peerAddress))\n\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const msgLibProgram = await getSendLibraryProgram(rpc, endpoint, payer.publicKey, oftStore, dstEid)\n const packetPath: SolanaPacketPath = {\n dstEid,\n sender: oftStore,\n receiver: peerAddr,\n }\n remainingAccounts = await endpoint.getSendIXAccountMetaForCPI(rpc, payer.publicKey, {\n path: packetPath,\n msgLibProgram: msgLibProgram,\n })\n }\n\n const [eventAuthorityPDA] = new EventPDA(programs.oft).eventAuthority()\n const tokenProgram: PublicKey = programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID)\n const txBuilder = instructions.send(\n { programs: createOFTProgramRepo(programs.oft) },\n {\n signer: payer,\n peer: peer,\n oftStore: oftStore,\n tokenSource: tokenSource,\n tokenEscrow: tokenEscrow,\n tokenMint: tokenMint,\n tokenProgram: tokenProgram,\n eventAuthority: eventAuthorityPDA,\n program: programs.oft,\n // params\n dstEid: dstEid,\n to: to,\n amountLd,\n minAmountLd,\n options: options ?? new Uint8Array(),\n composeMsg: composeMsg ?? null,\n nativeFee,\n lzTokenFee: lzTokenFee ?? 0,\n }\n )\n\n // Get remaining accounts from msgLib(simple_msgLib or uln)\n return txBuilder.addRemainingAccounts(\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n}\n\nexport async function quote(\n rpc: RpcInterface,\n accounts: {\n payer: PublicKey\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n peerAddr?: Uint8Array\n },\n quoteParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n payInLzToken?: boolean\n composeMsg?: Uint8Array\n },\n programs: {\n oft: PublicKey\n endpoint?: PublicKey\n },\n remainingAccounts?: AccountMeta[],\n addressLookupTable?: PublicKey\n): Promise<{ nativeFee: bigint; lzTokenFee: bigint }> {\n const { dstEid, to, amountLd, minAmountLd, options, payInLzToken, composeMsg } = quoteParams\n const { payer, tokenMint, tokenEscrow } = accounts\n\n const deriver = new OftPDA(programs.oft)\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n\n if (remainingAccounts === undefined || remainingAccounts.length === 0) {\n const peerAddr: Uint8Array =\n accounts.peerAddr ??\n (await OFTAccounts.fetchPeerConfig({ rpc }, peer).then((peerInfo) => peerInfo.peerAddress))\n\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const messageLib = await getSendLibraryProgram(rpc, endpoint, payer, oftStore, dstEid)\n remainingAccounts = await endpoint.getQuoteIXAccountMetaForCPI(rpc, payer, {\n path: { sender: oftStore, dstEid: dstEid, receiver: peerAddr },\n msgLibProgram: messageLib,\n })\n }\n\n let txBuilder = instructions.quoteSend(\n { programs: createOFTProgramRepo(programs.oft) },\n {\n oftStore: oftStore,\n peer: peer,\n tokenMint: tokenMint,\n // params\n dstEid: dstEid,\n to: to,\n amountLd: amountLd,\n minAmountLd: minAmountLd,\n options: options ?? new Uint8Array(),\n payInLzToken: payInLzToken ?? false,\n composeMsg: composeMsg ?? null,\n }\n )\n\n txBuilder = txBuilder.addRemainingAccounts(\n // Get remaining accounts from msgLib(simple_msgLib or uln)\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n )\n const web3Ix = toWeb3JsInstruction(txBuilder.getInstructions()[0])\n const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({\n units: 1000000,\n })\n return simulateWeb3JsTransaction(\n rpc,\n [modifyComputeUnits, web3Ix],\n web3Ix.programId,\n toWeb3JsPublicKey(payer),\n EndpointProgram.types.getMessagingFeeSerializer(),\n 'confirmed',\n undefined,\n addressLookupTable === undefined ? undefined : toWeb3JsPublicKey(addressLookupTable)\n )\n}\n\nexport async function quoteOft(\n rpc: RpcInterface,\n accounts: {\n payer: PublicKey\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n },\n quoteParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n payInLzToken?: boolean\n composeMsg?: Uint8Array\n },\n oftProgram: PublicKey\n): Promise<types.QuoteOFTResult> {\n const { payer, tokenMint, tokenEscrow } = accounts\n const { dstEid, to, amountLd, minAmountLd, options, payInLzToken, composeMsg } = quoteParams\n const deriver = new OftPDA(oftProgram)\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n const ix = instructions\n .quoteOft(\n { programs: createOFTProgramRepo(oftProgram) },\n {\n oftStore: oftStore,\n peer: peer,\n tokenMint: tokenMint,\n // params\n dstEid: dstEid,\n to: to,\n amountLd: amountLd,\n minAmountLd: minAmountLd,\n options: options ?? new Uint8Array(),\n payInLzToken: payInLzToken ?? false,\n composeMsg: composeMsg ?? null,\n }\n )\n .getInstructions()[0]\n\n const web3Ix = toWeb3JsInstruction(ix)\n return simulateWeb3JsTransaction(\n rpc.getEndpoint(),\n [web3Ix],\n web3Ix.programId,\n toWeb3JsPublicKey(payer),\n types.getQuoteOFTResultSerializer(),\n 'confirmed'\n )\n}\n\nexport function initOAppNonce(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n remoteEid: number,\n remoteOappAddr: Uint8Array, // must be 32 bytes\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): WrappedInstruction {\n const { admin, oftStore } = accounts\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n\n return endpoint.initOAppNonce(admin, {\n localOApp: oftStore,\n remote: remoteEid,\n remoteOApp: remoteOappAddr,\n })\n}\n\nexport async function getEndpointConfig(\n rpc: RpcInterface,\n oftStore: PublicKey,\n endpointId: number,\n programs?: {\n msgLib?: PublicKey\n endpoint?: PublicKey\n }\n): Promise<{\n sendLibraryConfig: EndpointProgram.accounts.SendLibraryConfig & { ulnSendConfig?: UlnProgram.accounts.SendConfig }\n receiveLibraryConfig: EndpointProgram.accounts.ReceiveLibraryConfig & {\n ulnReceiveConfig?: UlnProgram.accounts.ReceiveConfig\n }\n}> {\n let msgLibProgram: PublicKey, endpointProgram: PublicKey\n if (programs === undefined) {\n msgLibProgram = ULN_PROGRAM_ID\n endpointProgram = ENDPOINT_PROGRAM_ID\n } else {\n msgLibProgram = programs.msgLib ?? ULN_PROGRAM_ID\n endpointProgram = programs.endpoint ?? ENDPOINT_PROGRAM_ID\n }\n const endpointDeriver = new EndpointPDA(endpointProgram)\n const ulnDeriver = new UlnPDA(msgLibProgram)\n\n const [sendLib] = endpointDeriver.sendLibraryConfig(oftStore, endpointId)\n const [defaultSendLib] = endpointDeriver.defaultSendLibraryConfig(endpointId)\n const [receiveLib] = endpointDeriver.receiveLibraryConfig(oftStore, endpointId)\n const [defaultReceiveLib] = endpointDeriver.defaultReceiveLibraryConfig(endpointId)\n\n const [msgLib] = ulnDeriver.messageLib()\n let sendLibraryConfig: EndpointProgram.accounts.SendLibraryConfig & {\n ulnSendConfig?: UlnProgram.accounts.SendConfig\n } = await EndpointProgram.accounts.fetchSendLibraryConfig({ rpc }, sendLib)\n\n let receiveLibraryConfig: EndpointProgram.accounts.ReceiveLibraryConfig & {\n ulnReceiveConfig?: UlnProgram.accounts.ReceiveConfig\n } = await EndpointProgram.accounts.fetchReceiveLibraryConfig({ rpc }, receiveLib)\n\n const defaultSendLibraryConfig: EndpointProgram.accounts.SendLibraryConfig & {\n ulnSendConfig?: UlnProgram.accounts.SendConfig\n } = await EndpointProgram.accounts.fetchSendLibraryConfig({ rpc }, defaultSendLib)\n\n const defaultReceiveLibraryConfig: EndpointProgram.accounts.ReceiveLibraryConfig & {\n ulnReceiveConfig?: UlnProgram.accounts.ReceiveConfig\n } = await EndpointProgram.accounts.fetchReceiveLibraryConfig({ rpc }, defaultReceiveLib)\n\n const nil64 = 18446744073709551615n // max u64\n const nil8 = 255\n\n if (sendLibraryConfig.messageLib === defaultPublicKey()) {\n sendLibraryConfig = defaultSendLibraryConfig\n }\n if (receiveLibraryConfig.messageLib === defaultPublicKey()) {\n receiveLibraryConfig = defaultReceiveLibraryConfig\n }\n // get the uln config if necessary\n if (sendLibraryConfig.messageLib === msgLib) {\n const [ulnDefaultSendConfigPDA] = ulnDeriver.defaultSendConfig(endpointId)\n const [ulnSendConfigPDA] = ulnDeriver.sendConfig(endpointId, oftStore)\n const ulnSendConfig = await UlnProgram.accounts.fetchSendConfig({ rpc }, ulnSendConfigPDA)\n const ulnDefaultSendConfig = await UlnProgram.accounts.fetchSendConfig({ rpc }, ulnDefaultSendConfigPDA)\n // get the uln config for the send library\n if (nil64 === ulnSendConfig.uln.confirmations) {\n ulnSendConfig.uln.confirmations = 0n\n } else if (ulnSendConfig.uln.confirmations == 0n) {\n ulnSendConfig.uln.confirmations = ulnDefaultSendConfig.uln.confirmations\n }\n if (ulnSendConfig.uln.requiredDvnCount == nil8) {\n ulnSendConfig.uln.requiredDvnCount = 0\n } else if (ulnSendConfig.uln.requiredDvnCount == 0) {\n ulnSendConfig.uln.requiredDvnCount = ulnDefaultSendConfig.uln.requiredDvnCount\n ulnSendConfig.uln.requiredDvns = ulnDefaultSendConfig.uln.requiredDvns\n }\n if (ulnSendConfig.uln.optionalDvnCount == nil8) {\n ulnSendConfig.uln.optionalDvnCount = 0\n ulnSendConfig.uln.optionalDvnThreshold = 0\n } else if (ulnSendConfig.uln.optionalDvnCount == 0) {\n ulnSendConfig.uln.optionalDvnCount = ulnDefaultSendConfig.uln.optionalDvnCount\n ulnSendConfig.uln.optionalDvnThreshold = ulnDefaultSendConfig.uln.optionalDvnThreshold\n ulnSendConfig.uln.optionalDvns = ulnDefaultSendConfig.uln.optionalDvns\n }\n sendLibraryConfig.ulnSendConfig = ulnSendConfig\n }\n if (receiveLibraryConfig.messageLib === msgLib) {\n const [ulnDefaultReceiveConfigPDA] = ulnDeriver.defaultReceiveConfig(endpointId)\n const [ulnReceiveConfigPDA] = ulnDeriver.receiveConfig(endpointId, oftStore)\n const ulnReceiveConfig = await UlnProgram.accounts.fetchReceiveConfig({ rpc }, ulnReceiveConfigPDA)\n const ulnDefaultReceiveConfig = await UlnProgram.accounts.fetchReceiveConfig(\n { rpc },\n ulnDefaultReceiveConfigPDA\n )\n if (nil64 === ulnReceiveConfig.uln.confirmations) {\n ulnReceiveConfig.uln.confirmations = 0n\n } else if (ulnReceiveConfig.uln.confirmations == 0n) {\n ulnReceiveConfig.uln.confirmations = ulnDefaultReceiveConfig.uln.confirmations\n }\n if (ulnReceiveConfig.uln.requiredDvnCount == nil8) {\n ulnReceiveConfig.uln.requiredDvnCount = 0\n } else if (ulnReceiveConfig.uln.requiredDvnCount == 0) {\n ulnReceiveConfig.uln.requiredDvnCount = ulnDefaultReceiveConfig.uln.requiredDvnCount\n ulnReceiveConfig.uln.requiredDvns = ulnDefaultReceiveConfig.uln.requiredDvns\n }\n if (ulnReceiveConfig.uln.optionalDvnCount == nil8) {\n ulnReceiveConfig.uln.optionalDvnCount = 0\n ulnReceiveConfig.uln.optionalDvnThreshold = 0\n } else if (ulnReceiveConfig.uln.optionalDvnCount == 0) {\n ulnReceiveConfig.uln.optionalDvnCount = ulnDefaultReceiveConfig.uln.optionalDvnCount\n ulnReceiveConfig.uln.optionalDvnThreshold = ulnDefaultReceiveConfig.uln.optionalDvnThreshold\n ulnReceiveConfig.uln.optionalDvns = ulnDefaultReceiveConfig.uln.optionalDvns\n }\n receiveLibraryConfig.ulnReceiveConfig = ulnReceiveConfig\n }\n return {\n sendLibraryConfig,\n receiveLibraryConfig,\n }\n // send lib address, if blocked then just return that, otherwise return the uln config\n // send lib executor, dvns etc.\n // receive lib executor, dvns\n}\n\n// returns the hex string of the peer address\nexport async function getPeerAddress(\n rpc: RpcInterface,\n oftInstance: PublicKey,\n remoteEid: number,\n oftProgramId: PublicKey\n): Promise<string> {\n const [peer] = new OftPDA(oftProgramId).peer(oftInstance, remoteEid)\n const peerInfo = await OFTAccounts.fetchPeerConfig({ rpc }, peer)\n return hexlify(peerInfo.peerAddress)\n}\n\nexport async function getDelegate(\n rpc: RpcInterface,\n oftInstance: PublicKey,\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): Promise<PublicKey> {\n const [oAppRegistry] = new EndpointPDA(endpointProgram).oappRegistry(oftInstance)\n const oAppRegistryInfo = await EndpointProgram.accounts.fetchOAppRegistry({ rpc }, oAppRegistry)\n return oAppRegistryInfo.delegate\n}\n\nexport async function getEnforcedOptions(\n rpc: RpcInterface,\n oftInstance: PublicKey,\n remoteEid: number,\n oftProgramId: PublicKey\n): Promise<types.EnforcedOptions> {\n const [peer] = new OftPDA(oftProgramId).peer(oftInstance, remoteEid)\n const peerInfo = await OFTAccounts.fetchPeerConfig({ rpc }, peer)\n return peerInfo.enforcedOptions\n}\n\nasync function getSendLibraryProgram(\n rpc: RpcInterface,\n endpoint: EndpointProgram.Endpoint,\n payer: PublicKey,\n oftStore: PublicKey,\n remoteEid: number\n): Promise<SimpleMessageLibProgram.SimpleMessageLib | UlnProgram.Uln> {\n const sendLibInfo = await endpoint.getSendLibrary(rpc, oftStore, remoteEid)\n if (!sendLibInfo.programId) {\n throw new Error('Send library not initialized or blocked message library')\n }\n const { programId: msgLibProgram } = sendLibInfo\n const msgLibVersion = await endpoint.getMessageLibVersion(rpc, payer, msgLibProgram)\n if (msgLibVersion.major.toString() === '0' && msgLibVersion.minor == 0 && msgLibVersion.endpointVersion == 2) {\n return new SimpleMessageLibProgram.SimpleMessageLib(msgLibProgram)\n } else if (\n msgLibVersion.major.toString() === '3' &&\n msgLibVersion.minor == 0 &&\n msgLibVersion.endpointVersion == 2\n ) {\n return new UlnProgram.Uln(msgLibProgram)\n }\n throw new Error(`Unsupported message library version: ${JSON.stringify(msgLibVersion, null, 2)}`)\n}\n","import { PublicKey } from '@solana/web3.js';\n\n/** Address of the SPL Token program */\nexport const TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');\n\n/** Address of the SPL Token 2022 program */\nexport const TOKEN_2022_PROGRAM_ID = new PublicKey('TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb');\n\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');\n\n/** Address of the special mint for wrapped native SOL in spl-token */\nexport const NATIVE_MINT = new PublicKey('So11111111111111111111111111111111111111112');\n\n/** Address of the special mint for wrapped native SOL in spl-token-2022 */\nexport const NATIVE_MINT_2022 = new PublicKey('9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP');\n\n/** Check that the token program provided is not `Tokenkeg...`, useful when using extensions */\nexport function programSupportsExtensions(programId: PublicKey): boolean {\n if (programId === TOKEN_PROGRAM_ID) {\n return false;\n } else {\n return true;\n }\n}\n","export const OFT_DECIMALS = 6\n\nexport const OFT_SEED = 'OFT'\n\nexport const PEER_SEED = 'Peer'\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './lzReceiveTypesAccounts';\nexport * from './oFTStore';\nexport * from './peerConfig';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n publicKey as publicKeySerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\n\n/**\n * LzReceiveTypesAccounts includes accounts that are used in the LzReceiveTypes\n * instruction.\n */\n\nexport type LzReceiveTypesAccounts = Account<LzReceiveTypesAccountsAccountData>;\n\nexport type LzReceiveTypesAccountsAccountData = {\n discriminator: Uint8Array;\n oftStore: PublicKey;\n tokenMint: PublicKey;\n};\n\nexport type LzReceiveTypesAccountsAccountDataArgs = {\n oftStore: PublicKey;\n tokenMint: PublicKey;\n};\n\nexport function getLzReceiveTypesAccountsAccountDataSerializer(): Serializer<\n LzReceiveTypesAccountsAccountDataArgs,\n LzReceiveTypesAccountsAccountData\n> {\n return mapSerializer<\n LzReceiveTypesAccountsAccountDataArgs,\n any,\n LzReceiveTypesAccountsAccountData\n >(\n struct<LzReceiveTypesAccountsAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftStore', publicKeySerializer()],\n ['tokenMint', publicKeySerializer()],\n ],\n { description: 'LzReceiveTypesAccountsAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([248, 87, 167, 117, 5, 251, 21, 126]),\n })\n ) as Serializer<\n LzReceiveTypesAccountsAccountDataArgs,\n LzReceiveTypesAccountsAccountData\n >;\n}\n\nexport function deserializeLzReceiveTypesAccounts(\n rawAccount: RpcAccount\n): LzReceiveTypesAccounts {\n return deserializeAccount(\n rawAccount,\n getLzReceiveTypesAccountsAccountDataSerializer()\n );\n}\n\nexport async function fetchLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<LzReceiveTypesAccounts> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'LzReceiveTypesAccounts');\n return deserializeLzReceiveTypesAccounts(maybeAccount);\n}\n\nexport async function safeFetchLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<LzReceiveTypesAccounts | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists\n ? deserializeLzReceiveTypesAccounts(maybeAccount)\n : null;\n}\n\nexport async function fetchAllLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<LzReceiveTypesAccounts[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'LzReceiveTypesAccounts');\n return deserializeLzReceiveTypesAccounts(maybeAccount);\n });\n}\n\nexport async function safeFetchAllLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<LzReceiveTypesAccounts[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) =>\n deserializeLzReceiveTypesAccounts(maybeAccount as RpcAccount)\n );\n}\n\nexport function getLzReceiveTypesAccountsGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n oftStore: PublicKey;\n tokenMint: PublicKey;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n oftStore: [8, publicKeySerializer()],\n tokenMint: [40, publicKeySerializer()],\n })\n .deserializeUsing<LzReceiveTypesAccounts>((account) =>\n deserializeLzReceiveTypesAccounts(account)\n )\n .whereField(\n 'discriminator',\n new Uint8Array([248, 87, 167, 117, 5, 251, 21, 126])\n );\n}\n\nexport function getLzReceiveTypesAccountsSize(): number {\n return 72;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './enforcedOptions';\nexport * from './lzAccount';\nexport * from './lzReceiveParams';\nexport * from './messagingFee';\nexport * from './oFTFeeDetail';\nexport * from './oFTLimits';\nexport * from './oFTReceipt';\nexport * from './oFTType';\nexport * from './peerConfigParam';\nexport * from './quoteOFTResult';\nexport * from './rateLimiter';\nexport * from './rateLimitParams';\nexport * from './setOFTConfigParams';\nexport * from './version';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n bytes,\n struct,\n u32,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type EnforcedOptions = { send: Uint8Array; sendAndCall: Uint8Array };\n\nexport type EnforcedOptionsArgs = EnforcedOptions;\n\nexport function getEnforcedOptionsSerializer(): Serializer<\n EnforcedOptionsArgs,\n EnforcedOptions\n> {\n return struct<EnforcedOptions>(\n [\n ['send', bytes({ size: u32() })],\n ['sendAndCall', bytes({ size: u32() })],\n ],\n { description: 'EnforcedOptions' }\n ) as Serializer<EnforcedOptionsArgs, EnforcedOptions>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { PublicKey } from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n publicKey as publicKeySerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\n\n/** same to anchor_lang::prelude::AccountMeta */\nexport type LzAccount = {\n pubkey: PublicKey;\n isSigner: boolean;\n isWritable: boolean;\n};\n\nexport type LzAccountArgs = LzAccount;\n\nexport function getLzAccountSerializer(): Serializer<LzAccountArgs, LzAccount> {\n return struct<LzAccount>(\n [\n ['pubkey', publicKeySerializer()],\n ['isSigner', bool()],\n ['isWritable', bool()],\n ],\n { description: 'LzAccount' }\n ) as Serializer<LzAccountArgs, LzAccount>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n bytes,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type LzReceiveParams = {\n srcEid: number;\n sender: Uint8Array;\n nonce: bigint;\n guid: Uint8Array;\n message: Uint8Array;\n extraData: Uint8Array;\n};\n\nexport type LzReceiveParamsArgs = {\n srcEid: number;\n sender: Uint8Array;\n nonce: number | bigint;\n guid: Uint8Array;\n message: Uint8Array;\n extraData: Uint8Array;\n};\n\nexport function getLzReceiveParamsSerializer(): Serializer<\n LzReceiveParamsArgs,\n LzReceiveParams\n> {\n return struct<LzReceiveParams>(\n [\n ['srcEid', u32()],\n ['sender', bytes({ size: 32 })],\n ['nonce', u64()],\n ['guid', bytes({ size: 32 })],\n ['message', bytes({ size: u32() })],\n ['extraData', bytes({ size: u32() })],\n ],\n { description: 'LzReceiveParams' }\n ) as Serializer<LzReceiveParamsArgs, LzReceiveParams>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type MessagingFee = { nativeFee: bigint; lzTokenFee: bigint };\n\nexport type MessagingFeeArgs = {\n nativeFee: number | bigint;\n lzTokenFee: number | bigint;\n};\n\nexport function getMessagingFeeSerializer(): Serializer<\n MessagingFeeArgs,\n MessagingFee\n> {\n return struct<MessagingFee>(\n [\n ['nativeFee', u64()],\n ['lzTokenFee', u64()],\n ],\n { description: 'MessagingFee' }\n ) as Serializer<MessagingFeeArgs, MessagingFee>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n string,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type OFTFeeDetail = { feeAmountLd: bigint; description: string };\n\nexport type OFTFeeDetailArgs = {\n feeAmountLd: number | bigint;\n description: string;\n};\n\nexport function getOFTFeeDetailSerializer(): Serializer<\n OFTFeeDetailArgs,\n OFTFeeDetail\n> {\n return struct<OFTFeeDetail>(\n [\n ['feeAmountLd', u64()],\n ['description', string()],\n ],\n { description: 'OFTFeeDetail' }\n ) as Serializer<OFTFeeDetailArgs, OFTFeeDetail>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type OFTLimits = { minAmountLd: bigint; maxAmountLd: bigint };\n\nexport type OFTLimitsArgs = {\n minAmountLd: number | bigint;\n maxAmountLd: number | bigint;\n};\n\nexport function getOFTLimitsSerializer(): Serializer<OFTLimitsArgs, OFTLimits> {\n return struct<OFTLimits>(\n [\n ['minAmountLd', u64()],\n ['maxAmountLd', u64()],\n ],\n { description: 'OFTLimits' }\n ) as Serializer<OFTLimitsArgs, OFTLimits>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type OFTReceipt = { amountSentLd: bigint; amountReceivedLd: bigint };\n\nexport type OFTReceiptArgs = {\n amountSentLd: number | bigint;\n amountReceivedLd: number | bigint;\n};\n\nexport function getOFTReceiptSerializer(): Serializer<\n OFTReceiptArgs,\n OFTReceipt\n> {\n return struct<OFTReceipt>(\n [\n ['amountSentLd', u64()],\n ['amountReceivedLd', u64()],\n ],\n { description: 'OFTReceipt' }\n ) as Serializer<OFTReceiptArgs, OFTReceipt>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, scalarEnum } from '@metaplex-foundation/umi/serializers';\n\nexport enum OFTType {\n Native,\n Adapter,\n}\n\nexport type OFTTypeArgs = OFTType;\n\nexport function getOFTTypeSerializer(): Serializer<OFTTypeArgs, OFTType> {\n return scalarEnum<OFTType>(OFTType, { description: 'OFTType' }) as Serializer<\n OFTTypeArgs,\n OFTType\n >;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable } from '@metaplex-foundation/umi';\nimport {\n GetDataEnumKind,\n GetDataEnumKindContent,\n Serializer,\n bytes,\n dataEnum,\n option,\n struct,\n tuple,\n u16,\n u32,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n RateLimitParams,\n RateLimitParamsArgs,\n getRateLimitParamsSerializer,\n} from '.';\n\nexport type PeerConfigParam =\n | { __kind: 'PeerAddress'; fields: [Uint8Array] }\n | { __kind: 'FeeBps'; fields: [Option<number>] }\n | { __kind: 'EnforcedOptions'; send: Uint8Array; sendAndCall: Uint8Array }\n | { __kind: 'OutboundRateLimit'; fields: [Option<RateLimitParams>] }\n | { __kind: 'InboundRateLimit'; fields: [Option<RateLimitParams>] };\n\nexport type PeerConfigParamArgs =\n | { __kind: 'PeerAddress'; fields: [Uint8Array] }\n | { __kind: 'FeeBps'; fields: [OptionOrNullable<number>] }\n | { __kind: 'EnforcedOptions'; send: Uint8Array; sendAndCall: Uint8Array }\n | {\n __kind: 'OutboundRateLimit';\n fields: [OptionOrNullable<RateLimitParamsArgs>];\n }\n | {\n __kind: 'InboundRateLimit';\n fields: [OptionOrNullable<RateLimitParamsArgs>];\n };\n\nexport function getPeerConfigParamSerializer(): Serializer<\n PeerConfigParamArgs,\n PeerConfigParam\n> {\n return dataEnum<PeerConfigParam>(\n [\n [\n 'PeerAddress',\n struct<GetDataEnumKindContent<PeerConfigParam, 'PeerAddress'>>([\n ['fields', tuple([bytes({ size: 32 })])],\n ]),\n ],\n [\n 'FeeBps',\n struct<GetDataEnumKindContent<PeerConfigParam, 'FeeBps'>>([\n ['fields', tuple([option(u16())])],\n ]),\n ],\n [\n 'EnforcedOptions',\n struct<GetDataEnumKindContent<PeerConfigParam, 'EnforcedOptions'>>([\n ['send', bytes({ size: u32() })],\n ['sendAndCall', bytes({ size: u32() })],\n ]),\n ],\n [\n 'OutboundRateLimit',\n struct<GetDataEnumKindContent<PeerConfigParam, 'OutboundRateLimit'>>([\n ['fields', tuple([option(getRateLimitParamsSerializer())])],\n ]),\n ],\n [\n 'InboundRateLimit',\n struct<GetDataEnumKindContent<PeerConfigParam, 'InboundRateLimit'>>([\n ['fields', tuple([option(getRateLimitParamsSerializer())])],\n ]),\n ],\n ],\n { description: 'PeerConfigParam' }\n ) as Serializer<PeerConfigParamArgs, PeerConfigParam>;\n}\n\n// Data Enum Helpers.\nexport function peerConfigParam(\n kind: 'PeerAddress',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'PeerAddress'>['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'PeerAddress'>;\nexport function peerConfigParam(\n kind: 'FeeBps',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'FeeBps'>['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'FeeBps'>;\nexport function peerConfigParam(\n kind: 'EnforcedOptions',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'EnforcedOptions'>\n): GetDataEnumKind<PeerConfigParamArgs, 'EnforcedOptions'>;\nexport function peerConfigParam(\n kind: 'OutboundRateLimit',\n data: GetDataEnumKindContent<\n PeerConfigParamArgs,\n 'OutboundRateLimit'\n >['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'OutboundRateLimit'>;\nexport function peerConfigParam(\n kind: 'InboundRateLimit',\n data: GetDataEnumKindContent<\n PeerConfigParamArgs,\n 'InboundRateLimit'\n >['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'InboundRateLimit'>;\nexport function peerConfigParam<K extends PeerConfigParamArgs['__kind']>(\n kind: K,\n data?: any\n): Extract<PeerConfigParamArgs, { __kind: K }> {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\nexport function isPeerConfigParam<K extends PeerConfigParam['__kind']>(\n kind: K,\n value: PeerConfigParam\n): value is PeerConfigParam & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n array,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n OFTFeeDetail,\n OFTFeeDetailArgs,\n OFTLimits,\n OFTLimitsArgs,\n OFTReceipt,\n OFTReceiptArgs,\n getOFTFeeDetailSerializer,\n getOFTLimitsSerializer,\n getOFTReceiptSerializer,\n} from '.';\n\nexport type QuoteOFTResult = {\n oftLimits: OFTLimits;\n oftFeeDetails: Array<OFTFeeDetail>;\n oftReceipt: OFTReceipt;\n};\n\nexport type QuoteOFTResultArgs = {\n oftLimits: OFTLimitsArgs;\n oftFeeDetails: Array<OFTFeeDetailArgs>;\n oftReceipt: OFTReceiptArgs;\n};\n\nexport function getQuoteOFTResultSerializer(): Serializer<\n QuoteOFTResultArgs,\n QuoteOFTResult\n> {\n return struct<QuoteOFTResult>(\n [\n ['oftLimits', getOFTLimitsSerializer()],\n ['oftFeeDetails', array(getOFTFeeDetailSerializer())],\n ['oftReceipt', getOFTReceiptSerializer()],\n ],\n { description: 'QuoteOFTResult' }\n ) as Serializer<QuoteOFTResultArgs, QuoteOFTResult>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type RateLimiter = {\n capacity: bigint;\n tokens: bigint;\n refillPerSecond: bigint;\n lastRefillTime: bigint;\n};\n\nexport type RateLimiterArgs = {\n capacity: number | bigint;\n tokens: number | bigint;\n refillPerSecond: number | bigint;\n lastRefillTime: number | bigint;\n};\n\nexport function getRateLimiterSerializer(): Serializer<\n RateLimiterArgs,\n RateLimiter\n> {\n return struct<RateLimiter>(\n [\n ['capacity', u64()],\n ['tokens', u64()],\n ['refillPerSecond', u64()],\n ['lastRefillTime', u64()],\n ],\n { description: 'RateLimiter' }\n ) as Serializer<RateLimiterArgs, RateLimiter>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable } from '@metaplex-foundation/umi';\nimport {\n Serializer,\n option,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type RateLimitParams = {\n refillPerSecond: Option<bigint>;\n capacity: Option<bigint>;\n};\n\nexport type RateLimitParamsArgs = {\n refillPerSecond: OptionOrNullable<number | bigint>;\n capacity: OptionOrNullable<number | bigint>;\n};\n\nexport function getRateLimitParamsSerializer(): Serializer<\n RateLimitParamsArgs,\n RateLimitParams\n> {\n return struct<RateLimitParams>(\n [\n ['refillPerSecond', option(u64())],\n ['capacity', option(u64())],\n ],\n { description: 'RateLimitParams' }\n ) as Serializer<RateLimitParamsArgs, RateLimitParams>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable, PublicKey } from '@metaplex-foundation/umi';\nimport {\n GetDataEnumKind,\n GetDataEnumKindContent,\n Serializer,\n bool,\n dataEnum,\n option,\n publicKey as publicKeySerializer,\n struct,\n tuple,\n u16,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type SetOFTConfigParams =\n | { __kind: 'Admin'; fields: [PublicKey] }\n | { __kind: 'Delegate'; fields: [PublicKey] }\n | { __kind: 'DefaultFee'; fields: [number] }\n | { __kind: 'Paused'; fields: [boolean] }\n | { __kind: 'Pauser'; fields: [Option<PublicKey>] }\n | { __kind: 'Unpauser'; fields: [Option<PublicKey>] };\n\nexport type SetOFTConfigParamsArgs =\n | { __kind: 'Admin'; fields: [PublicKey] }\n | { __kind: 'Delegate'; fields: [PublicKey] }\n | { __kind: 'DefaultFee'; fields: [number] }\n | { __kind: 'Paused'; fields: [boolean] }\n | { __kind: 'Pauser'; fields: [OptionOrNullable<PublicKey>] }\n | { __kind: 'Unpauser'; fields: [OptionOrNullable<PublicKey>] };\n\nexport function getSetOFTConfigParamsSerializer(): Serializer<\n SetOFTConfigParamsArgs,\n SetOFTConfigParams\n> {\n return dataEnum<SetOFTConfigParams>(\n [\n [\n 'Admin',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Admin'>>([\n ['fields', tuple([publicKeySerializer()])],\n ]),\n ],\n [\n 'Delegate',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Delegate'>>([\n ['fields', tuple([publicKeySerializer()])],\n ]),\n ],\n [\n 'DefaultFee',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'DefaultFee'>>([\n ['fields', tuple([u16()])],\n ]),\n ],\n [\n 'Paused',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Paused'>>([\n ['fields', tuple([bool()])],\n ]),\n ],\n [\n 'Pauser',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Pauser'>>([\n ['fields', tuple([option(publicKeySerializer())])],\n ]),\n ],\n [\n 'Unpauser',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Unpauser'>>([\n ['fields', tuple([option(publicKeySerializer())])],\n ]),\n ],\n ],\n { description: 'SetOFTConfigParams' }\n ) as Serializer<SetOFTConfigParamsArgs, SetOFTConfigParams>;\n}\n\n// Data Enum Helpers.\nexport function setOFTConfigParams(\n kind: 'Admin',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Admin'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Admin'>;\nexport function setOFTConfigParams(\n kind: 'Delegate',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Delegate'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Delegate'>;\nexport function setOFTConfigParams(\n kind: 'DefaultFee',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'DefaultFee'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'DefaultFee'>;\nexport function setOFTConfigParams(\n kind: 'Paused',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Paused'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Paused'>;\nexport function setOFTConfigParams(\n kind: 'Pauser',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Pauser'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Pauser'>;\nexport function setOFTConfigParams(\n kind: 'Unpauser',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Unpauser'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Unpauser'>;\nexport function setOFTConfigParams<K extends SetOFTConfigParamsArgs['__kind']>(\n kind: K,\n data?: any\n): Extract<SetOFTConfigParamsArgs, { __kind: K }> {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\nexport function isSetOFTConfigParams<K extends SetOFTConfigParams['__kind']>(\n kind: K,\n value: SetOFTConfigParams\n): value is SetOFTConfigParams & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type Version = { interface: bigint; message: bigint };\n\nexport type VersionArgs = {\n interface: number | bigint;\n message: number | bigint;\n};\n\nexport function getVersionSerializer(): Serializer<VersionArgs, Version> {\n return struct<Version>(\n [\n ['interface', u64()],\n ['message', u64()],\n ],\n { description: 'Version' }\n ) as Serializer<VersionArgs, Version>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n publicKey as publicKeySerializer,\n struct,\n u16,\n u64,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport { OFTType, OFTTypeArgs, getOFTTypeSerializer } from '../types';\n\nexport type OFTStore = Account<OFTStoreAccountData>;\n\nexport type OFTStoreAccountData = {\n discriminator: Uint8Array;\n oftType: OFTType;\n ld2sdRate: bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: Option<PublicKey>;\n unpauser: Option<PublicKey>;\n};\n\nexport type OFTStoreAccountDataArgs = {\n oftType: OFTTypeArgs;\n ld2sdRate: number | bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: number | bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: OptionOrNullable<PublicKey>;\n unpauser: OptionOrNullable<PublicKey>;\n};\n\nexport function getOFTStoreAccountDataSerializer(): Serializer<\n OFTStoreAccountDataArgs,\n OFTStoreAccountData\n> {\n return mapSerializer<OFTStoreAccountDataArgs, any, OFTStoreAccountData>(\n struct<OFTStoreAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftType', getOFTTypeSerializer()],\n ['ld2sdRate', u64()],\n ['tokenMint', publicKeySerializer()],\n ['tokenEscrow', publicKeySerializer()],\n ['endpointProgram', publicKeySerializer()],\n ['bump', u8()],\n ['tvlLd', u64()],\n ['admin', publicKeySerializer()],\n ['defaultFeeBps', u16()],\n ['paused', bool()],\n ['pauser', option(publicKeySerializer())],\n ['unpauser', option(publicKeySerializer())],\n ],\n { description: 'OFTStoreAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([195, 215, 104, 134, 185, 195, 240, 114]),\n })\n ) as Serializer<OFTStoreAccountDataArgs, OFTStoreAccountData>;\n}\n\nexport function deserializeOFTStore(rawAccount: RpcAccount): OFTStore {\n return deserializeAccount(rawAccount, getOFTStoreAccountDataSerializer());\n}\n\nexport async function fetchOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<OFTStore> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'OFTStore');\n return deserializeOFTStore(maybeAccount);\n}\n\nexport async function safeFetchOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<OFTStore | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists ? deserializeOFTStore(maybeAccount) : null;\n}\n\nexport async function fetchAllOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<OFTStore[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'OFTStore');\n return deserializeOFTStore(maybeAccount);\n });\n}\n\nexport async function safeFetchAllOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<OFTStore[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) => deserializeOFTStore(maybeAccount as RpcAccount));\n}\n\nexport function getOFTStoreGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n oftType: OFTTypeArgs;\n ld2sdRate: number | bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: number | bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: OptionOrNullable<PublicKey>;\n unpauser: OptionOrNullable<PublicKey>;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n oftType: [8, getOFTTypeSerializer()],\n ld2sdRate: [9, u64()],\n tokenMint: [17, publicKeySerializer()],\n tokenEscrow: [49, publicKeySerializer()],\n endpointProgram: [81, publicKeySerializer()],\n bump: [113, u8()],\n tvlLd: [114, u64()],\n admin: [122, publicKeySerializer()],\n defaultFeeBps: [154, u16()],\n paused: [156, bool()],\n pauser: [157, option(publicKeySerializer())],\n unpauser: [null, option(publicKeySerializer())],\n })\n .deserializeUsing<OFTStore>((account) => deserializeOFTStore(account))\n .whereField(\n 'discriminator',\n new Uint8Array([195, 215, 104, 134, 185, 195, 240, 114])\n );\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n option,\n struct,\n u16,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n EnforcedOptions,\n EnforcedOptionsArgs,\n RateLimiter,\n RateLimiterArgs,\n getEnforcedOptionsSerializer,\n getRateLimiterSerializer,\n} from '../types';\n\nexport type PeerConfig = Account<PeerConfigAccountData>;\n\nexport type PeerConfigAccountData = {\n discriminator: Uint8Array;\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptions;\n outboundRateLimiter: Option<RateLimiter>;\n inboundRateLimiter: Option<RateLimiter>;\n feeBps: Option<number>;\n bump: number;\n};\n\nexport type PeerConfigAccountDataArgs = {\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptionsArgs;\n outboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n inboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n feeBps: OptionOrNullable<number>;\n bump: number;\n};\n\nexport function getPeerConfigAccountDataSerializer(): Serializer<\n PeerConfigAccountDataArgs,\n PeerConfigAccountData\n> {\n return mapSerializer<PeerConfigAccountDataArgs, any, PeerConfigAccountData>(\n struct<PeerConfigAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['peerAddress', bytes({ size: 32 })],\n ['enforcedOptions', getEnforcedOptionsSerializer()],\n ['outboundRateLimiter', option(getRateLimiterSerializer())],\n ['inboundRateLimiter', option(getRateLimiterSerializer())],\n ['feeBps', option(u16())],\n ['bump', u8()],\n ],\n { description: 'PeerConfigAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([181, 157, 86, 198, 33, 193, 94, 203]),\n })\n ) as Serializer<PeerConfigAccountDataArgs, PeerConfigAccountData>;\n}\n\nexport function deserializePeerConfig(rawAccount: RpcAccount): PeerConfig {\n return deserializeAccount(rawAccount, getPeerConfigAccountDataSerializer());\n}\n\nexport async function fetchPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<PeerConfig> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'PeerConfig');\n return deserializePeerConfig(maybeAccount);\n}\n\nexport async function safeFetchPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<PeerConfig | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists ? deserializePeerConfig(maybeAccount) : null;\n}\n\nexport async function fetchAllPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<PeerConfig[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'PeerConfig');\n return deserializePeerConfig(maybeAccount);\n });\n}\n\nexport async function safeFetchAllPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<PeerConfig[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) => deserializePeerConfig(maybeAccount as RpcAccount));\n}\n\nexport function getPeerConfigGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptionsArgs;\n outboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n inboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n feeBps: OptionOrNullable<number>;\n bump: number;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n peerAddress: [8, bytes({ size: 32 })],\n enforcedOptions: [40, getEnforcedOptionsSerializer()],\n outboundRateLimiter: [null, option(getRateLimiterSerializer())],\n inboundRateLimiter: [null, option(getRateLimiterSerializer())],\n feeBps: [null, option(u16())],\n bump: [null, u8()],\n })\n .deserializeUsing<PeerConfig>((account) => deserializePeerConfig(account))\n .whereField(\n 'discriminator',\n new Uint8Array([181, 157, 86, 198, 33, 193, 94, 203])\n );\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './oft';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Program, ProgramError } from '@metaplex-foundation/umi';\n\ntype ProgramErrorConstructor = new (\n program: Program,\n cause?: Error\n) => ProgramError;\nconst codeToErrorMap: Map<number, ProgramErrorConstructor> = new Map();\nconst nameToErrorMap: Map<string, ProgramErrorConstructor> = new Map();\n\n/** Unauthorized */\nexport class UnauthorizedError extends ProgramError {\n override readonly name: string = 'Unauthorized';\n\n readonly code: number = 0x1770; // 6000\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1770, UnauthorizedError);\nnameToErrorMap.set('Unauthorized', UnauthorizedError);\n\n/** InvalidSender */\nexport class InvalidSenderError extends ProgramError {\n override readonly name: string = 'InvalidSender';\n\n readonly code: number = 0x1771; // 6001\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1771, InvalidSenderError);\nnameToErrorMap.set('InvalidSender', InvalidSenderError);\n\n/** InvalidDecimals */\nexport class InvalidDecimalsError extends ProgramError {\n override readonly name: string = 'InvalidDecimals';\n\n readonly code: number = 0x1772; // 6002\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1772, InvalidDecimalsError);\nnameToErrorMap.set('InvalidDecimals', InvalidDecimalsError);\n\n/** SlippageExceeded */\nexport class SlippageExceededError extends ProgramError {\n override readonly name: string = 'SlippageExceeded';\n\n readonly code: number = 0x1773; // 6003\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1773, SlippageExceededError);\nnameToErrorMap.set('SlippageExceeded', SlippageExceededError);\n\n/** InvalidTokenDest */\nexport class InvalidTokenDestError extends ProgramError {\n override readonly name: string = 'InvalidTokenDest';\n\n readonly code: number = 0x1774; // 6004\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1774, InvalidTokenDestError);\nnameToErrorMap.set('InvalidTokenDest', InvalidTokenDestError);\n\n/** RateLimitExceeded */\nexport class RateLimitExceededError extends ProgramError {\n override readonly name: string = 'RateLimitExceeded';\n\n readonly code: number = 0x1775; // 6005\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1775, RateLimitExceededError);\nnameToErrorMap.set('RateLimitExceeded', RateLimitExceededError);\n\n/** InvalidFee */\nexport class InvalidFeeError extends ProgramError {\n override readonly name: string = 'InvalidFee';\n\n readonly code: number = 0x1776; // 6006\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1776, InvalidFeeError);\nnameToErrorMap.set('InvalidFee', InvalidFeeError);\n\n/** InvalidMintAuthority */\nexport class InvalidMintAuthorityError extends ProgramError {\n override readonly name: string = 'InvalidMintAuthority';\n\n readonly code: number = 0x1777; // 6007\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1777, InvalidMintAuthorityError);\nnameToErrorMap.set('InvalidMintAuthority', InvalidMintAuthorityError);\n\n/** Paused */\nexport class PausedError extends ProgramError {\n override readonly name: string = 'Paused';\n\n readonly code: number = 0x1778; // 6008\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1778, PausedError);\nnameToErrorMap.set('Paused', PausedError);\n\n/**\n * Attempts to resolve a custom program error from the provided error code.\n * @category Errors\n */\nexport function getOftErrorFromCode(\n code: number,\n program: Program,\n cause?: Error\n): ProgramError | null {\n const constructor = codeToErrorMap.get(code);\n return constructor ? new constructor(program, cause) : null;\n}\n\n/**\n * Attempts to resolve a custom program error from the provided error name, i.e. 'Unauthorized'.\n * @category Errors\n */\nexport function getOftErrorFromName(\n name: string,\n program: Program,\n cause?: Error\n): ProgramError | null {\n const constructor = nameToErrorMap.get(name);\n return constructor ? new constructor(program, cause) : null;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './initOft';\nexport * from './lzReceive';\nexport * from './lzReceiveTypes';\nexport * from './oftVersion';\nexport * from './quoteOft';\nexport * from './quoteSend';\nexport * from './send';\nexport * from './setOftConfig';\nexport * from './setPause';\nexport * from './setPeerConfig';\nexport * from './withdrawFee';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n AccountMeta,\n isSigner,\n Pda,\n publicKey,\n PublicKey,\n Signer,\n isPda,\n} from '@metaplex-foundation/umi';\n\n/**\n * Transforms the given object such that the given keys are optional.\n * @internal\n */\nexport type PickPartial<T, K extends keyof T> = Omit<T, K> &\n Partial<Pick<T, K>>;\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n if (value == null) {\n throw new Error('Expected a value but received null or undefined.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectPublicKey(\n value: PublicKey | Pda | Signer | null | undefined\n): PublicKey {\n if (!value) {\n throw new Error('Expected a PublicKey.');\n }\n return publicKey(value, false);\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectPda(\n value: PublicKey | Pda | Signer | null | undefined\n): Pda {\n if (!value || !Array.isArray(value) || !isPda(value)) {\n throw new Error('Expected a PDA.');\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<T = PublicKey | Pda | Signer | null> = {\n isWritable: boolean;\n value: T;\n};\n\n/**\n * Defines a set of instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccounts = Record<string, ResolvedAccount>;\n\n/**\n * Defines a set of instruction account to resolve with their indices.\n * @internal\n */\nexport type ResolvedAccountsWithIndices = Record<\n string,\n ResolvedAccount & { index: number }\n>;\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetasAndSigners(\n accounts: ResolvedAccount[],\n optionalAccountStrategy: 'omitted' | 'programId',\n programId: PublicKey\n): [AccountMeta[], Signer[]] {\n const keys: AccountMeta[] = [];\n const signers: Signer[] = [];\n\n accounts.forEach((account) => {\n if (!account.value) {\n if (optionalAccountStrategy === 'omitted') return;\n keys.push({ pubkey: programId, isSigner: false, isWritable: false });\n return;\n }\n\n if (isSigner(account.value)) {\n signers.push(account.value);\n }\n keys.push({\n pubkey: publicKey(account.value, false),\n isSigner: isSigner(account.value),\n isWritable: account.isWritable,\n });\n });\n\n return [keys, signers];\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n option,\n publicKey as publicKeySerializer,\n struct,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport { OFTType, OFTTypeArgs, getOFTTypeSerializer } from '../types';\n\n// Accounts.\nexport type InitOftInstructionAccounts = {\n payer?: Signer;\n oftStore: PublicKey | Pda;\n lzReceiveTypesAccounts: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenEscrow: Signer;\n tokenProgram?: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type InitOftInstructionData = {\n discriminator: Uint8Array;\n oftType: OFTType;\n admin: PublicKey;\n sharedDecimals: number;\n endpointProgram: Option<PublicKey>;\n};\n\nexport type InitOftInstructionDataArgs = {\n oftType: OFTTypeArgs;\n admin: PublicKey;\n sharedDecimals: number;\n endpointProgram: OptionOrNullable<PublicKey>;\n};\n\nexport function getInitOftInstructionDataSerializer(): Serializer<\n InitOftInstructionDataArgs,\n InitOftInstructionData\n> {\n return mapSerializer<InitOftInstructionDataArgs, any, InitOftInstructionData>(\n struct<InitOftInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftType', getOFTTypeSerializer()],\n ['admin', publicKeySerializer()],\n ['sharedDecimals', u8()],\n ['endpointProgram', option(publicKeySerializer())],\n ],\n { description: 'InitOftInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([182, 169, 147, 16, 201, 45, 76, 23]),\n })\n ) as Serializer<InitOftInstructionDataArgs, InitOftInstructionData>;\n}\n\n// Args.\nexport type InitOftInstructionArgs = InitOftInstructionDataArgs;\n\n// Instruction.\nexport function initOft(\n context: Pick<Context, 'payer' | 'programs'>,\n input: InitOftInstructionAccounts & InitOftInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n payer: {\n index: 0,\n isWritable: true as boolean,\n value: input.payer ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n lzReceiveTypesAccounts: {\n index: 2,\n isWritable: true as boolean,\n value: input.lzReceiveTypesAccounts ?? null,\n },\n tokenMint: {\n index: 3,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n tokenEscrow: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenProgram: {\n index: 5,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n systemProgram: {\n index: 6,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: InitOftInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.payer.value) {\n resolvedAccounts.payer.value = context.payer;\n }\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getInitOftInstructionDataSerializer().serialize(\n resolvedArgs as InitOftInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n LzReceiveParams,\n LzReceiveParamsArgs,\n getLzReceiveParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type LzReceiveInstructionAccounts = {\n payer?: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n toAddress: PublicKey | Pda;\n tokenDest: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n mintAuthority?: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n associatedTokenProgram: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n eventAuthority: PublicKey | Pda;\n program: PublicKey | Pda;\n};\n\n// Data.\nexport type LzReceiveInstructionData = {\n discriminator: Uint8Array;\n params: LzReceiveParams;\n};\n\nexport type LzReceiveInstructionDataArgs = { params: LzReceiveParamsArgs };\n\nexport function getLzReceiveInstructionDataSerializer(): Serializer<\n LzReceiveInstructionDataArgs,\n LzReceiveInstructionData\n> {\n return mapSerializer<\n LzReceiveInstructionDataArgs,\n any,\n LzReceiveInstructionData\n >(\n struct<LzReceiveInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getLzReceiveParamsSerializer()],\n ],\n { description: 'LzReceiveInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([8, 179, 120, 109, 33, 118, 189, 80]),\n })\n ) as Serializer<LzReceiveInstructionDataArgs, LzReceiveInstructionData>;\n}\n\n// Args.\nexport type LzReceiveInstructionArgs = LzReceiveInstructionDataArgs;\n\n// Instruction.\nexport function lzReceive(\n context: Pick<Context, 'payer' | 'programs'>,\n input: LzReceiveInstructionAccounts & LzReceiveInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n payer: {\n index: 0,\n isWritable: true as boolean,\n value: input.payer ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n tokenEscrow: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n toAddress: {\n index: 4,\n isWritable: false as boolean,\n value: input.toAddress ?? null,\n },\n tokenDest: {\n index: 5,\n isWritable: true as boolean,\n value: input.tokenDest ?? null,\n },\n tokenMint: {\n index: 6,\n isWritable: true as boolean,\n value: input.tokenMint ?? null,\n },\n mintAuthority: {\n index: 7,\n isWritable: false as boolean,\n value: input.mintAuthority ?? null,\n },\n tokenProgram: {\n index: 8,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n associatedTokenProgram: {\n index: 9,\n isWritable: false as boolean,\n value: input.associatedTokenProgram ?? null,\n },\n systemProgram: {\n index: 10,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n eventAuthority: {\n index: 11,\n isWritable: false as boolean,\n value: input.eventAuthority ?? null,\n },\n program: {\n index: 12,\n isWritable: false as boolean,\n value: input.program ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: LzReceiveInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.payer.value) {\n resolvedAccounts.payer.value = context.payer;\n }\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getLzReceiveInstructionDataSerializer().serialize(\n resolvedArgs as LzReceiveInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n LzReceiveParams,\n LzReceiveParamsArgs,\n getLzReceiveParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type LzReceiveTypesInstructionAccounts = {\n oftStore: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type LzReceiveTypesInstructionData = {\n discriminator: Uint8Array;\n params: LzReceiveParams;\n};\n\nexport type LzReceiveTypesInstructionDataArgs = { params: LzReceiveParamsArgs };\n\nexport function getLzReceiveTypesInstructionDataSerializer(): Serializer<\n LzReceiveTypesInstructionDataArgs,\n LzReceiveTypesInstructionData\n> {\n return mapSerializer<\n LzReceiveTypesInstructionDataArgs,\n any,\n LzReceiveTypesInstructionData\n >(\n struct<LzReceiveTypesInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getLzReceiveParamsSerializer()],\n ],\n { description: 'LzReceiveTypesInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([221, 17, 246, 159, 248, 128, 31, 96]),\n })\n ) as Serializer<\n LzReceiveTypesInstructionDataArgs,\n LzReceiveTypesInstructionData\n >;\n}\n\n// Args.\nexport type LzReceiveTypesInstructionArgs = LzReceiveTypesInstructionDataArgs;\n\n// Instruction.\nexport function lzReceiveTypes(\n context: Pick<Context, 'programs'>,\n input: LzReceiveTypesInstructionAccounts & LzReceiveTypesInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n tokenMint: {\n index: 1,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: LzReceiveTypesInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getLzReceiveTypesInstructionDataSerializer().serialize(\n resolvedArgs as LzReceiveTypesInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Data.\nexport type OftVersionInstructionData = { discriminator: Uint8Array };\n\nexport type OftVersionInstructionDataArgs = {};\n\nexport function getOftVersionInstructionDataSerializer(): Serializer<\n OftVersionInstructionDataArgs,\n OftVersionInstructionData\n> {\n return mapSerializer<\n OftVersionInstructionDataArgs,\n any,\n OftVersionInstructionData\n >(\n struct<OftVersionInstructionData>([['discriminator', bytes({ size: 8 })]], {\n description: 'OftVersionInstructionData',\n }),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([179, 115, 253, 187, 88, 22, 80, 64]),\n })\n ) as Serializer<OftVersionInstructionDataArgs, OftVersionInstructionData>;\n}\n\n// Instruction.\nexport function oftVersion(\n context: Pick<Context, 'programs'>\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {} satisfies ResolvedAccountsWithIndices;\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts as ResolvedAccountsWithIndices\n );\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getOftVersionInstructionDataSerializer().serialize({});\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type QuoteOftInstructionAccounts = {\n oftStore: PublicKey | Pda;\n peer: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type QuoteOftInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n composeMsg: Option<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport type QuoteOftInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n composeMsg: OptionOrNullable<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport function getQuoteOftInstructionDataSerializer(): Serializer<\n QuoteOftInstructionDataArgs,\n QuoteOftInstructionData\n> {\n return mapSerializer<\n QuoteOftInstructionDataArgs,\n any,\n QuoteOftInstructionData\n >(\n struct<QuoteOftInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['composeMsg', option(bytes({ size: u32() }))],\n ['payInLzToken', bool()],\n ],\n { description: 'QuoteOftInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([179, 255, 92, 202, 251, 82, 82, 118]),\n })\n ) as Serializer<QuoteOftInstructionDataArgs, QuoteOftInstructionData>;\n}\n\n// Args.\nexport type QuoteOftInstructionArgs = QuoteOftInstructionDataArgs;\n\n// Instruction.\nexport function quoteOft(\n context: Pick<Context, 'programs'>,\n input: QuoteOftInstructionAccounts & QuoteOftInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n peer: { index: 1, isWritable: false as boolean, value: input.peer ?? null },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: QuoteOftInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getQuoteOftInstructionDataSerializer().serialize(\n resolvedArgs as QuoteOftInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type QuoteSendInstructionAccounts = {\n oftStore: PublicKey | Pda;\n peer: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type QuoteSendInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n composeMsg: Option<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport type QuoteSendInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n composeMsg: OptionOrNullable<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport function getQuoteSendInstructionDataSerializer(): Serializer<\n QuoteSendInstructionDataArgs,\n QuoteSendInstructionData\n> {\n return mapSerializer<\n QuoteSendInstructionDataArgs,\n any,\n QuoteSendInstructionData\n >(\n struct<QuoteSendInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['composeMsg', option(bytes({ size: u32() }))],\n ['payInLzToken', bool()],\n ],\n { description: 'QuoteSendInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([207, 0, 49, 214, 160, 211, 76, 211]),\n })\n ) as Serializer<QuoteSendInstructionDataArgs, QuoteSendInstructionData>;\n}\n\n// Args.\nexport type QuoteSendInstructionArgs = QuoteSendInstructionDataArgs;\n\n// Instruction.\nexport function quoteSend(\n context: Pick<Context, 'programs'>,\n input: QuoteSendInstructionAccounts & QuoteSendInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n peer: { index: 1, isWritable: false as boolean, value: input.peer ?? null },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: QuoteSendInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getQuoteSendInstructionDataSerializer().serialize(\n resolvedArgs as QuoteSendInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type SendInstructionAccounts = {\n signer: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n tokenSource: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n eventAuthority: PublicKey | Pda;\n program: PublicKey | Pda;\n};\n\n// Data.\nexport type SendInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n composeMsg: Option<Uint8Array>;\n nativeFee: bigint;\n lzTokenFee: bigint;\n};\n\nexport type SendInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n composeMsg: OptionOrNullable<Uint8Array>;\n nativeFee: number | bigint;\n lzTokenFee: number | bigint;\n};\n\nexport function getSendInstructionDataSerializer(): Serializer<\n SendInstructionDataArgs,\n SendInstructionData\n> {\n return mapSerializer<SendInstructionDataArgs, any, SendInstructionData>(\n struct<SendInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['composeMsg', option(bytes({ size: u32() }))],\n ['nativeFee', u64()],\n ['lzTokenFee', u64()],\n ],\n { description: 'SendInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([102, 251, 20, 187, 65, 75, 12, 69]),\n })\n ) as Serializer<SendInstructionDataArgs, SendInstructionData>;\n}\n\n// Args.\nexport type SendInstructionArgs = SendInstructionDataArgs;\n\n// Instruction.\nexport function send(\n context: Pick<Context, 'programs'>,\n input: SendInstructionAccounts & SendInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n signer: {\n index: 0,\n isWritable: false as boolean,\n value: input.signer ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n tokenSource: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenSource ?? null,\n },\n tokenEscrow: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenMint: {\n index: 5,\n isWritable: true as boolean,\n value: input.tokenMint ?? null,\n },\n tokenProgram: {\n index: 6,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n eventAuthority: {\n index: 7,\n isWritable: false as boolean,\n value: input.eventAuthority ?? null,\n },\n program: {\n index: 8,\n isWritable: false as boolean,\n value: input.program ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SendInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSendInstructionDataSerializer().serialize(\n resolvedArgs as SendInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n SetOFTConfigParams,\n SetOFTConfigParamsArgs,\n getSetOFTConfigParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type SetOftConfigInstructionAccounts = {\n admin: Signer;\n oftStore: PublicKey | Pda;\n};\n\n// Data.\nexport type SetOftConfigInstructionData = {\n discriminator: Uint8Array;\n params: SetOFTConfigParams;\n};\n\nexport type SetOftConfigInstructionDataArgs = {\n params: SetOFTConfigParamsArgs;\n};\n\nexport function getSetOftConfigInstructionDataSerializer(): Serializer<\n SetOftConfigInstructionDataArgs,\n SetOftConfigInstructionData\n> {\n return mapSerializer<\n SetOftConfigInstructionDataArgs,\n any,\n SetOftConfigInstructionData\n >(\n struct<SetOftConfigInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getSetOFTConfigParamsSerializer()],\n ],\n { description: 'SetOftConfigInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([55, 126, 87, 217, 159, 66, 24, 194]),\n })\n ) as Serializer<SetOftConfigInstructionDataArgs, SetOftConfigInstructionData>;\n}\n\n// Args.\nexport type SetOftConfigInstructionArgs = SetOftConfigInstructionDataArgs;\n\n// Instruction.\nexport function setOftConfig(\n context: Pick<Context, 'programs'>,\n input: SetOftConfigInstructionAccounts & SetOftConfigInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: false as boolean,\n value: input.admin ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetOftConfigInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetOftConfigInstructionDataSerializer().serialize(\n resolvedArgs as SetOftConfigInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type SetPauseInstructionAccounts = {\n /** pauser or unpauser */\n signer: Signer;\n oftStore: PublicKey | Pda;\n};\n\n// Data.\nexport type SetPauseInstructionData = {\n discriminator: Uint8Array;\n paused: boolean;\n};\n\nexport type SetPauseInstructionDataArgs = { paused: boolean };\n\nexport function getSetPauseInstructionDataSerializer(): Serializer<\n SetPauseInstructionDataArgs,\n SetPauseInstructionData\n> {\n return mapSerializer<\n SetPauseInstructionDataArgs,\n any,\n SetPauseInstructionData\n >(\n struct<SetPauseInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['paused', bool()],\n ],\n { description: 'SetPauseInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([63, 32, 154, 2, 56, 103, 79, 45]),\n })\n ) as Serializer<SetPauseInstructionDataArgs, SetPauseInstructionData>;\n}\n\n// Args.\nexport type SetPauseInstructionArgs = SetPauseInstructionDataArgs;\n\n// Instruction.\nexport function setPause(\n context: Pick<Context, 'programs'>,\n input: SetPauseInstructionAccounts & SetPauseInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n signer: {\n index: 0,\n isWritable: false as boolean,\n value: input.signer ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetPauseInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetPauseInstructionDataSerializer().serialize(\n resolvedArgs as SetPauseInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n u32,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n PeerConfigParam,\n PeerConfigParamArgs,\n getPeerConfigParamSerializer,\n} from '../types';\n\n// Accounts.\nexport type SetPeerConfigInstructionAccounts = {\n admin: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type SetPeerConfigInstructionData = {\n discriminator: Uint8Array;\n remoteEid: number;\n config: PeerConfigParam;\n};\n\nexport type SetPeerConfigInstructionDataArgs = {\n remoteEid: number;\n config: PeerConfigParamArgs;\n};\n\nexport function getSetPeerConfigInstructionDataSerializer(): Serializer<\n SetPeerConfigInstructionDataArgs,\n SetPeerConfigInstructionData\n> {\n return mapSerializer<\n SetPeerConfigInstructionDataArgs,\n any,\n SetPeerConfigInstructionData\n >(\n struct<SetPeerConfigInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['remoteEid', u32()],\n ['config', getPeerConfigParamSerializer()],\n ],\n { description: 'SetPeerConfigInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([79, 187, 168, 57, 139, 140, 93, 47]),\n })\n ) as Serializer<\n SetPeerConfigInstructionDataArgs,\n SetPeerConfigInstructionData\n >;\n}\n\n// Args.\nexport type SetPeerConfigInstructionArgs = SetPeerConfigInstructionDataArgs;\n\n// Instruction.\nexport function setPeerConfig(\n context: Pick<Context, 'programs'>,\n input: SetPeerConfigInstructionAccounts & SetPeerConfigInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: true as boolean,\n value: input.admin ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n systemProgram: {\n index: 3,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetPeerConfigInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetPeerConfigInstructionDataSerializer().serialize(\n resolvedArgs as SetPeerConfigInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type WithdrawFeeInstructionAccounts = {\n admin: Signer;\n oftStore: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n tokenDest: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type WithdrawFeeInstructionData = {\n discriminator: Uint8Array;\n feeLd: bigint;\n};\n\nexport type WithdrawFeeInstructionDataArgs = { feeLd: number | bigint };\n\nexport function getWithdrawFeeInstructionDataSerializer(): Serializer<\n WithdrawFeeInstructionDataArgs,\n WithdrawFeeInstructionData\n> {\n return mapSerializer<\n WithdrawFeeInstructionDataArgs,\n any,\n WithdrawFeeInstructionData\n >(\n struct<WithdrawFeeInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['feeLd', u64()],\n ],\n { description: 'WithdrawFeeInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([14, 122, 231, 218, 31, 238, 223, 150]),\n })\n ) as Serializer<WithdrawFeeInstructionDataArgs, WithdrawFeeInstructionData>;\n}\n\n// Args.\nexport type WithdrawFeeInstructionArgs = WithdrawFeeInstructionDataArgs;\n\n// Instruction.\nexport function withdrawFee(\n context: Pick<Context, 'programs'>,\n input: WithdrawFeeInstructionAccounts & WithdrawFeeInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: false as boolean,\n value: input.admin ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n tokenEscrow: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenDest: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenDest ?? null,\n },\n tokenProgram: {\n index: 5,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: WithdrawFeeInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getWithdrawFeeInstructionDataSerializer().serialize(\n resolvedArgs as WithdrawFeeInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","import { PublicKey, publicKeyBytes } from '@metaplex-foundation/umi'\nimport { Endian, u32 } from '@metaplex-foundation/umi/serializers'\nimport { createWeb3JsEddsa } from '@metaplex-foundation/umi-eddsa-web3js'\n\nimport { LZ_RECEIVE_TYPES_SEED } from '@layerzerolabs/lz-solana-sdk-v2'\n\nimport { OFT_SEED, PEER_SEED } from './consts'\n\nconst eddsa = createWeb3JsEddsa()\n\nexport class OftPDA {\n constructor(public readonly program: PublicKey) {}\n\n config(): [PublicKey, number] {\n return eddsa.findPda(this.program, [Buffer.from('OftConfig', 'utf8')])\n }\n\n peer(oftStore: PublicKey, eid: number): [PublicKey, number] {\n return eddsa.findPda(this.program, [\n Buffer.from(PEER_SEED, 'utf8'),\n publicKeyBytes(oftStore),\n u32({ endian: Endian.Big }).serialize(eid),\n // new BN(eid).toArrayLike(Buffer, 'be', 4),\n ])\n }\n\n oftStore(escrow: PublicKey): [PublicKey, number] {\n return eddsa.findPda(this.program, [Buffer.from(OFT_SEED, 'utf8'), publicKeyBytes(escrow)])\n }\n\n lzReceiveTypesAccounts(oftConfig: PublicKey): [PublicKey, number] {\n return eddsa.findPda(this.program, [Buffer.from(LZ_RECEIVE_TYPES_SEED, 'utf8'), publicKeyBytes(oftConfig)])\n }\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './oft';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n ClusterFilter,\n Context,\n Program,\n PublicKey,\n} from '@metaplex-foundation/umi';\nimport { getOftErrorFromCode, getOftErrorFromName } from '../errors';\n\nexport const OFT_PROGRAM_ID = '' as PublicKey<''>;\n\nexport function createOftProgram(): Program {\n return {\n name: 'oft',\n publicKey: OFT_PROGRAM_ID,\n getErrorFromCode(code: number, cause?: Error) {\n return getOftErrorFromCode(code, this, cause);\n },\n getErrorFromName(name: string, cause?: Error) {\n return getOftErrorFromName(name, this, cause);\n },\n isOnCluster() {\n return true;\n },\n };\n}\n\nexport function getOftProgram<T extends Program = Program>(\n context: Pick<Context, 'programs'>,\n clusterFilter?: ClusterFilter\n): T {\n return context.programs.get<T>('oft', clusterFilter);\n}\n\nexport function getOftProgramId(\n context: Pick<Context, 'programs'>,\n clusterFilter?: ClusterFilter\n): PublicKey {\n return context.programs.getPublicKey('oft', OFT_PROGRAM_ID, clusterFilter);\n}\n","/* eslint-disable @typescript-eslint/require-await */\n\n// 1. init native OFT from existing mint\n// 2. init adapter OFT from existing mint, optionally an existing escrow\n// 3. Wire a peer\n// 4. Set the DVN etc. options\nimport {\n AccountMeta,\n Cluster,\n Program,\n ProgramError,\n ProgramRepositoryInterface,\n PublicKey,\n RpcInterface,\n Signer,\n WrappedInstruction,\n createNullRpc,\n none,\n some,\n} from '@metaplex-foundation/umi'\nimport { createDefaultProgramRepository } from '@metaplex-foundation/umi-program-repository'\nimport { fromWeb3JsPublicKey, toWeb3JsInstruction, toWeb3JsPublicKey } from '@metaplex-foundation/umi-web3js-adapters'\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token'\nimport { ComputeBudgetProgram } from '@solana/web3.js'\n\nimport {\n EndpointProgram,\n EventPDA,\n SimpleMessageLibProgram,\n SolanaPacketPath,\n UlnProgram,\n simulateWeb3JsTransaction,\n} from '@layerzerolabs/lz-solana-sdk-v2/umi'\n\nimport { OFT_DECIMALS } from './consts'\nimport * as OFTAccounts from './generated/oft202/accounts'\nimport * as errors from './generated/oft202/errors'\nimport * as instructions from './generated/oft202/instructions'\nimport * as types from './generated/oft202/types/index'\nimport { OftPDA } from './pda'\nimport {\n SetOFTConfigParams,\n SetPeerAddressParam,\n SetPeerEnforcedOptionsParam,\n SetPeerFeeBpsParam,\n SetPeerIsEndpointV1Param,\n SetPeerRateLimitParam,\n} from './types'\n\nexport {\n initSendLibrary,\n initReceiveLibrary,\n setSendLibrary,\n setReceiveLibrary,\n initConfig,\n setConfig,\n initOAppNonce,\n getEndpointConfig,\n getPeerAddress,\n getDelegate,\n getEnforcedOptions,\n} from './oft302'\n\nexport * as accounts from './generated/oft202/accounts'\nexport * as instructions from './generated/oft202/instructions'\nexport * as programs from './generated/oft202/programs'\nexport * as shared from './generated/oft202/shared'\nexport * as types from './generated/oft202/types/index'\nexport * as errors from './generated/oft202/errors'\n\nconst { ENDPOINT_PROGRAM_ID } = EndpointProgram\nconst PROGRAM_NAME = 'oft'\n\nexport function createOFTProgramRepo(oftProgram: PublicKey, rpc?: RpcInterface): ProgramRepositoryInterface {\n if (rpc === undefined) {\n rpc = createNullRpc()\n rpc.getCluster = (): Cluster => 'custom'\n }\n return createDefaultProgramRepository({ rpc: rpc }, [\n {\n name: PROGRAM_NAME,\n publicKey: oftProgram,\n getErrorFromCode(code: number, cause?: Error): ProgramError | null {\n return errors.getOftErrorFromCode(code, this, cause)\n },\n getErrorFromName(name: string, cause?: Error): ProgramError | null {\n return errors.getOftErrorFromName(name, this, cause)\n },\n isOnCluster(): boolean {\n return true\n },\n } satisfies Program,\n ])\n}\n\nexport function initOft(\n accounts: { payer: Signer; admin: PublicKey; mint: PublicKey; escrow: Signer },\n oftType: types.OFTType,\n sharedDecimals = OFT_DECIMALS,\n programs: { oft: PublicKey; endpoint?: PublicKey; token?: PublicKey }\n): WrappedInstruction {\n const programsRepo = createOFTProgramRepo(programs.oft)\n const deriver = new OftPDA(programsRepo.getPublicKey(PROGRAM_NAME))\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const { payer, admin, mint, escrow } = accounts\n const [oftStore] = deriver.oftStore(escrow.publicKey)\n const [lzReceiveTypes] = deriver.lzReceiveTypesAccounts(oftStore)\n\n const txBuilder = instructions.initOft(\n {\n payer: payer,\n programs: programsRepo,\n },\n {\n // accounts\n oftStore: oftStore,\n lzReceiveTypesAccounts: lzReceiveTypes,\n tokenMint: mint,\n tokenEscrow: escrow,\n tokenProgram: programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID),\n // params\n oftType: oftType,\n admin: admin,\n sharedDecimals: sharedDecimals,\n endpointProgram: endpoint.programId,\n }\n )\n const retval = txBuilder.addRemainingAccounts(\n endpoint.getRegisterOappIxAccountMetaForCPI(payer.publicKey, oftStore).map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n retval.signers = [payer, escrow]\n return retval\n}\n\nexport function setOFTConfig(\n accounts: {\n oftStore: PublicKey\n admin: Signer\n },\n params: SetOFTConfigParams,\n programs: {\n oft: PublicKey\n endpoint?: PublicKey\n }\n): WrappedInstruction {\n let actualParams: types.SetOFTConfigParamsArgs\n const { oftStore, admin } = accounts\n const remainingAccounts: AccountMeta[] = []\n if (params.__kind === 'Admin') {\n if (params.admin === undefined) {\n throw new Error('Admin is required')\n }\n actualParams = {\n __kind: 'Admin',\n fields: [params.admin],\n }\n } else if (params.__kind === 'Delegate') {\n if (params.delegate === undefined) {\n throw new Error('Delegate is required')\n }\n actualParams = {\n __kind: 'Delegate',\n fields: [params.delegate],\n }\n const endpointProgram = programs.endpoint ?? ENDPOINT_PROGRAM_ID\n const endpointSDK = new EndpointProgram.Endpoint(endpointProgram)\n const keys = endpointSDK.getSetDelegateIxAccountMetaForCPI(oftStore)\n for (const acc of keys) {\n acc.isSigner = false\n }\n remainingAccounts.push(\n {\n pubkey: endpointProgram,\n isSigner: false,\n isWritable: false,\n },\n ...keys\n )\n } else if (params.__kind === 'DefaultFee') {\n if (params.defaultFee === undefined) {\n throw new Error('DefaultFee is required')\n }\n actualParams = {\n __kind: 'DefaultFee',\n fields: [params.defaultFee],\n }\n } else if (params.__kind === 'Paused') {\n if (params.paused === undefined) {\n throw new Error('Paused is required')\n }\n actualParams = {\n __kind: 'Paused',\n fields: [params.paused],\n }\n } else if (params.__kind === 'Pauser') {\n actualParams = {\n __kind: 'Pauser',\n fields: [params.pauser ? some(params.pauser) : none()],\n }\n } else {\n actualParams = {\n __kind: 'Unpauser',\n fields: [params.unpauser ? some(params.unpauser) : none()],\n }\n }\n\n const txBuilder = instructions.setOftConfig(\n { programs: createOFTProgramRepo(programs.oft) },\n {\n admin: admin,\n oftStore: oftStore,\n params: actualParams,\n }\n )\n return txBuilder.addRemainingAccounts(\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n}\n\nexport function setPeerConfig(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n param: (\n | SetPeerAddressParam\n | SetPeerFeeBpsParam\n | SetPeerEnforcedOptionsParam\n | SetPeerRateLimitParam\n | SetPeerIsEndpointV1Param\n ) & {\n remote: number\n },\n oftProgramId: PublicKey | ProgramRepositoryInterface\n): WrappedInstruction {\n const programsRepo = typeof oftProgramId === 'string' ? createOFTProgramRepo(oftProgramId) : oftProgramId\n const { remote: remoteId } = param\n if (remoteId % 30000 == 0) {\n throw new Error('Invalid remote ID')\n }\n const { admin, oftStore } = accounts\n const [peerPda] = new OftPDA(programsRepo.getPublicKey(PROGRAM_NAME)).peer(oftStore, remoteId)\n let config: types.PeerConfigParamArgs\n if (param.__kind === 'PeerAddress') {\n if (param.peer.length !== 32) {\n throw new Error('Peer must be 32 bytes (left-padded with zeroes)')\n }\n config = types.peerConfigParam('PeerAddress', [param.peer])\n } else if (param.__kind === 'FeeBps') {\n config = { __kind: 'FeeBps', fields: [some(param.feeBps)] }\n } else if (param.__kind === 'EnforcedOptions') {\n config = {\n __kind: 'EnforcedOptions',\n send: param.send,\n sendAndCall: param.sendAndCall,\n }\n } else if (param.__kind === 'OutboundRateLimit' || param.__kind === 'InboundRateLimit') {\n config = {\n __kind: param.__kind,\n fields: [\n param.rateLimit\n ? some({\n refillPerSecond: some(param.rateLimit.refillPerSecond),\n capacity: some(param.rateLimit.capacity),\n })\n : null,\n ],\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n } else if (param.__kind === 'IsEndpointV1') {\n config = { __kind: 'IsEndpointV1', fields: [param.isEndpointV1] }\n } else {\n throw new Error('Invalid peer config')\n }\n\n return instructions.setPeerConfig(\n { programs: programsRepo },\n {\n admin: admin,\n peer: peerPda,\n oftStore: oftStore,\n // params\n remoteEid: remoteId,\n config: config,\n }\n ).items[0]\n}\n\n// copied from oft302.ts withdrawFee\nexport function withdrawFee(\n accounts: {\n admin: Signer\n mint: PublicKey\n escrow: PublicKey\n dest: PublicKey\n },\n amount: bigint,\n programs: {\n oft: PublicKey | ProgramRepositoryInterface\n token?: PublicKey\n }\n): WrappedInstruction {\n const { admin, mint, escrow, dest } = accounts\n const programsRepo = typeof programs.oft === 'string' ? createOFTProgramRepo(programs.oft) : programs.oft\n const [oftStore] = new OftPDA(programsRepo.getPublicKey('oft')).oftStore(escrow)\n return instructions.withdrawFee(\n { programs: programsRepo },\n {\n admin: admin,\n tokenEscrow: escrow,\n tokenDest: dest,\n tokenProgram: programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID),\n oftStore: oftStore,\n tokenMint: mint,\n // params\n feeLd: amount,\n }\n ).items[0]\n}\n\nexport async function send(\n rpc: RpcInterface,\n accounts: {\n payer: Signer\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n tokenSource: PublicKey\n peerAddr?: Uint8Array\n },\n sendParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n nativeFee: bigint\n lzTokenFee?: bigint\n composeParams?: {\n composeGas: number | bigint\n composeMsg: Uint8Array\n }\n },\n programs: {\n oft: PublicKey | ProgramRepositoryInterface\n endpoint?: PublicKey // default is ENDPOINT_PROGRAM(76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6)\n token?: PublicKey // default is TOKEN_PROGRAM_ID(TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA)\n },\n remainingAccounts?: AccountMeta[]\n): Promise<WrappedInstruction> {\n const { payer, tokenMint, tokenEscrow, tokenSource } = accounts\n const { dstEid, to, amountLd, minAmountLd, options, composeParams, nativeFee, lzTokenFee } = sendParams\n const programsRepo = typeof programs.oft === 'string' ? createOFTProgramRepo(programs.oft) : programs.oft\n const oftProgramId = programsRepo.getPublicKey(PROGRAM_NAME)\n const deriver = new OftPDA(oftProgramId)\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n\n if (remainingAccounts === undefined || remainingAccounts.length === 0) {\n const peerAddr: Uint8Array =\n accounts.peerAddr ??\n (await OFTAccounts.fetchPeerConfig({ rpc }, peer).then((peerInfo) => peerInfo.peerAddress))\n\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const msgLibProgram = await getSendLibraryProgram(rpc, endpoint, payer.publicKey, oftStore, dstEid)\n const packetPath: SolanaPacketPath = {\n dstEid,\n sender: oftStore,\n receiver: peerAddr,\n }\n remainingAccounts = await endpoint.getSendIXAccountMetaForCPI(rpc, payer.publicKey, {\n path: packetPath,\n msgLibProgram: msgLibProgram,\n })\n }\n\n const [eventAuthorityPDA] = new EventPDA(oftProgramId).eventAuthority()\n const tokenProgram: PublicKey = programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID)\n const txBuilder = instructions.send(\n { programs: programsRepo },\n {\n signer: payer,\n peer: peer,\n oftStore: oftStore,\n tokenSource: tokenSource,\n tokenEscrow: tokenEscrow,\n tokenMint: tokenMint,\n tokenProgram: tokenProgram,\n eventAuthority: eventAuthorityPDA,\n program: oftProgramId,\n // params\n dstEid: dstEid,\n to: to,\n amountLd,\n minAmountLd,\n options: options ?? new Uint8Array(),\n nativeFee,\n lzTokenFee: lzTokenFee ?? 0,\n composeParams: composeParams ?? null,\n }\n )\n\n // Get remaining accounts from msgLib(simple_msgLib or uln)\n return txBuilder.addRemainingAccounts(\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n}\n\nexport async function quote(\n rpc: RpcInterface,\n accounts: {\n payer: PublicKey\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n peerAddr?: Uint8Array\n },\n quoteParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n payInLzToken?: boolean\n composeParams?: {\n composeGas: number | bigint\n composeMsg: Uint8Array\n }\n },\n programs: {\n oft: PublicKey | ProgramRepositoryInterface\n endpoint?: PublicKey\n },\n remainingAccounts?: AccountMeta[],\n addressLookupTable?: PublicKey\n): Promise<{ nativeFee: bigint; lzTokenFee: bigint }> {\n const { dstEid, to, amountLd, minAmountLd, options, payInLzToken, composeParams } = quoteParams\n const { payer, tokenMint, tokenEscrow } = accounts\n const programsRepo = typeof programs.oft === 'string' ? createOFTProgramRepo(programs.oft) : programs.oft\n const deriver = new OftPDA(programsRepo.getPublicKey(PROGRAM_NAME))\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n\n if (remainingAccounts === undefined || remainingAccounts.length === 0) {\n const peerAddr: Uint8Array =\n accounts.peerAddr ??\n (await OFTAccounts.fetchPeerConfig({ rpc }, peer).then((peerInfo) => peerInfo.peerAddress))\n\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const messageLib = await getSendLibraryProgram(rpc, endpoint, payer, oftStore, dstEid)\n remainingAccounts = await endpoint.getQuoteIXAccountMetaForCPI(rpc, payer, {\n path: { sender: oftStore, dstEid: dstEid, receiver: peerAddr },\n msgLibProgram: messageLib,\n })\n }\n\n let txBuilder = instructions.quoteSend(\n { programs: programsRepo },\n {\n oftStore: oftStore,\n peer: peer,\n tokenMint: tokenMint,\n // params\n dstEid: dstEid,\n to: to,\n amountLd: amountLd,\n minAmountLd: minAmountLd,\n options: options ?? new Uint8Array(),\n payInLzToken: payInLzToken ?? false,\n composeParams: composeParams ?? null,\n }\n )\n\n txBuilder = txBuilder.addRemainingAccounts(\n // Get remaining accounts from msgLib(simple_msgLib or uln)\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n )\n const web3Ix = toWeb3JsInstruction(txBuilder.getInstructions()[0])\n const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({\n units: 1000000,\n })\n return simulateWeb3JsTransaction(\n rpc,\n [modifyComputeUnits, web3Ix],\n web3Ix.programId,\n toWeb3JsPublicKey(payer),\n EndpointProgram.types.getMessagingFeeSerializer(),\n 'confirmed',\n undefined,\n addressLookupTable === undefined ? undefined : toWeb3JsPublicKey(addressLookupTable)\n )\n}\n\nexport async function quoteOft(\n rpc: RpcInterface,\n accounts: {\n payer: PublicKey\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n },\n quoteParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n payInLzToken?: boolean\n composeMsg?: Uint8Array\n },\n oftProgram: PublicKey | ProgramRepositoryInterface\n): Promise<types.QuoteOFTResult> {\n const { payer, tokenMint, tokenEscrow } = accounts\n const { dstEid, to, amountLd, minAmountLd, options, payInLzToken, composeMsg } = quoteParams\n const programsRepo = typeof oftProgram === 'string' ? createOFTProgramRepo(oftProgram) : oftProgram\n const deriver = new OftPDA(programsRepo.getPublicKey(PROGRAM_NAME))\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n const ix = instructions\n .quoteOft(\n { programs: programsRepo },\n {\n oftStore: oftStore,\n peer: peer,\n tokenMint: tokenMint,\n // params\n dstEid: dstEid,\n to: to,\n amountLd: amountLd,\n minAmountLd: minAmountLd,\n options: options ?? new Uint8Array(),\n payInLzToken: payInLzToken ?? false,\n composeMsg: composeMsg ?? null,\n }\n )\n .getInstructions()[0]\n const web3Ix = toWeb3JsInstruction(ix)\n\n return simulateWeb3JsTransaction(\n rpc.getEndpoint(),\n [web3Ix],\n web3Ix.programId,\n toWeb3JsPublicKey(payer),\n types.getQuoteOFTResultSerializer(),\n 'confirmed'\n )\n}\n\nasync function getSendLibraryProgram(\n rpc: RpcInterface,\n endpoint: EndpointProgram.Endpoint,\n payer: PublicKey,\n oftStore: PublicKey,\n remoteEid: number\n): Promise<SimpleMessageLibProgram.SimpleMessageLib | UlnProgram.Uln> {\n const sendLibInfo = await endpoint.getSendLibrary(rpc, oftStore, remoteEid)\n if (!sendLibInfo.programId) {\n throw new Error('Send library not initialized or blocked message library')\n }\n const { programId: msgLibProgram } = sendLibInfo\n const msgLibVersion = await endpoint.getMessageLibVersion(rpc, payer, msgLibProgram)\n if (msgLibVersion.major.toString() === '0' && msgLibVersion.minor == 0 && msgLibVersion.endpointVersion == 2) {\n return new SimpleMessageLibProgram.SimpleMessageLib(msgLibProgram)\n } else if (\n msgLibVersion.major.toString() === '3' &&\n msgLibVersion.minor == 0 &&\n msgLibVersion.endpointVersion == 2\n ) {\n return new UlnProgram.Uln(msgLibProgram)\n }\n throw new Error(`Unsupported message library version: ${JSON.stringify(msgLibVersion, null, 2)}`)\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './lzReceiveTypesAccounts';\nexport * from './oFTStore';\nexport * from './peerConfig';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n publicKey as publicKeySerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\n\n/**\n * LzReceiveTypesAccounts includes accounts that are used in the LzReceiveTypes\n * instruction.\n */\n\nexport type LzReceiveTypesAccounts = Account<LzReceiveTypesAccountsAccountData>;\n\nexport type LzReceiveTypesAccountsAccountData = {\n discriminator: Uint8Array;\n oftStore: PublicKey;\n tokenMint: PublicKey;\n};\n\nexport type LzReceiveTypesAccountsAccountDataArgs = {\n oftStore: PublicKey;\n tokenMint: PublicKey;\n};\n\nexport function getLzReceiveTypesAccountsAccountDataSerializer(): Serializer<\n LzReceiveTypesAccountsAccountDataArgs,\n LzReceiveTypesAccountsAccountData\n> {\n return mapSerializer<\n LzReceiveTypesAccountsAccountDataArgs,\n any,\n LzReceiveTypesAccountsAccountData\n >(\n struct<LzReceiveTypesAccountsAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftStore', publicKeySerializer()],\n ['tokenMint', publicKeySerializer()],\n ],\n { description: 'LzReceiveTypesAccountsAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([248, 87, 167, 117, 5, 251, 21, 126]),\n })\n ) as Serializer<\n LzReceiveTypesAccountsAccountDataArgs,\n LzReceiveTypesAccountsAccountData\n >;\n}\n\nexport function deserializeLzReceiveTypesAccounts(\n rawAccount: RpcAccount\n): LzReceiveTypesAccounts {\n return deserializeAccount(\n rawAccount,\n getLzReceiveTypesAccountsAccountDataSerializer()\n );\n}\n\nexport async function fetchLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<LzReceiveTypesAccounts> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'LzReceiveTypesAccounts');\n return deserializeLzReceiveTypesAccounts(maybeAccount);\n}\n\nexport async function safeFetchLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<LzReceiveTypesAccounts | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists\n ? deserializeLzReceiveTypesAccounts(maybeAccount)\n : null;\n}\n\nexport async function fetchAllLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<LzReceiveTypesAccounts[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'LzReceiveTypesAccounts');\n return deserializeLzReceiveTypesAccounts(maybeAccount);\n });\n}\n\nexport async function safeFetchAllLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<LzReceiveTypesAccounts[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) =>\n deserializeLzReceiveTypesAccounts(maybeAccount as RpcAccount)\n );\n}\n\nexport function getLzReceiveTypesAccountsGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n oftStore: PublicKey;\n tokenMint: PublicKey;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n oftStore: [8, publicKeySerializer()],\n tokenMint: [40, publicKeySerializer()],\n })\n .deserializeUsing<LzReceiveTypesAccounts>((account) =>\n deserializeLzReceiveTypesAccounts(account)\n )\n .whereField(\n 'discriminator',\n new Uint8Array([248, 87, 167, 117, 5, 251, 21, 126])\n );\n}\n\nexport function getLzReceiveTypesAccountsSize(): number {\n return 72;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './composeParams';\nexport * from './enforcedOptions';\nexport * from './lzAccount';\nexport * from './lzReceiveParams';\nexport * from './messagingFee';\nexport * from './oFTFeeDetail';\nexport * from './oFTLimits';\nexport * from './oFTReceipt';\nexport * from './oFTType';\nexport * from './peerConfigParam';\nexport * from './quoteOFTResult';\nexport * from './rateLimiter';\nexport * from './rateLimitParams';\nexport * from './setOFTConfigParams';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n bytes,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type ComposeParams = { composeGas: bigint; composeMsg: Uint8Array };\n\nexport type ComposeParamsArgs = {\n composeGas: number | bigint;\n composeMsg: Uint8Array;\n};\n\nexport function getComposeParamsSerializer(): Serializer<\n ComposeParamsArgs,\n ComposeParams\n> {\n return struct<ComposeParams>(\n [\n ['composeGas', u64()],\n ['composeMsg', bytes({ size: u32() })],\n ],\n { description: 'ComposeParams' }\n ) as Serializer<ComposeParamsArgs, ComposeParams>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n bytes,\n struct,\n u32,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type EnforcedOptions = { send: Uint8Array; sendAndCall: Uint8Array };\n\nexport type EnforcedOptionsArgs = EnforcedOptions;\n\nexport function getEnforcedOptionsSerializer(): Serializer<\n EnforcedOptionsArgs,\n EnforcedOptions\n> {\n return struct<EnforcedOptions>(\n [\n ['send', bytes({ size: u32() })],\n ['sendAndCall', bytes({ size: u32() })],\n ],\n { description: 'EnforcedOptions' }\n ) as Serializer<EnforcedOptionsArgs, EnforcedOptions>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { PublicKey } from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n publicKey as publicKeySerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\n\n/** same to anchor_lang::prelude::AccountMeta */\nexport type LzAccount = {\n pubkey: PublicKey;\n isSigner: boolean;\n isWritable: boolean;\n};\n\nexport type LzAccountArgs = LzAccount;\n\nexport function getLzAccountSerializer(): Serializer<LzAccountArgs, LzAccount> {\n return struct<LzAccount>(\n [\n ['pubkey', publicKeySerializer()],\n ['isSigner', bool()],\n ['isWritable', bool()],\n ],\n { description: 'LzAccount' }\n ) as Serializer<LzAccountArgs, LzAccount>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n bytes,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type LzReceiveParams = {\n srcEid: number;\n sender: Uint8Array;\n nonce: bigint;\n guid: Uint8Array;\n message: Uint8Array;\n extraData: Uint8Array;\n};\n\nexport type LzReceiveParamsArgs = {\n srcEid: number;\n sender: Uint8Array;\n nonce: number | bigint;\n guid: Uint8Array;\n message: Uint8Array;\n extraData: Uint8Array;\n};\n\nexport function getLzReceiveParamsSerializer(): Serializer<\n LzReceiveParamsArgs,\n LzReceiveParams\n> {\n return struct<LzReceiveParams>(\n [\n ['srcEid', u32()],\n ['sender', bytes({ size: 32 })],\n ['nonce', u64()],\n ['guid', bytes({ size: 32 })],\n ['message', bytes({ size: u32() })],\n ['extraData', bytes({ size: u32() })],\n ],\n { description: 'LzReceiveParams' }\n ) as Serializer<LzReceiveParamsArgs, LzReceiveParams>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type MessagingFee = { nativeFee: bigint; lzTokenFee: bigint };\n\nexport type MessagingFeeArgs = {\n nativeFee: number | bigint;\n lzTokenFee: number | bigint;\n};\n\nexport function getMessagingFeeSerializer(): Serializer<\n MessagingFeeArgs,\n MessagingFee\n> {\n return struct<MessagingFee>(\n [\n ['nativeFee', u64()],\n ['lzTokenFee', u64()],\n ],\n { description: 'MessagingFee' }\n ) as Serializer<MessagingFeeArgs, MessagingFee>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n string,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type OFTFeeDetail = { feeAmountLd: bigint; description: string };\n\nexport type OFTFeeDetailArgs = {\n feeAmountLd: number | bigint;\n description: string;\n};\n\nexport function getOFTFeeDetailSerializer(): Serializer<\n OFTFeeDetailArgs,\n OFTFeeDetail\n> {\n return struct<OFTFeeDetail>(\n [\n ['feeAmountLd', u64()],\n ['description', string()],\n ],\n { description: 'OFTFeeDetail' }\n ) as Serializer<OFTFeeDetailArgs, OFTFeeDetail>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type OFTLimits = { minAmountLd: bigint; maxAmountLd: bigint };\n\nexport type OFTLimitsArgs = {\n minAmountLd: number | bigint;\n maxAmountLd: number | bigint;\n};\n\nexport function getOFTLimitsSerializer(): Serializer<OFTLimitsArgs, OFTLimits> {\n return struct<OFTLimits>(\n [\n ['minAmountLd', u64()],\n ['maxAmountLd', u64()],\n ],\n { description: 'OFTLimits' }\n ) as Serializer<OFTLimitsArgs, OFTLimits>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type OFTReceipt = { amountSentLd: bigint; amountReceivedLd: bigint };\n\nexport type OFTReceiptArgs = {\n amountSentLd: number | bigint;\n amountReceivedLd: number | bigint;\n};\n\nexport function getOFTReceiptSerializer(): Serializer<\n OFTReceiptArgs,\n OFTReceipt\n> {\n return struct<OFTReceipt>(\n [\n ['amountSentLd', u64()],\n ['amountReceivedLd', u64()],\n ],\n { description: 'OFTReceipt' }\n ) as Serializer<OFTReceiptArgs, OFTReceipt>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, scalarEnum } from '@metaplex-foundation/umi/serializers';\n\nexport enum OFTType {\n Native,\n Adapter,\n}\n\nexport type OFTTypeArgs = OFTType;\n\nexport function getOFTTypeSerializer(): Serializer<OFTTypeArgs, OFTType> {\n return scalarEnum<OFTType>(OFTType, { description: 'OFTType' }) as Serializer<\n OFTTypeArgs,\n OFTType\n >;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable } from '@metaplex-foundation/umi';\nimport {\n GetDataEnumKind,\n GetDataEnumKindContent,\n Serializer,\n bool,\n bytes,\n dataEnum,\n option,\n struct,\n tuple,\n u16,\n u32,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n RateLimitParams,\n RateLimitParamsArgs,\n getRateLimitParamsSerializer,\n} from '.';\n\nexport type PeerConfigParam =\n | { __kind: 'PeerAddress'; fields: [Uint8Array] }\n | { __kind: 'FeeBps'; fields: [Option<number>] }\n | { __kind: 'EnforcedOptions'; send: Uint8Array; sendAndCall: Uint8Array }\n | { __kind: 'OutboundRateLimit'; fields: [Option<RateLimitParams>] }\n | { __kind: 'InboundRateLimit'; fields: [Option<RateLimitParams>] }\n | { __kind: 'IsEndpointV1'; fields: [boolean] };\n\nexport type PeerConfigParamArgs =\n | { __kind: 'PeerAddress'; fields: [Uint8Array] }\n | { __kind: 'FeeBps'; fields: [OptionOrNullable<number>] }\n | { __kind: 'EnforcedOptions'; send: Uint8Array; sendAndCall: Uint8Array }\n | {\n __kind: 'OutboundRateLimit';\n fields: [OptionOrNullable<RateLimitParamsArgs>];\n }\n | {\n __kind: 'InboundRateLimit';\n fields: [OptionOrNullable<RateLimitParamsArgs>];\n }\n | { __kind: 'IsEndpointV1'; fields: [boolean] };\n\nexport function getPeerConfigParamSerializer(): Serializer<\n PeerConfigParamArgs,\n PeerConfigParam\n> {\n return dataEnum<PeerConfigParam>(\n [\n [\n 'PeerAddress',\n struct<GetDataEnumKindContent<PeerConfigParam, 'PeerAddress'>>([\n ['fields', tuple([bytes({ size: 32 })])],\n ]),\n ],\n [\n 'FeeBps',\n struct<GetDataEnumKindContent<PeerConfigParam, 'FeeBps'>>([\n ['fields', tuple([option(u16())])],\n ]),\n ],\n [\n 'EnforcedOptions',\n struct<GetDataEnumKindContent<PeerConfigParam, 'EnforcedOptions'>>([\n ['send', bytes({ size: u32() })],\n ['sendAndCall', bytes({ size: u32() })],\n ]),\n ],\n [\n 'OutboundRateLimit',\n struct<GetDataEnumKindContent<PeerConfigParam, 'OutboundRateLimit'>>([\n ['fields', tuple([option(getRateLimitParamsSerializer())])],\n ]),\n ],\n [\n 'InboundRateLimit',\n struct<GetDataEnumKindContent<PeerConfigParam, 'InboundRateLimit'>>([\n ['fields', tuple([option(getRateLimitParamsSerializer())])],\n ]),\n ],\n [\n 'IsEndpointV1',\n struct<GetDataEnumKindContent<PeerConfigParam, 'IsEndpointV1'>>([\n ['fields', tuple([bool()])],\n ]),\n ],\n ],\n { description: 'PeerConfigParam' }\n ) as Serializer<PeerConfigParamArgs, PeerConfigParam>;\n}\n\n// Data Enum Helpers.\nexport function peerConfigParam(\n kind: 'PeerAddress',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'PeerAddress'>['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'PeerAddress'>;\nexport function peerConfigParam(\n kind: 'FeeBps',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'FeeBps'>['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'FeeBps'>;\nexport function peerConfigParam(\n kind: 'EnforcedOptions',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'EnforcedOptions'>\n): GetDataEnumKind<PeerConfigParamArgs, 'EnforcedOptions'>;\nexport function peerConfigParam(\n kind: 'OutboundRateLimit',\n data: GetDataEnumKindContent<\n PeerConfigParamArgs,\n 'OutboundRateLimit'\n >['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'OutboundRateLimit'>;\nexport function peerConfigParam(\n kind: 'InboundRateLimit',\n data: GetDataEnumKindContent<\n PeerConfigParamArgs,\n 'InboundRateLimit'\n >['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'InboundRateLimit'>;\nexport function peerConfigParam(\n kind: 'IsEndpointV1',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'IsEndpointV1'>['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'IsEndpointV1'>;\nexport function peerConfigParam<K extends PeerConfigParamArgs['__kind']>(\n kind: K,\n data?: any\n): Extract<PeerConfigParamArgs, { __kind: K }> {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\nexport function isPeerConfigParam<K extends PeerConfigParam['__kind']>(\n kind: K,\n value: PeerConfigParam\n): value is PeerConfigParam & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n array,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n OFTFeeDetail,\n OFTFeeDetailArgs,\n OFTLimits,\n OFTLimitsArgs,\n OFTReceipt,\n OFTReceiptArgs,\n getOFTFeeDetailSerializer,\n getOFTLimitsSerializer,\n getOFTReceiptSerializer,\n} from '.';\n\nexport type QuoteOFTResult = {\n oftLimits: OFTLimits;\n oftFeeDetails: Array<OFTFeeDetail>;\n oftReceipt: OFTReceipt;\n};\n\nexport type QuoteOFTResultArgs = {\n oftLimits: OFTLimitsArgs;\n oftFeeDetails: Array<OFTFeeDetailArgs>;\n oftReceipt: OFTReceiptArgs;\n};\n\nexport function getQuoteOFTResultSerializer(): Serializer<\n QuoteOFTResultArgs,\n QuoteOFTResult\n> {\n return struct<QuoteOFTResult>(\n [\n ['oftLimits', getOFTLimitsSerializer()],\n ['oftFeeDetails', array(getOFTFeeDetailSerializer())],\n ['oftReceipt', getOFTReceiptSerializer()],\n ],\n { description: 'QuoteOFTResult' }\n ) as Serializer<QuoteOFTResultArgs, QuoteOFTResult>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type RateLimiter = {\n capacity: bigint;\n tokens: bigint;\n refillPerSecond: bigint;\n lastRefillTime: bigint;\n};\n\nexport type RateLimiterArgs = {\n capacity: number | bigint;\n tokens: number | bigint;\n refillPerSecond: number | bigint;\n lastRefillTime: number | bigint;\n};\n\nexport function getRateLimiterSerializer(): Serializer<\n RateLimiterArgs,\n RateLimiter\n> {\n return struct<RateLimiter>(\n [\n ['capacity', u64()],\n ['tokens', u64()],\n ['refillPerSecond', u64()],\n ['lastRefillTime', u64()],\n ],\n { description: 'RateLimiter' }\n ) as Serializer<RateLimiterArgs, RateLimiter>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable } from '@metaplex-foundation/umi';\nimport {\n Serializer,\n option,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type RateLimitParams = {\n refillPerSecond: Option<bigint>;\n capacity: Option<bigint>;\n};\n\nexport type RateLimitParamsArgs = {\n refillPerSecond: OptionOrNullable<number | bigint>;\n capacity: OptionOrNullable<number | bigint>;\n};\n\nexport function getRateLimitParamsSerializer(): Serializer<\n RateLimitParamsArgs,\n RateLimitParams\n> {\n return struct<RateLimitParams>(\n [\n ['refillPerSecond', option(u64())],\n ['capacity', option(u64())],\n ],\n { description: 'RateLimitParams' }\n ) as Serializer<RateLimitParamsArgs, RateLimitParams>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable, PublicKey } from '@metaplex-foundation/umi';\nimport {\n GetDataEnumKind,\n GetDataEnumKindContent,\n Serializer,\n bool,\n dataEnum,\n option,\n publicKey as publicKeySerializer,\n struct,\n tuple,\n u16,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type SetOFTConfigParams =\n | { __kind: 'Admin'; fields: [PublicKey] }\n | { __kind: 'Delegate'; fields: [PublicKey] }\n | { __kind: 'DefaultFee'; fields: [number] }\n | { __kind: 'Paused'; fields: [boolean] }\n | { __kind: 'Pauser'; fields: [Option<PublicKey>] }\n | { __kind: 'Unpauser'; fields: [Option<PublicKey>] };\n\nexport type SetOFTConfigParamsArgs =\n | { __kind: 'Admin'; fields: [PublicKey] }\n | { __kind: 'Delegate'; fields: [PublicKey] }\n | { __kind: 'DefaultFee'; fields: [number] }\n | { __kind: 'Paused'; fields: [boolean] }\n | { __kind: 'Pauser'; fields: [OptionOrNullable<PublicKey>] }\n | { __kind: 'Unpauser'; fields: [OptionOrNullable<PublicKey>] };\n\nexport function getSetOFTConfigParamsSerializer(): Serializer<\n SetOFTConfigParamsArgs,\n SetOFTConfigParams\n> {\n return dataEnum<SetOFTConfigParams>(\n [\n [\n 'Admin',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Admin'>>([\n ['fields', tuple([publicKeySerializer()])],\n ]),\n ],\n [\n 'Delegate',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Delegate'>>([\n ['fields', tuple([publicKeySerializer()])],\n ]),\n ],\n [\n 'DefaultFee',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'DefaultFee'>>([\n ['fields', tuple([u16()])],\n ]),\n ],\n [\n 'Paused',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Paused'>>([\n ['fields', tuple([bool()])],\n ]),\n ],\n [\n 'Pauser',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Pauser'>>([\n ['fields', tuple([option(publicKeySerializer())])],\n ]),\n ],\n [\n 'Unpauser',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Unpauser'>>([\n ['fields', tuple([option(publicKeySerializer())])],\n ]),\n ],\n ],\n { description: 'SetOFTConfigParams' }\n ) as Serializer<SetOFTConfigParamsArgs, SetOFTConfigParams>;\n}\n\n// Data Enum Helpers.\nexport function setOFTConfigParams(\n kind: 'Admin',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Admin'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Admin'>;\nexport function setOFTConfigParams(\n kind: 'Delegate',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Delegate'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Delegate'>;\nexport function setOFTConfigParams(\n kind: 'DefaultFee',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'DefaultFee'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'DefaultFee'>;\nexport function setOFTConfigParams(\n kind: 'Paused',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Paused'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Paused'>;\nexport function setOFTConfigParams(\n kind: 'Pauser',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Pauser'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Pauser'>;\nexport function setOFTConfigParams(\n kind: 'Unpauser',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Unpauser'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Unpauser'>;\nexport function setOFTConfigParams<K extends SetOFTConfigParamsArgs['__kind']>(\n kind: K,\n data?: any\n): Extract<SetOFTConfigParamsArgs, { __kind: K }> {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\nexport function isSetOFTConfigParams<K extends SetOFTConfigParams['__kind']>(\n kind: K,\n value: SetOFTConfigParams\n): value is SetOFTConfigParams & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n publicKey as publicKeySerializer,\n struct,\n u16,\n u64,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport { OFTType, OFTTypeArgs, getOFTTypeSerializer } from '../types';\n\nexport type OFTStore = Account<OFTStoreAccountData>;\n\nexport type OFTStoreAccountData = {\n discriminator: Uint8Array;\n oftType: OFTType;\n ld2sdRate: bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: Option<PublicKey>;\n unpauser: Option<PublicKey>;\n};\n\nexport type OFTStoreAccountDataArgs = {\n oftType: OFTTypeArgs;\n ld2sdRate: number | bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: number | bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: OptionOrNullable<PublicKey>;\n unpauser: OptionOrNullable<PublicKey>;\n};\n\nexport function getOFTStoreAccountDataSerializer(): Serializer<\n OFTStoreAccountDataArgs,\n OFTStoreAccountData\n> {\n return mapSerializer<OFTStoreAccountDataArgs, any, OFTStoreAccountData>(\n struct<OFTStoreAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftType', getOFTTypeSerializer()],\n ['ld2sdRate', u64()],\n ['tokenMint', publicKeySerializer()],\n ['tokenEscrow', publicKeySerializer()],\n ['endpointProgram', publicKeySerializer()],\n ['bump', u8()],\n ['tvlLd', u64()],\n ['admin', publicKeySerializer()],\n ['defaultFeeBps', u16()],\n ['paused', bool()],\n ['pauser', option(publicKeySerializer())],\n ['unpauser', option(publicKeySerializer())],\n ],\n { description: 'OFTStoreAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([195, 215, 104, 134, 185, 195, 240, 114]),\n })\n ) as Serializer<OFTStoreAccountDataArgs, OFTStoreAccountData>;\n}\n\nexport function deserializeOFTStore(rawAccount: RpcAccount): OFTStore {\n return deserializeAccount(rawAccount, getOFTStoreAccountDataSerializer());\n}\n\nexport async function fetchOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<OFTStore> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'OFTStore');\n return deserializeOFTStore(maybeAccount);\n}\n\nexport async function safeFetchOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<OFTStore | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists ? deserializeOFTStore(maybeAccount) : null;\n}\n\nexport async function fetchAllOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<OFTStore[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'OFTStore');\n return deserializeOFTStore(maybeAccount);\n });\n}\n\nexport async function safeFetchAllOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<OFTStore[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) => deserializeOFTStore(maybeAccount as RpcAccount));\n}\n\nexport function getOFTStoreGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n oftType: OFTTypeArgs;\n ld2sdRate: number | bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: number | bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: OptionOrNullable<PublicKey>;\n unpauser: OptionOrNullable<PublicKey>;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n oftType: [8, getOFTTypeSerializer()],\n ld2sdRate: [9, u64()],\n tokenMint: [17, publicKeySerializer()],\n tokenEscrow: [49, publicKeySerializer()],\n endpointProgram: [81, publicKeySerializer()],\n bump: [113, u8()],\n tvlLd: [114, u64()],\n admin: [122, publicKeySerializer()],\n defaultFeeBps: [154, u16()],\n paused: [156, bool()],\n pauser: [157, option(publicKeySerializer())],\n unpauser: [null, option(publicKeySerializer())],\n })\n .deserializeUsing<OFTStore>((account) => deserializeOFTStore(account))\n .whereField(\n 'discriminator',\n new Uint8Array([195, 215, 104, 134, 185, 195, 240, 114])\n );\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n struct,\n u16,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n EnforcedOptions,\n EnforcedOptionsArgs,\n RateLimiter,\n RateLimiterArgs,\n getEnforcedOptionsSerializer,\n getRateLimiterSerializer,\n} from '../types';\n\nexport type PeerConfig = Account<PeerConfigAccountData>;\n\nexport type PeerConfigAccountData = {\n discriminator: Uint8Array;\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptions;\n outboundRateLimiter: Option<RateLimiter>;\n inboundRateLimiter: Option<RateLimiter>;\n feeBps: Option<number>;\n bump: number;\n isEndpointV1: boolean;\n};\n\nexport type PeerConfigAccountDataArgs = {\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptionsArgs;\n outboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n inboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n feeBps: OptionOrNullable<number>;\n bump: number;\n isEndpointV1: boolean;\n};\n\nexport function getPeerConfigAccountDataSerializer(): Serializer<\n PeerConfigAccountDataArgs,\n PeerConfigAccountData\n> {\n return mapSerializer<PeerConfigAccountDataArgs, any, PeerConfigAccountData>(\n struct<PeerConfigAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['peerAddress', bytes({ size: 32 })],\n ['enforcedOptions', getEnforcedOptionsSerializer()],\n ['outboundRateLimiter', option(getRateLimiterSerializer())],\n ['inboundRateLimiter', option(getRateLimiterSerializer())],\n ['feeBps', option(u16())],\n ['bump', u8()],\n ['isEndpointV1', bool()],\n ],\n { description: 'PeerConfigAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([181, 157, 86, 198, 33, 193, 94, 203]),\n })\n ) as Serializer<PeerConfigAccountDataArgs, PeerConfigAccountData>;\n}\n\nexport function deserializePeerConfig(rawAccount: RpcAccount): PeerConfig {\n return deserializeAccount(rawAccount, getPeerConfigAccountDataSerializer());\n}\n\nexport async function fetchPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<PeerConfig> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'PeerConfig');\n return deserializePeerConfig(maybeAccount);\n}\n\nexport async function safeFetchPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<PeerConfig | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists ? deserializePeerConfig(maybeAccount) : null;\n}\n\nexport async function fetchAllPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<PeerConfig[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'PeerConfig');\n return deserializePeerConfig(maybeAccount);\n });\n}\n\nexport async function safeFetchAllPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<PeerConfig[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) => deserializePeerConfig(maybeAccount as RpcAccount));\n}\n\nexport function getPeerConfigGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptionsArgs;\n outboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n inboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n feeBps: OptionOrNullable<number>;\n bump: number;\n isEndpointV1: boolean;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n peerAddress: [8, bytes({ size: 32 })],\n enforcedOptions: [40, getEnforcedOptionsSerializer()],\n outboundRateLimiter: [null, option(getRateLimiterSerializer())],\n inboundRateLimiter: [null, option(getRateLimiterSerializer())],\n feeBps: [null, option(u16())],\n bump: [null, u8()],\n isEndpointV1: [null, bool()],\n })\n .deserializeUsing<PeerConfig>((account) => deserializePeerConfig(account))\n .whereField(\n 'discriminator',\n new Uint8Array([181, 157, 86, 198, 33, 193, 94, 203])\n );\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './oft';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Program, ProgramError } from '@metaplex-foundation/umi';\n\ntype ProgramErrorConstructor = new (\n program: Program,\n cause?: Error\n) => ProgramError;\nconst codeToErrorMap: Map<number, ProgramErrorConstructor> = new Map();\nconst nameToErrorMap: Map<string, ProgramErrorConstructor> = new Map();\n\n/** Unauthorized */\nexport class UnauthorizedError extends ProgramError {\n override readonly name: string = 'Unauthorized';\n\n readonly code: number = 0x1770; // 6000\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1770, UnauthorizedError);\nnameToErrorMap.set('Unauthorized', UnauthorizedError);\n\n/** InvalidSender */\nexport class InvalidSenderError extends ProgramError {\n override readonly name: string = 'InvalidSender';\n\n readonly code: number = 0x1771; // 6001\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1771, InvalidSenderError);\nnameToErrorMap.set('InvalidSender', InvalidSenderError);\n\n/** InvalidDecimals */\nexport class InvalidDecimalsError extends ProgramError {\n override readonly name: string = 'InvalidDecimals';\n\n readonly code: number = 0x1772; // 6002\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1772, InvalidDecimalsError);\nnameToErrorMap.set('InvalidDecimals', InvalidDecimalsError);\n\n/** SlippageExceeded */\nexport class SlippageExceededError extends ProgramError {\n override readonly name: string = 'SlippageExceeded';\n\n readonly code: number = 0x1773; // 6003\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1773, SlippageExceededError);\nnameToErrorMap.set('SlippageExceeded', SlippageExceededError);\n\n/** InvalidTokenDest */\nexport class InvalidTokenDestError extends ProgramError {\n override readonly name: string = 'InvalidTokenDest';\n\n readonly code: number = 0x1774; // 6004\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1774, InvalidTokenDestError);\nnameToErrorMap.set('InvalidTokenDest', InvalidTokenDestError);\n\n/** RateLimitExceeded */\nexport class RateLimitExceededError extends ProgramError {\n override readonly name: string = 'RateLimitExceeded';\n\n readonly code: number = 0x1775; // 6005\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1775, RateLimitExceededError);\nnameToErrorMap.set('RateLimitExceeded', RateLimitExceededError);\n\n/** InvalidFee */\nexport class InvalidFeeError extends ProgramError {\n override readonly name: string = 'InvalidFee';\n\n readonly code: number = 0x1776; // 6006\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1776, InvalidFeeError);\nnameToErrorMap.set('InvalidFee', InvalidFeeError);\n\n/** InvalidMintAuthority */\nexport class InvalidMintAuthorityError extends ProgramError {\n override readonly name: string = 'InvalidMintAuthority';\n\n readonly code: number = 0x1777; // 6007\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1777, InvalidMintAuthorityError);\nnameToErrorMap.set('InvalidMintAuthority', InvalidMintAuthorityError);\n\n/** Paused */\nexport class PausedError extends ProgramError {\n override readonly name: string = 'Paused';\n\n readonly code: number = 0x1778; // 6008\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1778, PausedError);\nnameToErrorMap.set('Paused', PausedError);\n\n/**\n * Attempts to resolve a custom program error from the provided error code.\n * @category Errors\n */\nexport function getOftErrorFromCode(\n code: number,\n program: Program,\n cause?: Error\n): ProgramError | null {\n const constructor = codeToErrorMap.get(code);\n return constructor ? new constructor(program, cause) : null;\n}\n\n/**\n * Attempts to resolve a custom program error from the provided error name, i.e. 'Unauthorized'.\n * @category Errors\n */\nexport function getOftErrorFromName(\n name: string,\n program: Program,\n cause?: Error\n): ProgramError | null {\n const constructor = nameToErrorMap.get(name);\n return constructor ? new constructor(program, cause) : null;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './initOft';\nexport * from './lzReceive';\nexport * from './lzReceiveTypes';\nexport * from './quoteOft';\nexport * from './quoteSend';\nexport * from './send';\nexport * from './setOftConfig';\nexport * from './setPause';\nexport * from './setPeerConfig';\nexport * from './withdrawFee';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n AccountMeta,\n isSigner,\n Pda,\n publicKey,\n PublicKey,\n Signer,\n isPda,\n} from '@metaplex-foundation/umi';\n\n/**\n * Transforms the given object such that the given keys are optional.\n * @internal\n */\nexport type PickPartial<T, K extends keyof T> = Omit<T, K> &\n Partial<Pick<T, K>>;\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n if (value == null) {\n throw new Error('Expected a value but received null or undefined.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectPublicKey(\n value: PublicKey | Pda | Signer | null | undefined\n): PublicKey {\n if (!value) {\n throw new Error('Expected a PublicKey.');\n }\n return publicKey(value, false);\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectPda(\n value: PublicKey | Pda | Signer | null | undefined\n): Pda {\n if (!value || !Array.isArray(value) || !isPda(value)) {\n throw new Error('Expected a PDA.');\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<T = PublicKey | Pda | Signer | null> = {\n isWritable: boolean;\n value: T;\n};\n\n/**\n * Defines a set of instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccounts = Record<string, ResolvedAccount>;\n\n/**\n * Defines a set of instruction account to resolve with their indices.\n * @internal\n */\nexport type ResolvedAccountsWithIndices = Record<\n string,\n ResolvedAccount & { index: number }\n>;\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetasAndSigners(\n accounts: ResolvedAccount[],\n optionalAccountStrategy: 'omitted' | 'programId',\n programId: PublicKey\n): [AccountMeta[], Signer[]] {\n const keys: AccountMeta[] = [];\n const signers: Signer[] = [];\n\n accounts.forEach((account) => {\n if (!account.value) {\n if (optionalAccountStrategy === 'omitted') return;\n keys.push({ pubkey: programId, isSigner: false, isWritable: false });\n return;\n }\n\n if (isSigner(account.value)) {\n signers.push(account.value);\n }\n keys.push({\n pubkey: publicKey(account.value, false),\n isSigner: isSigner(account.value),\n isWritable: account.isWritable,\n });\n });\n\n return [keys, signers];\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n option,\n publicKey as publicKeySerializer,\n struct,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport { OFTType, OFTTypeArgs, getOFTTypeSerializer } from '../types';\n\n// Accounts.\nexport type InitOftInstructionAccounts = {\n payer?: Signer;\n oftStore: PublicKey | Pda;\n lzReceiveTypesAccounts: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenEscrow: Signer;\n tokenProgram?: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type InitOftInstructionData = {\n discriminator: Uint8Array;\n oftType: OFTType;\n admin: PublicKey;\n sharedDecimals: number;\n endpointProgram: Option<PublicKey>;\n};\n\nexport type InitOftInstructionDataArgs = {\n oftType: OFTTypeArgs;\n admin: PublicKey;\n sharedDecimals: number;\n endpointProgram: OptionOrNullable<PublicKey>;\n};\n\nexport function getInitOftInstructionDataSerializer(): Serializer<\n InitOftInstructionDataArgs,\n InitOftInstructionData\n> {\n return mapSerializer<InitOftInstructionDataArgs, any, InitOftInstructionData>(\n struct<InitOftInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftType', getOFTTypeSerializer()],\n ['admin', publicKeySerializer()],\n ['sharedDecimals', u8()],\n ['endpointProgram', option(publicKeySerializer())],\n ],\n { description: 'InitOftInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([182, 169, 147, 16, 201, 45, 76, 23]),\n })\n ) as Serializer<InitOftInstructionDataArgs, InitOftInstructionData>;\n}\n\n// Args.\nexport type InitOftInstructionArgs = InitOftInstructionDataArgs;\n\n// Instruction.\nexport function initOft(\n context: Pick<Context, 'payer' | 'programs'>,\n input: InitOftInstructionAccounts & InitOftInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n payer: {\n index: 0,\n isWritable: true as boolean,\n value: input.payer ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n lzReceiveTypesAccounts: {\n index: 2,\n isWritable: true as boolean,\n value: input.lzReceiveTypesAccounts ?? null,\n },\n tokenMint: {\n index: 3,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n tokenEscrow: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenProgram: {\n index: 5,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n systemProgram: {\n index: 6,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: InitOftInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.payer.value) {\n resolvedAccounts.payer.value = context.payer;\n }\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getInitOftInstructionDataSerializer().serialize(\n resolvedArgs as InitOftInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n LzReceiveParams,\n LzReceiveParamsArgs,\n getLzReceiveParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type LzReceiveInstructionAccounts = {\n payer?: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n toAddress: PublicKey | Pda;\n tokenDest: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n mintAuthority?: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n associatedTokenProgram: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n eventAuthority: PublicKey | Pda;\n program: PublicKey | Pda;\n};\n\n// Data.\nexport type LzReceiveInstructionData = {\n discriminator: Uint8Array;\n params: LzReceiveParams;\n};\n\nexport type LzReceiveInstructionDataArgs = { params: LzReceiveParamsArgs };\n\nexport function getLzReceiveInstructionDataSerializer(): Serializer<\n LzReceiveInstructionDataArgs,\n LzReceiveInstructionData\n> {\n return mapSerializer<\n LzReceiveInstructionDataArgs,\n any,\n LzReceiveInstructionData\n >(\n struct<LzReceiveInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getLzReceiveParamsSerializer()],\n ],\n { description: 'LzReceiveInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([8, 179, 120, 109, 33, 118, 189, 80]),\n })\n ) as Serializer<LzReceiveInstructionDataArgs, LzReceiveInstructionData>;\n}\n\n// Args.\nexport type LzReceiveInstructionArgs = LzReceiveInstructionDataArgs;\n\n// Instruction.\nexport function lzReceive(\n context: Pick<Context, 'payer' | 'programs'>,\n input: LzReceiveInstructionAccounts & LzReceiveInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n payer: {\n index: 0,\n isWritable: true as boolean,\n value: input.payer ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n tokenEscrow: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n toAddress: {\n index: 4,\n isWritable: false as boolean,\n value: input.toAddress ?? null,\n },\n tokenDest: {\n index: 5,\n isWritable: true as boolean,\n value: input.tokenDest ?? null,\n },\n tokenMint: {\n index: 6,\n isWritable: true as boolean,\n value: input.tokenMint ?? null,\n },\n mintAuthority: {\n index: 7,\n isWritable: false as boolean,\n value: input.mintAuthority ?? null,\n },\n tokenProgram: {\n index: 8,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n associatedTokenProgram: {\n index: 9,\n isWritable: false as boolean,\n value: input.associatedTokenProgram ?? null,\n },\n systemProgram: {\n index: 10,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n eventAuthority: {\n index: 11,\n isWritable: false as boolean,\n value: input.eventAuthority ?? null,\n },\n program: {\n index: 12,\n isWritable: false as boolean,\n value: input.program ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: LzReceiveInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.payer.value) {\n resolvedAccounts.payer.value = context.payer;\n }\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getLzReceiveInstructionDataSerializer().serialize(\n resolvedArgs as LzReceiveInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n LzReceiveParams,\n LzReceiveParamsArgs,\n getLzReceiveParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type LzReceiveTypesInstructionAccounts = {\n oftStore: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type LzReceiveTypesInstructionData = {\n discriminator: Uint8Array;\n params: LzReceiveParams;\n};\n\nexport type LzReceiveTypesInstructionDataArgs = { params: LzReceiveParamsArgs };\n\nexport function getLzReceiveTypesInstructionDataSerializer(): Serializer<\n LzReceiveTypesInstructionDataArgs,\n LzReceiveTypesInstructionData\n> {\n return mapSerializer<\n LzReceiveTypesInstructionDataArgs,\n any,\n LzReceiveTypesInstructionData\n >(\n struct<LzReceiveTypesInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getLzReceiveParamsSerializer()],\n ],\n { description: 'LzReceiveTypesInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([221, 17, 246, 159, 248, 128, 31, 96]),\n })\n ) as Serializer<\n LzReceiveTypesInstructionDataArgs,\n LzReceiveTypesInstructionData\n >;\n}\n\n// Args.\nexport type LzReceiveTypesInstructionArgs = LzReceiveTypesInstructionDataArgs;\n\n// Instruction.\nexport function lzReceiveTypes(\n context: Pick<Context, 'programs'>,\n input: LzReceiveTypesInstructionAccounts & LzReceiveTypesInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n tokenMint: {\n index: 1,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: LzReceiveTypesInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getLzReceiveTypesInstructionDataSerializer().serialize(\n resolvedArgs as LzReceiveTypesInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type QuoteOftInstructionAccounts = {\n oftStore: PublicKey | Pda;\n peer: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type QuoteOftInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n composeMsg: Option<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport type QuoteOftInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n composeMsg: OptionOrNullable<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport function getQuoteOftInstructionDataSerializer(): Serializer<\n QuoteOftInstructionDataArgs,\n QuoteOftInstructionData\n> {\n return mapSerializer<\n QuoteOftInstructionDataArgs,\n any,\n QuoteOftInstructionData\n >(\n struct<QuoteOftInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['composeMsg', option(bytes({ size: u32() }))],\n ['payInLzToken', bool()],\n ],\n { description: 'QuoteOftInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([179, 255, 92, 202, 251, 82, 82, 118]),\n })\n ) as Serializer<QuoteOftInstructionDataArgs, QuoteOftInstructionData>;\n}\n\n// Args.\nexport type QuoteOftInstructionArgs = QuoteOftInstructionDataArgs;\n\n// Instruction.\nexport function quoteOft(\n context: Pick<Context, 'programs'>,\n input: QuoteOftInstructionAccounts & QuoteOftInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n peer: { index: 1, isWritable: false as boolean, value: input.peer ?? null },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: QuoteOftInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getQuoteOftInstructionDataSerializer().serialize(\n resolvedArgs as QuoteOftInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n ComposeParams,\n ComposeParamsArgs,\n getComposeParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type QuoteSendInstructionAccounts = {\n oftStore: PublicKey | Pda;\n peer: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type QuoteSendInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n payInLzToken: boolean;\n composeParams: Option<ComposeParams>;\n};\n\nexport type QuoteSendInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n payInLzToken: boolean;\n composeParams: OptionOrNullable<ComposeParamsArgs>;\n};\n\nexport function getQuoteSendInstructionDataSerializer(): Serializer<\n QuoteSendInstructionDataArgs,\n QuoteSendInstructionData\n> {\n return mapSerializer<\n QuoteSendInstructionDataArgs,\n any,\n QuoteSendInstructionData\n >(\n struct<QuoteSendInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['payInLzToken', bool()],\n ['composeParams', option(getComposeParamsSerializer())],\n ],\n { description: 'QuoteSendInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([207, 0, 49, 214, 160, 211, 76, 211]),\n })\n ) as Serializer<QuoteSendInstructionDataArgs, QuoteSendInstructionData>;\n}\n\n// Args.\nexport type QuoteSendInstructionArgs = QuoteSendInstructionDataArgs;\n\n// Instruction.\nexport function quoteSend(\n context: Pick<Context, 'programs'>,\n input: QuoteSendInstructionAccounts & QuoteSendInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n peer: { index: 1, isWritable: false as boolean, value: input.peer ?? null },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: QuoteSendInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getQuoteSendInstructionDataSerializer().serialize(\n resolvedArgs as QuoteSendInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n ComposeParams,\n ComposeParamsArgs,\n getComposeParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type SendInstructionAccounts = {\n signer: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n tokenSource: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n eventAuthority: PublicKey | Pda;\n program: PublicKey | Pda;\n};\n\n// Data.\nexport type SendInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n nativeFee: bigint;\n lzTokenFee: bigint;\n composeParams: Option<ComposeParams>;\n};\n\nexport type SendInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n nativeFee: number | bigint;\n lzTokenFee: number | bigint;\n composeParams: OptionOrNullable<ComposeParamsArgs>;\n};\n\nexport function getSendInstructionDataSerializer(): Serializer<\n SendInstructionDataArgs,\n SendInstructionData\n> {\n return mapSerializer<SendInstructionDataArgs, any, SendInstructionData>(\n struct<SendInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['nativeFee', u64()],\n ['lzTokenFee', u64()],\n ['composeParams', option(getComposeParamsSerializer())],\n ],\n { description: 'SendInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([102, 251, 20, 187, 65, 75, 12, 69]),\n })\n ) as Serializer<SendInstructionDataArgs, SendInstructionData>;\n}\n\n// Args.\nexport type SendInstructionArgs = SendInstructionDataArgs;\n\n// Instruction.\nexport function send(\n context: Pick<Context, 'programs'>,\n input: SendInstructionAccounts & SendInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n signer: {\n index: 0,\n isWritable: false as boolean,\n value: input.signer ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n tokenSource: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenSource ?? null,\n },\n tokenEscrow: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenMint: {\n index: 5,\n isWritable: true as boolean,\n value: input.tokenMint ?? null,\n },\n tokenProgram: {\n index: 6,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n eventAuthority: {\n index: 7,\n isWritable: false as boolean,\n value: input.eventAuthority ?? null,\n },\n program: {\n index: 8,\n isWritable: false as boolean,\n value: input.program ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SendInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSendInstructionDataSerializer().serialize(\n resolvedArgs as SendInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n SetOFTConfigParams,\n SetOFTConfigParamsArgs,\n getSetOFTConfigParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type SetOftConfigInstructionAccounts = {\n admin: Signer;\n oftStore: PublicKey | Pda;\n};\n\n// Data.\nexport type SetOftConfigInstructionData = {\n discriminator: Uint8Array;\n params: SetOFTConfigParams;\n};\n\nexport type SetOftConfigInstructionDataArgs = {\n params: SetOFTConfigParamsArgs;\n};\n\nexport function getSetOftConfigInstructionDataSerializer(): Serializer<\n SetOftConfigInstructionDataArgs,\n SetOftConfigInstructionData\n> {\n return mapSerializer<\n SetOftConfigInstructionDataArgs,\n any,\n SetOftConfigInstructionData\n >(\n struct<SetOftConfigInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getSetOFTConfigParamsSerializer()],\n ],\n { description: 'SetOftConfigInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([55, 126, 87, 217, 159, 66, 24, 194]),\n })\n ) as Serializer<SetOftConfigInstructionDataArgs, SetOftConfigInstructionData>;\n}\n\n// Args.\nexport type SetOftConfigInstructionArgs = SetOftConfigInstructionDataArgs;\n\n// Instruction.\nexport function setOftConfig(\n context: Pick<Context, 'programs'>,\n input: SetOftConfigInstructionAccounts & SetOftConfigInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: false as boolean,\n value: input.admin ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetOftConfigInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetOftConfigInstructionDataSerializer().serialize(\n resolvedArgs as SetOftConfigInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type SetPauseInstructionAccounts = {\n /** pauser or unpauser */\n signer: Signer;\n oftStore: PublicKey | Pda;\n};\n\n// Data.\nexport type SetPauseInstructionData = {\n discriminator: Uint8Array;\n paused: boolean;\n};\n\nexport type SetPauseInstructionDataArgs = { paused: boolean };\n\nexport function getSetPauseInstructionDataSerializer(): Serializer<\n SetPauseInstructionDataArgs,\n SetPauseInstructionData\n> {\n return mapSerializer<\n SetPauseInstructionDataArgs,\n any,\n SetPauseInstructionData\n >(\n struct<SetPauseInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['paused', bool()],\n ],\n { description: 'SetPauseInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([63, 32, 154, 2, 56, 103, 79, 45]),\n })\n ) as Serializer<SetPauseInstructionDataArgs, SetPauseInstructionData>;\n}\n\n// Args.\nexport type SetPauseInstructionArgs = SetPauseInstructionDataArgs;\n\n// Instruction.\nexport function setPause(\n context: Pick<Context, 'programs'>,\n input: SetPauseInstructionAccounts & SetPauseInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n signer: {\n index: 0,\n isWritable: false as boolean,\n value: input.signer ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetPauseInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetPauseInstructionDataSerializer().serialize(\n resolvedArgs as SetPauseInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n u32,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n PeerConfigParam,\n PeerConfigParamArgs,\n getPeerConfigParamSerializer,\n} from '../types';\n\n// Accounts.\nexport type SetPeerConfigInstructionAccounts = {\n admin: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type SetPeerConfigInstructionData = {\n discriminator: Uint8Array;\n remoteEid: number;\n config: PeerConfigParam;\n};\n\nexport type SetPeerConfigInstructionDataArgs = {\n remoteEid: number;\n config: PeerConfigParamArgs;\n};\n\nexport function getSetPeerConfigInstructionDataSerializer(): Serializer<\n SetPeerConfigInstructionDataArgs,\n SetPeerConfigInstructionData\n> {\n return mapSerializer<\n SetPeerConfigInstructionDataArgs,\n any,\n SetPeerConfigInstructionData\n >(\n struct<SetPeerConfigInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['remoteEid', u32()],\n ['config', getPeerConfigParamSerializer()],\n ],\n { description: 'SetPeerConfigInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([79, 187, 168, 57, 139, 140, 93, 47]),\n })\n ) as Serializer<\n SetPeerConfigInstructionDataArgs,\n SetPeerConfigInstructionData\n >;\n}\n\n// Args.\nexport type SetPeerConfigInstructionArgs = SetPeerConfigInstructionDataArgs;\n\n// Instruction.\nexport function setPeerConfig(\n context: Pick<Context, 'programs'>,\n input: SetPeerConfigInstructionAccounts & SetPeerConfigInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: true as boolean,\n value: input.admin ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n systemProgram: {\n index: 3,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetPeerConfigInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetPeerConfigInstructionDataSerializer().serialize(\n resolvedArgs as SetPeerConfigInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type WithdrawFeeInstructionAccounts = {\n admin: Signer;\n oftStore: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n tokenDest: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type WithdrawFeeInstructionData = {\n discriminator: Uint8Array;\n feeLd: bigint;\n};\n\nexport type WithdrawFeeInstructionDataArgs = { feeLd: number | bigint };\n\nexport function getWithdrawFeeInstructionDataSerializer(): Serializer<\n WithdrawFeeInstructionDataArgs,\n WithdrawFeeInstructionData\n> {\n return mapSerializer<\n WithdrawFeeInstructionDataArgs,\n any,\n WithdrawFeeInstructionData\n >(\n struct<WithdrawFeeInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['feeLd', u64()],\n ],\n { description: 'WithdrawFeeInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([14, 122, 231, 218, 31, 238, 223, 150]),\n })\n ) as Serializer<WithdrawFeeInstructionDataArgs, WithdrawFeeInstructionData>;\n}\n\n// Args.\nexport type WithdrawFeeInstructionArgs = WithdrawFeeInstructionDataArgs;\n\n// Instruction.\nexport function withdrawFee(\n context: Pick<Context, 'programs'>,\n input: WithdrawFeeInstructionAccounts & WithdrawFeeInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: false as boolean,\n value: input.admin ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n tokenEscrow: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenDest: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenDest ?? null,\n },\n tokenProgram: {\n index: 5,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: WithdrawFeeInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getWithdrawFeeInstructionDataSerializer().serialize(\n resolvedArgs as WithdrawFeeInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './oft';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n ClusterFilter,\n Context,\n Program,\n PublicKey,\n} from '@metaplex-foundation/umi';\nimport { getOftErrorFromCode, getOftErrorFromName } from '../errors';\n\nexport const OFT_PROGRAM_ID = '' as PublicKey<''>;\n\nexport function createOftProgram(): Program {\n return {\n name: 'oft',\n publicKey: OFT_PROGRAM_ID,\n getErrorFromCode(code: number, cause?: Error) {\n return getOftErrorFromCode(code, this, cause);\n },\n getErrorFromName(name: string, cause?: Error) {\n return getOftErrorFromName(name, this, cause);\n },\n isOnCluster() {\n return true;\n },\n };\n}\n\nexport function getOftProgram<T extends Program = Program>(\n context: Pick<Context, 'programs'>,\n clusterFilter?: ClusterFilter\n): T {\n return context.programs.get<T>('oft', clusterFilter);\n}\n\nexport function getOftProgramId(\n context: Pick<Context, 'programs'>,\n clusterFilter?: ClusterFilter\n): PublicKey {\n return context.programs.getPublicKey('oft', OFT_PROGRAM_ID, clusterFilter);\n}\n"]}
1
+ {"version":3,"sources":["../src/oft302.ts","../../../../../../node_modules/.store/@solana-spl-token-virtual-3f511f2cc7/package/src/constants.ts","../src/consts.ts","../src/generated/oft302/accounts/index.ts","../src/generated/oft302/accounts/lzReceiveTypesAccounts.ts","../src/generated/oft302/types/index.ts","../src/generated/oft302/types/enforcedOptions.ts","../src/generated/oft302/types/lzAccount.ts","../src/generated/oft302/types/lzReceiveParams.ts","../src/generated/oft302/types/messagingFee.ts","../src/generated/oft302/types/oFTFeeDetail.ts","../src/generated/oft302/types/oFTLimits.ts","../src/generated/oft302/types/oFTReceipt.ts","../src/generated/oft302/types/oFTType.ts","../src/generated/oft302/types/peerConfigParam.ts","../src/generated/oft302/types/quoteOFTResult.ts","../src/generated/oft302/types/rateLimiter.ts","../src/generated/oft302/types/rateLimitParams.ts","../src/generated/oft302/types/setOFTConfigParams.ts","../src/generated/oft302/types/version.ts","../src/generated/oft302/accounts/oFTStore.ts","../src/generated/oft302/accounts/peerConfig.ts","../src/generated/oft302/errors/index.ts","../src/generated/oft302/errors/oft.ts","../src/generated/oft302/instructions/index.ts","../src/generated/oft302/shared/index.ts","../src/generated/oft302/instructions/initOft.ts","../src/generated/oft302/instructions/lzReceive.ts","../src/generated/oft302/instructions/lzReceiveTypes.ts","../src/generated/oft302/instructions/oftVersion.ts","../src/generated/oft302/instructions/quoteOft.ts","../src/generated/oft302/instructions/quoteSend.ts","../src/generated/oft302/instructions/send.ts","../src/generated/oft302/instructions/setOftConfig.ts","../src/generated/oft302/instructions/setPause.ts","../src/generated/oft302/instructions/setPeerConfig.ts","../src/generated/oft302/instructions/withdrawFee.ts","../src/pda.ts","../src/generated/oft302/programs/index.ts","../src/generated/oft302/programs/oft.ts","../src/oft202.ts","../src/generated/oft202/accounts/index.ts","../src/generated/oft202/accounts/lzReceiveTypesAccounts.ts","../src/generated/oft202/types/index.ts","../src/generated/oft202/types/composeParams.ts","../src/generated/oft202/types/enforcedOptions.ts","../src/generated/oft202/types/lzAccount.ts","../src/generated/oft202/types/lzReceiveParams.ts","../src/generated/oft202/types/messagingFee.ts","../src/generated/oft202/types/oFTFeeDetail.ts","../src/generated/oft202/types/oFTLimits.ts","../src/generated/oft202/types/oFTReceipt.ts","../src/generated/oft202/types/oFTType.ts","../src/generated/oft202/types/peerConfigParam.ts","../src/generated/oft202/types/quoteOFTResult.ts","../src/generated/oft202/types/rateLimiter.ts","../src/generated/oft202/types/rateLimitParams.ts","../src/generated/oft202/types/setOFTConfigParams.ts","../src/generated/oft202/accounts/oFTStore.ts","../src/generated/oft202/accounts/peerConfig.ts","../src/generated/oft202/errors/index.ts","../src/generated/oft202/errors/oft.ts","../src/generated/oft202/instructions/index.ts","../src/generated/oft202/shared/index.ts","../src/generated/oft202/instructions/initOft.ts","../src/generated/oft202/instructions/lzReceive.ts","../src/generated/oft202/instructions/lzReceiveTypes.ts","../src/generated/oft202/instructions/quoteOft.ts","../src/generated/oft202/instructions/quoteSend.ts","../src/generated/oft202/instructions/send.ts","../src/generated/oft202/instructions/setOftConfig.ts","../src/generated/oft202/instructions/setPause.ts","../src/generated/oft202/instructions/setPeerConfig.ts","../src/generated/oft202/instructions/withdrawFee.ts","../src/generated/oft202/programs/index.ts","../src/generated/oft202/programs/oft.ts"],"names":["initOft","quoteOft","send","setPeerConfig","withdrawFee","PublicKey","mapSerializer","struct","bytes","publicKeySerializer","deserializeAccount","publicKey","toPublicKey","assertAccountExists","gpaBuilder","u32","bool","u64","string","OFTType","scalarEnum","dataEnum","tuple","option","u16","array","u8","ProgramError","isPda","isSigner","transactionBuilder","createWeb3JsEddsa","publicKeyBytes","Endian","LZ_RECEIVE_TYPES_SEED","EndpointProgram","UlnProgram","createNullRpc","createDefaultProgramRepository","lzReceiveTypes","fromWeb3JsPublicKey","some","none","SimpleMessageLibProgram","EventPDA","toWeb3JsInstruction","ComputeBudgetProgram","simulateWeb3JsTransaction","toWeb3JsPublicKey","EndpointPDA","UlnPDA","defaultPublicKey","hexlify","accounts_exports","createOFTProgramRepo","errors_exports","instructions_exports","programs_exports","quote","setOFTConfig","shared_exports","types_exports","deserializeLzReceiveTypesAccounts","deserializeOFTStore","deserializePeerConfig","fetchAllLzReceiveTypesAccounts","fetchAllOFTStore","fetchAllPeerConfig","fetchLzReceiveTypesAccounts","fetchOFTStore","fetchPeerConfig","getLzReceiveTypesAccountsAccountDataSerializer","getLzReceiveTypesAccountsGpaBuilder","getLzReceiveTypesAccountsSize","getOFTStoreAccountDataSerializer","getOFTStoreGpaBuilder","getPeerConfigAccountDataSerializer","getPeerConfigGpaBuilder","safeFetchAllLzReceiveTypesAccounts","safeFetchAllOFTStore","safeFetchAllPeerConfig","safeFetchLzReceiveTypesAccounts","safeFetchOFTStore","safeFetchPeerConfig","getEnforcedOptionsSerializer","getLzAccountSerializer","getLzReceiveParamsSerializer","getMessagingFeeSerializer","getOFTFeeDetailSerializer","getOFTLimitsSerializer","getOFTReceiptSerializer","getOFTTypeSerializer","getPeerConfigParamSerializer","getQuoteOFTResultSerializer","getRateLimitParamsSerializer","getRateLimiterSerializer","getSetOFTConfigParamsSerializer","isPeerConfigParam","isSetOFTConfigParams","peerConfigParam","setOFTConfigParams","InvalidDecimalsError","InvalidFeeError","InvalidMintAuthorityError","InvalidSenderError","InvalidTokenDestError","PausedError","RateLimitExceededError","SlippageExceededError","UnauthorizedError","getOftErrorFromCode","getOftErrorFromName","codeToErrorMap","nameToErrorMap","getInitOftInstructionDataSerializer","getLzReceiveInstructionDataSerializer","getLzReceiveTypesInstructionDataSerializer","getQuoteOftInstructionDataSerializer","getQuoteSendInstructionDataSerializer","getSendInstructionDataSerializer","getSetOftConfigInstructionDataSerializer","getSetPauseInstructionDataSerializer","getSetPeerConfigInstructionDataSerializer","getWithdrawFeeInstructionDataSerializer","lzReceive","quoteSend","setOftConfig","setPause","expectPda","expectPublicKey","expectSome","getAccountMetasAndSigners","OFT_PROGRAM_ID","createOftProgram","getOftProgram","getOftProgramId","ENDPOINT_PROGRAM_ID","getSendLibraryProgram"],"mappings":"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","file":"index.cjs","sourcesContent":["/* eslint-disable @typescript-eslint/require-await */\n\n// 1. init native OFT from existing mint\n// 2. init adapter OFT from existing mint, optionally an existing escrow\n// 3. Wire a peer\n// 4. Set the DVN etc. options\nimport { hexlify } from '@ethersproject/bytes'\nimport {\n AccountMeta,\n Cluster,\n Program,\n ProgramError,\n ProgramRepositoryInterface,\n PublicKey,\n RpcInterface,\n Signer,\n WrappedInstruction,\n createNullRpc,\n defaultPublicKey,\n none,\n some,\n} from '@metaplex-foundation/umi'\nimport { createDefaultProgramRepository } from '@metaplex-foundation/umi-program-repository'\nimport { fromWeb3JsPublicKey, toWeb3JsInstruction, toWeb3JsPublicKey } from '@metaplex-foundation/umi-web3js-adapters'\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token'\nimport { ComputeBudgetProgram } from '@solana/web3.js'\n\nimport {\n EndpointPDA,\n EndpointProgram,\n EventPDA,\n MessageLibInterface,\n SetConfigType,\n SimpleMessageLibProgram,\n SolanaPacketPath,\n UlnPDA,\n UlnProgram,\n simulateWeb3JsTransaction,\n} from '@layerzerolabs/lz-solana-sdk-v2/umi'\n\nimport { OFT_DECIMALS } from './consts'\nimport * as OFTAccounts from './generated/oft302/accounts'\nimport * as errors from './generated/oft302/errors'\nimport * as instructions from './generated/oft302/instructions'\nimport * as types from './generated/oft302/types'\nimport { OftPDA } from './pda'\nimport {\n SetOFTConfigParams,\n SetPeerAddressParam,\n SetPeerEnforcedOptionsParam,\n SetPeerFeeBpsParam,\n SetPeerRateLimitParam,\n} from './types'\n\nexport * as accounts from './generated/oft302/accounts'\nexport * as instructions from './generated/oft302/instructions'\nexport * as programs from './generated/oft302/programs'\nexport * as shared from './generated/oft302/shared'\nexport * as types from './generated/oft302/types'\nexport * as errors from './generated/oft302/errors'\n\nconst ENDPOINT_PROGRAM_ID: PublicKey = EndpointProgram.ENDPOINT_PROGRAM_ID\nconst ULN_PROGRAM_ID: PublicKey = UlnProgram.ULN_PROGRAM_ID\n\nexport function createOFTProgramRepo(oftProgram: PublicKey, rpc?: RpcInterface): ProgramRepositoryInterface {\n if (rpc === undefined) {\n rpc = createNullRpc()\n rpc.getCluster = (): Cluster => 'custom'\n }\n return createDefaultProgramRepository({ rpc: rpc }, [\n {\n name: 'oft',\n publicKey: oftProgram,\n getErrorFromCode(code: number, cause?: Error): ProgramError | null {\n return errors.getOftErrorFromCode(code, this, cause)\n },\n getErrorFromName(name: string, cause?: Error): ProgramError | null {\n return errors.getOftErrorFromName(name, this, cause)\n },\n isOnCluster(): boolean {\n return true\n },\n } satisfies Program,\n ])\n}\n\nexport function initOft(\n accounts: { payer: Signer; admin: PublicKey; mint: PublicKey; escrow: Signer },\n oftType: types.OFTType,\n sharedDecimals = OFT_DECIMALS,\n programs: { oft: PublicKey; endpoint?: PublicKey; token?: PublicKey }\n): WrappedInstruction {\n const programsRepo = typeof programs.oft === 'string' ? createOFTProgramRepo(programs.oft) : programs.oft\n const deriver = new OftPDA(programsRepo.getPublicKey('oft'))\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const { payer, admin, mint, escrow } = accounts\n const [oftStore] = deriver.oftStore(escrow.publicKey)\n const [lzReceiveTypes] = deriver.lzReceiveTypesAccounts(oftStore)\n\n const txBuilder = instructions.initOft(\n {\n payer: payer,\n programs: programsRepo,\n },\n {\n // accounts\n oftStore: oftStore,\n lzReceiveTypesAccounts: lzReceiveTypes,\n tokenMint: mint,\n tokenEscrow: escrow,\n tokenProgram: programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID),\n // params\n oftType: oftType,\n admin: admin,\n sharedDecimals: sharedDecimals,\n endpointProgram: endpoint.programId,\n }\n )\n const retval = txBuilder.addRemainingAccounts(\n endpoint.getRegisterOappIxAccountMetaForCPI(payer.publicKey, oftStore).map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n retval.signers = [payer, escrow]\n return retval\n}\n\nexport function setOFTConfig(\n accounts: {\n oftStore: PublicKey\n admin: Signer\n },\n params: SetOFTConfigParams,\n programs: {\n oft: PublicKey\n endpoint?: PublicKey\n }\n): WrappedInstruction {\n let actualParams: types.SetOFTConfigParamsArgs\n const { oftStore, admin } = accounts\n const remainingAccounts: AccountMeta[] = []\n if (params.__kind === 'Admin') {\n if (params.admin === undefined) {\n throw new Error('Admin is required')\n }\n actualParams = {\n __kind: 'Admin',\n fields: [params.admin],\n }\n } else if (params.__kind === 'Delegate') {\n if (params.delegate === undefined) {\n throw new Error('Delegate is required')\n }\n actualParams = {\n __kind: 'Delegate',\n fields: [params.delegate],\n }\n const endpointProgram = programs.endpoint ?? ENDPOINT_PROGRAM_ID\n const endpointSDK = new EndpointProgram.Endpoint(endpointProgram)\n const keys = endpointSDK.getSetDelegateIxAccountMetaForCPI(oftStore)\n for (const acc of keys) {\n acc.isSigner = false\n }\n remainingAccounts.push(...keys)\n } else if (params.__kind === 'DefaultFee') {\n if (params.defaultFee === undefined) {\n throw new Error('DefaultFee is required')\n }\n actualParams = {\n __kind: 'DefaultFee',\n fields: [params.defaultFee],\n }\n } else if (params.__kind === 'Paused') {\n if (params.paused === undefined) {\n throw new Error('Paused is required')\n }\n actualParams = {\n __kind: 'Paused',\n fields: [params.paused],\n }\n } else if (params.__kind === 'Pauser') {\n actualParams = {\n __kind: 'Pauser',\n fields: [params.pauser ? some(params.pauser) : none()],\n }\n } else {\n actualParams = {\n __kind: 'Unpauser',\n fields: [params.unpauser ? some(params.unpauser) : none()],\n }\n }\n\n const txBuilder = instructions.setOftConfig(\n { programs: createOFTProgramRepo(programs.oft) },\n {\n admin: admin,\n oftStore: oftStore,\n params: actualParams,\n }\n )\n return txBuilder.addRemainingAccounts(\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n}\n\n/**\n * Sets the peer configuration.\n *\n * @param {Object} accounts - The accounts object.\n * @param {Signer} accounts.admin - The admin signer.\n * @param {PublicKey} accounts.oftStore - The OFT store public key.\n * @param {Object} param - The parameter object.\n * @param {number} param.remote - The remote endpoint ID.\n * @param {string} [param.__kind] - The kind of parameter.\n * @param {Uint8Array} [param.peer] - The peer address (for PeerAddress kind).\n * @param {number} [param.feeBps] - The fee basis points (for FeeBps kind).\n * @param {Uint8Array} [param.send] - The send option (for EnforcedOptions kind).\n * @param {Uint8Array} [param.sendAndCall] - The send and call option (for EnforcedOptions kind).\n * @param {Object} [param.rateLimit] - The rate limit option (for OutboundRateLimit or InboundRateLimit kind).\n * @param {bigint} [param.rateLimit.refillPerSecond] - The rate limit refill per second.\n * @param {bigint} [param.rateLimit.capacity] - The rate limit capacity.\n * @param {PublicKey} oftProgramId - The OFT program ID.\n * @throws {Error} If the remote ID is invalid or if the peer address is not 32 bytes.\n * @returns {WrappedInstruction} - The wrapped instruction.\n */\nexport function setPeerConfig(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n param: (SetPeerAddressParam | SetPeerFeeBpsParam | SetPeerEnforcedOptionsParam | SetPeerRateLimitParam) & {\n remote: number\n },\n oftProgramId: PublicKey | ProgramRepositoryInterface\n): WrappedInstruction {\n const programsRepo = typeof oftProgramId === 'string' ? createOFTProgramRepo(oftProgramId) : oftProgramId\n const { remote: remoteId } = param\n if (remoteId % 30000 == 0) {\n throw new Error('Invalid remote ID')\n }\n const { admin, oftStore } = accounts\n const [peerPda] = new OftPDA(programsRepo.getPublicKey('oft')).peer(oftStore, remoteId)\n let config: types.PeerConfigParamArgs\n if (param.__kind === 'PeerAddress') {\n if (param.peer.length !== 32) {\n throw new Error('Peer must be 32 bytes (left-padded with zeroes)')\n }\n config = types.peerConfigParam('PeerAddress', [param.peer])\n } else if (param.__kind === 'FeeBps') {\n config = { __kind: 'FeeBps', fields: [some(param.feeBps)] }\n } else if (param.__kind === 'EnforcedOptions') {\n config = {\n __kind: 'EnforcedOptions',\n send: param.send,\n sendAndCall: param.sendAndCall,\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n } else if (param.__kind === 'OutboundRateLimit' || param.__kind === 'InboundRateLimit') {\n config = {\n __kind: param.__kind,\n fields: [\n param.rateLimit\n ? some({\n refillPerSecond: some(param.rateLimit.refillPerSecond),\n capacity: some(param.rateLimit.capacity),\n })\n : null,\n ],\n }\n } else {\n throw new Error('Invalid peer config')\n }\n\n return instructions.setPeerConfig(\n { programs: programsRepo },\n {\n admin: admin,\n peer: peerPda,\n oftStore: oftStore,\n // params\n remoteEid: remoteId,\n config: config,\n }\n ).items[0]\n}\n\nexport function initSendLibrary(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n remoteEid: number,\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): WrappedInstruction {\n const { admin, oftStore } = accounts\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return endpoint.initOAppSendLibrary(admin, { sender: oftStore, remote: remoteEid })\n}\n\nexport function initReceiveLibrary(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n remoteEid: number,\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): WrappedInstruction {\n const { admin, oftStore } = accounts\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return endpoint.initOAppReceiveLibrary(admin, { receiver: oftStore, remote: remoteEid })\n}\n\nexport function setSendLibrary(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n params: {\n sendLibraryProgram: PublicKey\n remoteEid: number\n },\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): WrappedInstruction {\n const { sendLibraryProgram, remoteEid } = params\n const { admin, oftStore } = accounts\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return endpoint.setOAppSendLibrary(admin, {\n sender: oftStore,\n remote: remoteEid,\n msgLibProgram: sendLibraryProgram,\n })\n}\n\nexport function setReceiveLibrary(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n params: {\n receiveLibraryProgram: PublicKey\n remoteEid: number\n gracePeriod?: bigint\n },\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): WrappedInstruction {\n const { receiveLibraryProgram, remoteEid, gracePeriod } = params\n const { admin, oftStore } = accounts\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return endpoint.setOAppReceiveLibrary(admin, {\n receiver: oftStore,\n remote: remoteEid,\n msgLibProgram: receiveLibraryProgram,\n gracePeriod: gracePeriod,\n })\n}\n\nexport function initConfig(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n payer: Signer\n },\n remoteEid: number,\n programs?: {\n msgLib?: PublicKey\n endpoint?: PublicKey\n }\n): WrappedInstruction {\n const { admin, oftStore, payer } = accounts\n\n let msgLibProgram: PublicKey, endpointProgram: PublicKey\n if (programs === undefined) {\n msgLibProgram = ULN_PROGRAM_ID\n endpointProgram = ENDPOINT_PROGRAM_ID\n } else {\n msgLibProgram = programs.msgLib ?? ULN_PROGRAM_ID\n endpointProgram = programs.endpoint ?? ENDPOINT_PROGRAM_ID\n }\n\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n let msgLib: MessageLibInterface\n if (msgLibProgram === SimpleMessageLibProgram.SIMPLE_MESSAGELIB_PROGRAM_ID) {\n msgLib = new SimpleMessageLibProgram.SimpleMessageLib(SimpleMessageLibProgram.SIMPLE_MESSAGELIB_PROGRAM_ID)\n } else {\n msgLib = new UlnProgram.Uln(msgLibProgram)\n }\n return endpoint.initOAppConfig(\n {\n delegate: admin,\n payer: payer.publicKey,\n },\n {\n msgLibSDK: msgLib,\n oapp: oftStore,\n remote: remoteEid,\n }\n )\n}\n\nexport async function setConfig(\n rpc: RpcInterface,\n accounts: {\n signer: Signer\n oftStore: PublicKey\n },\n params: {\n remoteEid: number\n configType: SetConfigType\n config: UlnProgram.types.ExecutorConfig | UlnProgram.types.UlnConfig\n },\n programs?: {\n msgLib?: PublicKey\n endpoint?: PublicKey\n }\n): Promise<WrappedInstruction> {\n const { signer, oftStore } = accounts\n const { remoteEid, configType, config } = params\n let msgLibProgram: PublicKey, endpointProgram: PublicKey\n if (programs === undefined) {\n msgLibProgram = ULN_PROGRAM_ID\n endpointProgram = ENDPOINT_PROGRAM_ID\n } else {\n msgLibProgram = programs.msgLib ?? ULN_PROGRAM_ID\n endpointProgram = programs.endpoint ?? ENDPOINT_PROGRAM_ID\n }\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n return endpoint.setOAppConfig(rpc, signer, {\n oapp: oftStore,\n eid: remoteEid,\n config: {\n configType,\n value: config,\n },\n msgLibProgram: msgLibProgram,\n })\n}\n\nexport function withdrawFee(\n accounts: {\n admin: Signer\n mint: PublicKey\n escrow: PublicKey\n dest: PublicKey\n },\n amount: bigint,\n programs: {\n oft: PublicKey | ProgramRepositoryInterface\n token?: PublicKey\n }\n): WrappedInstruction {\n const { admin, mint, escrow, dest } = accounts\n const programsRepo = typeof programs.oft === 'string' ? createOFTProgramRepo(programs.oft) : programs.oft\n const [oftStore] = new OftPDA(programsRepo.getPublicKey('oft')).oftStore(escrow)\n return instructions.withdrawFee(\n { programs: programsRepo },\n {\n admin: admin,\n tokenEscrow: escrow,\n tokenDest: dest,\n tokenProgram: programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID),\n oftStore: oftStore,\n tokenMint: mint,\n // params\n feeLd: amount,\n }\n ).items[0]\n}\n\nexport async function send(\n rpc: RpcInterface,\n accounts: {\n payer: Signer\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n tokenSource: PublicKey\n peerAddr?: Uint8Array\n },\n sendParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n composeMsg?: Uint8Array\n nativeFee: bigint\n lzTokenFee?: bigint\n },\n programs: {\n oft: PublicKey\n endpoint?: PublicKey // default is ENDPOINT_PROGRAM(76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6)\n token?: PublicKey // default is TOKEN_PROGRAM_ID(TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA)\n },\n remainingAccounts?: AccountMeta[]\n): Promise<WrappedInstruction> {\n const { payer, tokenMint, tokenEscrow, tokenSource } = accounts\n const { dstEid, to, amountLd, minAmountLd, options, composeMsg, nativeFee, lzTokenFee } = sendParams\n const deriver = new OftPDA(programs.oft)\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n\n if (remainingAccounts === undefined || remainingAccounts.length === 0) {\n const peerAddr: Uint8Array =\n accounts.peerAddr ??\n (await OFTAccounts.fetchPeerConfig({ rpc }, peer).then((peerInfo) => peerInfo.peerAddress))\n\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const msgLibProgram = await getSendLibraryProgram(rpc, endpoint, payer.publicKey, oftStore, dstEid)\n const packetPath: SolanaPacketPath = {\n dstEid,\n sender: oftStore,\n receiver: peerAddr,\n }\n remainingAccounts = await endpoint.getSendIXAccountMetaForCPI(rpc, payer.publicKey, {\n path: packetPath,\n msgLibProgram: msgLibProgram,\n })\n }\n\n const [eventAuthorityPDA] = new EventPDA(programs.oft).eventAuthority()\n const tokenProgram: PublicKey = programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID)\n const txBuilder = instructions.send(\n { programs: createOFTProgramRepo(programs.oft) },\n {\n signer: payer,\n peer: peer,\n oftStore: oftStore,\n tokenSource: tokenSource,\n tokenEscrow: tokenEscrow,\n tokenMint: tokenMint,\n tokenProgram: tokenProgram,\n eventAuthority: eventAuthorityPDA,\n program: programs.oft,\n // params\n dstEid: dstEid,\n to: to,\n amountLd,\n minAmountLd,\n options: options ?? new Uint8Array(),\n composeMsg: composeMsg ?? null,\n nativeFee,\n lzTokenFee: lzTokenFee ?? 0,\n }\n )\n\n // Get remaining accounts from msgLib(simple_msgLib or uln)\n return txBuilder.addRemainingAccounts(\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n}\n\nexport async function quote(\n rpc: RpcInterface,\n accounts: {\n payer: PublicKey\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n peerAddr?: Uint8Array\n },\n quoteParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n payInLzToken?: boolean\n composeMsg?: Uint8Array\n },\n programs: {\n oft: PublicKey\n endpoint?: PublicKey\n },\n remainingAccounts?: AccountMeta[],\n addressLookupTables?: PublicKey | PublicKey[]\n): Promise<{ nativeFee: bigint; lzTokenFee: bigint }> {\n const { dstEid, to, amountLd, minAmountLd, options, payInLzToken, composeMsg } = quoteParams\n const { payer, tokenMint, tokenEscrow } = accounts\n\n const deriver = new OftPDA(programs.oft)\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n\n if (remainingAccounts === undefined || remainingAccounts.length === 0) {\n const peerAddr: Uint8Array =\n accounts.peerAddr ??\n (await OFTAccounts.fetchPeerConfig({ rpc }, peer).then((peerInfo) => peerInfo.peerAddress))\n\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const messageLib = await getSendLibraryProgram(rpc, endpoint, payer, oftStore, dstEid)\n remainingAccounts = await endpoint.getQuoteIXAccountMetaForCPI(rpc, payer, {\n path: { sender: oftStore, dstEid: dstEid, receiver: peerAddr },\n msgLibProgram: messageLib,\n })\n }\n\n let txBuilder = instructions.quoteSend(\n { programs: createOFTProgramRepo(programs.oft) },\n {\n oftStore: oftStore,\n peer: peer,\n tokenMint: tokenMint,\n // params\n dstEid: dstEid,\n to: to,\n amountLd: amountLd,\n minAmountLd: minAmountLd,\n options: options ?? new Uint8Array(),\n payInLzToken: payInLzToken ?? false,\n composeMsg: composeMsg ?? null,\n }\n )\n\n txBuilder = txBuilder.addRemainingAccounts(\n // Get remaining accounts from msgLib(simple_msgLib or uln)\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n )\n const web3Ix = toWeb3JsInstruction(txBuilder.getInstructions()[0])\n const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({\n units: 1000000,\n })\n return simulateWeb3JsTransaction(\n rpc,\n [modifyComputeUnits, web3Ix],\n web3Ix.programId,\n toWeb3JsPublicKey(payer),\n EndpointProgram.types.getMessagingFeeSerializer(),\n 'confirmed',\n undefined,\n addressLookupTables !== undefined\n ? Array.isArray(addressLookupTables)\n ? addressLookupTables.map(toWeb3JsPublicKey)\n : toWeb3JsPublicKey(addressLookupTables)\n : undefined\n )\n}\n\nexport async function quoteOft(\n rpc: RpcInterface,\n accounts: {\n payer: PublicKey\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n },\n quoteParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n payInLzToken?: boolean\n composeMsg?: Uint8Array\n },\n oftProgram: PublicKey\n): Promise<types.QuoteOFTResult> {\n const { payer, tokenMint, tokenEscrow } = accounts\n const { dstEid, to, amountLd, minAmountLd, options, payInLzToken, composeMsg } = quoteParams\n const deriver = new OftPDA(oftProgram)\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n const ix = instructions\n .quoteOft(\n { programs: createOFTProgramRepo(oftProgram) },\n {\n oftStore: oftStore,\n peer: peer,\n tokenMint: tokenMint,\n // params\n dstEid: dstEid,\n to: to,\n amountLd: amountLd,\n minAmountLd: minAmountLd,\n options: options ?? new Uint8Array(),\n payInLzToken: payInLzToken ?? false,\n composeMsg: composeMsg ?? null,\n }\n )\n .getInstructions()[0]\n\n const web3Ix = toWeb3JsInstruction(ix)\n return simulateWeb3JsTransaction(\n rpc.getEndpoint(),\n [web3Ix],\n web3Ix.programId,\n toWeb3JsPublicKey(payer),\n types.getQuoteOFTResultSerializer(),\n 'confirmed'\n )\n}\n\nexport function initOAppNonce(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n remoteEid: number,\n remoteOappAddr: Uint8Array, // must be 32 bytes\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): WrappedInstruction {\n const { admin, oftStore } = accounts\n const endpoint = new EndpointProgram.Endpoint(endpointProgram)\n\n return endpoint.initOAppNonce(admin, {\n localOApp: oftStore,\n remote: remoteEid,\n remoteOApp: remoteOappAddr,\n })\n}\n\nexport async function getEndpointConfig(\n rpc: RpcInterface,\n oftStore: PublicKey,\n endpointId: number,\n programs?: {\n msgLib?: PublicKey\n endpoint?: PublicKey\n }\n): Promise<{\n sendLibraryConfig: EndpointProgram.accounts.SendLibraryConfig & { ulnSendConfig?: UlnProgram.accounts.SendConfig }\n receiveLibraryConfig: EndpointProgram.accounts.ReceiveLibraryConfig & {\n ulnReceiveConfig?: UlnProgram.accounts.ReceiveConfig\n }\n}> {\n let msgLibProgram: PublicKey, endpointProgram: PublicKey\n if (programs === undefined) {\n msgLibProgram = ULN_PROGRAM_ID\n endpointProgram = ENDPOINT_PROGRAM_ID\n } else {\n msgLibProgram = programs.msgLib ?? ULN_PROGRAM_ID\n endpointProgram = programs.endpoint ?? ENDPOINT_PROGRAM_ID\n }\n const endpointDeriver = new EndpointPDA(endpointProgram)\n const ulnDeriver = new UlnPDA(msgLibProgram)\n\n const [sendLib] = endpointDeriver.sendLibraryConfig(oftStore, endpointId)\n const [defaultSendLib] = endpointDeriver.defaultSendLibraryConfig(endpointId)\n const [receiveLib] = endpointDeriver.receiveLibraryConfig(oftStore, endpointId)\n const [defaultReceiveLib] = endpointDeriver.defaultReceiveLibraryConfig(endpointId)\n\n const [msgLib] = ulnDeriver.messageLib()\n let sendLibraryConfig: EndpointProgram.accounts.SendLibraryConfig & {\n ulnSendConfig?: UlnProgram.accounts.SendConfig\n } = await EndpointProgram.accounts.fetchSendLibraryConfig({ rpc }, sendLib)\n\n let receiveLibraryConfig: EndpointProgram.accounts.ReceiveLibraryConfig & {\n ulnReceiveConfig?: UlnProgram.accounts.ReceiveConfig\n } = await EndpointProgram.accounts.fetchReceiveLibraryConfig({ rpc }, receiveLib)\n\n const defaultSendLibraryConfig: EndpointProgram.accounts.SendLibraryConfig & {\n ulnSendConfig?: UlnProgram.accounts.SendConfig\n } = await EndpointProgram.accounts.fetchSendLibraryConfig({ rpc }, defaultSendLib)\n\n const defaultReceiveLibraryConfig: EndpointProgram.accounts.ReceiveLibraryConfig & {\n ulnReceiveConfig?: UlnProgram.accounts.ReceiveConfig\n } = await EndpointProgram.accounts.fetchReceiveLibraryConfig({ rpc }, defaultReceiveLib)\n\n const nil64 = 18446744073709551615n // max u64\n const nil8 = 255\n\n if (sendLibraryConfig.messageLib === defaultPublicKey()) {\n sendLibraryConfig = defaultSendLibraryConfig\n }\n if (receiveLibraryConfig.messageLib === defaultPublicKey()) {\n receiveLibraryConfig = defaultReceiveLibraryConfig\n }\n // get the uln config if necessary\n if (sendLibraryConfig.messageLib === msgLib) {\n const [ulnDefaultSendConfigPDA] = ulnDeriver.defaultSendConfig(endpointId)\n const [ulnSendConfigPDA] = ulnDeriver.sendConfig(endpointId, oftStore)\n const ulnSendConfig = await UlnProgram.accounts.fetchSendConfig({ rpc }, ulnSendConfigPDA)\n const ulnDefaultSendConfig = await UlnProgram.accounts.fetchSendConfig({ rpc }, ulnDefaultSendConfigPDA)\n // get the uln config for the send library\n if (nil64 === ulnSendConfig.uln.confirmations) {\n ulnSendConfig.uln.confirmations = 0n\n } else if (ulnSendConfig.uln.confirmations == 0n) {\n ulnSendConfig.uln.confirmations = ulnDefaultSendConfig.uln.confirmations\n }\n if (ulnSendConfig.uln.requiredDvnCount == nil8) {\n ulnSendConfig.uln.requiredDvnCount = 0\n } else if (ulnSendConfig.uln.requiredDvnCount == 0) {\n ulnSendConfig.uln.requiredDvnCount = ulnDefaultSendConfig.uln.requiredDvnCount\n ulnSendConfig.uln.requiredDvns = ulnDefaultSendConfig.uln.requiredDvns\n }\n if (ulnSendConfig.uln.optionalDvnCount == nil8) {\n ulnSendConfig.uln.optionalDvnCount = 0\n ulnSendConfig.uln.optionalDvnThreshold = 0\n } else if (ulnSendConfig.uln.optionalDvnCount == 0) {\n ulnSendConfig.uln.optionalDvnCount = ulnDefaultSendConfig.uln.optionalDvnCount\n ulnSendConfig.uln.optionalDvnThreshold = ulnDefaultSendConfig.uln.optionalDvnThreshold\n ulnSendConfig.uln.optionalDvns = ulnDefaultSendConfig.uln.optionalDvns\n }\n sendLibraryConfig.ulnSendConfig = ulnSendConfig\n }\n if (receiveLibraryConfig.messageLib === msgLib) {\n const [ulnDefaultReceiveConfigPDA] = ulnDeriver.defaultReceiveConfig(endpointId)\n const [ulnReceiveConfigPDA] = ulnDeriver.receiveConfig(endpointId, oftStore)\n const ulnReceiveConfig = await UlnProgram.accounts.fetchReceiveConfig({ rpc }, ulnReceiveConfigPDA)\n const ulnDefaultReceiveConfig = await UlnProgram.accounts.fetchReceiveConfig(\n { rpc },\n ulnDefaultReceiveConfigPDA\n )\n if (nil64 === ulnReceiveConfig.uln.confirmations) {\n ulnReceiveConfig.uln.confirmations = 0n\n } else if (ulnReceiveConfig.uln.confirmations == 0n) {\n ulnReceiveConfig.uln.confirmations = ulnDefaultReceiveConfig.uln.confirmations\n }\n if (ulnReceiveConfig.uln.requiredDvnCount == nil8) {\n ulnReceiveConfig.uln.requiredDvnCount = 0\n } else if (ulnReceiveConfig.uln.requiredDvnCount == 0) {\n ulnReceiveConfig.uln.requiredDvnCount = ulnDefaultReceiveConfig.uln.requiredDvnCount\n ulnReceiveConfig.uln.requiredDvns = ulnDefaultReceiveConfig.uln.requiredDvns\n }\n if (ulnReceiveConfig.uln.optionalDvnCount == nil8) {\n ulnReceiveConfig.uln.optionalDvnCount = 0\n ulnReceiveConfig.uln.optionalDvnThreshold = 0\n } else if (ulnReceiveConfig.uln.optionalDvnCount == 0) {\n ulnReceiveConfig.uln.optionalDvnCount = ulnDefaultReceiveConfig.uln.optionalDvnCount\n ulnReceiveConfig.uln.optionalDvnThreshold = ulnDefaultReceiveConfig.uln.optionalDvnThreshold\n ulnReceiveConfig.uln.optionalDvns = ulnDefaultReceiveConfig.uln.optionalDvns\n }\n receiveLibraryConfig.ulnReceiveConfig = ulnReceiveConfig\n }\n return {\n sendLibraryConfig,\n receiveLibraryConfig,\n }\n // send lib address, if blocked then just return that, otherwise return the uln config\n // send lib executor, dvns etc.\n // receive lib executor, dvns\n}\n\n// returns the hex string of the peer address\nexport async function getPeerAddress(\n rpc: RpcInterface,\n oftInstance: PublicKey,\n remoteEid: number,\n oftProgramId: PublicKey\n): Promise<string> {\n const [peer] = new OftPDA(oftProgramId).peer(oftInstance, remoteEid)\n const peerInfo = await OFTAccounts.fetchPeerConfig({ rpc }, peer)\n return hexlify(peerInfo.peerAddress)\n}\n\nexport async function getDelegate(\n rpc: RpcInterface,\n oftInstance: PublicKey,\n endpointProgram: PublicKey = ENDPOINT_PROGRAM_ID\n): Promise<PublicKey> {\n const [oAppRegistry] = new EndpointPDA(endpointProgram).oappRegistry(oftInstance)\n const oAppRegistryInfo = await EndpointProgram.accounts.fetchOAppRegistry({ rpc }, oAppRegistry)\n return oAppRegistryInfo.delegate\n}\n\nexport async function getEnforcedOptions(\n rpc: RpcInterface,\n oftInstance: PublicKey,\n remoteEid: number,\n oftProgramId: PublicKey\n): Promise<types.EnforcedOptions> {\n const [peer] = new OftPDA(oftProgramId).peer(oftInstance, remoteEid)\n const peerInfo = await OFTAccounts.fetchPeerConfig({ rpc }, peer)\n return peerInfo.enforcedOptions\n}\n\nasync function getSendLibraryProgram(\n rpc: RpcInterface,\n endpoint: EndpointProgram.Endpoint,\n payer: PublicKey,\n oftStore: PublicKey,\n remoteEid: number\n): Promise<SimpleMessageLibProgram.SimpleMessageLib | UlnProgram.Uln> {\n const sendLibInfo = await endpoint.getSendLibrary(rpc, oftStore, remoteEid)\n if (!sendLibInfo.programId) {\n throw new Error('Send library not initialized or blocked message library')\n }\n const { programId: msgLibProgram } = sendLibInfo\n const msgLibVersion = await endpoint.getMessageLibVersion(rpc, payer, msgLibProgram)\n if (msgLibVersion.major.toString() === '0' && msgLibVersion.minor == 0 && msgLibVersion.endpointVersion == 2) {\n return new SimpleMessageLibProgram.SimpleMessageLib(msgLibProgram)\n } else if (\n msgLibVersion.major.toString() === '3' &&\n msgLibVersion.minor == 0 &&\n msgLibVersion.endpointVersion == 2\n ) {\n return new UlnProgram.Uln(msgLibProgram)\n }\n throw new Error(`Unsupported message library version: ${JSON.stringify(msgLibVersion, null, 2)}`)\n}\n","import { PublicKey } from '@solana/web3.js';\n\n/** Address of the SPL Token program */\nexport const TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');\n\n/** Address of the SPL Token 2022 program */\nexport const TOKEN_2022_PROGRAM_ID = new PublicKey('TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb');\n\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');\n\n/** Address of the special mint for wrapped native SOL in spl-token */\nexport const NATIVE_MINT = new PublicKey('So11111111111111111111111111111111111111112');\n\n/** Address of the special mint for wrapped native SOL in spl-token-2022 */\nexport const NATIVE_MINT_2022 = new PublicKey('9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP');\n\n/** Check that the token program provided is not `Tokenkeg...`, useful when using extensions */\nexport function programSupportsExtensions(programId: PublicKey): boolean {\n if (programId === TOKEN_PROGRAM_ID) {\n return false;\n } else {\n return true;\n }\n}\n","export const OFT_DECIMALS = 6\n\nexport const OFT_SEED = 'OFT'\n\nexport const PEER_SEED = 'Peer'\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './lzReceiveTypesAccounts';\nexport * from './oFTStore';\nexport * from './peerConfig';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n publicKey as publicKeySerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\n\n/**\n * LzReceiveTypesAccounts includes accounts that are used in the LzReceiveTypes\n * instruction.\n */\n\nexport type LzReceiveTypesAccounts = Account<LzReceiveTypesAccountsAccountData>;\n\nexport type LzReceiveTypesAccountsAccountData = {\n discriminator: Uint8Array;\n oftStore: PublicKey;\n tokenMint: PublicKey;\n};\n\nexport type LzReceiveTypesAccountsAccountDataArgs = {\n oftStore: PublicKey;\n tokenMint: PublicKey;\n};\n\nexport function getLzReceiveTypesAccountsAccountDataSerializer(): Serializer<\n LzReceiveTypesAccountsAccountDataArgs,\n LzReceiveTypesAccountsAccountData\n> {\n return mapSerializer<\n LzReceiveTypesAccountsAccountDataArgs,\n any,\n LzReceiveTypesAccountsAccountData\n >(\n struct<LzReceiveTypesAccountsAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftStore', publicKeySerializer()],\n ['tokenMint', publicKeySerializer()],\n ],\n { description: 'LzReceiveTypesAccountsAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([248, 87, 167, 117, 5, 251, 21, 126]),\n })\n ) as Serializer<\n LzReceiveTypesAccountsAccountDataArgs,\n LzReceiveTypesAccountsAccountData\n >;\n}\n\nexport function deserializeLzReceiveTypesAccounts(\n rawAccount: RpcAccount\n): LzReceiveTypesAccounts {\n return deserializeAccount(\n rawAccount,\n getLzReceiveTypesAccountsAccountDataSerializer()\n );\n}\n\nexport async function fetchLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<LzReceiveTypesAccounts> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'LzReceiveTypesAccounts');\n return deserializeLzReceiveTypesAccounts(maybeAccount);\n}\n\nexport async function safeFetchLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<LzReceiveTypesAccounts | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists\n ? deserializeLzReceiveTypesAccounts(maybeAccount)\n : null;\n}\n\nexport async function fetchAllLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<LzReceiveTypesAccounts[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'LzReceiveTypesAccounts');\n return deserializeLzReceiveTypesAccounts(maybeAccount);\n });\n}\n\nexport async function safeFetchAllLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<LzReceiveTypesAccounts[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) =>\n deserializeLzReceiveTypesAccounts(maybeAccount as RpcAccount)\n );\n}\n\nexport function getLzReceiveTypesAccountsGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n oftStore: PublicKey;\n tokenMint: PublicKey;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n oftStore: [8, publicKeySerializer()],\n tokenMint: [40, publicKeySerializer()],\n })\n .deserializeUsing<LzReceiveTypesAccounts>((account) =>\n deserializeLzReceiveTypesAccounts(account)\n )\n .whereField(\n 'discriminator',\n new Uint8Array([248, 87, 167, 117, 5, 251, 21, 126])\n );\n}\n\nexport function getLzReceiveTypesAccountsSize(): number {\n return 72;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './enforcedOptions';\nexport * from './lzAccount';\nexport * from './lzReceiveParams';\nexport * from './messagingFee';\nexport * from './oFTFeeDetail';\nexport * from './oFTLimits';\nexport * from './oFTReceipt';\nexport * from './oFTType';\nexport * from './peerConfigParam';\nexport * from './quoteOFTResult';\nexport * from './rateLimiter';\nexport * from './rateLimitParams';\nexport * from './setOFTConfigParams';\nexport * from './version';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n bytes,\n struct,\n u32,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type EnforcedOptions = { send: Uint8Array; sendAndCall: Uint8Array };\n\nexport type EnforcedOptionsArgs = EnforcedOptions;\n\nexport function getEnforcedOptionsSerializer(): Serializer<\n EnforcedOptionsArgs,\n EnforcedOptions\n> {\n return struct<EnforcedOptions>(\n [\n ['send', bytes({ size: u32() })],\n ['sendAndCall', bytes({ size: u32() })],\n ],\n { description: 'EnforcedOptions' }\n ) as Serializer<EnforcedOptionsArgs, EnforcedOptions>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { PublicKey } from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n publicKey as publicKeySerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\n\n/** same to anchor_lang::prelude::AccountMeta */\nexport type LzAccount = {\n pubkey: PublicKey;\n isSigner: boolean;\n isWritable: boolean;\n};\n\nexport type LzAccountArgs = LzAccount;\n\nexport function getLzAccountSerializer(): Serializer<LzAccountArgs, LzAccount> {\n return struct<LzAccount>(\n [\n ['pubkey', publicKeySerializer()],\n ['isSigner', bool()],\n ['isWritable', bool()],\n ],\n { description: 'LzAccount' }\n ) as Serializer<LzAccountArgs, LzAccount>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n bytes,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type LzReceiveParams = {\n srcEid: number;\n sender: Uint8Array;\n nonce: bigint;\n guid: Uint8Array;\n message: Uint8Array;\n extraData: Uint8Array;\n};\n\nexport type LzReceiveParamsArgs = {\n srcEid: number;\n sender: Uint8Array;\n nonce: number | bigint;\n guid: Uint8Array;\n message: Uint8Array;\n extraData: Uint8Array;\n};\n\nexport function getLzReceiveParamsSerializer(): Serializer<\n LzReceiveParamsArgs,\n LzReceiveParams\n> {\n return struct<LzReceiveParams>(\n [\n ['srcEid', u32()],\n ['sender', bytes({ size: 32 })],\n ['nonce', u64()],\n ['guid', bytes({ size: 32 })],\n ['message', bytes({ size: u32() })],\n ['extraData', bytes({ size: u32() })],\n ],\n { description: 'LzReceiveParams' }\n ) as Serializer<LzReceiveParamsArgs, LzReceiveParams>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type MessagingFee = { nativeFee: bigint; lzTokenFee: bigint };\n\nexport type MessagingFeeArgs = {\n nativeFee: number | bigint;\n lzTokenFee: number | bigint;\n};\n\nexport function getMessagingFeeSerializer(): Serializer<\n MessagingFeeArgs,\n MessagingFee\n> {\n return struct<MessagingFee>(\n [\n ['nativeFee', u64()],\n ['lzTokenFee', u64()],\n ],\n { description: 'MessagingFee' }\n ) as Serializer<MessagingFeeArgs, MessagingFee>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n string,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type OFTFeeDetail = { feeAmountLd: bigint; description: string };\n\nexport type OFTFeeDetailArgs = {\n feeAmountLd: number | bigint;\n description: string;\n};\n\nexport function getOFTFeeDetailSerializer(): Serializer<\n OFTFeeDetailArgs,\n OFTFeeDetail\n> {\n return struct<OFTFeeDetail>(\n [\n ['feeAmountLd', u64()],\n ['description', string()],\n ],\n { description: 'OFTFeeDetail' }\n ) as Serializer<OFTFeeDetailArgs, OFTFeeDetail>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type OFTLimits = { minAmountLd: bigint; maxAmountLd: bigint };\n\nexport type OFTLimitsArgs = {\n minAmountLd: number | bigint;\n maxAmountLd: number | bigint;\n};\n\nexport function getOFTLimitsSerializer(): Serializer<OFTLimitsArgs, OFTLimits> {\n return struct<OFTLimits>(\n [\n ['minAmountLd', u64()],\n ['maxAmountLd', u64()],\n ],\n { description: 'OFTLimits' }\n ) as Serializer<OFTLimitsArgs, OFTLimits>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type OFTReceipt = { amountSentLd: bigint; amountReceivedLd: bigint };\n\nexport type OFTReceiptArgs = {\n amountSentLd: number | bigint;\n amountReceivedLd: number | bigint;\n};\n\nexport function getOFTReceiptSerializer(): Serializer<\n OFTReceiptArgs,\n OFTReceipt\n> {\n return struct<OFTReceipt>(\n [\n ['amountSentLd', u64()],\n ['amountReceivedLd', u64()],\n ],\n { description: 'OFTReceipt' }\n ) as Serializer<OFTReceiptArgs, OFTReceipt>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, scalarEnum } from '@metaplex-foundation/umi/serializers';\n\nexport enum OFTType {\n Native,\n Adapter,\n}\n\nexport type OFTTypeArgs = OFTType;\n\nexport function getOFTTypeSerializer(): Serializer<OFTTypeArgs, OFTType> {\n return scalarEnum<OFTType>(OFTType, { description: 'OFTType' }) as Serializer<\n OFTTypeArgs,\n OFTType\n >;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable } from '@metaplex-foundation/umi';\nimport {\n GetDataEnumKind,\n GetDataEnumKindContent,\n Serializer,\n bytes,\n dataEnum,\n option,\n struct,\n tuple,\n u16,\n u32,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n RateLimitParams,\n RateLimitParamsArgs,\n getRateLimitParamsSerializer,\n} from '.';\n\nexport type PeerConfigParam =\n | { __kind: 'PeerAddress'; fields: [Uint8Array] }\n | { __kind: 'FeeBps'; fields: [Option<number>] }\n | { __kind: 'EnforcedOptions'; send: Uint8Array; sendAndCall: Uint8Array }\n | { __kind: 'OutboundRateLimit'; fields: [Option<RateLimitParams>] }\n | { __kind: 'InboundRateLimit'; fields: [Option<RateLimitParams>] };\n\nexport type PeerConfigParamArgs =\n | { __kind: 'PeerAddress'; fields: [Uint8Array] }\n | { __kind: 'FeeBps'; fields: [OptionOrNullable<number>] }\n | { __kind: 'EnforcedOptions'; send: Uint8Array; sendAndCall: Uint8Array }\n | {\n __kind: 'OutboundRateLimit';\n fields: [OptionOrNullable<RateLimitParamsArgs>];\n }\n | {\n __kind: 'InboundRateLimit';\n fields: [OptionOrNullable<RateLimitParamsArgs>];\n };\n\nexport function getPeerConfigParamSerializer(): Serializer<\n PeerConfigParamArgs,\n PeerConfigParam\n> {\n return dataEnum<PeerConfigParam>(\n [\n [\n 'PeerAddress',\n struct<GetDataEnumKindContent<PeerConfigParam, 'PeerAddress'>>([\n ['fields', tuple([bytes({ size: 32 })])],\n ]),\n ],\n [\n 'FeeBps',\n struct<GetDataEnumKindContent<PeerConfigParam, 'FeeBps'>>([\n ['fields', tuple([option(u16())])],\n ]),\n ],\n [\n 'EnforcedOptions',\n struct<GetDataEnumKindContent<PeerConfigParam, 'EnforcedOptions'>>([\n ['send', bytes({ size: u32() })],\n ['sendAndCall', bytes({ size: u32() })],\n ]),\n ],\n [\n 'OutboundRateLimit',\n struct<GetDataEnumKindContent<PeerConfigParam, 'OutboundRateLimit'>>([\n ['fields', tuple([option(getRateLimitParamsSerializer())])],\n ]),\n ],\n [\n 'InboundRateLimit',\n struct<GetDataEnumKindContent<PeerConfigParam, 'InboundRateLimit'>>([\n ['fields', tuple([option(getRateLimitParamsSerializer())])],\n ]),\n ],\n ],\n { description: 'PeerConfigParam' }\n ) as Serializer<PeerConfigParamArgs, PeerConfigParam>;\n}\n\n// Data Enum Helpers.\nexport function peerConfigParam(\n kind: 'PeerAddress',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'PeerAddress'>['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'PeerAddress'>;\nexport function peerConfigParam(\n kind: 'FeeBps',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'FeeBps'>['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'FeeBps'>;\nexport function peerConfigParam(\n kind: 'EnforcedOptions',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'EnforcedOptions'>\n): GetDataEnumKind<PeerConfigParamArgs, 'EnforcedOptions'>;\nexport function peerConfigParam(\n kind: 'OutboundRateLimit',\n data: GetDataEnumKindContent<\n PeerConfigParamArgs,\n 'OutboundRateLimit'\n >['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'OutboundRateLimit'>;\nexport function peerConfigParam(\n kind: 'InboundRateLimit',\n data: GetDataEnumKindContent<\n PeerConfigParamArgs,\n 'InboundRateLimit'\n >['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'InboundRateLimit'>;\nexport function peerConfigParam<K extends PeerConfigParamArgs['__kind']>(\n kind: K,\n data?: any\n): Extract<PeerConfigParamArgs, { __kind: K }> {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\nexport function isPeerConfigParam<K extends PeerConfigParam['__kind']>(\n kind: K,\n value: PeerConfigParam\n): value is PeerConfigParam & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n array,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n OFTFeeDetail,\n OFTFeeDetailArgs,\n OFTLimits,\n OFTLimitsArgs,\n OFTReceipt,\n OFTReceiptArgs,\n getOFTFeeDetailSerializer,\n getOFTLimitsSerializer,\n getOFTReceiptSerializer,\n} from '.';\n\nexport type QuoteOFTResult = {\n oftLimits: OFTLimits;\n oftFeeDetails: Array<OFTFeeDetail>;\n oftReceipt: OFTReceipt;\n};\n\nexport type QuoteOFTResultArgs = {\n oftLimits: OFTLimitsArgs;\n oftFeeDetails: Array<OFTFeeDetailArgs>;\n oftReceipt: OFTReceiptArgs;\n};\n\nexport function getQuoteOFTResultSerializer(): Serializer<\n QuoteOFTResultArgs,\n QuoteOFTResult\n> {\n return struct<QuoteOFTResult>(\n [\n ['oftLimits', getOFTLimitsSerializer()],\n ['oftFeeDetails', array(getOFTFeeDetailSerializer())],\n ['oftReceipt', getOFTReceiptSerializer()],\n ],\n { description: 'QuoteOFTResult' }\n ) as Serializer<QuoteOFTResultArgs, QuoteOFTResult>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type RateLimiter = {\n capacity: bigint;\n tokens: bigint;\n refillPerSecond: bigint;\n lastRefillTime: bigint;\n};\n\nexport type RateLimiterArgs = {\n capacity: number | bigint;\n tokens: number | bigint;\n refillPerSecond: number | bigint;\n lastRefillTime: number | bigint;\n};\n\nexport function getRateLimiterSerializer(): Serializer<\n RateLimiterArgs,\n RateLimiter\n> {\n return struct<RateLimiter>(\n [\n ['capacity', u64()],\n ['tokens', u64()],\n ['refillPerSecond', u64()],\n ['lastRefillTime', u64()],\n ],\n { description: 'RateLimiter' }\n ) as Serializer<RateLimiterArgs, RateLimiter>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable } from '@metaplex-foundation/umi';\nimport {\n Serializer,\n option,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type RateLimitParams = {\n refillPerSecond: Option<bigint>;\n capacity: Option<bigint>;\n};\n\nexport type RateLimitParamsArgs = {\n refillPerSecond: OptionOrNullable<number | bigint>;\n capacity: OptionOrNullable<number | bigint>;\n};\n\nexport function getRateLimitParamsSerializer(): Serializer<\n RateLimitParamsArgs,\n RateLimitParams\n> {\n return struct<RateLimitParams>(\n [\n ['refillPerSecond', option(u64())],\n ['capacity', option(u64())],\n ],\n { description: 'RateLimitParams' }\n ) as Serializer<RateLimitParamsArgs, RateLimitParams>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable, PublicKey } from '@metaplex-foundation/umi';\nimport {\n GetDataEnumKind,\n GetDataEnumKindContent,\n Serializer,\n bool,\n dataEnum,\n option,\n publicKey as publicKeySerializer,\n struct,\n tuple,\n u16,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type SetOFTConfigParams =\n | { __kind: 'Admin'; fields: [PublicKey] }\n | { __kind: 'Delegate'; fields: [PublicKey] }\n | { __kind: 'DefaultFee'; fields: [number] }\n | { __kind: 'Paused'; fields: [boolean] }\n | { __kind: 'Pauser'; fields: [Option<PublicKey>] }\n | { __kind: 'Unpauser'; fields: [Option<PublicKey>] };\n\nexport type SetOFTConfigParamsArgs =\n | { __kind: 'Admin'; fields: [PublicKey] }\n | { __kind: 'Delegate'; fields: [PublicKey] }\n | { __kind: 'DefaultFee'; fields: [number] }\n | { __kind: 'Paused'; fields: [boolean] }\n | { __kind: 'Pauser'; fields: [OptionOrNullable<PublicKey>] }\n | { __kind: 'Unpauser'; fields: [OptionOrNullable<PublicKey>] };\n\nexport function getSetOFTConfigParamsSerializer(): Serializer<\n SetOFTConfigParamsArgs,\n SetOFTConfigParams\n> {\n return dataEnum<SetOFTConfigParams>(\n [\n [\n 'Admin',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Admin'>>([\n ['fields', tuple([publicKeySerializer()])],\n ]),\n ],\n [\n 'Delegate',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Delegate'>>([\n ['fields', tuple([publicKeySerializer()])],\n ]),\n ],\n [\n 'DefaultFee',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'DefaultFee'>>([\n ['fields', tuple([u16()])],\n ]),\n ],\n [\n 'Paused',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Paused'>>([\n ['fields', tuple([bool()])],\n ]),\n ],\n [\n 'Pauser',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Pauser'>>([\n ['fields', tuple([option(publicKeySerializer())])],\n ]),\n ],\n [\n 'Unpauser',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Unpauser'>>([\n ['fields', tuple([option(publicKeySerializer())])],\n ]),\n ],\n ],\n { description: 'SetOFTConfigParams' }\n ) as Serializer<SetOFTConfigParamsArgs, SetOFTConfigParams>;\n}\n\n// Data Enum Helpers.\nexport function setOFTConfigParams(\n kind: 'Admin',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Admin'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Admin'>;\nexport function setOFTConfigParams(\n kind: 'Delegate',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Delegate'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Delegate'>;\nexport function setOFTConfigParams(\n kind: 'DefaultFee',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'DefaultFee'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'DefaultFee'>;\nexport function setOFTConfigParams(\n kind: 'Paused',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Paused'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Paused'>;\nexport function setOFTConfigParams(\n kind: 'Pauser',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Pauser'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Pauser'>;\nexport function setOFTConfigParams(\n kind: 'Unpauser',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Unpauser'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Unpauser'>;\nexport function setOFTConfigParams<K extends SetOFTConfigParamsArgs['__kind']>(\n kind: K,\n data?: any\n): Extract<SetOFTConfigParamsArgs, { __kind: K }> {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\nexport function isSetOFTConfigParams<K extends SetOFTConfigParams['__kind']>(\n kind: K,\n value: SetOFTConfigParams\n): value is SetOFTConfigParams & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type Version = { interface: bigint; message: bigint };\n\nexport type VersionArgs = {\n interface: number | bigint;\n message: number | bigint;\n};\n\nexport function getVersionSerializer(): Serializer<VersionArgs, Version> {\n return struct<Version>(\n [\n ['interface', u64()],\n ['message', u64()],\n ],\n { description: 'Version' }\n ) as Serializer<VersionArgs, Version>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n publicKey as publicKeySerializer,\n struct,\n u16,\n u64,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport { OFTType, OFTTypeArgs, getOFTTypeSerializer } from '../types';\n\nexport type OFTStore = Account<OFTStoreAccountData>;\n\nexport type OFTStoreAccountData = {\n discriminator: Uint8Array;\n oftType: OFTType;\n ld2sdRate: bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: Option<PublicKey>;\n unpauser: Option<PublicKey>;\n};\n\nexport type OFTStoreAccountDataArgs = {\n oftType: OFTTypeArgs;\n ld2sdRate: number | bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: number | bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: OptionOrNullable<PublicKey>;\n unpauser: OptionOrNullable<PublicKey>;\n};\n\nexport function getOFTStoreAccountDataSerializer(): Serializer<\n OFTStoreAccountDataArgs,\n OFTStoreAccountData\n> {\n return mapSerializer<OFTStoreAccountDataArgs, any, OFTStoreAccountData>(\n struct<OFTStoreAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftType', getOFTTypeSerializer()],\n ['ld2sdRate', u64()],\n ['tokenMint', publicKeySerializer()],\n ['tokenEscrow', publicKeySerializer()],\n ['endpointProgram', publicKeySerializer()],\n ['bump', u8()],\n ['tvlLd', u64()],\n ['admin', publicKeySerializer()],\n ['defaultFeeBps', u16()],\n ['paused', bool()],\n ['pauser', option(publicKeySerializer())],\n ['unpauser', option(publicKeySerializer())],\n ],\n { description: 'OFTStoreAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([195, 215, 104, 134, 185, 195, 240, 114]),\n })\n ) as Serializer<OFTStoreAccountDataArgs, OFTStoreAccountData>;\n}\n\nexport function deserializeOFTStore(rawAccount: RpcAccount): OFTStore {\n return deserializeAccount(rawAccount, getOFTStoreAccountDataSerializer());\n}\n\nexport async function fetchOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<OFTStore> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'OFTStore');\n return deserializeOFTStore(maybeAccount);\n}\n\nexport async function safeFetchOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<OFTStore | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists ? deserializeOFTStore(maybeAccount) : null;\n}\n\nexport async function fetchAllOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<OFTStore[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'OFTStore');\n return deserializeOFTStore(maybeAccount);\n });\n}\n\nexport async function safeFetchAllOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<OFTStore[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) => deserializeOFTStore(maybeAccount as RpcAccount));\n}\n\nexport function getOFTStoreGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n oftType: OFTTypeArgs;\n ld2sdRate: number | bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: number | bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: OptionOrNullable<PublicKey>;\n unpauser: OptionOrNullable<PublicKey>;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n oftType: [8, getOFTTypeSerializer()],\n ld2sdRate: [9, u64()],\n tokenMint: [17, publicKeySerializer()],\n tokenEscrow: [49, publicKeySerializer()],\n endpointProgram: [81, publicKeySerializer()],\n bump: [113, u8()],\n tvlLd: [114, u64()],\n admin: [122, publicKeySerializer()],\n defaultFeeBps: [154, u16()],\n paused: [156, bool()],\n pauser: [157, option(publicKeySerializer())],\n unpauser: [null, option(publicKeySerializer())],\n })\n .deserializeUsing<OFTStore>((account) => deserializeOFTStore(account))\n .whereField(\n 'discriminator',\n new Uint8Array([195, 215, 104, 134, 185, 195, 240, 114])\n );\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n option,\n struct,\n u16,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n EnforcedOptions,\n EnforcedOptionsArgs,\n RateLimiter,\n RateLimiterArgs,\n getEnforcedOptionsSerializer,\n getRateLimiterSerializer,\n} from '../types';\n\nexport type PeerConfig = Account<PeerConfigAccountData>;\n\nexport type PeerConfigAccountData = {\n discriminator: Uint8Array;\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptions;\n outboundRateLimiter: Option<RateLimiter>;\n inboundRateLimiter: Option<RateLimiter>;\n feeBps: Option<number>;\n bump: number;\n};\n\nexport type PeerConfigAccountDataArgs = {\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptionsArgs;\n outboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n inboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n feeBps: OptionOrNullable<number>;\n bump: number;\n};\n\nexport function getPeerConfigAccountDataSerializer(): Serializer<\n PeerConfigAccountDataArgs,\n PeerConfigAccountData\n> {\n return mapSerializer<PeerConfigAccountDataArgs, any, PeerConfigAccountData>(\n struct<PeerConfigAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['peerAddress', bytes({ size: 32 })],\n ['enforcedOptions', getEnforcedOptionsSerializer()],\n ['outboundRateLimiter', option(getRateLimiterSerializer())],\n ['inboundRateLimiter', option(getRateLimiterSerializer())],\n ['feeBps', option(u16())],\n ['bump', u8()],\n ],\n { description: 'PeerConfigAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([181, 157, 86, 198, 33, 193, 94, 203]),\n })\n ) as Serializer<PeerConfigAccountDataArgs, PeerConfigAccountData>;\n}\n\nexport function deserializePeerConfig(rawAccount: RpcAccount): PeerConfig {\n return deserializeAccount(rawAccount, getPeerConfigAccountDataSerializer());\n}\n\nexport async function fetchPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<PeerConfig> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'PeerConfig');\n return deserializePeerConfig(maybeAccount);\n}\n\nexport async function safeFetchPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<PeerConfig | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists ? deserializePeerConfig(maybeAccount) : null;\n}\n\nexport async function fetchAllPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<PeerConfig[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'PeerConfig');\n return deserializePeerConfig(maybeAccount);\n });\n}\n\nexport async function safeFetchAllPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<PeerConfig[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) => deserializePeerConfig(maybeAccount as RpcAccount));\n}\n\nexport function getPeerConfigGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptionsArgs;\n outboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n inboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n feeBps: OptionOrNullable<number>;\n bump: number;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n peerAddress: [8, bytes({ size: 32 })],\n enforcedOptions: [40, getEnforcedOptionsSerializer()],\n outboundRateLimiter: [null, option(getRateLimiterSerializer())],\n inboundRateLimiter: [null, option(getRateLimiterSerializer())],\n feeBps: [null, option(u16())],\n bump: [null, u8()],\n })\n .deserializeUsing<PeerConfig>((account) => deserializePeerConfig(account))\n .whereField(\n 'discriminator',\n new Uint8Array([181, 157, 86, 198, 33, 193, 94, 203])\n );\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './oft';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Program, ProgramError } from '@metaplex-foundation/umi';\n\ntype ProgramErrorConstructor = new (\n program: Program,\n cause?: Error\n) => ProgramError;\nconst codeToErrorMap: Map<number, ProgramErrorConstructor> = new Map();\nconst nameToErrorMap: Map<string, ProgramErrorConstructor> = new Map();\n\n/** Unauthorized */\nexport class UnauthorizedError extends ProgramError {\n override readonly name: string = 'Unauthorized';\n\n readonly code: number = 0x1770; // 6000\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1770, UnauthorizedError);\nnameToErrorMap.set('Unauthorized', UnauthorizedError);\n\n/** InvalidSender */\nexport class InvalidSenderError extends ProgramError {\n override readonly name: string = 'InvalidSender';\n\n readonly code: number = 0x1771; // 6001\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1771, InvalidSenderError);\nnameToErrorMap.set('InvalidSender', InvalidSenderError);\n\n/** InvalidDecimals */\nexport class InvalidDecimalsError extends ProgramError {\n override readonly name: string = 'InvalidDecimals';\n\n readonly code: number = 0x1772; // 6002\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1772, InvalidDecimalsError);\nnameToErrorMap.set('InvalidDecimals', InvalidDecimalsError);\n\n/** SlippageExceeded */\nexport class SlippageExceededError extends ProgramError {\n override readonly name: string = 'SlippageExceeded';\n\n readonly code: number = 0x1773; // 6003\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1773, SlippageExceededError);\nnameToErrorMap.set('SlippageExceeded', SlippageExceededError);\n\n/** InvalidTokenDest */\nexport class InvalidTokenDestError extends ProgramError {\n override readonly name: string = 'InvalidTokenDest';\n\n readonly code: number = 0x1774; // 6004\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1774, InvalidTokenDestError);\nnameToErrorMap.set('InvalidTokenDest', InvalidTokenDestError);\n\n/** RateLimitExceeded */\nexport class RateLimitExceededError extends ProgramError {\n override readonly name: string = 'RateLimitExceeded';\n\n readonly code: number = 0x1775; // 6005\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1775, RateLimitExceededError);\nnameToErrorMap.set('RateLimitExceeded', RateLimitExceededError);\n\n/** InvalidFee */\nexport class InvalidFeeError extends ProgramError {\n override readonly name: string = 'InvalidFee';\n\n readonly code: number = 0x1776; // 6006\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1776, InvalidFeeError);\nnameToErrorMap.set('InvalidFee', InvalidFeeError);\n\n/** InvalidMintAuthority */\nexport class InvalidMintAuthorityError extends ProgramError {\n override readonly name: string = 'InvalidMintAuthority';\n\n readonly code: number = 0x1777; // 6007\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1777, InvalidMintAuthorityError);\nnameToErrorMap.set('InvalidMintAuthority', InvalidMintAuthorityError);\n\n/** Paused */\nexport class PausedError extends ProgramError {\n override readonly name: string = 'Paused';\n\n readonly code: number = 0x1778; // 6008\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1778, PausedError);\nnameToErrorMap.set('Paused', PausedError);\n\n/**\n * Attempts to resolve a custom program error from the provided error code.\n * @category Errors\n */\nexport function getOftErrorFromCode(\n code: number,\n program: Program,\n cause?: Error\n): ProgramError | null {\n const constructor = codeToErrorMap.get(code);\n return constructor ? new constructor(program, cause) : null;\n}\n\n/**\n * Attempts to resolve a custom program error from the provided error name, i.e. 'Unauthorized'.\n * @category Errors\n */\nexport function getOftErrorFromName(\n name: string,\n program: Program,\n cause?: Error\n): ProgramError | null {\n const constructor = nameToErrorMap.get(name);\n return constructor ? new constructor(program, cause) : null;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './initOft';\nexport * from './lzReceive';\nexport * from './lzReceiveTypes';\nexport * from './oftVersion';\nexport * from './quoteOft';\nexport * from './quoteSend';\nexport * from './send';\nexport * from './setOftConfig';\nexport * from './setPause';\nexport * from './setPeerConfig';\nexport * from './withdrawFee';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n AccountMeta,\n isSigner,\n Pda,\n publicKey,\n PublicKey,\n Signer,\n isPda,\n} from '@metaplex-foundation/umi';\n\n/**\n * Transforms the given object such that the given keys are optional.\n * @internal\n */\nexport type PickPartial<T, K extends keyof T> = Omit<T, K> &\n Partial<Pick<T, K>>;\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n if (value == null) {\n throw new Error('Expected a value but received null or undefined.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectPublicKey(\n value: PublicKey | Pda | Signer | null | undefined\n): PublicKey {\n if (!value) {\n throw new Error('Expected a PublicKey.');\n }\n return publicKey(value, false);\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectPda(\n value: PublicKey | Pda | Signer | null | undefined\n): Pda {\n if (!value || !Array.isArray(value) || !isPda(value)) {\n throw new Error('Expected a PDA.');\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<T = PublicKey | Pda | Signer | null> = {\n isWritable: boolean;\n value: T;\n};\n\n/**\n * Defines a set of instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccounts = Record<string, ResolvedAccount>;\n\n/**\n * Defines a set of instruction account to resolve with their indices.\n * @internal\n */\nexport type ResolvedAccountsWithIndices = Record<\n string,\n ResolvedAccount & { index: number }\n>;\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetasAndSigners(\n accounts: ResolvedAccount[],\n optionalAccountStrategy: 'omitted' | 'programId',\n programId: PublicKey\n): [AccountMeta[], Signer[]] {\n const keys: AccountMeta[] = [];\n const signers: Signer[] = [];\n\n accounts.forEach((account) => {\n if (!account.value) {\n if (optionalAccountStrategy === 'omitted') return;\n keys.push({ pubkey: programId, isSigner: false, isWritable: false });\n return;\n }\n\n if (isSigner(account.value)) {\n signers.push(account.value);\n }\n keys.push({\n pubkey: publicKey(account.value, false),\n isSigner: isSigner(account.value),\n isWritable: account.isWritable,\n });\n });\n\n return [keys, signers];\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n option,\n publicKey as publicKeySerializer,\n struct,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport { OFTType, OFTTypeArgs, getOFTTypeSerializer } from '../types';\n\n// Accounts.\nexport type InitOftInstructionAccounts = {\n payer?: Signer;\n oftStore: PublicKey | Pda;\n lzReceiveTypesAccounts: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenEscrow: Signer;\n tokenProgram?: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type InitOftInstructionData = {\n discriminator: Uint8Array;\n oftType: OFTType;\n admin: PublicKey;\n sharedDecimals: number;\n endpointProgram: Option<PublicKey>;\n};\n\nexport type InitOftInstructionDataArgs = {\n oftType: OFTTypeArgs;\n admin: PublicKey;\n sharedDecimals: number;\n endpointProgram: OptionOrNullable<PublicKey>;\n};\n\nexport function getInitOftInstructionDataSerializer(): Serializer<\n InitOftInstructionDataArgs,\n InitOftInstructionData\n> {\n return mapSerializer<InitOftInstructionDataArgs, any, InitOftInstructionData>(\n struct<InitOftInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftType', getOFTTypeSerializer()],\n ['admin', publicKeySerializer()],\n ['sharedDecimals', u8()],\n ['endpointProgram', option(publicKeySerializer())],\n ],\n { description: 'InitOftInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([182, 169, 147, 16, 201, 45, 76, 23]),\n })\n ) as Serializer<InitOftInstructionDataArgs, InitOftInstructionData>;\n}\n\n// Args.\nexport type InitOftInstructionArgs = InitOftInstructionDataArgs;\n\n// Instruction.\nexport function initOft(\n context: Pick<Context, 'payer' | 'programs'>,\n input: InitOftInstructionAccounts & InitOftInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n payer: {\n index: 0,\n isWritable: true as boolean,\n value: input.payer ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n lzReceiveTypesAccounts: {\n index: 2,\n isWritable: true as boolean,\n value: input.lzReceiveTypesAccounts ?? null,\n },\n tokenMint: {\n index: 3,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n tokenEscrow: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenProgram: {\n index: 5,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n systemProgram: {\n index: 6,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: InitOftInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.payer.value) {\n resolvedAccounts.payer.value = context.payer;\n }\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getInitOftInstructionDataSerializer().serialize(\n resolvedArgs as InitOftInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n LzReceiveParams,\n LzReceiveParamsArgs,\n getLzReceiveParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type LzReceiveInstructionAccounts = {\n payer?: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n toAddress: PublicKey | Pda;\n tokenDest: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n mintAuthority?: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n associatedTokenProgram: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n eventAuthority: PublicKey | Pda;\n program: PublicKey | Pda;\n};\n\n// Data.\nexport type LzReceiveInstructionData = {\n discriminator: Uint8Array;\n params: LzReceiveParams;\n};\n\nexport type LzReceiveInstructionDataArgs = { params: LzReceiveParamsArgs };\n\nexport function getLzReceiveInstructionDataSerializer(): Serializer<\n LzReceiveInstructionDataArgs,\n LzReceiveInstructionData\n> {\n return mapSerializer<\n LzReceiveInstructionDataArgs,\n any,\n LzReceiveInstructionData\n >(\n struct<LzReceiveInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getLzReceiveParamsSerializer()],\n ],\n { description: 'LzReceiveInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([8, 179, 120, 109, 33, 118, 189, 80]),\n })\n ) as Serializer<LzReceiveInstructionDataArgs, LzReceiveInstructionData>;\n}\n\n// Args.\nexport type LzReceiveInstructionArgs = LzReceiveInstructionDataArgs;\n\n// Instruction.\nexport function lzReceive(\n context: Pick<Context, 'payer' | 'programs'>,\n input: LzReceiveInstructionAccounts & LzReceiveInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n payer: {\n index: 0,\n isWritable: true as boolean,\n value: input.payer ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n tokenEscrow: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n toAddress: {\n index: 4,\n isWritable: false as boolean,\n value: input.toAddress ?? null,\n },\n tokenDest: {\n index: 5,\n isWritable: true as boolean,\n value: input.tokenDest ?? null,\n },\n tokenMint: {\n index: 6,\n isWritable: true as boolean,\n value: input.tokenMint ?? null,\n },\n mintAuthority: {\n index: 7,\n isWritable: false as boolean,\n value: input.mintAuthority ?? null,\n },\n tokenProgram: {\n index: 8,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n associatedTokenProgram: {\n index: 9,\n isWritable: false as boolean,\n value: input.associatedTokenProgram ?? null,\n },\n systemProgram: {\n index: 10,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n eventAuthority: {\n index: 11,\n isWritable: false as boolean,\n value: input.eventAuthority ?? null,\n },\n program: {\n index: 12,\n isWritable: false as boolean,\n value: input.program ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: LzReceiveInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.payer.value) {\n resolvedAccounts.payer.value = context.payer;\n }\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getLzReceiveInstructionDataSerializer().serialize(\n resolvedArgs as LzReceiveInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n LzReceiveParams,\n LzReceiveParamsArgs,\n getLzReceiveParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type LzReceiveTypesInstructionAccounts = {\n oftStore: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type LzReceiveTypesInstructionData = {\n discriminator: Uint8Array;\n params: LzReceiveParams;\n};\n\nexport type LzReceiveTypesInstructionDataArgs = { params: LzReceiveParamsArgs };\n\nexport function getLzReceiveTypesInstructionDataSerializer(): Serializer<\n LzReceiveTypesInstructionDataArgs,\n LzReceiveTypesInstructionData\n> {\n return mapSerializer<\n LzReceiveTypesInstructionDataArgs,\n any,\n LzReceiveTypesInstructionData\n >(\n struct<LzReceiveTypesInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getLzReceiveParamsSerializer()],\n ],\n { description: 'LzReceiveTypesInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([221, 17, 246, 159, 248, 128, 31, 96]),\n })\n ) as Serializer<\n LzReceiveTypesInstructionDataArgs,\n LzReceiveTypesInstructionData\n >;\n}\n\n// Args.\nexport type LzReceiveTypesInstructionArgs = LzReceiveTypesInstructionDataArgs;\n\n// Instruction.\nexport function lzReceiveTypes(\n context: Pick<Context, 'programs'>,\n input: LzReceiveTypesInstructionAccounts & LzReceiveTypesInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n tokenMint: {\n index: 1,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: LzReceiveTypesInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getLzReceiveTypesInstructionDataSerializer().serialize(\n resolvedArgs as LzReceiveTypesInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Data.\nexport type OftVersionInstructionData = { discriminator: Uint8Array };\n\nexport type OftVersionInstructionDataArgs = {};\n\nexport function getOftVersionInstructionDataSerializer(): Serializer<\n OftVersionInstructionDataArgs,\n OftVersionInstructionData\n> {\n return mapSerializer<\n OftVersionInstructionDataArgs,\n any,\n OftVersionInstructionData\n >(\n struct<OftVersionInstructionData>([['discriminator', bytes({ size: 8 })]], {\n description: 'OftVersionInstructionData',\n }),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([179, 115, 253, 187, 88, 22, 80, 64]),\n })\n ) as Serializer<OftVersionInstructionDataArgs, OftVersionInstructionData>;\n}\n\n// Instruction.\nexport function oftVersion(\n context: Pick<Context, 'programs'>\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {} satisfies ResolvedAccountsWithIndices;\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts as ResolvedAccountsWithIndices\n );\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getOftVersionInstructionDataSerializer().serialize({});\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type QuoteOftInstructionAccounts = {\n oftStore: PublicKey | Pda;\n peer: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type QuoteOftInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n composeMsg: Option<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport type QuoteOftInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n composeMsg: OptionOrNullable<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport function getQuoteOftInstructionDataSerializer(): Serializer<\n QuoteOftInstructionDataArgs,\n QuoteOftInstructionData\n> {\n return mapSerializer<\n QuoteOftInstructionDataArgs,\n any,\n QuoteOftInstructionData\n >(\n struct<QuoteOftInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['composeMsg', option(bytes({ size: u32() }))],\n ['payInLzToken', bool()],\n ],\n { description: 'QuoteOftInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([179, 255, 92, 202, 251, 82, 82, 118]),\n })\n ) as Serializer<QuoteOftInstructionDataArgs, QuoteOftInstructionData>;\n}\n\n// Args.\nexport type QuoteOftInstructionArgs = QuoteOftInstructionDataArgs;\n\n// Instruction.\nexport function quoteOft(\n context: Pick<Context, 'programs'>,\n input: QuoteOftInstructionAccounts & QuoteOftInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n peer: { index: 1, isWritable: false as boolean, value: input.peer ?? null },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: QuoteOftInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getQuoteOftInstructionDataSerializer().serialize(\n resolvedArgs as QuoteOftInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type QuoteSendInstructionAccounts = {\n oftStore: PublicKey | Pda;\n peer: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type QuoteSendInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n composeMsg: Option<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport type QuoteSendInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n composeMsg: OptionOrNullable<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport function getQuoteSendInstructionDataSerializer(): Serializer<\n QuoteSendInstructionDataArgs,\n QuoteSendInstructionData\n> {\n return mapSerializer<\n QuoteSendInstructionDataArgs,\n any,\n QuoteSendInstructionData\n >(\n struct<QuoteSendInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['composeMsg', option(bytes({ size: u32() }))],\n ['payInLzToken', bool()],\n ],\n { description: 'QuoteSendInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([207, 0, 49, 214, 160, 211, 76, 211]),\n })\n ) as Serializer<QuoteSendInstructionDataArgs, QuoteSendInstructionData>;\n}\n\n// Args.\nexport type QuoteSendInstructionArgs = QuoteSendInstructionDataArgs;\n\n// Instruction.\nexport function quoteSend(\n context: Pick<Context, 'programs'>,\n input: QuoteSendInstructionAccounts & QuoteSendInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n peer: { index: 1, isWritable: false as boolean, value: input.peer ?? null },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: QuoteSendInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getQuoteSendInstructionDataSerializer().serialize(\n resolvedArgs as QuoteSendInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type SendInstructionAccounts = {\n signer: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n tokenSource: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n eventAuthority: PublicKey | Pda;\n program: PublicKey | Pda;\n};\n\n// Data.\nexport type SendInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n composeMsg: Option<Uint8Array>;\n nativeFee: bigint;\n lzTokenFee: bigint;\n};\n\nexport type SendInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n composeMsg: OptionOrNullable<Uint8Array>;\n nativeFee: number | bigint;\n lzTokenFee: number | bigint;\n};\n\nexport function getSendInstructionDataSerializer(): Serializer<\n SendInstructionDataArgs,\n SendInstructionData\n> {\n return mapSerializer<SendInstructionDataArgs, any, SendInstructionData>(\n struct<SendInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['composeMsg', option(bytes({ size: u32() }))],\n ['nativeFee', u64()],\n ['lzTokenFee', u64()],\n ],\n { description: 'SendInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([102, 251, 20, 187, 65, 75, 12, 69]),\n })\n ) as Serializer<SendInstructionDataArgs, SendInstructionData>;\n}\n\n// Args.\nexport type SendInstructionArgs = SendInstructionDataArgs;\n\n// Instruction.\nexport function send(\n context: Pick<Context, 'programs'>,\n input: SendInstructionAccounts & SendInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n signer: {\n index: 0,\n isWritable: false as boolean,\n value: input.signer ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n tokenSource: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenSource ?? null,\n },\n tokenEscrow: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenMint: {\n index: 5,\n isWritable: true as boolean,\n value: input.tokenMint ?? null,\n },\n tokenProgram: {\n index: 6,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n eventAuthority: {\n index: 7,\n isWritable: false as boolean,\n value: input.eventAuthority ?? null,\n },\n program: {\n index: 8,\n isWritable: false as boolean,\n value: input.program ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SendInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSendInstructionDataSerializer().serialize(\n resolvedArgs as SendInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n SetOFTConfigParams,\n SetOFTConfigParamsArgs,\n getSetOFTConfigParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type SetOftConfigInstructionAccounts = {\n admin: Signer;\n oftStore: PublicKey | Pda;\n};\n\n// Data.\nexport type SetOftConfigInstructionData = {\n discriminator: Uint8Array;\n params: SetOFTConfigParams;\n};\n\nexport type SetOftConfigInstructionDataArgs = {\n params: SetOFTConfigParamsArgs;\n};\n\nexport function getSetOftConfigInstructionDataSerializer(): Serializer<\n SetOftConfigInstructionDataArgs,\n SetOftConfigInstructionData\n> {\n return mapSerializer<\n SetOftConfigInstructionDataArgs,\n any,\n SetOftConfigInstructionData\n >(\n struct<SetOftConfigInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getSetOFTConfigParamsSerializer()],\n ],\n { description: 'SetOftConfigInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([55, 126, 87, 217, 159, 66, 24, 194]),\n })\n ) as Serializer<SetOftConfigInstructionDataArgs, SetOftConfigInstructionData>;\n}\n\n// Args.\nexport type SetOftConfigInstructionArgs = SetOftConfigInstructionDataArgs;\n\n// Instruction.\nexport function setOftConfig(\n context: Pick<Context, 'programs'>,\n input: SetOftConfigInstructionAccounts & SetOftConfigInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: false as boolean,\n value: input.admin ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetOftConfigInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetOftConfigInstructionDataSerializer().serialize(\n resolvedArgs as SetOftConfigInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type SetPauseInstructionAccounts = {\n /** pauser or unpauser */\n signer: Signer;\n oftStore: PublicKey | Pda;\n};\n\n// Data.\nexport type SetPauseInstructionData = {\n discriminator: Uint8Array;\n paused: boolean;\n};\n\nexport type SetPauseInstructionDataArgs = { paused: boolean };\n\nexport function getSetPauseInstructionDataSerializer(): Serializer<\n SetPauseInstructionDataArgs,\n SetPauseInstructionData\n> {\n return mapSerializer<\n SetPauseInstructionDataArgs,\n any,\n SetPauseInstructionData\n >(\n struct<SetPauseInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['paused', bool()],\n ],\n { description: 'SetPauseInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([63, 32, 154, 2, 56, 103, 79, 45]),\n })\n ) as Serializer<SetPauseInstructionDataArgs, SetPauseInstructionData>;\n}\n\n// Args.\nexport type SetPauseInstructionArgs = SetPauseInstructionDataArgs;\n\n// Instruction.\nexport function setPause(\n context: Pick<Context, 'programs'>,\n input: SetPauseInstructionAccounts & SetPauseInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n signer: {\n index: 0,\n isWritable: false as boolean,\n value: input.signer ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetPauseInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetPauseInstructionDataSerializer().serialize(\n resolvedArgs as SetPauseInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n u32,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n PeerConfigParam,\n PeerConfigParamArgs,\n getPeerConfigParamSerializer,\n} from '../types';\n\n// Accounts.\nexport type SetPeerConfigInstructionAccounts = {\n admin: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type SetPeerConfigInstructionData = {\n discriminator: Uint8Array;\n remoteEid: number;\n config: PeerConfigParam;\n};\n\nexport type SetPeerConfigInstructionDataArgs = {\n remoteEid: number;\n config: PeerConfigParamArgs;\n};\n\nexport function getSetPeerConfigInstructionDataSerializer(): Serializer<\n SetPeerConfigInstructionDataArgs,\n SetPeerConfigInstructionData\n> {\n return mapSerializer<\n SetPeerConfigInstructionDataArgs,\n any,\n SetPeerConfigInstructionData\n >(\n struct<SetPeerConfigInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['remoteEid', u32()],\n ['config', getPeerConfigParamSerializer()],\n ],\n { description: 'SetPeerConfigInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([79, 187, 168, 57, 139, 140, 93, 47]),\n })\n ) as Serializer<\n SetPeerConfigInstructionDataArgs,\n SetPeerConfigInstructionData\n >;\n}\n\n// Args.\nexport type SetPeerConfigInstructionArgs = SetPeerConfigInstructionDataArgs;\n\n// Instruction.\nexport function setPeerConfig(\n context: Pick<Context, 'programs'>,\n input: SetPeerConfigInstructionAccounts & SetPeerConfigInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: true as boolean,\n value: input.admin ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n systemProgram: {\n index: 3,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetPeerConfigInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetPeerConfigInstructionDataSerializer().serialize(\n resolvedArgs as SetPeerConfigInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type WithdrawFeeInstructionAccounts = {\n admin: Signer;\n oftStore: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n tokenDest: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type WithdrawFeeInstructionData = {\n discriminator: Uint8Array;\n feeLd: bigint;\n};\n\nexport type WithdrawFeeInstructionDataArgs = { feeLd: number | bigint };\n\nexport function getWithdrawFeeInstructionDataSerializer(): Serializer<\n WithdrawFeeInstructionDataArgs,\n WithdrawFeeInstructionData\n> {\n return mapSerializer<\n WithdrawFeeInstructionDataArgs,\n any,\n WithdrawFeeInstructionData\n >(\n struct<WithdrawFeeInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['feeLd', u64()],\n ],\n { description: 'WithdrawFeeInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([14, 122, 231, 218, 31, 238, 223, 150]),\n })\n ) as Serializer<WithdrawFeeInstructionDataArgs, WithdrawFeeInstructionData>;\n}\n\n// Args.\nexport type WithdrawFeeInstructionArgs = WithdrawFeeInstructionDataArgs;\n\n// Instruction.\nexport function withdrawFee(\n context: Pick<Context, 'programs'>,\n input: WithdrawFeeInstructionAccounts & WithdrawFeeInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: false as boolean,\n value: input.admin ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n tokenEscrow: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenDest: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenDest ?? null,\n },\n tokenProgram: {\n index: 5,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: WithdrawFeeInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getWithdrawFeeInstructionDataSerializer().serialize(\n resolvedArgs as WithdrawFeeInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","import { PublicKey, publicKeyBytes } from '@metaplex-foundation/umi'\nimport { Endian, u32 } from '@metaplex-foundation/umi/serializers'\nimport { createWeb3JsEddsa } from '@metaplex-foundation/umi-eddsa-web3js'\n\nimport { LZ_RECEIVE_TYPES_SEED } from '@layerzerolabs/lz-solana-sdk-v2'\n\nimport { OFT_SEED, PEER_SEED } from './consts'\n\nconst eddsa = createWeb3JsEddsa()\n\nexport class OftPDA {\n constructor(public readonly program: PublicKey) {}\n\n config(): [PublicKey, number] {\n return eddsa.findPda(this.program, [Buffer.from('OftConfig', 'utf8')])\n }\n\n peer(oftStore: PublicKey, eid: number): [PublicKey, number] {\n return eddsa.findPda(this.program, [\n Buffer.from(PEER_SEED, 'utf8'),\n publicKeyBytes(oftStore),\n u32({ endian: Endian.Big }).serialize(eid),\n // new BN(eid).toArrayLike(Buffer, 'be', 4),\n ])\n }\n\n oftStore(escrow: PublicKey): [PublicKey, number] {\n return eddsa.findPda(this.program, [Buffer.from(OFT_SEED, 'utf8'), publicKeyBytes(escrow)])\n }\n\n lzReceiveTypesAccounts(oftConfig: PublicKey): [PublicKey, number] {\n return eddsa.findPda(this.program, [Buffer.from(LZ_RECEIVE_TYPES_SEED, 'utf8'), publicKeyBytes(oftConfig)])\n }\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './oft';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n ClusterFilter,\n Context,\n Program,\n PublicKey,\n} from '@metaplex-foundation/umi';\nimport { getOftErrorFromCode, getOftErrorFromName } from '../errors';\n\nexport const OFT_PROGRAM_ID = '' as PublicKey<''>;\n\nexport function createOftProgram(): Program {\n return {\n name: 'oft',\n publicKey: OFT_PROGRAM_ID,\n getErrorFromCode(code: number, cause?: Error) {\n return getOftErrorFromCode(code, this, cause);\n },\n getErrorFromName(name: string, cause?: Error) {\n return getOftErrorFromName(name, this, cause);\n },\n isOnCluster() {\n return true;\n },\n };\n}\n\nexport function getOftProgram<T extends Program = Program>(\n context: Pick<Context, 'programs'>,\n clusterFilter?: ClusterFilter\n): T {\n return context.programs.get<T>('oft', clusterFilter);\n}\n\nexport function getOftProgramId(\n context: Pick<Context, 'programs'>,\n clusterFilter?: ClusterFilter\n): PublicKey {\n return context.programs.getPublicKey('oft', OFT_PROGRAM_ID, clusterFilter);\n}\n","/* eslint-disable @typescript-eslint/require-await */\n\n// 1. init native OFT from existing mint\n// 2. init adapter OFT from existing mint, optionally an existing escrow\n// 3. Wire a peer\n// 4. Set the DVN etc. options\nimport {\n AccountMeta,\n Cluster,\n Program,\n ProgramError,\n ProgramRepositoryInterface,\n PublicKey,\n RpcInterface,\n Signer,\n WrappedInstruction,\n createNullRpc,\n none,\n some,\n} from '@metaplex-foundation/umi'\nimport { createDefaultProgramRepository } from '@metaplex-foundation/umi-program-repository'\nimport { fromWeb3JsPublicKey, toWeb3JsInstruction, toWeb3JsPublicKey } from '@metaplex-foundation/umi-web3js-adapters'\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token'\nimport { ComputeBudgetProgram } from '@solana/web3.js'\n\nimport {\n EndpointProgram,\n EventPDA,\n SimpleMessageLibProgram,\n SolanaPacketPath,\n UlnProgram,\n simulateWeb3JsTransaction,\n} from '@layerzerolabs/lz-solana-sdk-v2/umi'\n\nimport { OFT_DECIMALS } from './consts'\nimport * as OFTAccounts from './generated/oft202/accounts'\nimport * as errors from './generated/oft202/errors'\nimport * as instructions from './generated/oft202/instructions'\nimport * as types from './generated/oft202/types/index'\nimport { OftPDA } from './pda'\nimport {\n SetOFTConfigParams,\n SetPeerAddressParam,\n SetPeerEnforcedOptionsParam,\n SetPeerFeeBpsParam,\n SetPeerIsEndpointV1Param,\n SetPeerRateLimitParam,\n} from './types'\n\nexport {\n initSendLibrary,\n initReceiveLibrary,\n setSendLibrary,\n setReceiveLibrary,\n initConfig,\n setConfig,\n initOAppNonce,\n getEndpointConfig,\n getPeerAddress,\n getDelegate,\n getEnforcedOptions,\n} from './oft302'\n\nexport * as accounts from './generated/oft202/accounts'\nexport * as instructions from './generated/oft202/instructions'\nexport * as programs from './generated/oft202/programs'\nexport * as shared from './generated/oft202/shared'\nexport * as types from './generated/oft202/types/index'\nexport * as errors from './generated/oft202/errors'\n\nconst { ENDPOINT_PROGRAM_ID } = EndpointProgram\nconst PROGRAM_NAME = 'oft'\n\nexport function createOFTProgramRepo(oftProgram: PublicKey, rpc?: RpcInterface): ProgramRepositoryInterface {\n if (rpc === undefined) {\n rpc = createNullRpc()\n rpc.getCluster = (): Cluster => 'custom'\n }\n return createDefaultProgramRepository({ rpc: rpc }, [\n {\n name: PROGRAM_NAME,\n publicKey: oftProgram,\n getErrorFromCode(code: number, cause?: Error): ProgramError | null {\n return errors.getOftErrorFromCode(code, this, cause)\n },\n getErrorFromName(name: string, cause?: Error): ProgramError | null {\n return errors.getOftErrorFromName(name, this, cause)\n },\n isOnCluster(): boolean {\n return true\n },\n } satisfies Program,\n ])\n}\n\nexport function initOft(\n accounts: { payer: Signer; admin: PublicKey; mint: PublicKey; escrow: Signer },\n oftType: types.OFTType,\n sharedDecimals = OFT_DECIMALS,\n programs: { oft: PublicKey; endpoint?: PublicKey; token?: PublicKey }\n): WrappedInstruction {\n const programsRepo = createOFTProgramRepo(programs.oft)\n const deriver = new OftPDA(programsRepo.getPublicKey(PROGRAM_NAME))\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const { payer, admin, mint, escrow } = accounts\n const [oftStore] = deriver.oftStore(escrow.publicKey)\n const [lzReceiveTypes] = deriver.lzReceiveTypesAccounts(oftStore)\n\n const txBuilder = instructions.initOft(\n {\n payer: payer,\n programs: programsRepo,\n },\n {\n // accounts\n oftStore: oftStore,\n lzReceiveTypesAccounts: lzReceiveTypes,\n tokenMint: mint,\n tokenEscrow: escrow,\n tokenProgram: programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID),\n // params\n oftType: oftType,\n admin: admin,\n sharedDecimals: sharedDecimals,\n endpointProgram: endpoint.programId,\n }\n )\n const retval = txBuilder.addRemainingAccounts(\n endpoint.getRegisterOappIxAccountMetaForCPI(payer.publicKey, oftStore).map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n retval.signers = [payer, escrow]\n return retval\n}\n\nexport function setOFTConfig(\n accounts: {\n oftStore: PublicKey\n admin: Signer\n },\n params: SetOFTConfigParams,\n programs: {\n oft: PublicKey\n endpoint?: PublicKey\n }\n): WrappedInstruction {\n let actualParams: types.SetOFTConfigParamsArgs\n const { oftStore, admin } = accounts\n const remainingAccounts: AccountMeta[] = []\n if (params.__kind === 'Admin') {\n if (params.admin === undefined) {\n throw new Error('Admin is required')\n }\n actualParams = {\n __kind: 'Admin',\n fields: [params.admin],\n }\n } else if (params.__kind === 'Delegate') {\n if (params.delegate === undefined) {\n throw new Error('Delegate is required')\n }\n actualParams = {\n __kind: 'Delegate',\n fields: [params.delegate],\n }\n const endpointProgram = programs.endpoint ?? ENDPOINT_PROGRAM_ID\n const endpointSDK = new EndpointProgram.Endpoint(endpointProgram)\n const keys = endpointSDK.getSetDelegateIxAccountMetaForCPI(oftStore)\n for (const acc of keys) {\n acc.isSigner = false\n }\n remainingAccounts.push(\n {\n pubkey: endpointProgram,\n isSigner: false,\n isWritable: false,\n },\n ...keys\n )\n } else if (params.__kind === 'DefaultFee') {\n if (params.defaultFee === undefined) {\n throw new Error('DefaultFee is required')\n }\n actualParams = {\n __kind: 'DefaultFee',\n fields: [params.defaultFee],\n }\n } else if (params.__kind === 'Paused') {\n if (params.paused === undefined) {\n throw new Error('Paused is required')\n }\n actualParams = {\n __kind: 'Paused',\n fields: [params.paused],\n }\n } else if (params.__kind === 'Pauser') {\n actualParams = {\n __kind: 'Pauser',\n fields: [params.pauser ? some(params.pauser) : none()],\n }\n } else {\n actualParams = {\n __kind: 'Unpauser',\n fields: [params.unpauser ? some(params.unpauser) : none()],\n }\n }\n\n const txBuilder = instructions.setOftConfig(\n { programs: createOFTProgramRepo(programs.oft) },\n {\n admin: admin,\n oftStore: oftStore,\n params: actualParams,\n }\n )\n return txBuilder.addRemainingAccounts(\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n}\n\nexport function setPeerConfig(\n accounts: {\n admin: Signer\n oftStore: PublicKey\n },\n param: (\n | SetPeerAddressParam\n | SetPeerFeeBpsParam\n | SetPeerEnforcedOptionsParam\n | SetPeerRateLimitParam\n | SetPeerIsEndpointV1Param\n ) & {\n remote: number\n },\n oftProgramId: PublicKey | ProgramRepositoryInterface\n): WrappedInstruction {\n const programsRepo = typeof oftProgramId === 'string' ? createOFTProgramRepo(oftProgramId) : oftProgramId\n const { remote: remoteId } = param\n if (remoteId % 30000 == 0) {\n throw new Error('Invalid remote ID')\n }\n const { admin, oftStore } = accounts\n const [peerPda] = new OftPDA(programsRepo.getPublicKey(PROGRAM_NAME)).peer(oftStore, remoteId)\n let config: types.PeerConfigParamArgs\n if (param.__kind === 'PeerAddress') {\n if (param.peer.length !== 32) {\n throw new Error('Peer must be 32 bytes (left-padded with zeroes)')\n }\n config = types.peerConfigParam('PeerAddress', [param.peer])\n } else if (param.__kind === 'FeeBps') {\n config = { __kind: 'FeeBps', fields: [some(param.feeBps)] }\n } else if (param.__kind === 'EnforcedOptions') {\n config = {\n __kind: 'EnforcedOptions',\n send: param.send,\n sendAndCall: param.sendAndCall,\n }\n } else if (param.__kind === 'OutboundRateLimit' || param.__kind === 'InboundRateLimit') {\n config = {\n __kind: param.__kind,\n fields: [\n param.rateLimit\n ? some({\n refillPerSecond: some(param.rateLimit.refillPerSecond),\n capacity: some(param.rateLimit.capacity),\n })\n : null,\n ],\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n } else if (param.__kind === 'IsEndpointV1') {\n config = { __kind: 'IsEndpointV1', fields: [param.isEndpointV1] }\n } else {\n throw new Error('Invalid peer config')\n }\n\n return instructions.setPeerConfig(\n { programs: programsRepo },\n {\n admin: admin,\n peer: peerPda,\n oftStore: oftStore,\n // params\n remoteEid: remoteId,\n config: config,\n }\n ).items[0]\n}\n\n// copied from oft302.ts withdrawFee\nexport function withdrawFee(\n accounts: {\n admin: Signer\n mint: PublicKey\n escrow: PublicKey\n dest: PublicKey\n },\n amount: bigint,\n programs: {\n oft: PublicKey | ProgramRepositoryInterface\n token?: PublicKey\n }\n): WrappedInstruction {\n const { admin, mint, escrow, dest } = accounts\n const programsRepo = typeof programs.oft === 'string' ? createOFTProgramRepo(programs.oft) : programs.oft\n const [oftStore] = new OftPDA(programsRepo.getPublicKey('oft')).oftStore(escrow)\n return instructions.withdrawFee(\n { programs: programsRepo },\n {\n admin: admin,\n tokenEscrow: escrow,\n tokenDest: dest,\n tokenProgram: programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID),\n oftStore: oftStore,\n tokenMint: mint,\n // params\n feeLd: amount,\n }\n ).items[0]\n}\n\nexport async function send(\n rpc: RpcInterface,\n accounts: {\n payer: Signer\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n tokenSource: PublicKey\n peerAddr?: Uint8Array\n },\n sendParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n nativeFee: bigint\n lzTokenFee?: bigint\n composeParams?: {\n composeGas: number | bigint\n composeMsg: Uint8Array\n }\n },\n programs: {\n oft: PublicKey | ProgramRepositoryInterface\n endpoint?: PublicKey // default is ENDPOINT_PROGRAM(76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6)\n token?: PublicKey // default is TOKEN_PROGRAM_ID(TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA)\n },\n remainingAccounts?: AccountMeta[]\n): Promise<WrappedInstruction> {\n const { payer, tokenMint, tokenEscrow, tokenSource } = accounts\n const { dstEid, to, amountLd, minAmountLd, options, composeParams, nativeFee, lzTokenFee } = sendParams\n const programsRepo = typeof programs.oft === 'string' ? createOFTProgramRepo(programs.oft) : programs.oft\n const oftProgramId = programsRepo.getPublicKey(PROGRAM_NAME)\n const deriver = new OftPDA(oftProgramId)\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n\n if (remainingAccounts === undefined || remainingAccounts.length === 0) {\n const peerAddr: Uint8Array =\n accounts.peerAddr ??\n (await OFTAccounts.fetchPeerConfig({ rpc }, peer).then((peerInfo) => peerInfo.peerAddress))\n\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const msgLibProgram = await getSendLibraryProgram(rpc, endpoint, payer.publicKey, oftStore, dstEid)\n const packetPath: SolanaPacketPath = {\n dstEid,\n sender: oftStore,\n receiver: peerAddr,\n }\n remainingAccounts = await endpoint.getSendIXAccountMetaForCPI(rpc, payer.publicKey, {\n path: packetPath,\n msgLibProgram: msgLibProgram,\n })\n }\n\n const [eventAuthorityPDA] = new EventPDA(oftProgramId).eventAuthority()\n const tokenProgram: PublicKey = programs.token ?? fromWeb3JsPublicKey(TOKEN_PROGRAM_ID)\n const txBuilder = instructions.send(\n { programs: programsRepo },\n {\n signer: payer,\n peer: peer,\n oftStore: oftStore,\n tokenSource: tokenSource,\n tokenEscrow: tokenEscrow,\n tokenMint: tokenMint,\n tokenProgram: tokenProgram,\n eventAuthority: eventAuthorityPDA,\n program: oftProgramId,\n // params\n dstEid: dstEid,\n to: to,\n amountLd,\n minAmountLd,\n options: options ?? new Uint8Array(),\n nativeFee,\n lzTokenFee: lzTokenFee ?? 0,\n composeParams: composeParams ?? null,\n }\n )\n\n // Get remaining accounts from msgLib(simple_msgLib or uln)\n return txBuilder.addRemainingAccounts(\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n ).items[0]\n}\n\nexport async function quote(\n rpc: RpcInterface,\n accounts: {\n payer: PublicKey\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n peerAddr?: Uint8Array\n },\n quoteParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n payInLzToken?: boolean\n composeParams?: {\n composeGas: number | bigint\n composeMsg: Uint8Array\n }\n },\n programs: {\n oft: PublicKey | ProgramRepositoryInterface\n endpoint?: PublicKey\n },\n remainingAccounts?: AccountMeta[],\n addressLookupTable?: PublicKey\n): Promise<{ nativeFee: bigint; lzTokenFee: bigint }> {\n const { dstEid, to, amountLd, minAmountLd, options, payInLzToken, composeParams } = quoteParams\n const { payer, tokenMint, tokenEscrow } = accounts\n const programsRepo = typeof programs.oft === 'string' ? createOFTProgramRepo(programs.oft) : programs.oft\n const deriver = new OftPDA(programsRepo.getPublicKey(PROGRAM_NAME))\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n\n if (remainingAccounts === undefined || remainingAccounts.length === 0) {\n const peerAddr: Uint8Array =\n accounts.peerAddr ??\n (await OFTAccounts.fetchPeerConfig({ rpc }, peer).then((peerInfo) => peerInfo.peerAddress))\n\n const endpoint = new EndpointProgram.Endpoint(programs.endpoint ?? ENDPOINT_PROGRAM_ID)\n const messageLib = await getSendLibraryProgram(rpc, endpoint, payer, oftStore, dstEid)\n remainingAccounts = await endpoint.getQuoteIXAccountMetaForCPI(rpc, payer, {\n path: { sender: oftStore, dstEid: dstEid, receiver: peerAddr },\n msgLibProgram: messageLib,\n })\n }\n\n let txBuilder = instructions.quoteSend(\n { programs: programsRepo },\n {\n oftStore: oftStore,\n peer: peer,\n tokenMint: tokenMint,\n // params\n dstEid: dstEid,\n to: to,\n amountLd: amountLd,\n minAmountLd: minAmountLd,\n options: options ?? new Uint8Array(),\n payInLzToken: payInLzToken ?? false,\n composeParams: composeParams ?? null,\n }\n )\n\n txBuilder = txBuilder.addRemainingAccounts(\n // Get remaining accounts from msgLib(simple_msgLib or uln)\n remainingAccounts.map((acc) => {\n return {\n pubkey: acc.pubkey,\n isSigner: acc.isSigner,\n isWritable: acc.isWritable,\n }\n })\n )\n const web3Ix = toWeb3JsInstruction(txBuilder.getInstructions()[0])\n const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({\n units: 1000000,\n })\n return simulateWeb3JsTransaction(\n rpc,\n [modifyComputeUnits, web3Ix],\n web3Ix.programId,\n toWeb3JsPublicKey(payer),\n EndpointProgram.types.getMessagingFeeSerializer(),\n 'confirmed',\n undefined,\n addressLookupTable === undefined ? undefined : toWeb3JsPublicKey(addressLookupTable)\n )\n}\n\nexport async function quoteOft(\n rpc: RpcInterface,\n accounts: {\n payer: PublicKey\n tokenMint: PublicKey\n tokenEscrow: PublicKey\n },\n quoteParams: {\n dstEid: number\n to: Uint8Array\n amountLd: bigint\n minAmountLd: bigint\n options?: Uint8Array\n payInLzToken?: boolean\n composeMsg?: Uint8Array\n },\n oftProgram: PublicKey | ProgramRepositoryInterface\n): Promise<types.QuoteOFTResult> {\n const { payer, tokenMint, tokenEscrow } = accounts\n const { dstEid, to, amountLd, minAmountLd, options, payInLzToken, composeMsg } = quoteParams\n const programsRepo = typeof oftProgram === 'string' ? createOFTProgramRepo(oftProgram) : oftProgram\n const deriver = new OftPDA(programsRepo.getPublicKey(PROGRAM_NAME))\n const [oftStore] = deriver.oftStore(tokenEscrow)\n const [peer] = deriver.peer(oftStore, dstEid)\n const ix = instructions\n .quoteOft(\n { programs: programsRepo },\n {\n oftStore: oftStore,\n peer: peer,\n tokenMint: tokenMint,\n // params\n dstEid: dstEid,\n to: to,\n amountLd: amountLd,\n minAmountLd: minAmountLd,\n options: options ?? new Uint8Array(),\n payInLzToken: payInLzToken ?? false,\n composeMsg: composeMsg ?? null,\n }\n )\n .getInstructions()[0]\n const web3Ix = toWeb3JsInstruction(ix)\n\n return simulateWeb3JsTransaction(\n rpc.getEndpoint(),\n [web3Ix],\n web3Ix.programId,\n toWeb3JsPublicKey(payer),\n types.getQuoteOFTResultSerializer(),\n 'confirmed'\n )\n}\n\nasync function getSendLibraryProgram(\n rpc: RpcInterface,\n endpoint: EndpointProgram.Endpoint,\n payer: PublicKey,\n oftStore: PublicKey,\n remoteEid: number\n): Promise<SimpleMessageLibProgram.SimpleMessageLib | UlnProgram.Uln> {\n const sendLibInfo = await endpoint.getSendLibrary(rpc, oftStore, remoteEid)\n if (!sendLibInfo.programId) {\n throw new Error('Send library not initialized or blocked message library')\n }\n const { programId: msgLibProgram } = sendLibInfo\n const msgLibVersion = await endpoint.getMessageLibVersion(rpc, payer, msgLibProgram)\n if (msgLibVersion.major.toString() === '0' && msgLibVersion.minor == 0 && msgLibVersion.endpointVersion == 2) {\n return new SimpleMessageLibProgram.SimpleMessageLib(msgLibProgram)\n } else if (\n msgLibVersion.major.toString() === '3' &&\n msgLibVersion.minor == 0 &&\n msgLibVersion.endpointVersion == 2\n ) {\n return new UlnProgram.Uln(msgLibProgram)\n }\n throw new Error(`Unsupported message library version: ${JSON.stringify(msgLibVersion, null, 2)}`)\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './lzReceiveTypesAccounts';\nexport * from './oFTStore';\nexport * from './peerConfig';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n publicKey as publicKeySerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\n\n/**\n * LzReceiveTypesAccounts includes accounts that are used in the LzReceiveTypes\n * instruction.\n */\n\nexport type LzReceiveTypesAccounts = Account<LzReceiveTypesAccountsAccountData>;\n\nexport type LzReceiveTypesAccountsAccountData = {\n discriminator: Uint8Array;\n oftStore: PublicKey;\n tokenMint: PublicKey;\n};\n\nexport type LzReceiveTypesAccountsAccountDataArgs = {\n oftStore: PublicKey;\n tokenMint: PublicKey;\n};\n\nexport function getLzReceiveTypesAccountsAccountDataSerializer(): Serializer<\n LzReceiveTypesAccountsAccountDataArgs,\n LzReceiveTypesAccountsAccountData\n> {\n return mapSerializer<\n LzReceiveTypesAccountsAccountDataArgs,\n any,\n LzReceiveTypesAccountsAccountData\n >(\n struct<LzReceiveTypesAccountsAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftStore', publicKeySerializer()],\n ['tokenMint', publicKeySerializer()],\n ],\n { description: 'LzReceiveTypesAccountsAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([248, 87, 167, 117, 5, 251, 21, 126]),\n })\n ) as Serializer<\n LzReceiveTypesAccountsAccountDataArgs,\n LzReceiveTypesAccountsAccountData\n >;\n}\n\nexport function deserializeLzReceiveTypesAccounts(\n rawAccount: RpcAccount\n): LzReceiveTypesAccounts {\n return deserializeAccount(\n rawAccount,\n getLzReceiveTypesAccountsAccountDataSerializer()\n );\n}\n\nexport async function fetchLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<LzReceiveTypesAccounts> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'LzReceiveTypesAccounts');\n return deserializeLzReceiveTypesAccounts(maybeAccount);\n}\n\nexport async function safeFetchLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<LzReceiveTypesAccounts | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists\n ? deserializeLzReceiveTypesAccounts(maybeAccount)\n : null;\n}\n\nexport async function fetchAllLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<LzReceiveTypesAccounts[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'LzReceiveTypesAccounts');\n return deserializeLzReceiveTypesAccounts(maybeAccount);\n });\n}\n\nexport async function safeFetchAllLzReceiveTypesAccounts(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<LzReceiveTypesAccounts[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) =>\n deserializeLzReceiveTypesAccounts(maybeAccount as RpcAccount)\n );\n}\n\nexport function getLzReceiveTypesAccountsGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n oftStore: PublicKey;\n tokenMint: PublicKey;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n oftStore: [8, publicKeySerializer()],\n tokenMint: [40, publicKeySerializer()],\n })\n .deserializeUsing<LzReceiveTypesAccounts>((account) =>\n deserializeLzReceiveTypesAccounts(account)\n )\n .whereField(\n 'discriminator',\n new Uint8Array([248, 87, 167, 117, 5, 251, 21, 126])\n );\n}\n\nexport function getLzReceiveTypesAccountsSize(): number {\n return 72;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './composeParams';\nexport * from './enforcedOptions';\nexport * from './lzAccount';\nexport * from './lzReceiveParams';\nexport * from './messagingFee';\nexport * from './oFTFeeDetail';\nexport * from './oFTLimits';\nexport * from './oFTReceipt';\nexport * from './oFTType';\nexport * from './peerConfigParam';\nexport * from './quoteOFTResult';\nexport * from './rateLimiter';\nexport * from './rateLimitParams';\nexport * from './setOFTConfigParams';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n bytes,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type ComposeParams = { composeGas: bigint; composeMsg: Uint8Array };\n\nexport type ComposeParamsArgs = {\n composeGas: number | bigint;\n composeMsg: Uint8Array;\n};\n\nexport function getComposeParamsSerializer(): Serializer<\n ComposeParamsArgs,\n ComposeParams\n> {\n return struct<ComposeParams>(\n [\n ['composeGas', u64()],\n ['composeMsg', bytes({ size: u32() })],\n ],\n { description: 'ComposeParams' }\n ) as Serializer<ComposeParamsArgs, ComposeParams>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n bytes,\n struct,\n u32,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type EnforcedOptions = { send: Uint8Array; sendAndCall: Uint8Array };\n\nexport type EnforcedOptionsArgs = EnforcedOptions;\n\nexport function getEnforcedOptionsSerializer(): Serializer<\n EnforcedOptionsArgs,\n EnforcedOptions\n> {\n return struct<EnforcedOptions>(\n [\n ['send', bytes({ size: u32() })],\n ['sendAndCall', bytes({ size: u32() })],\n ],\n { description: 'EnforcedOptions' }\n ) as Serializer<EnforcedOptionsArgs, EnforcedOptions>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { PublicKey } from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n publicKey as publicKeySerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\n\n/** same to anchor_lang::prelude::AccountMeta */\nexport type LzAccount = {\n pubkey: PublicKey;\n isSigner: boolean;\n isWritable: boolean;\n};\n\nexport type LzAccountArgs = LzAccount;\n\nexport function getLzAccountSerializer(): Serializer<LzAccountArgs, LzAccount> {\n return struct<LzAccount>(\n [\n ['pubkey', publicKeySerializer()],\n ['isSigner', bool()],\n ['isWritable', bool()],\n ],\n { description: 'LzAccount' }\n ) as Serializer<LzAccountArgs, LzAccount>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n bytes,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type LzReceiveParams = {\n srcEid: number;\n sender: Uint8Array;\n nonce: bigint;\n guid: Uint8Array;\n message: Uint8Array;\n extraData: Uint8Array;\n};\n\nexport type LzReceiveParamsArgs = {\n srcEid: number;\n sender: Uint8Array;\n nonce: number | bigint;\n guid: Uint8Array;\n message: Uint8Array;\n extraData: Uint8Array;\n};\n\nexport function getLzReceiveParamsSerializer(): Serializer<\n LzReceiveParamsArgs,\n LzReceiveParams\n> {\n return struct<LzReceiveParams>(\n [\n ['srcEid', u32()],\n ['sender', bytes({ size: 32 })],\n ['nonce', u64()],\n ['guid', bytes({ size: 32 })],\n ['message', bytes({ size: u32() })],\n ['extraData', bytes({ size: u32() })],\n ],\n { description: 'LzReceiveParams' }\n ) as Serializer<LzReceiveParamsArgs, LzReceiveParams>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type MessagingFee = { nativeFee: bigint; lzTokenFee: bigint };\n\nexport type MessagingFeeArgs = {\n nativeFee: number | bigint;\n lzTokenFee: number | bigint;\n};\n\nexport function getMessagingFeeSerializer(): Serializer<\n MessagingFeeArgs,\n MessagingFee\n> {\n return struct<MessagingFee>(\n [\n ['nativeFee', u64()],\n ['lzTokenFee', u64()],\n ],\n { description: 'MessagingFee' }\n ) as Serializer<MessagingFeeArgs, MessagingFee>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n string,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type OFTFeeDetail = { feeAmountLd: bigint; description: string };\n\nexport type OFTFeeDetailArgs = {\n feeAmountLd: number | bigint;\n description: string;\n};\n\nexport function getOFTFeeDetailSerializer(): Serializer<\n OFTFeeDetailArgs,\n OFTFeeDetail\n> {\n return struct<OFTFeeDetail>(\n [\n ['feeAmountLd', u64()],\n ['description', string()],\n ],\n { description: 'OFTFeeDetail' }\n ) as Serializer<OFTFeeDetailArgs, OFTFeeDetail>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type OFTLimits = { minAmountLd: bigint; maxAmountLd: bigint };\n\nexport type OFTLimitsArgs = {\n minAmountLd: number | bigint;\n maxAmountLd: number | bigint;\n};\n\nexport function getOFTLimitsSerializer(): Serializer<OFTLimitsArgs, OFTLimits> {\n return struct<OFTLimits>(\n [\n ['minAmountLd', u64()],\n ['maxAmountLd', u64()],\n ],\n { description: 'OFTLimits' }\n ) as Serializer<OFTLimitsArgs, OFTLimits>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type OFTReceipt = { amountSentLd: bigint; amountReceivedLd: bigint };\n\nexport type OFTReceiptArgs = {\n amountSentLd: number | bigint;\n amountReceivedLd: number | bigint;\n};\n\nexport function getOFTReceiptSerializer(): Serializer<\n OFTReceiptArgs,\n OFTReceipt\n> {\n return struct<OFTReceipt>(\n [\n ['amountSentLd', u64()],\n ['amountReceivedLd', u64()],\n ],\n { description: 'OFTReceipt' }\n ) as Serializer<OFTReceiptArgs, OFTReceipt>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, scalarEnum } from '@metaplex-foundation/umi/serializers';\n\nexport enum OFTType {\n Native,\n Adapter,\n}\n\nexport type OFTTypeArgs = OFTType;\n\nexport function getOFTTypeSerializer(): Serializer<OFTTypeArgs, OFTType> {\n return scalarEnum<OFTType>(OFTType, { description: 'OFTType' }) as Serializer<\n OFTTypeArgs,\n OFTType\n >;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable } from '@metaplex-foundation/umi';\nimport {\n GetDataEnumKind,\n GetDataEnumKindContent,\n Serializer,\n bool,\n bytes,\n dataEnum,\n option,\n struct,\n tuple,\n u16,\n u32,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n RateLimitParams,\n RateLimitParamsArgs,\n getRateLimitParamsSerializer,\n} from '.';\n\nexport type PeerConfigParam =\n | { __kind: 'PeerAddress'; fields: [Uint8Array] }\n | { __kind: 'FeeBps'; fields: [Option<number>] }\n | { __kind: 'EnforcedOptions'; send: Uint8Array; sendAndCall: Uint8Array }\n | { __kind: 'OutboundRateLimit'; fields: [Option<RateLimitParams>] }\n | { __kind: 'InboundRateLimit'; fields: [Option<RateLimitParams>] }\n | { __kind: 'IsEndpointV1'; fields: [boolean] };\n\nexport type PeerConfigParamArgs =\n | { __kind: 'PeerAddress'; fields: [Uint8Array] }\n | { __kind: 'FeeBps'; fields: [OptionOrNullable<number>] }\n | { __kind: 'EnforcedOptions'; send: Uint8Array; sendAndCall: Uint8Array }\n | {\n __kind: 'OutboundRateLimit';\n fields: [OptionOrNullable<RateLimitParamsArgs>];\n }\n | {\n __kind: 'InboundRateLimit';\n fields: [OptionOrNullable<RateLimitParamsArgs>];\n }\n | { __kind: 'IsEndpointV1'; fields: [boolean] };\n\nexport function getPeerConfigParamSerializer(): Serializer<\n PeerConfigParamArgs,\n PeerConfigParam\n> {\n return dataEnum<PeerConfigParam>(\n [\n [\n 'PeerAddress',\n struct<GetDataEnumKindContent<PeerConfigParam, 'PeerAddress'>>([\n ['fields', tuple([bytes({ size: 32 })])],\n ]),\n ],\n [\n 'FeeBps',\n struct<GetDataEnumKindContent<PeerConfigParam, 'FeeBps'>>([\n ['fields', tuple([option(u16())])],\n ]),\n ],\n [\n 'EnforcedOptions',\n struct<GetDataEnumKindContent<PeerConfigParam, 'EnforcedOptions'>>([\n ['send', bytes({ size: u32() })],\n ['sendAndCall', bytes({ size: u32() })],\n ]),\n ],\n [\n 'OutboundRateLimit',\n struct<GetDataEnumKindContent<PeerConfigParam, 'OutboundRateLimit'>>([\n ['fields', tuple([option(getRateLimitParamsSerializer())])],\n ]),\n ],\n [\n 'InboundRateLimit',\n struct<GetDataEnumKindContent<PeerConfigParam, 'InboundRateLimit'>>([\n ['fields', tuple([option(getRateLimitParamsSerializer())])],\n ]),\n ],\n [\n 'IsEndpointV1',\n struct<GetDataEnumKindContent<PeerConfigParam, 'IsEndpointV1'>>([\n ['fields', tuple([bool()])],\n ]),\n ],\n ],\n { description: 'PeerConfigParam' }\n ) as Serializer<PeerConfigParamArgs, PeerConfigParam>;\n}\n\n// Data Enum Helpers.\nexport function peerConfigParam(\n kind: 'PeerAddress',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'PeerAddress'>['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'PeerAddress'>;\nexport function peerConfigParam(\n kind: 'FeeBps',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'FeeBps'>['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'FeeBps'>;\nexport function peerConfigParam(\n kind: 'EnforcedOptions',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'EnforcedOptions'>\n): GetDataEnumKind<PeerConfigParamArgs, 'EnforcedOptions'>;\nexport function peerConfigParam(\n kind: 'OutboundRateLimit',\n data: GetDataEnumKindContent<\n PeerConfigParamArgs,\n 'OutboundRateLimit'\n >['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'OutboundRateLimit'>;\nexport function peerConfigParam(\n kind: 'InboundRateLimit',\n data: GetDataEnumKindContent<\n PeerConfigParamArgs,\n 'InboundRateLimit'\n >['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'InboundRateLimit'>;\nexport function peerConfigParam(\n kind: 'IsEndpointV1',\n data: GetDataEnumKindContent<PeerConfigParamArgs, 'IsEndpointV1'>['fields']\n): GetDataEnumKind<PeerConfigParamArgs, 'IsEndpointV1'>;\nexport function peerConfigParam<K extends PeerConfigParamArgs['__kind']>(\n kind: K,\n data?: any\n): Extract<PeerConfigParamArgs, { __kind: K }> {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\nexport function isPeerConfigParam<K extends PeerConfigParam['__kind']>(\n kind: K,\n value: PeerConfigParam\n): value is PeerConfigParam & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Serializer,\n array,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n OFTFeeDetail,\n OFTFeeDetailArgs,\n OFTLimits,\n OFTLimitsArgs,\n OFTReceipt,\n OFTReceiptArgs,\n getOFTFeeDetailSerializer,\n getOFTLimitsSerializer,\n getOFTReceiptSerializer,\n} from '.';\n\nexport type QuoteOFTResult = {\n oftLimits: OFTLimits;\n oftFeeDetails: Array<OFTFeeDetail>;\n oftReceipt: OFTReceipt;\n};\n\nexport type QuoteOFTResultArgs = {\n oftLimits: OFTLimitsArgs;\n oftFeeDetails: Array<OFTFeeDetailArgs>;\n oftReceipt: OFTReceiptArgs;\n};\n\nexport function getQuoteOFTResultSerializer(): Serializer<\n QuoteOFTResultArgs,\n QuoteOFTResult\n> {\n return struct<QuoteOFTResult>(\n [\n ['oftLimits', getOFTLimitsSerializer()],\n ['oftFeeDetails', array(getOFTFeeDetailSerializer())],\n ['oftReceipt', getOFTReceiptSerializer()],\n ],\n { description: 'QuoteOFTResult' }\n ) as Serializer<QuoteOFTResultArgs, QuoteOFTResult>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Serializer, struct, u64 } from '@metaplex-foundation/umi/serializers';\n\nexport type RateLimiter = {\n capacity: bigint;\n tokens: bigint;\n refillPerSecond: bigint;\n lastRefillTime: bigint;\n};\n\nexport type RateLimiterArgs = {\n capacity: number | bigint;\n tokens: number | bigint;\n refillPerSecond: number | bigint;\n lastRefillTime: number | bigint;\n};\n\nexport function getRateLimiterSerializer(): Serializer<\n RateLimiterArgs,\n RateLimiter\n> {\n return struct<RateLimiter>(\n [\n ['capacity', u64()],\n ['tokens', u64()],\n ['refillPerSecond', u64()],\n ['lastRefillTime', u64()],\n ],\n { description: 'RateLimiter' }\n ) as Serializer<RateLimiterArgs, RateLimiter>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable } from '@metaplex-foundation/umi';\nimport {\n Serializer,\n option,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type RateLimitParams = {\n refillPerSecond: Option<bigint>;\n capacity: Option<bigint>;\n};\n\nexport type RateLimitParamsArgs = {\n refillPerSecond: OptionOrNullable<number | bigint>;\n capacity: OptionOrNullable<number | bigint>;\n};\n\nexport function getRateLimitParamsSerializer(): Serializer<\n RateLimitParamsArgs,\n RateLimitParams\n> {\n return struct<RateLimitParams>(\n [\n ['refillPerSecond', option(u64())],\n ['capacity', option(u64())],\n ],\n { description: 'RateLimitParams' }\n ) as Serializer<RateLimitParamsArgs, RateLimitParams>;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Option, OptionOrNullable, PublicKey } from '@metaplex-foundation/umi';\nimport {\n GetDataEnumKind,\n GetDataEnumKindContent,\n Serializer,\n bool,\n dataEnum,\n option,\n publicKey as publicKeySerializer,\n struct,\n tuple,\n u16,\n} from '@metaplex-foundation/umi/serializers';\n\nexport type SetOFTConfigParams =\n | { __kind: 'Admin'; fields: [PublicKey] }\n | { __kind: 'Delegate'; fields: [PublicKey] }\n | { __kind: 'DefaultFee'; fields: [number] }\n | { __kind: 'Paused'; fields: [boolean] }\n | { __kind: 'Pauser'; fields: [Option<PublicKey>] }\n | { __kind: 'Unpauser'; fields: [Option<PublicKey>] };\n\nexport type SetOFTConfigParamsArgs =\n | { __kind: 'Admin'; fields: [PublicKey] }\n | { __kind: 'Delegate'; fields: [PublicKey] }\n | { __kind: 'DefaultFee'; fields: [number] }\n | { __kind: 'Paused'; fields: [boolean] }\n | { __kind: 'Pauser'; fields: [OptionOrNullable<PublicKey>] }\n | { __kind: 'Unpauser'; fields: [OptionOrNullable<PublicKey>] };\n\nexport function getSetOFTConfigParamsSerializer(): Serializer<\n SetOFTConfigParamsArgs,\n SetOFTConfigParams\n> {\n return dataEnum<SetOFTConfigParams>(\n [\n [\n 'Admin',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Admin'>>([\n ['fields', tuple([publicKeySerializer()])],\n ]),\n ],\n [\n 'Delegate',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Delegate'>>([\n ['fields', tuple([publicKeySerializer()])],\n ]),\n ],\n [\n 'DefaultFee',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'DefaultFee'>>([\n ['fields', tuple([u16()])],\n ]),\n ],\n [\n 'Paused',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Paused'>>([\n ['fields', tuple([bool()])],\n ]),\n ],\n [\n 'Pauser',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Pauser'>>([\n ['fields', tuple([option(publicKeySerializer())])],\n ]),\n ],\n [\n 'Unpauser',\n struct<GetDataEnumKindContent<SetOFTConfigParams, 'Unpauser'>>([\n ['fields', tuple([option(publicKeySerializer())])],\n ]),\n ],\n ],\n { description: 'SetOFTConfigParams' }\n ) as Serializer<SetOFTConfigParamsArgs, SetOFTConfigParams>;\n}\n\n// Data Enum Helpers.\nexport function setOFTConfigParams(\n kind: 'Admin',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Admin'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Admin'>;\nexport function setOFTConfigParams(\n kind: 'Delegate',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Delegate'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Delegate'>;\nexport function setOFTConfigParams(\n kind: 'DefaultFee',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'DefaultFee'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'DefaultFee'>;\nexport function setOFTConfigParams(\n kind: 'Paused',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Paused'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Paused'>;\nexport function setOFTConfigParams(\n kind: 'Pauser',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Pauser'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Pauser'>;\nexport function setOFTConfigParams(\n kind: 'Unpauser',\n data: GetDataEnumKindContent<SetOFTConfigParamsArgs, 'Unpauser'>['fields']\n): GetDataEnumKind<SetOFTConfigParamsArgs, 'Unpauser'>;\nexport function setOFTConfigParams<K extends SetOFTConfigParamsArgs['__kind']>(\n kind: K,\n data?: any\n): Extract<SetOFTConfigParamsArgs, { __kind: K }> {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\nexport function isSetOFTConfigParams<K extends SetOFTConfigParams['__kind']>(\n kind: K,\n value: SetOFTConfigParams\n): value is SetOFTConfigParams & { __kind: K } {\n return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n publicKey as publicKeySerializer,\n struct,\n u16,\n u64,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport { OFTType, OFTTypeArgs, getOFTTypeSerializer } from '../types';\n\nexport type OFTStore = Account<OFTStoreAccountData>;\n\nexport type OFTStoreAccountData = {\n discriminator: Uint8Array;\n oftType: OFTType;\n ld2sdRate: bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: Option<PublicKey>;\n unpauser: Option<PublicKey>;\n};\n\nexport type OFTStoreAccountDataArgs = {\n oftType: OFTTypeArgs;\n ld2sdRate: number | bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: number | bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: OptionOrNullable<PublicKey>;\n unpauser: OptionOrNullable<PublicKey>;\n};\n\nexport function getOFTStoreAccountDataSerializer(): Serializer<\n OFTStoreAccountDataArgs,\n OFTStoreAccountData\n> {\n return mapSerializer<OFTStoreAccountDataArgs, any, OFTStoreAccountData>(\n struct<OFTStoreAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftType', getOFTTypeSerializer()],\n ['ld2sdRate', u64()],\n ['tokenMint', publicKeySerializer()],\n ['tokenEscrow', publicKeySerializer()],\n ['endpointProgram', publicKeySerializer()],\n ['bump', u8()],\n ['tvlLd', u64()],\n ['admin', publicKeySerializer()],\n ['defaultFeeBps', u16()],\n ['paused', bool()],\n ['pauser', option(publicKeySerializer())],\n ['unpauser', option(publicKeySerializer())],\n ],\n { description: 'OFTStoreAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([195, 215, 104, 134, 185, 195, 240, 114]),\n })\n ) as Serializer<OFTStoreAccountDataArgs, OFTStoreAccountData>;\n}\n\nexport function deserializeOFTStore(rawAccount: RpcAccount): OFTStore {\n return deserializeAccount(rawAccount, getOFTStoreAccountDataSerializer());\n}\n\nexport async function fetchOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<OFTStore> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'OFTStore');\n return deserializeOFTStore(maybeAccount);\n}\n\nexport async function safeFetchOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<OFTStore | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists ? deserializeOFTStore(maybeAccount) : null;\n}\n\nexport async function fetchAllOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<OFTStore[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'OFTStore');\n return deserializeOFTStore(maybeAccount);\n });\n}\n\nexport async function safeFetchAllOFTStore(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<OFTStore[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) => deserializeOFTStore(maybeAccount as RpcAccount));\n}\n\nexport function getOFTStoreGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n oftType: OFTTypeArgs;\n ld2sdRate: number | bigint;\n tokenMint: PublicKey;\n tokenEscrow: PublicKey;\n endpointProgram: PublicKey;\n bump: number;\n tvlLd: number | bigint;\n admin: PublicKey;\n defaultFeeBps: number;\n paused: boolean;\n pauser: OptionOrNullable<PublicKey>;\n unpauser: OptionOrNullable<PublicKey>;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n oftType: [8, getOFTTypeSerializer()],\n ld2sdRate: [9, u64()],\n tokenMint: [17, publicKeySerializer()],\n tokenEscrow: [49, publicKeySerializer()],\n endpointProgram: [81, publicKeySerializer()],\n bump: [113, u8()],\n tvlLd: [114, u64()],\n admin: [122, publicKeySerializer()],\n defaultFeeBps: [154, u16()],\n paused: [156, bool()],\n pauser: [157, option(publicKeySerializer())],\n unpauser: [null, option(publicKeySerializer())],\n })\n .deserializeUsing<OFTStore>((account) => deserializeOFTStore(account))\n .whereField(\n 'discriminator',\n new Uint8Array([195, 215, 104, 134, 185, 195, 240, 114])\n );\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Account,\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n RpcAccount,\n RpcGetAccountOptions,\n RpcGetAccountsOptions,\n assertAccountExists,\n deserializeAccount,\n gpaBuilder,\n publicKey as toPublicKey,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n struct,\n u16,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n EnforcedOptions,\n EnforcedOptionsArgs,\n RateLimiter,\n RateLimiterArgs,\n getEnforcedOptionsSerializer,\n getRateLimiterSerializer,\n} from '../types';\n\nexport type PeerConfig = Account<PeerConfigAccountData>;\n\nexport type PeerConfigAccountData = {\n discriminator: Uint8Array;\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptions;\n outboundRateLimiter: Option<RateLimiter>;\n inboundRateLimiter: Option<RateLimiter>;\n feeBps: Option<number>;\n bump: number;\n isEndpointV1: boolean;\n};\n\nexport type PeerConfigAccountDataArgs = {\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptionsArgs;\n outboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n inboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n feeBps: OptionOrNullable<number>;\n bump: number;\n isEndpointV1: boolean;\n};\n\nexport function getPeerConfigAccountDataSerializer(): Serializer<\n PeerConfigAccountDataArgs,\n PeerConfigAccountData\n> {\n return mapSerializer<PeerConfigAccountDataArgs, any, PeerConfigAccountData>(\n struct<PeerConfigAccountData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['peerAddress', bytes({ size: 32 })],\n ['enforcedOptions', getEnforcedOptionsSerializer()],\n ['outboundRateLimiter', option(getRateLimiterSerializer())],\n ['inboundRateLimiter', option(getRateLimiterSerializer())],\n ['feeBps', option(u16())],\n ['bump', u8()],\n ['isEndpointV1', bool()],\n ],\n { description: 'PeerConfigAccountData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([181, 157, 86, 198, 33, 193, 94, 203]),\n })\n ) as Serializer<PeerConfigAccountDataArgs, PeerConfigAccountData>;\n}\n\nexport function deserializePeerConfig(rawAccount: RpcAccount): PeerConfig {\n return deserializeAccount(rawAccount, getPeerConfigAccountDataSerializer());\n}\n\nexport async function fetchPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<PeerConfig> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n assertAccountExists(maybeAccount, 'PeerConfig');\n return deserializePeerConfig(maybeAccount);\n}\n\nexport async function safeFetchPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKey: PublicKey | Pda,\n options?: RpcGetAccountOptions\n): Promise<PeerConfig | null> {\n const maybeAccount = await context.rpc.getAccount(\n toPublicKey(publicKey, false),\n options\n );\n return maybeAccount.exists ? deserializePeerConfig(maybeAccount) : null;\n}\n\nexport async function fetchAllPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<PeerConfig[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts.map((maybeAccount) => {\n assertAccountExists(maybeAccount, 'PeerConfig');\n return deserializePeerConfig(maybeAccount);\n });\n}\n\nexport async function safeFetchAllPeerConfig(\n context: Pick<Context, 'rpc'>,\n publicKeys: Array<PublicKey | Pda>,\n options?: RpcGetAccountsOptions\n): Promise<PeerConfig[]> {\n const maybeAccounts = await context.rpc.getAccounts(\n publicKeys.map((key) => toPublicKey(key, false)),\n options\n );\n return maybeAccounts\n .filter((maybeAccount) => maybeAccount.exists)\n .map((maybeAccount) => deserializePeerConfig(maybeAccount as RpcAccount));\n}\n\nexport function getPeerConfigGpaBuilder(\n context: Pick<Context, 'rpc' | 'programs'>\n) {\n const programId = context.programs.getPublicKey('oft', '');\n return gpaBuilder(context, programId)\n .registerFields<{\n discriminator: Uint8Array;\n peerAddress: Uint8Array;\n enforcedOptions: EnforcedOptionsArgs;\n outboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n inboundRateLimiter: OptionOrNullable<RateLimiterArgs>;\n feeBps: OptionOrNullable<number>;\n bump: number;\n isEndpointV1: boolean;\n }>({\n discriminator: [0, bytes({ size: 8 })],\n peerAddress: [8, bytes({ size: 32 })],\n enforcedOptions: [40, getEnforcedOptionsSerializer()],\n outboundRateLimiter: [null, option(getRateLimiterSerializer())],\n inboundRateLimiter: [null, option(getRateLimiterSerializer())],\n feeBps: [null, option(u16())],\n bump: [null, u8()],\n isEndpointV1: [null, bool()],\n })\n .deserializeUsing<PeerConfig>((account) => deserializePeerConfig(account))\n .whereField(\n 'discriminator',\n new Uint8Array([181, 157, 86, 198, 33, 193, 94, 203])\n );\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './oft';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport { Program, ProgramError } from '@metaplex-foundation/umi';\n\ntype ProgramErrorConstructor = new (\n program: Program,\n cause?: Error\n) => ProgramError;\nconst codeToErrorMap: Map<number, ProgramErrorConstructor> = new Map();\nconst nameToErrorMap: Map<string, ProgramErrorConstructor> = new Map();\n\n/** Unauthorized */\nexport class UnauthorizedError extends ProgramError {\n override readonly name: string = 'Unauthorized';\n\n readonly code: number = 0x1770; // 6000\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1770, UnauthorizedError);\nnameToErrorMap.set('Unauthorized', UnauthorizedError);\n\n/** InvalidSender */\nexport class InvalidSenderError extends ProgramError {\n override readonly name: string = 'InvalidSender';\n\n readonly code: number = 0x1771; // 6001\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1771, InvalidSenderError);\nnameToErrorMap.set('InvalidSender', InvalidSenderError);\n\n/** InvalidDecimals */\nexport class InvalidDecimalsError extends ProgramError {\n override readonly name: string = 'InvalidDecimals';\n\n readonly code: number = 0x1772; // 6002\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1772, InvalidDecimalsError);\nnameToErrorMap.set('InvalidDecimals', InvalidDecimalsError);\n\n/** SlippageExceeded */\nexport class SlippageExceededError extends ProgramError {\n override readonly name: string = 'SlippageExceeded';\n\n readonly code: number = 0x1773; // 6003\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1773, SlippageExceededError);\nnameToErrorMap.set('SlippageExceeded', SlippageExceededError);\n\n/** InvalidTokenDest */\nexport class InvalidTokenDestError extends ProgramError {\n override readonly name: string = 'InvalidTokenDest';\n\n readonly code: number = 0x1774; // 6004\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1774, InvalidTokenDestError);\nnameToErrorMap.set('InvalidTokenDest', InvalidTokenDestError);\n\n/** RateLimitExceeded */\nexport class RateLimitExceededError extends ProgramError {\n override readonly name: string = 'RateLimitExceeded';\n\n readonly code: number = 0x1775; // 6005\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1775, RateLimitExceededError);\nnameToErrorMap.set('RateLimitExceeded', RateLimitExceededError);\n\n/** InvalidFee */\nexport class InvalidFeeError extends ProgramError {\n override readonly name: string = 'InvalidFee';\n\n readonly code: number = 0x1776; // 6006\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1776, InvalidFeeError);\nnameToErrorMap.set('InvalidFee', InvalidFeeError);\n\n/** InvalidMintAuthority */\nexport class InvalidMintAuthorityError extends ProgramError {\n override readonly name: string = 'InvalidMintAuthority';\n\n readonly code: number = 0x1777; // 6007\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1777, InvalidMintAuthorityError);\nnameToErrorMap.set('InvalidMintAuthority', InvalidMintAuthorityError);\n\n/** Paused */\nexport class PausedError extends ProgramError {\n override readonly name: string = 'Paused';\n\n readonly code: number = 0x1778; // 6008\n\n constructor(program: Program, cause?: Error) {\n super('', program, cause);\n }\n}\ncodeToErrorMap.set(0x1778, PausedError);\nnameToErrorMap.set('Paused', PausedError);\n\n/**\n * Attempts to resolve a custom program error from the provided error code.\n * @category Errors\n */\nexport function getOftErrorFromCode(\n code: number,\n program: Program,\n cause?: Error\n): ProgramError | null {\n const constructor = codeToErrorMap.get(code);\n return constructor ? new constructor(program, cause) : null;\n}\n\n/**\n * Attempts to resolve a custom program error from the provided error name, i.e. 'Unauthorized'.\n * @category Errors\n */\nexport function getOftErrorFromName(\n name: string,\n program: Program,\n cause?: Error\n): ProgramError | null {\n const constructor = nameToErrorMap.get(name);\n return constructor ? new constructor(program, cause) : null;\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './initOft';\nexport * from './lzReceive';\nexport * from './lzReceiveTypes';\nexport * from './quoteOft';\nexport * from './quoteSend';\nexport * from './send';\nexport * from './setOftConfig';\nexport * from './setPause';\nexport * from './setPeerConfig';\nexport * from './withdrawFee';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n AccountMeta,\n isSigner,\n Pda,\n publicKey,\n PublicKey,\n Signer,\n isPda,\n} from '@metaplex-foundation/umi';\n\n/**\n * Transforms the given object such that the given keys are optional.\n * @internal\n */\nexport type PickPartial<T, K extends keyof T> = Omit<T, K> &\n Partial<Pick<T, K>>;\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n if (value == null) {\n throw new Error('Expected a value but received null or undefined.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectPublicKey(\n value: PublicKey | Pda | Signer | null | undefined\n): PublicKey {\n if (!value) {\n throw new Error('Expected a PublicKey.');\n }\n return publicKey(value, false);\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectPda(\n value: PublicKey | Pda | Signer | null | undefined\n): Pda {\n if (!value || !Array.isArray(value) || !isPda(value)) {\n throw new Error('Expected a PDA.');\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<T = PublicKey | Pda | Signer | null> = {\n isWritable: boolean;\n value: T;\n};\n\n/**\n * Defines a set of instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccounts = Record<string, ResolvedAccount>;\n\n/**\n * Defines a set of instruction account to resolve with their indices.\n * @internal\n */\nexport type ResolvedAccountsWithIndices = Record<\n string,\n ResolvedAccount & { index: number }\n>;\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetasAndSigners(\n accounts: ResolvedAccount[],\n optionalAccountStrategy: 'omitted' | 'programId',\n programId: PublicKey\n): [AccountMeta[], Signer[]] {\n const keys: AccountMeta[] = [];\n const signers: Signer[] = [];\n\n accounts.forEach((account) => {\n if (!account.value) {\n if (optionalAccountStrategy === 'omitted') return;\n keys.push({ pubkey: programId, isSigner: false, isWritable: false });\n return;\n }\n\n if (isSigner(account.value)) {\n signers.push(account.value);\n }\n keys.push({\n pubkey: publicKey(account.value, false),\n isSigner: isSigner(account.value),\n isWritable: account.isWritable,\n });\n });\n\n return [keys, signers];\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n option,\n publicKey as publicKeySerializer,\n struct,\n u8,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport { OFTType, OFTTypeArgs, getOFTTypeSerializer } from '../types';\n\n// Accounts.\nexport type InitOftInstructionAccounts = {\n payer?: Signer;\n oftStore: PublicKey | Pda;\n lzReceiveTypesAccounts: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenEscrow: Signer;\n tokenProgram?: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type InitOftInstructionData = {\n discriminator: Uint8Array;\n oftType: OFTType;\n admin: PublicKey;\n sharedDecimals: number;\n endpointProgram: Option<PublicKey>;\n};\n\nexport type InitOftInstructionDataArgs = {\n oftType: OFTTypeArgs;\n admin: PublicKey;\n sharedDecimals: number;\n endpointProgram: OptionOrNullable<PublicKey>;\n};\n\nexport function getInitOftInstructionDataSerializer(): Serializer<\n InitOftInstructionDataArgs,\n InitOftInstructionData\n> {\n return mapSerializer<InitOftInstructionDataArgs, any, InitOftInstructionData>(\n struct<InitOftInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['oftType', getOFTTypeSerializer()],\n ['admin', publicKeySerializer()],\n ['sharedDecimals', u8()],\n ['endpointProgram', option(publicKeySerializer())],\n ],\n { description: 'InitOftInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([182, 169, 147, 16, 201, 45, 76, 23]),\n })\n ) as Serializer<InitOftInstructionDataArgs, InitOftInstructionData>;\n}\n\n// Args.\nexport type InitOftInstructionArgs = InitOftInstructionDataArgs;\n\n// Instruction.\nexport function initOft(\n context: Pick<Context, 'payer' | 'programs'>,\n input: InitOftInstructionAccounts & InitOftInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n payer: {\n index: 0,\n isWritable: true as boolean,\n value: input.payer ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n lzReceiveTypesAccounts: {\n index: 2,\n isWritable: true as boolean,\n value: input.lzReceiveTypesAccounts ?? null,\n },\n tokenMint: {\n index: 3,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n tokenEscrow: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenProgram: {\n index: 5,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n systemProgram: {\n index: 6,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: InitOftInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.payer.value) {\n resolvedAccounts.payer.value = context.payer;\n }\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getInitOftInstructionDataSerializer().serialize(\n resolvedArgs as InitOftInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n LzReceiveParams,\n LzReceiveParamsArgs,\n getLzReceiveParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type LzReceiveInstructionAccounts = {\n payer?: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n toAddress: PublicKey | Pda;\n tokenDest: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n mintAuthority?: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n associatedTokenProgram: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n eventAuthority: PublicKey | Pda;\n program: PublicKey | Pda;\n};\n\n// Data.\nexport type LzReceiveInstructionData = {\n discriminator: Uint8Array;\n params: LzReceiveParams;\n};\n\nexport type LzReceiveInstructionDataArgs = { params: LzReceiveParamsArgs };\n\nexport function getLzReceiveInstructionDataSerializer(): Serializer<\n LzReceiveInstructionDataArgs,\n LzReceiveInstructionData\n> {\n return mapSerializer<\n LzReceiveInstructionDataArgs,\n any,\n LzReceiveInstructionData\n >(\n struct<LzReceiveInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getLzReceiveParamsSerializer()],\n ],\n { description: 'LzReceiveInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([8, 179, 120, 109, 33, 118, 189, 80]),\n })\n ) as Serializer<LzReceiveInstructionDataArgs, LzReceiveInstructionData>;\n}\n\n// Args.\nexport type LzReceiveInstructionArgs = LzReceiveInstructionDataArgs;\n\n// Instruction.\nexport function lzReceive(\n context: Pick<Context, 'payer' | 'programs'>,\n input: LzReceiveInstructionAccounts & LzReceiveInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n payer: {\n index: 0,\n isWritable: true as boolean,\n value: input.payer ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n tokenEscrow: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n toAddress: {\n index: 4,\n isWritable: false as boolean,\n value: input.toAddress ?? null,\n },\n tokenDest: {\n index: 5,\n isWritable: true as boolean,\n value: input.tokenDest ?? null,\n },\n tokenMint: {\n index: 6,\n isWritable: true as boolean,\n value: input.tokenMint ?? null,\n },\n mintAuthority: {\n index: 7,\n isWritable: false as boolean,\n value: input.mintAuthority ?? null,\n },\n tokenProgram: {\n index: 8,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n associatedTokenProgram: {\n index: 9,\n isWritable: false as boolean,\n value: input.associatedTokenProgram ?? null,\n },\n systemProgram: {\n index: 10,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n eventAuthority: {\n index: 11,\n isWritable: false as boolean,\n value: input.eventAuthority ?? null,\n },\n program: {\n index: 12,\n isWritable: false as boolean,\n value: input.program ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: LzReceiveInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.payer.value) {\n resolvedAccounts.payer.value = context.payer;\n }\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getLzReceiveInstructionDataSerializer().serialize(\n resolvedArgs as LzReceiveInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n LzReceiveParams,\n LzReceiveParamsArgs,\n getLzReceiveParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type LzReceiveTypesInstructionAccounts = {\n oftStore: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type LzReceiveTypesInstructionData = {\n discriminator: Uint8Array;\n params: LzReceiveParams;\n};\n\nexport type LzReceiveTypesInstructionDataArgs = { params: LzReceiveParamsArgs };\n\nexport function getLzReceiveTypesInstructionDataSerializer(): Serializer<\n LzReceiveTypesInstructionDataArgs,\n LzReceiveTypesInstructionData\n> {\n return mapSerializer<\n LzReceiveTypesInstructionDataArgs,\n any,\n LzReceiveTypesInstructionData\n >(\n struct<LzReceiveTypesInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getLzReceiveParamsSerializer()],\n ],\n { description: 'LzReceiveTypesInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([221, 17, 246, 159, 248, 128, 31, 96]),\n })\n ) as Serializer<\n LzReceiveTypesInstructionDataArgs,\n LzReceiveTypesInstructionData\n >;\n}\n\n// Args.\nexport type LzReceiveTypesInstructionArgs = LzReceiveTypesInstructionDataArgs;\n\n// Instruction.\nexport function lzReceiveTypes(\n context: Pick<Context, 'programs'>,\n input: LzReceiveTypesInstructionAccounts & LzReceiveTypesInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n tokenMint: {\n index: 1,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: LzReceiveTypesInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getLzReceiveTypesInstructionDataSerializer().serialize(\n resolvedArgs as LzReceiveTypesInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type QuoteOftInstructionAccounts = {\n oftStore: PublicKey | Pda;\n peer: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type QuoteOftInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n composeMsg: Option<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport type QuoteOftInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n composeMsg: OptionOrNullable<Uint8Array>;\n payInLzToken: boolean;\n};\n\nexport function getQuoteOftInstructionDataSerializer(): Serializer<\n QuoteOftInstructionDataArgs,\n QuoteOftInstructionData\n> {\n return mapSerializer<\n QuoteOftInstructionDataArgs,\n any,\n QuoteOftInstructionData\n >(\n struct<QuoteOftInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['composeMsg', option(bytes({ size: u32() }))],\n ['payInLzToken', bool()],\n ],\n { description: 'QuoteOftInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([179, 255, 92, 202, 251, 82, 82, 118]),\n })\n ) as Serializer<QuoteOftInstructionDataArgs, QuoteOftInstructionData>;\n}\n\n// Args.\nexport type QuoteOftInstructionArgs = QuoteOftInstructionDataArgs;\n\n// Instruction.\nexport function quoteOft(\n context: Pick<Context, 'programs'>,\n input: QuoteOftInstructionAccounts & QuoteOftInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n peer: { index: 1, isWritable: false as boolean, value: input.peer ?? null },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: QuoteOftInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getQuoteOftInstructionDataSerializer().serialize(\n resolvedArgs as QuoteOftInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n ComposeParams,\n ComposeParamsArgs,\n getComposeParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type QuoteSendInstructionAccounts = {\n oftStore: PublicKey | Pda;\n peer: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n};\n\n// Data.\nexport type QuoteSendInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n payInLzToken: boolean;\n composeParams: Option<ComposeParams>;\n};\n\nexport type QuoteSendInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n payInLzToken: boolean;\n composeParams: OptionOrNullable<ComposeParamsArgs>;\n};\n\nexport function getQuoteSendInstructionDataSerializer(): Serializer<\n QuoteSendInstructionDataArgs,\n QuoteSendInstructionData\n> {\n return mapSerializer<\n QuoteSendInstructionDataArgs,\n any,\n QuoteSendInstructionData\n >(\n struct<QuoteSendInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['payInLzToken', bool()],\n ['composeParams', option(getComposeParamsSerializer())],\n ],\n { description: 'QuoteSendInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([207, 0, 49, 214, 160, 211, 76, 211]),\n })\n ) as Serializer<QuoteSendInstructionDataArgs, QuoteSendInstructionData>;\n}\n\n// Args.\nexport type QuoteSendInstructionArgs = QuoteSendInstructionDataArgs;\n\n// Instruction.\nexport function quoteSend(\n context: Pick<Context, 'programs'>,\n input: QuoteSendInstructionAccounts & QuoteSendInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n oftStore: {\n index: 0,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n peer: { index: 1, isWritable: false as boolean, value: input.peer ?? null },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: QuoteSendInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getQuoteSendInstructionDataSerializer().serialize(\n resolvedArgs as QuoteSendInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Option,\n OptionOrNullable,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n option,\n struct,\n u32,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n ComposeParams,\n ComposeParamsArgs,\n getComposeParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type SendInstructionAccounts = {\n signer: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n tokenSource: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n eventAuthority: PublicKey | Pda;\n program: PublicKey | Pda;\n};\n\n// Data.\nexport type SendInstructionData = {\n discriminator: Uint8Array;\n dstEid: number;\n to: Uint8Array;\n amountLd: bigint;\n minAmountLd: bigint;\n options: Uint8Array;\n nativeFee: bigint;\n lzTokenFee: bigint;\n composeParams: Option<ComposeParams>;\n};\n\nexport type SendInstructionDataArgs = {\n dstEid: number;\n to: Uint8Array;\n amountLd: number | bigint;\n minAmountLd: number | bigint;\n options: Uint8Array;\n nativeFee: number | bigint;\n lzTokenFee: number | bigint;\n composeParams: OptionOrNullable<ComposeParamsArgs>;\n};\n\nexport function getSendInstructionDataSerializer(): Serializer<\n SendInstructionDataArgs,\n SendInstructionData\n> {\n return mapSerializer<SendInstructionDataArgs, any, SendInstructionData>(\n struct<SendInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['dstEid', u32()],\n ['to', bytes({ size: 32 })],\n ['amountLd', u64()],\n ['minAmountLd', u64()],\n ['options', bytes({ size: u32() })],\n ['nativeFee', u64()],\n ['lzTokenFee', u64()],\n ['composeParams', option(getComposeParamsSerializer())],\n ],\n { description: 'SendInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([102, 251, 20, 187, 65, 75, 12, 69]),\n })\n ) as Serializer<SendInstructionDataArgs, SendInstructionData>;\n}\n\n// Args.\nexport type SendInstructionArgs = SendInstructionDataArgs;\n\n// Instruction.\nexport function send(\n context: Pick<Context, 'programs'>,\n input: SendInstructionAccounts & SendInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n signer: {\n index: 0,\n isWritable: false as boolean,\n value: input.signer ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n tokenSource: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenSource ?? null,\n },\n tokenEscrow: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenMint: {\n index: 5,\n isWritable: true as boolean,\n value: input.tokenMint ?? null,\n },\n tokenProgram: {\n index: 6,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n eventAuthority: {\n index: 7,\n isWritable: false as boolean,\n value: input.eventAuthority ?? null,\n },\n program: {\n index: 8,\n isWritable: false as boolean,\n value: input.program ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SendInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSendInstructionDataSerializer().serialize(\n resolvedArgs as SendInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n SetOFTConfigParams,\n SetOFTConfigParamsArgs,\n getSetOFTConfigParamsSerializer,\n} from '../types';\n\n// Accounts.\nexport type SetOftConfigInstructionAccounts = {\n admin: Signer;\n oftStore: PublicKey | Pda;\n};\n\n// Data.\nexport type SetOftConfigInstructionData = {\n discriminator: Uint8Array;\n params: SetOFTConfigParams;\n};\n\nexport type SetOftConfigInstructionDataArgs = {\n params: SetOFTConfigParamsArgs;\n};\n\nexport function getSetOftConfigInstructionDataSerializer(): Serializer<\n SetOftConfigInstructionDataArgs,\n SetOftConfigInstructionData\n> {\n return mapSerializer<\n SetOftConfigInstructionDataArgs,\n any,\n SetOftConfigInstructionData\n >(\n struct<SetOftConfigInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['params', getSetOFTConfigParamsSerializer()],\n ],\n { description: 'SetOftConfigInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([55, 126, 87, 217, 159, 66, 24, 194]),\n })\n ) as Serializer<SetOftConfigInstructionDataArgs, SetOftConfigInstructionData>;\n}\n\n// Args.\nexport type SetOftConfigInstructionArgs = SetOftConfigInstructionDataArgs;\n\n// Instruction.\nexport function setOftConfig(\n context: Pick<Context, 'programs'>,\n input: SetOftConfigInstructionAccounts & SetOftConfigInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: false as boolean,\n value: input.admin ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetOftConfigInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetOftConfigInstructionDataSerializer().serialize(\n resolvedArgs as SetOftConfigInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bool,\n bytes,\n mapSerializer,\n struct,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type SetPauseInstructionAccounts = {\n /** pauser or unpauser */\n signer: Signer;\n oftStore: PublicKey | Pda;\n};\n\n// Data.\nexport type SetPauseInstructionData = {\n discriminator: Uint8Array;\n paused: boolean;\n};\n\nexport type SetPauseInstructionDataArgs = { paused: boolean };\n\nexport function getSetPauseInstructionDataSerializer(): Serializer<\n SetPauseInstructionDataArgs,\n SetPauseInstructionData\n> {\n return mapSerializer<\n SetPauseInstructionDataArgs,\n any,\n SetPauseInstructionData\n >(\n struct<SetPauseInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['paused', bool()],\n ],\n { description: 'SetPauseInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([63, 32, 154, 2, 56, 103, 79, 45]),\n })\n ) as Serializer<SetPauseInstructionDataArgs, SetPauseInstructionData>;\n}\n\n// Args.\nexport type SetPauseInstructionArgs = SetPauseInstructionDataArgs;\n\n// Instruction.\nexport function setPause(\n context: Pick<Context, 'programs'>,\n input: SetPauseInstructionAccounts & SetPauseInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n signer: {\n index: 0,\n isWritable: false as boolean,\n value: input.signer ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: true as boolean,\n value: input.oftStore ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetPauseInstructionArgs = { ...input };\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetPauseInstructionDataSerializer().serialize(\n resolvedArgs as SetPauseInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n u32,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\nimport {\n PeerConfigParam,\n PeerConfigParamArgs,\n getPeerConfigParamSerializer,\n} from '../types';\n\n// Accounts.\nexport type SetPeerConfigInstructionAccounts = {\n admin: Signer;\n peer: PublicKey | Pda;\n oftStore: PublicKey | Pda;\n systemProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type SetPeerConfigInstructionData = {\n discriminator: Uint8Array;\n remoteEid: number;\n config: PeerConfigParam;\n};\n\nexport type SetPeerConfigInstructionDataArgs = {\n remoteEid: number;\n config: PeerConfigParamArgs;\n};\n\nexport function getSetPeerConfigInstructionDataSerializer(): Serializer<\n SetPeerConfigInstructionDataArgs,\n SetPeerConfigInstructionData\n> {\n return mapSerializer<\n SetPeerConfigInstructionDataArgs,\n any,\n SetPeerConfigInstructionData\n >(\n struct<SetPeerConfigInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['remoteEid', u32()],\n ['config', getPeerConfigParamSerializer()],\n ],\n { description: 'SetPeerConfigInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([79, 187, 168, 57, 139, 140, 93, 47]),\n })\n ) as Serializer<\n SetPeerConfigInstructionDataArgs,\n SetPeerConfigInstructionData\n >;\n}\n\n// Args.\nexport type SetPeerConfigInstructionArgs = SetPeerConfigInstructionDataArgs;\n\n// Instruction.\nexport function setPeerConfig(\n context: Pick<Context, 'programs'>,\n input: SetPeerConfigInstructionAccounts & SetPeerConfigInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: true as boolean,\n value: input.admin ?? null,\n },\n peer: { index: 1, isWritable: true as boolean, value: input.peer ?? null },\n oftStore: {\n index: 2,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n systemProgram: {\n index: 3,\n isWritable: false as boolean,\n value: input.systemProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: SetPeerConfigInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.systemProgram.value) {\n resolvedAccounts.systemProgram.value = context.programs.getPublicKey(\n 'splSystem',\n '11111111111111111111111111111111'\n );\n resolvedAccounts.systemProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getSetPeerConfigInstructionDataSerializer().serialize(\n resolvedArgs as SetPeerConfigInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n Context,\n Pda,\n PublicKey,\n Signer,\n TransactionBuilder,\n transactionBuilder,\n} from '@metaplex-foundation/umi';\nimport {\n Serializer,\n bytes,\n mapSerializer,\n struct,\n u64,\n} from '@metaplex-foundation/umi/serializers';\nimport {\n ResolvedAccount,\n ResolvedAccountsWithIndices,\n getAccountMetasAndSigners,\n} from '../shared';\n\n// Accounts.\nexport type WithdrawFeeInstructionAccounts = {\n admin: Signer;\n oftStore: PublicKey | Pda;\n tokenMint: PublicKey | Pda;\n tokenEscrow: PublicKey | Pda;\n tokenDest: PublicKey | Pda;\n tokenProgram?: PublicKey | Pda;\n};\n\n// Data.\nexport type WithdrawFeeInstructionData = {\n discriminator: Uint8Array;\n feeLd: bigint;\n};\n\nexport type WithdrawFeeInstructionDataArgs = { feeLd: number | bigint };\n\nexport function getWithdrawFeeInstructionDataSerializer(): Serializer<\n WithdrawFeeInstructionDataArgs,\n WithdrawFeeInstructionData\n> {\n return mapSerializer<\n WithdrawFeeInstructionDataArgs,\n any,\n WithdrawFeeInstructionData\n >(\n struct<WithdrawFeeInstructionData>(\n [\n ['discriminator', bytes({ size: 8 })],\n ['feeLd', u64()],\n ],\n { description: 'WithdrawFeeInstructionData' }\n ),\n (value) => ({\n ...value,\n discriminator: new Uint8Array([14, 122, 231, 218, 31, 238, 223, 150]),\n })\n ) as Serializer<WithdrawFeeInstructionDataArgs, WithdrawFeeInstructionData>;\n}\n\n// Args.\nexport type WithdrawFeeInstructionArgs = WithdrawFeeInstructionDataArgs;\n\n// Instruction.\nexport function withdrawFee(\n context: Pick<Context, 'programs'>,\n input: WithdrawFeeInstructionAccounts & WithdrawFeeInstructionArgs\n): TransactionBuilder {\n // Program ID.\n const programId = context.programs.getPublicKey('oft', '');\n\n // Accounts.\n const resolvedAccounts = {\n admin: {\n index: 0,\n isWritable: false as boolean,\n value: input.admin ?? null,\n },\n oftStore: {\n index: 1,\n isWritable: false as boolean,\n value: input.oftStore ?? null,\n },\n tokenMint: {\n index: 2,\n isWritable: false as boolean,\n value: input.tokenMint ?? null,\n },\n tokenEscrow: {\n index: 3,\n isWritable: true as boolean,\n value: input.tokenEscrow ?? null,\n },\n tokenDest: {\n index: 4,\n isWritable: true as boolean,\n value: input.tokenDest ?? null,\n },\n tokenProgram: {\n index: 5,\n isWritable: false as boolean,\n value: input.tokenProgram ?? null,\n },\n } satisfies ResolvedAccountsWithIndices;\n\n // Arguments.\n const resolvedArgs: WithdrawFeeInstructionArgs = { ...input };\n\n // Default values.\n if (!resolvedAccounts.tokenProgram.value) {\n resolvedAccounts.tokenProgram.value = context.programs.getPublicKey(\n 'splToken',\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\n );\n resolvedAccounts.tokenProgram.isWritable = false;\n }\n\n // Accounts in order.\n const orderedAccounts: ResolvedAccount[] = Object.values(\n resolvedAccounts\n ).sort((a, b) => a.index - b.index);\n\n // Keys and Signers.\n const [keys, signers] = getAccountMetasAndSigners(\n orderedAccounts,\n 'programId',\n programId\n );\n\n // Data.\n const data = getWithdrawFeeInstructionDataSerializer().serialize(\n resolvedArgs as WithdrawFeeInstructionDataArgs\n );\n\n // Bytes Created On Chain.\n const bytesCreatedOnChain = 0;\n\n return transactionBuilder([\n { instruction: { keys, programId, data }, signers, bytesCreatedOnChain },\n ]);\n}\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nexport * from './oft';\n","/**\n * This code was AUTOGENERATED using the kinobi library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun kinobi to update it.\n *\n * @see https://github.com/kinobi-so/kinobi\n */\n\nimport {\n ClusterFilter,\n Context,\n Program,\n PublicKey,\n} from '@metaplex-foundation/umi';\nimport { getOftErrorFromCode, getOftErrorFromName } from '../errors';\n\nexport const OFT_PROGRAM_ID = '' as PublicKey<''>;\n\nexport function createOftProgram(): Program {\n return {\n name: 'oft',\n publicKey: OFT_PROGRAM_ID,\n getErrorFromCode(code: number, cause?: Error) {\n return getOftErrorFromCode(code, this, cause);\n },\n getErrorFromName(name: string, cause?: Error) {\n return getOftErrorFromName(name, this, cause);\n },\n isOnCluster() {\n return true;\n },\n };\n}\n\nexport function getOftProgram<T extends Program = Program>(\n context: Pick<Context, 'programs'>,\n clusterFilter?: ClusterFilter\n): T {\n return context.programs.get<T>('oft', clusterFilter);\n}\n\nexport function getOftProgramId(\n context: Pick<Context, 'programs'>,\n clusterFilter?: ClusterFilter\n): PublicKey {\n return context.programs.getPublicKey('oft', OFT_PROGRAM_ID, clusterFilter);\n}\n"]}