UNPKG

@orderly.network/default-solana-adapter

Version:

2,485 lines (2,479 loc) 88.7 kB
var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // src/version.ts if (typeof window !== "undefined") { window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {}; window.__ORDERLY_VERSION__["@orderly.network/default-solana-adapter"] = "3.1.7"; } var version_default = "3.1.7"; // src/walletAdapter.ts import * as ed from "@noble/ed25519"; import { getAccount } from "@solana/spl-token"; import { WalletAdapterNetwork } from "@solana/wallet-adapter-base"; import { clusterApiUrl, Connection as Connection3, PublicKey as PublicKey4, Transaction, TransactionInstruction } from "@solana/web3.js"; import { encode as bs58encode } from "bs58"; import { bytesToHex as bytesToHex2 } from "ethereum-cryptography/utils"; import { BaseWalletAdapter, SimpleDI } from "@orderly.network/core"; import { MaxUint256, ChainNamespace, isNativeTokenChecker } from "@orderly.network/types"; // src/helper.ts import { BN, Program } from "@coral-xyz/anchor"; import { ComputeBudgetProgram, PublicKey as PublicKey3, SystemProgram, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; import { decode as bs58Decode } from "bs58"; import { keccak256 } from "ethereum-cryptography/keccak"; import { bytesToHex, hexToBytes } from "ethereum-cryptography/utils"; import { AbiCoder, solidityPackedKeccak256 } from "ethers"; import { utils as CoreUtils } from "@orderly.network/core"; import { DEFAUL_ORDERLY_KEY_SCOPE, LedgerWalletKey } from "@orderly.network/types"; // src/constant.ts import { addressToBytes32 } from "@layerzerolabs/lz-v2-utilities"; import { PublicKey } from "@solana/web3.js"; var ENDPOINT_PROGRAM_ID = new PublicKey( "76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6" ); var SEND_LIB_PROGRAM_ID = new PublicKey( "7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH" ); var EXECUTOR_PROGRAM_ID = new PublicKey( "6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn" ); var PRICE_FEED_PROGRAM_ID = new PublicKey( "8ahPGPjEbpgGaZx2NV1iG5Shj7TDwvsjkEDcGWjt94TP" ); var RECEIVE_LIB_PROGRAM_ID = SEND_LIB_PROGRAM_ID; var TREASURY_PROGRAM_ID = SEND_LIB_PROGRAM_ID; var DVN_PROGRAM_ID = new PublicKey( "HtEYV4xB4wvsj5fgTkcfuChYpvGYzgzwvNhgDZQNh7wW" ); var LZ_DVN_PROGRAM_ID = DVN_PROGRAM_ID; var CANARY_DVN_PROGRAM_ID = new PublicKey( "5KAALa8AEEKnW6p6AacdnqNDmGMpfhwR7AEyWs1gUvsT" ); var NEVERMIND_DVN_PROGRAM_ID = new PublicKey( "4fs6aL12L18K5giDy9Dgxgrb3aNRYiuRV2a7JPPj3e7F" ); var LZ_DVN_PDA = new PublicKey( "4VDjp6XQaxoZf5RGwiPU9NR1EXSZn2TP4ATMmiSzLfhb" ); var CANARY_DVN_PDA = new PublicKey( "7jMeX5mzXnSSKYd8DxBDP4xMnkNFZZZm5W28FWUTbwU3" ); var NEVERMIND_DVN_PDA = new PublicKey( "GPjyWr8vCotGuFubDpTxDxy9Vj1ZeEN4F2dwRmFiaGab" ); var VAULT_AUTHORITY_SEED = "VaultAuthority"; var BROKER_SEED = "Broker"; var TOKEN_SEED = "Token"; var SOL_VAULT_SEED = "SolVault"; var DEV_PEER_ADDRESS = addressToBytes32( "0x9Dc724b24146BeDD2dA28b8C4B74126169B8f312" ); var QA_PEER_ADDRESS = addressToBytes32( "0x45b6C6266A7A2170617d8A27A50C642fd68b91c4" ); var STAGING_PEER_ADDRESS = addressToBytes32( "0x5Bf771A65d057e778C5f0Ed52A0003316f94322D" ); var MAINNET_PEER_ADDRESS = addressToBytes32( "0xCecAe061aa078e13b5e70D5F9eCee90a3F2B6AeA" ); var DEV_DST_EID = 40200; var MAIN_DST_EID = 30213; var DEV_LOOKUP_TABLE_ADDRESS = new PublicKey( "BWp8HaYYhiNHekt3zgQhqoCrRftneGxxfgKmCZ6svHN" ); var QA_LOOKUP_TABLE_ADDRESS = new PublicKey( "BswrQQoPKAFojTuJutZcBMtigAgTghEH4M8ofn3EG2X2" ); var STAGING_LOOKUP_TABLE_ADDRESS = new PublicKey( "BbGKfxuPwDmu58BjPpd7PMG69TqnZjSpKaLDMgf9E9Dr" ); var MAINNET_LOOKUP_TABLE_ADDRESS = new PublicKey( "8iq7xCQt3bLdRRn4A46d5GuaXYinBoiAhbe2sUmZVzwg" ); var DEV_OAPP_PROGRAM_ID = new PublicKey( "EYJq9eU4GMRUriUJBgGoZ8YLQBXcWaciXuSsEXE7ieQS" ); var QA_OAPP_PROGRAM_ID = new PublicKey( "5zBjLor7vEraAt4zp2H82sy9MSqFoDnNa1Lx6EYKTYRZ" ); var STAGING_OAPP_PROGRAM_ID = new PublicKey( "9shwxWDUNhtwkHocsUAmrNAQfBH2DHh4njdAEdHZZkF2" ); var MAINNET_OAPP_PROGRAM_ID = new PublicKey( "ErBmAD61mGFKvrFNaTJuxoPwqrS8GgtwtqJTJVjFWx9Q" ); // src/idl/solana_vault.ts var IDL = { version: "0.1.0", name: "solana_vault", instructions: [ { name: "setVault", accounts: [ { name: "admin", isMut: true, isSigner: true }, { name: "vaultAuthority", isMut: true, isSigner: false }, { name: "oappConfig", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "SetVaultParams" } } ] }, { name: "deposit", accounts: [ { name: "user", isMut: true, isSigner: true }, { name: "userTokenAccount", isMut: true, isSigner: false }, { name: "vaultAuthority", isMut: true, isSigner: false }, { name: "vaultTokenAccount", isMut: true, isSigner: false }, { name: "depositToken", isMut: false, isSigner: false }, { name: "peer", isMut: false, isSigner: false }, { name: "enforcedOptions", isMut: false, isSigner: false }, { name: "oappConfig", isMut: false, isSigner: false }, { name: "allowedBroker", isMut: false, isSigner: false }, { name: "allowedToken", isMut: false, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false }, { name: "associatedTokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "depositParams", type: { defined: "DepositParams" } }, { name: "oappParams", type: { defined: "OAppSendParams" } } ], returns: { defined: "MessagingReceipt" } }, { name: "depositSol", accounts: [ { name: "user", isMut: true, isSigner: true }, { name: "vaultAuthority", isMut: true, isSigner: false }, { name: "solVault", isMut: true, isSigner: false, docs: ["CHECKED: sol_vault is used for SOL deposit"] }, { name: "peer", isMut: false, isSigner: false }, { name: "enforcedOptions", isMut: false, isSigner: false }, { name: "oappConfig", isMut: false, isSigner: false }, { name: "allowedBroker", isMut: false, isSigner: false }, { name: "allowedToken", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "depositParams", type: { defined: "DepositParams" } }, { name: "oappParams", type: { defined: "OAppSendParams" } } ], returns: { defined: "MessagingReceipt" } }, { name: "initOapp", accounts: [ { name: "payer", isMut: true, isSigner: true }, { name: "oappConfig", isMut: true, isSigner: false }, { name: "lzReceiveTypes", isMut: true, isSigner: false }, { name: "accountList", isMut: true, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "InitOAppParams" } } ] }, { name: "setAccountList", accounts: [ { name: "admin", isMut: true, isSigner: true }, { name: "oappConfig", isMut: false, isSigner: false }, { name: "lzReceiveTypes", isMut: true, isSigner: false }, { name: "accountsList", isMut: true, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "SetAccountListParams" } } ] }, { name: "setManagerRole", accounts: [ { name: "owner", isMut: true, isSigner: true }, { name: "vaultAuthority", isMut: true, isSigner: false }, { name: "managerRole", isMut: true, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "SetManagerRoleParams" } } ] }, { name: "setBroker", accounts: [ { name: "brokerManager", isMut: true, isSigner: true }, { name: "allowedBroker", isMut: true, isSigner: false }, { name: "managerRole", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "SetBrokerParams" } } ] }, { name: "setWithdrawBroker", accounts: [ { name: "brokerManager", isMut: true, isSigner: true }, { name: "withdrawBroker", isMut: true, isSigner: false }, { name: "managerRole", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "SetWithdrawBrokerParams" } } ] }, { name: "setToken", accounts: [ { name: "tokenManager", isMut: true, isSigner: true }, { name: "allowedToken", isMut: true, isSigner: false }, { name: "managerRole", isMut: false, isSigner: false }, { name: "mintAccount", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "SetTokenParams" } } ] }, { name: "setWithdrawToken", accounts: [ { name: "tokenManager", isMut: true, isSigner: true }, { name: "withdrawToken", isMut: true, isSigner: false }, { name: "managerRole", isMut: false, isSigner: false }, { name: "mintAccount", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "SetWithdrawTokenParams" } } ] }, { name: "setOrderDelivery", accounts: [ { name: "owner", isMut: true, isSigner: true }, { name: "vaultAuthority", isMut: true, isSigner: false } ], args: [ { name: "params", type: { defined: "SetOrderDeliveryParams" } } ] }, { name: "oappQuote", accounts: [ { name: "oappConfig", isMut: false, isSigner: false }, { name: "peer", isMut: false, isSigner: false }, { name: "enforcedOptions", isMut: false, isSigner: false }, { name: "vaultAuthority", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "DepositParams" } } ], returns: { defined: "MessagingFee" } }, { name: "lzReceive", accounts: [ { name: "payer", isMut: true, isSigner: true }, { name: "peer", isMut: false, isSigner: false }, { name: "oappConfig", isMut: false, isSigner: false }, { name: "withdrawBrokerPda", isMut: false, isSigner: false }, { name: "withdrawTokenPda", isMut: false, isSigner: false, docs: ["CHECK"] }, { name: "tokenMint", isMut: false, isSigner: false, docs: ["CHECK"] }, { name: "receiver", isMut: true, isSigner: false, docs: ["CHECK"] }, { name: "receiverTokenAccount", isMut: true, isSigner: false, docs: ["UNCHECKED"] }, { name: "vaultAuthority", isMut: true, isSigner: false }, { name: "vaultTokenAccount", isMut: true, isSigner: false }, { name: "tokenProgram", isMut: false, isSigner: false, docs: ["CHECKED: sol_vault is used for SOL withdrawal"] }, { name: "associatedTokenProgram", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false }, { name: "eventAuthority", isMut: false, isSigner: false }, { name: "program", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "OAppLzReceiveParams" } } ] }, { name: "lzReceiveTypes", accounts: [ { name: "oappConfig", isMut: false, isSigner: false }, { name: "accountList", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "OAppLzReceiveParams" } } ], returns: { vec: { defined: "oapp::endpoint_cpi::LzAccount" } } }, { name: "setRateLimit", accounts: [ { name: "admin", isMut: false, isSigner: true }, { name: "peer", isMut: true, isSigner: false }, { name: "oappConfig", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "SetRateLimitParams" } } ] }, { name: "setDelegate", accounts: [ { name: "admin", isMut: false, isSigner: true }, { name: "oappConfig", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "SetDelegateParams" } } ] }, { name: "transferAdmin", accounts: [ { name: "admin", isMut: false, isSigner: true }, { name: "oappConfig", isMut: true, isSigner: false } ], args: [ { name: "params", type: { defined: "TransferAdminParams" } } ] }, { name: "setPeer", accounts: [ { name: "admin", isMut: true, isSigner: true }, { name: "peer", isMut: true, isSigner: false }, { name: "oappConfig", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "SetPeerParams" } } ] }, { name: "setEnforcedOptions", accounts: [ { name: "admin", isMut: true, isSigner: true }, { name: "enforcedOptions", isMut: true, isSigner: false }, { name: "oappConfig", isMut: false, isSigner: false }, { name: "systemProgram", isMut: false, isSigner: false } ], args: [ { name: "params", type: { defined: "SetEnforcedOptionsParams" } } ] } ], accounts: [ { name: "enforcedOptions", type: { kind: "struct", fields: [ { name: "send", type: "bytes" }, { name: "sendAndCall", type: "bytes" }, { name: "bump", type: "u8" } ] } }, { name: "oAppConfig", type: { kind: "struct", fields: [ { name: "endpointProgram", type: "publicKey" }, { name: "bump", type: "u8" }, { name: "admin", type: "publicKey" } ] } }, { name: "oAppLzReceiveTypesAccounts", type: { kind: "struct", fields: [ { name: "oappConfig", type: "publicKey" }, { name: "accountList", type: "publicKey" } ] } }, { name: "accountList", type: { kind: "struct", fields: [ { name: "bump", type: "u8" }, { name: "woofiProPda", type: "publicKey" }, { name: "withdrawUsdcPda", type: "publicKey" }, { name: "usdcMint", type: "publicKey" }, { name: "withdrawUsdtPda", type: "publicKey" }, { name: "usdtMint", type: "publicKey" }, { name: "withdrawWsolPda", type: "publicKey" }, { name: "wsolMint", type: "publicKey" } ] } }, { name: "peer", type: { kind: "struct", fields: [ { name: "address", type: { array: ["u8", 32] } }, { name: "rateLimiter", type: { option: { defined: "RateLimiter" } } }, { name: "bump", type: "u8" } ] } }, { name: "allowedBroker", type: { kind: "struct", fields: [ { name: "brokerHash", type: { array: ["u8", 32] } }, { name: "allowed", type: "bool" }, { name: "bump", type: "u8" } ] } }, { name: "allowedToken", type: { kind: "struct", fields: [ { name: "mintAccount", type: "publicKey" }, { name: "tokenHash", type: { array: ["u8", 32] } }, { name: "tokenDecimals", type: "u8" }, { name: "allowed", type: "bool" }, { name: "bump", type: "u8" } ] } }, { name: "managerRole", type: { kind: "struct", fields: [ { name: "roleHash", type: { array: ["u8", 32] } }, { name: "allowed", type: "bool" }, { name: "bump", type: "u8" } ] } }, { name: "vaultAuthority", type: { kind: "struct", fields: [ { name: "bump", docs: ["Bump seed for the vault authority PDA"], type: "u8" }, { name: "owner", type: "publicKey" }, { name: "depositNonce", type: "u64" }, { name: "orderDelivery", type: "bool" }, { name: "inboundNonce", type: "u64" }, { name: "dstEid", type: "u32" }, { name: "solChainId", type: "u128" } ] } }, { name: "withdrawBroker", type: { kind: "struct", fields: [ { name: "brokerHash", type: { array: ["u8", 32] } }, { name: "brokerIndex", type: "u16" }, { name: "allowed", type: "bool" }, { name: "bump", type: "u8" } ] } }, { name: "withdrawToken", type: { kind: "struct", fields: [ { name: "mintAccount", type: "publicKey" }, { name: "tokenHash", type: { array: ["u8", 32] } }, { name: "tokenDecimals", type: "u8" }, { name: "tokenIndex", type: "u8" }, { name: "allowed", type: "bool" }, { name: "bump", type: "u8" } ] } } ], types: [ { name: "VaultDepositParams", type: { kind: "struct", fields: [ { name: "accountId", type: { array: ["u8", 32] } }, { name: "brokerHash", type: { array: ["u8", 32] } }, { name: "userAddress", type: { array: ["u8", 32] } }, { name: "tokenHash", type: { array: ["u8", 32] } }, { name: "srcChainId", type: "u128" }, { name: "tokenAmount", type: "u128" }, { name: "srcChainDepositNonce", type: "u64" } ] } }, { name: "LzMessage", type: { kind: "struct", fields: [ { name: "msgType", type: "u8" }, { name: "payload", type: "bytes" } ] } }, { name: "AccountWithdrawSol", type: { kind: "struct", fields: [ { name: "sender", type: { array: ["u8", 32] } }, { name: "receiver", type: { array: ["u8", 32] } }, { name: "brokerIndex", type: "u16" }, { name: "tokenIndex", type: "u8" }, { name: "tokenAmount", type: "u64" }, { name: "fee", type: "u64" }, { name: "chainId", type: "u64" }, { name: "withdrawNonce", type: "u64" } ] } }, { name: "VaultWithdrawParams", type: { kind: "struct", fields: [ { name: "accountId", type: { array: ["u8", 32] } }, { name: "sender", type: { array: ["u8", 32] } }, { name: "receiver", type: { array: ["u8", 32] } }, { name: "brokerHash", type: { array: ["u8", 32] } }, { name: "tokenHash", type: { array: ["u8", 32] } }, { name: "tokenAmount", type: "u64" }, { name: "fee", type: "u128" }, { name: "chainId", type: "u128" }, { name: "withdrawNonce", type: "u64" } ] } }, { name: "InitOAppParams", type: { kind: "struct", fields: [ { name: "admin", type: "publicKey" }, { name: "accountList", type: "publicKey" }, { name: "endpointProgram", type: { option: "publicKey" } } ] } }, { name: "OAppLzReceiveParams", type: { kind: "struct", fields: [ { name: "srcEid", type: "u32" }, { name: "sender", type: { array: ["u8", 32] } }, { name: "nonce", type: "u64" }, { name: "guid", type: { array: ["u8", 32] } }, { name: "message", type: "bytes" }, { name: "extraData", type: "bytes" } ] } }, { name: "MessagingFee", type: { kind: "struct", fields: [ { name: "nativeFee", type: "u64" }, { name: "lzTokenFee", type: "u64" } ] } }, { name: "SetAccountListParams", type: { kind: "struct", fields: [ { name: "woofiProPda", type: "publicKey" }, { name: "withdrawUsdcPda", type: "publicKey" }, { name: "usdcMint", type: "publicKey" }, { name: "withdrawUsdtPda", type: "publicKey" }, { name: "usdtMint", type: "publicKey" }, { name: "withdrawWsolPda", type: "publicKey" }, { name: "wsolMint", type: "publicKey" } ] } }, { name: "SetDelegateParams", type: { kind: "struct", fields: [ { name: "delegate", type: "publicKey" } ] } }, { name: "SetEnforcedOptionsParams", type: { kind: "struct", fields: [ { name: "dstEid", type: "u32" }, { name: "send", type: "bytes" }, { name: "sendAndCall", type: "bytes" } ] } }, { name: "SetPeerParams", type: { kind: "struct", fields: [ { name: "dstEid", type: "u32" }, { name: "peer", type: { array: ["u8", 32] } } ] } }, { name: "SetRateLimitParams", type: { kind: "struct", fields: [ { name: "dstEid", type: "u32" }, { name: "refillPerSecond", type: { option: "u64" } }, { name: "capacity", type: { option: "u64" } }, { name: "enabled", type: "bool" } ] } }, { name: "TransferAdminParams", type: { kind: "struct", fields: [ { name: "admin", type: "publicKey" } ] } }, { name: "DepositParams", type: { kind: "struct", fields: [ { name: "accountId", type: { array: ["u8", 32] } }, { name: "brokerHash", type: { array: ["u8", 32] } }, { name: "tokenHash", type: { array: ["u8", 32] } }, { name: "userAddress", type: { array: ["u8", 32] } }, { name: "tokenAmount", type: "u64" } ] } }, { name: "OAppSendParams", type: { kind: "struct", fields: [ { name: "nativeFee", type: "u64" }, { name: "lzTokenFee", type: "u64" } ] } }, { name: "SetBrokerParams", type: { kind: "struct", fields: [ { name: "brokerManagerRole", type: { array: ["u8", 32] } }, { name: "brokerHash", type: { array: ["u8", 32] } }, { name: "allowed", type: "bool" } ] } }, { name: "SetManagerRoleParams", type: { kind: "struct", fields: [ { name: "roleHash", type: { array: ["u8", 32] } }, { name: "managerAddress", type: "publicKey" }, { name: "allowed", type: "bool" } ] } }, { name: "SetOrderDeliveryParams", type: { kind: "struct", fields: [ { name: "orderDelivery", type: "bool" }, { name: "nonce", type: "u64" } ] } }, { name: "SetTokenParams", type: { kind: "struct", fields: [ { name: "tokenManagerRole", type: { array: ["u8", 32] } }, { name: "mintAccount", type: "publicKey" }, { name: "tokenHash", type: { array: ["u8", 32] } }, { name: "allowed", type: "bool" } ] } }, { name: "SetVaultParams", type: { kind: "struct", fields: [ { name: "owner", type: "publicKey" }, { name: "depositNonce", type: "u64" }, { name: "orderDelivery", type: "bool" }, { name: "inboundNonce", type: "u64" }, { name: "dstEid", type: "u32" }, { name: "solChainId", type: "u128" } ] } }, { name: "SetWithdrawBrokerParams", type: { kind: "struct", fields: [ { name: "brokerManagerRole", type: { array: ["u8", 32] } }, { name: "brokerHash", type: { array: ["u8", 32] } }, { name: "brokerIndex", type: "u16" }, { name: "allowed", type: "bool" } ] } }, { name: "SetWithdrawTokenParams", type: { kind: "struct", fields: [ { name: "tokenManagerRole", type: { array: ["u8", 32] } }, { name: "tokenHash", type: { array: ["u8", 32] } }, { name: "tokenIndex", type: "u8" }, { name: "allowed", type: "bool" } ] } }, { name: "RateLimiter", type: { kind: "struct", fields: [ { name: "capacity", type: "u64" }, { name: "tokens", type: "u64" }, { name: "refillPerSecond", type: "u64" }, { name: "lastRefillTime", type: "u64" } ] } }, { name: "OAppError", type: { kind: "enum", variants: [ { name: "Unauthorized" }, { name: "InvalidSender" }, { name: "InvalidReceiver" }, { name: "InvalidOptions" }, { name: "InvalidEndpointProgram" }, { name: "RateLimitExceeded" }, { name: "WithdrawFailed" }, { name: "InvalidInboundNonce" }, { name: "InvalidReceiverTokenAccount" }, { name: "InvalidAdminTokenAccount" }, { name: "InvalidMessageType" }, { name: "InvalidTokenIndex" } ] } }, { name: "MsgType", type: { kind: "enum", variants: [ { name: "Deposit" }, { name: "Withdraw" }, { name: "RebalanceBurn" }, { name: "RebalanceMint" } ] } } ], events: [ { name: "SetAllowedBroker", fields: [ { name: "brokerHash", type: { array: ["u8", 32] }, index: false } ] }, { name: "ResetAllowedBroker", fields: [ { name: "brokerHash", type: { array: ["u8", 32] }, index: false } ] }, { name: "SetAllowedToken", fields: [ { name: "tokenHash", type: { array: ["u8", 32] }, index: false }, { name: "mintAccount", type: "publicKey", index: false } ] }, { name: "ResetAllowedToken", fields: [ { name: "tokenHash", type: { array: ["u8", 32] }, index: false }, { name: "mintAccount", type: "publicKey", index: false } ] }, { name: "SetWithdrawTokenIndex", fields: [ { name: "tokenIndex", type: "u8", index: false }, { name: "tokenHash", type: { array: ["u8", 32] }, index: false }, { name: "mintAccount", type: "publicKey", index: false } ] }, { name: "ResetWithdrawTokenIndex", fields: [ { name: "tokenIndex", type: "u8", index: false }, { name: "tokenHash", type: { array: ["u8", 32] }, index: false }, { name: "mintAccount", type: "publicKey", index: false } ] }, { name: "SetWithdrawBrokerEvent", fields: [ { name: "brokerHash", type: { array: ["u8", 32] }, index: false }, { name: "brokerIndex", type: "u16", index: false } ] }, { name: "ResetWithdrawBrokerEvent", fields: [ { name: "brokerHash", type: { array: ["u8", 32] }, index: false }, { name: "brokerIndex", type: "u16", index: false } ] }, { name: "SetManager", fields: [ { name: "roleHash", type: { array: ["u8", 32] }, index: false }, { name: "managerAddress", type: "publicKey", index: false }, { name: "allowed", type: "bool", index: false } ] }, { name: "Deposited", fields: [ { name: "user", type: "publicKey", index: false }, { name: "amount", type: "u64", index: false } ] }, { name: "Withdrawn", fields: [ { name: "user", type: "publicKey", index: false }, { name: "amount", type: "u64", index: false } ] }, { name: "CreatedATA", fields: [ { name: "accountId", type: { array: ["u8", 32] }, index: false }, { name: "receiver", type: { array: ["u8", 32] }, index: false }, { name: "receiverTokenAccount", type: { array: ["u8", 32] }, index: false }, { name: "withdrawNonce", type: "u64", index: false } ] }, { name: "VaultDeposited", fields: [ { name: "accountId", type: { array: ["u8", 32] }, index: false }, { name: "brokerHash", type: { array: ["u8", 32] }, index: false }, { name: "userAddress", type: { array: ["u8", 32] }, index: false }, { name: "tokenHash", type: { array: ["u8", 32] }, index: false }, { name: "srcChainId", type: "u128", index: false }, { name: "tokenAmount", type: "u64", index: false }, { name: "srcChainDepositNonce", type: "u64", index: false } ] }, { name: "VaultWithdrawn", fields: [ { name: "accountId", type: { array: ["u8", 32] }, index: false }, { name: "sender", type: { array: ["u8", 32] }, index: false }, { name: "receiver", type: { array: ["u8", 32] }, index: false }, { name: "brokerHash", type: { array: ["u8", 32] }, index: false }, { name: "tokenHash", type: { array: ["u8", 32] }, index: false }, { name: "tokenAmount", type: "u64", index: false }, { name: "fee", type: "u128", index: false }, { name: "chainId", type: "u128", index: false }, { name: "withdrawNonce", type: "u64", index: false } ] }, { name: "FrozenWithdrawn", fields: [ { name: "accountId", type: { array: ["u8", 32] }, index: false }, { name: "sender", type: { array: ["u8", 32] }, index: false }, { name: "receiver", type: { array: ["u8", 32] }, index: false }, { name: "brokerHash", type: { array: ["u8", 32] }, index: false }, { name: "tokenHash", type: { array: ["u8", 32] }, index: false }, { name: "tokenAmount", type: "u64", index: false }, { name: "fee", type: "u128", index: false }, { name: "chainId", type: "u128", index: false }, { name: "withdrawNonce", type: "u64", index: false } ] }, { name: "OAppSent", fields: [ { name: "guid", type: { array: ["u8", 32] }, index: false }, { name: "dstEid", type: "u32", index: false } ] }, { name: "OAppReceived", fields: [ { name: "guid", type: { array: ["u8", 32] }, index: false }, { name: "srcEid", type: "u32", index: false } ] } ], errors: [ { code: 6e3, name: "InsufficientFunds", msg: "Deposited funds are insufficient for withdrawal" }, { code: 6001, name: "UserInfoBelongsToAnotherUser", msg: "User info pda belongs to another user" }, { code: 6002, name: "BrokerNotAllowed", msg: "Broker is not allowed" }, { code: 6003, name: "TokenNotAllowed", msg: "Token is not allowed" }, { code: 6004, name: "InvalidAccountId", msg: "AccountId is invalid" }, { code: 6005, name: "InvalidVaultOwner", msg: "Vault owner is not the same as the payer" }, { code: 6006, name: "ManagerRoleNotAllowed", msg: "Manager role is not allowed" } ] }; // src/solana.util.ts import { DVN_CONFIG_SEED, ENDPOINT_SEED, ENFORCED_OPTIONS_SEED, EVENT_SEED, EXECUTOR_CONFIG_SEED, LZ_RECEIVE_TYPES_SEED, MESSAGE_LIB_SEED, NONCE_SEED, OAPP_SEED, PEER_SEED, PRICE_FEED_SEED, SEND_CONFIG_SEED, SEND_LIBRARY_CONFIG_SEED, ULN_SEED } from "@layerzerolabs/lz-solana-sdk-v2"; import { getAssociatedTokenAddressSync } from "@solana/spl-token"; import { PublicKey as PublicKey2 } from "@solana/web3.js"; var getTokenAccounts = (token, owner) => { const tokenAccount = getAssociatedTokenAddressSync(token, owner, true); return tokenAccount; }; function getVaultAuthorityPda(VAULT_PROGRAM_ID) { return PublicKey2.findProgramAddressSync( [Buffer.from(VAULT_AUTHORITY_SEED, "utf8")], VAULT_PROGRAM_ID )[0]; } function getSolVaultPda(VAULT_PROGRAM_ID) { return PublicKey2.findProgramAddressSync( [Buffer.from(SOL_VAULT_SEED, "utf8")], VAULT_PROGRAM_ID )[0]; } function getBrokerPDA(programId, brokerHash) { const hash = Array.from(Buffer.from(brokerHash.slice(2), "hex")); return PublicKey2.findProgramAddressSync( [Buffer.from(BROKER_SEED, "utf8"), Buffer.from(hash)], programId )[0]; } function getTokenPDA(programId, tokenHash) { const hash = Array.from(Buffer.from(tokenHash.slice(2), "hex")); return PublicKey2.findProgramAddressSync( [Buffer.from(TOKEN_SEED, "utf8"), Buffer.from(hash)], programId )[0]; } function getOAppConfigPda(programId) { return PublicKey2.findProgramAddressSync( [Buffer.from(OAPP_SEED, "utf8")], programId )[0]; } function getPeerPda(OAPP_PROGRAM_ID, oappConfigPda, dstEid) { const bufferDstEid = Buffer.alloc(4); bufferDstEid.writeUInt32BE(dstEid); return PublicKey2.findProgramAddressSync( [Buffer.from(PEER_SEED, "utf8"), oappConfigPda.toBuffer(), bufferDstEid], OAPP_PROGRAM_ID )[0]; } function getEndorcedOptionsPda(OAPP_PROGRAM_ID, oappConfigPda, dstEid) { const bufferDstEid = Buffer.alloc(4); bufferDstEid.writeUInt32BE(dstEid); return PublicKey2.findProgramAddressSync( [ Buffer.from(ENFORCED_OPTIONS_SEED, "utf8"), oappConfigPda.toBuffer(), bufferDstEid ], OAPP_PROGRAM_ID )[0]; } function getSendLibPda() { return PublicKey2.findProgramAddressSync( [Buffer.from(MESSAGE_LIB_SEED, "utf8")], SEND_LIB_PROGRAM_ID )[0]; } function getSendLibConfigPda(oappConfigPda, dstEid) { const bufferDstEid = Buffer.alloc(4); bufferDstEid.writeUInt32BE(dstEid); return PublicKey2.findProgramAddressSync( [ Buffer.from(SEND_LIBRARY_CONFIG_SEED, "utf8"), oappConfigPda.toBuffer(), bufferDstEid ], ENDPOINT_PROGRAM_ID )[0]; } function getDefaultSendLibConfigPda(dstEid) { const bufferDstEid = Buffer.alloc(4); bufferDstEid.writeUInt32BE(dstEid); return PublicKey2.findProgramAddressSync( [Buffer.from(SEND_LIBRARY_CONFIG_SEED, "utf8"), bufferDstEid], ENDPOINT_PROGRAM_ID )[0]; } function getSendLibInfoPda(sendLibPda) { return PublicKey2.findProgramAddressSync( [Buffer.from(MESSAGE_LIB_SEED, "utf8"), sendLibPda.toBuffer()], ENDPOINT_PROGRAM_ID )[0]; } function getEndpointSettingPda() { return PublicKey2.findProgramAddressSync( [Buffer.from(ENDPOINT_SEED, "utf8")], ENDPOINT_PROGRAM_ID )[0]; } function getPeerAddress(OAPP_PRO