@orderly.network/default-solana-adapter 2.8.2-alpha.0 → 2.8.3-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/version.ts","../src/walletAdapter.ts","../src/helper.ts","../src/constant.ts","../src/idl/solana_vault.ts","../src/solana.util.ts"],"sourcesContent":["export { default as version } from \"./version\";\nexport { DefaultSolanaWalletAdapter } from \"./walletAdapter\";\nexport type { SolanaWalletProvider } from \"./types\";","declare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/default-solana-adapter\"] = \"2.8.2-alpha.0\";\n}\n\nexport default \"2.8.2-alpha.0\";\n","import * as ed from \"@noble/ed25519\";\nimport { getAccount } from \"@solana/spl-token\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport {\n clusterApiUrl,\n Connection,\n PublicKey,\n Transaction,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { encode as bs58encode, decode as bs58Decode } from \"bs58\";\nimport { bytesToHex } from \"ethereum-cryptography/utils\";\nimport {\n AddOrderlyKeyInputs,\n BaseWalletAdapter,\n Message,\n RegisterAccountInputs,\n SettleInputs,\n SignatureDomain,\n SimpleDI,\n WithdrawInputs,\n Account,\n MessageFactor,\n DexRequestInputs,\n InternalTransferInputs,\n} from \"@orderly.network/core\";\nimport { API, MaxUint256, ChainNamespace } from \"@orderly.network/types\";\nimport {\n addOrderlyKeyMessage,\n checkIsLedgerWallet,\n deposit,\n encodeLzMessage,\n getDepositQuoteFee,\n MsgType,\n registerAccountMessage,\n settleMessage,\n internalTransferMessage,\n withdrawMessage,\n dexRequestMessage,\n} from \"./helper\";\nimport { getTokenAccounts } from \"./solana.util\";\nimport { SolanaAdapterOption, SolanaWalletProvider } from \"./types\";\n\nclass DefaultSolanaWalletAdapter extends BaseWalletAdapter<SolanaAdapterOption> {\n chainNamespace: ChainNamespace = ChainNamespace.solana;\n\n private _address!: string;\n private _chainId!: number;\n private _provider!: SolanaWalletProvider;\n private _connection!: Connection;\n\n constructor() {\n super();\n }\n\n get address(): string {\n return this._address;\n }\n\n get chainId(): number {\n return this._chainId;\n }\n\n set chainId(chainId: number) {\n this._chainId = chainId;\n }\n\n get connection(): Connection {\n if (this._connection) {\n return this._connection;\n }\n if (this._provider.rpcUrl) {\n this._connection = new Connection(this._provider.rpcUrl, {\n commitment: \"confirmed\",\n });\n return this._connection;\n }\n if (this._provider.network === WalletAdapterNetwork.Devnet) {\n this._connection = new Connection(clusterApiUrl(this._provider.network), {\n commitment: \"confirmed\",\n });\n return this._connection;\n }\n\n const account = SimpleDI.get<Account>(\"account\");\n const url = \"/v1/solana-rpc-proxy\";\n this._connection = new Connection(`${account.apiBaseUrl}${url}`, {\n commitment: \"confirmed\",\n fetchMiddleware: async (info, init, fetch) => {\n const payload: MessageFactor = {\n url,\n method: init?.method as \"GET\" | \"POST\" | \"PUT\" | \"DELETE\",\n data: JSON.parse(init?.body as string),\n };\n // console.log('payload', payload);\n const signature = await this.signMessageByOrderlyKey(payload);\n for (const key of Object.keys(signature)) {\n (init?.headers as any)[key] = signature[\n key as keyof typeof signature\n ] as string;\n }\n return fetch(info, init);\n },\n });\n return this._connection;\n }\n\n private setConfig(config: SolanaAdapterOption) {\n this._address = config.address;\n this._chainId = config.chain.id;\n if (config.provider) {\n this._provider = config.provider;\n }\n }\n\n private lifecycleName(name: string, data: any) {\n console.log(\"lifecycle\", name, data);\n }\n\n active(config: SolanaAdapterOption): void {\n this.setConfig(config);\n this.lifecycleName(\"active\", config);\n }\n\n deactivate(): void {\n this.lifecycleName(\"deactivate\", {});\n }\n\n update(config: SolanaAdapterOption): void {\n this.lifecycleName(\"update\", config);\n this.setConfig(config);\n }\n\n generateSecretKey(): string {\n let privKey, secretKey;\n do {\n privKey = ed.utils.randomPrivateKey();\n secretKey = bs58encode(privKey);\n } while (secretKey.length !== 44);\n\n return secretKey;\n }\n\n uint8ArrayToHexString(uint8Array: Uint8Array): string {\n return Array.from(uint8Array)\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\");\n }\n\n async signMessage(message: Uint8Array): Promise<string> {\n const isLedger = checkIsLedgerWallet(this._address);\n // test ledger wallet\n // if (!isLedger) {\n // console.log(\"-- test error\");\n // throw new Error(\n // \"xxx Signing off chain messages with Ledger is not yet supported\"\n // );\n // }\n\n if (isLedger) {\n const transaction = new Transaction();\n\n transaction.add(\n new TransactionInstruction({\n keys: [],\n programId: new PublicKey(\n \"ComputeBudget111111111111111111111111111111\",\n ),\n data: new Uint8Array([3, 0, 0, 0, 0, 0, 0, 0, 0]) as any,\n }),\n );\n\n transaction.add(\n new TransactionInstruction({\n keys: [],\n programId: new PublicKey(\n \"ComputeBudget111111111111111111111111111111\",\n ),\n data: new Uint8Array([2, 0, 0, 0, 0]) as any,\n }),\n );\n\n transaction.add(\n new TransactionInstruction({\n keys: [],\n programId: new PublicKey(\n \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\",\n ),\n data: message as any,\n }),\n );\n\n const userPublicKey = new PublicKey(this.address);\n\n transaction.feePayer = userPublicKey;\n\n const zeroHash = new Uint8Array(32).fill(0);\n transaction.recentBlockhash = new PublicKey(zeroHash).toString();\n\n const signedTransaction =\n await this._provider.signTransaction(transaction);\n\n const signature = signedTransaction.signatures[0].signature;\n if (signature) {\n return this.uint8ArrayToHexString(signature as any);\n } else {\n console.log(\"-- sign message error\", signature);\n throw new Error(\"Unsupported signature\");\n }\n }\n const signRes = await this._provider.signMessage(message);\n return \"0x\" + bytesToHex(signRes);\n }\n\n async generateRegisterAccountMessage(\n inputs: RegisterAccountInputs,\n ): Promise<Message> {\n const [message, toSignatureMessage] = registerAccountMessage({\n ...inputs,\n chainId: this.chainId,\n });\n\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n\n return {\n message: {\n ...message,\n chainType: \"SOL\",\n },\n signatured: signature,\n };\n }\n\n async generateWithdrawMessage(\n inputs: WithdrawInputs,\n ): Promise<Message & { domain: SignatureDomain }> {\n const [message, toSignatureMessage] = withdrawMessage({\n ...inputs,\n chainId: this.chainId,\n });\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n\n return {\n message: {\n ...message,\n chainType: \"SOL\",\n },\n domain: {\n name: \"\",\n version: \"\",\n chainId: this.chainId,\n verifyingContract: inputs.verifyContract!,\n },\n signatured: signature,\n };\n }\n\n async generateInternalTransferMessage(\n inputs: InternalTransferInputs,\n ): Promise<Message & { domain: SignatureDomain }> {\n const [message, toSignatureMessage] = internalTransferMessage({\n ...inputs,\n chainId: this.chainId,\n });\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n\n return {\n message: {\n ...message,\n chainType: \"SOL\",\n },\n domain: {\n name: \"\",\n version: \"\",\n chainId: this.chainId,\n verifyingContract: inputs.verifyContract!,\n },\n signatured: signature,\n };\n }\n\n async generateAddOrderlyKeyMessage(\n inputs: AddOrderlyKeyInputs,\n ): Promise<Message> {\n const [message, toSignatureMessage] = addOrderlyKeyMessage({\n ...inputs,\n chainId: this.chainId,\n });\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n\n return {\n message: {\n ...message,\n chainType: \"SOL\",\n },\n signatured: signature,\n };\n }\n\n async generateSettleMessage(\n inputs: SettleInputs,\n ): Promise<Message & { domain: SignatureDomain }> {\n const [message, toSignatureMessage] = settleMessage({\n ...inputs,\n chainId: this.chainId,\n });\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n return {\n message: {\n ...message,\n chainType: \"SOL\",\n },\n domain: {\n name: \"\",\n version: \"\",\n chainId: this.chainId,\n verifyingContract: inputs.verifyContract!,\n },\n signatured: signature,\n };\n }\n\n async generateDexRequestMessage(inputs: DexRequestInputs): Promise<\n Message & {\n domain: SignatureDomain;\n }\n > {\n const [message, toSignatureMessage] = await dexRequestMessage({\n ...inputs,\n chainId: this.chainId,\n });\n\n // 使用 signMessage 方法签名,而不是 signTypedData\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n\n return {\n message: {\n ...inputs,\n chainType: \"SOL\",\n },\n signatured: signature,\n domain: inputs.domain,\n };\n }\n\n async getBalance(): Promise<bigint> {\n const publicKey = new PublicKey(this.address);\n const lamports = await this.connection.getBalance(publicKey);\n return BigInt(lamports);\n }\n\n async call(\n address: string,\n method: string,\n params: any[],\n options?: {\n abi: any;\n },\n ) {\n // console.log('-- solanan call', {\n // address,\n // method,\n // params,\n // options,\n // })\n if (method === \"balanceOf\") {\n const tokenPublicKey = new PublicKey(address);\n const userPublicKey = new PublicKey(this._address);\n const userTokenAccount = getTokenAccounts(tokenPublicKey, userPublicKey);\n const connection = this.connection;\n\n const tokenAmount = await getAccount(\n connection,\n userTokenAccount,\n \"confirmed\",\n );\n return tokenAmount.amount;\n }\n if (method === \"allowance\") {\n return MaxUint256;\n }\n return BigInt(0);\n }\n\n async sendTransaction(\n contractAddress: string,\n method: string,\n payload: {\n from: string;\n to?: string;\n data: any[];\n value?: bigint;\n },\n options: {\n abi: any;\n },\n ) {\n console.log(\"-- solanan sendTransaction\", {\n contractAddress,\n method,\n payload,\n options,\n });\n if (method === \"deposit\") {\n return deposit({\n vaultAddress: contractAddress,\n userAddress: this._address,\n connection: this.connection,\n depositData: payload.data[0],\n sendTransaction: this._provider.sendTransaction,\n });\n }\n }\n\n async callOnChain(\n chain: API.NetworkInfos,\n address: string,\n method: string,\n params: any[],\n options: {\n abi: any;\n },\n ): Promise<any> {\n console.log(\"-- params \", {\n chain,\n address,\n method,\n params,\n });\n if (method === \"getDepositFee\") {\n return getDepositQuoteFee({\n vaultAddress: address,\n userAddress: this._address,\n connection: this.connection,\n depositData: params[1],\n });\n }\n return 0;\n }\n\n async pollTransactionReceiptWithBackoff(\n txHash: string,\n baseInterval?: number,\n maxInterval?: number,\n maxRetries?: number,\n ): Promise<any> {\n return Promise.resolve({ status: 1 });\n }\n}\n\nexport { DefaultSolanaWalletAdapter };\n","import { BN, Program } from \"@coral-xyz/anchor\";\nimport type { WalletAdapterProps } from \"@solana/wallet-adapter-base\";\nimport {\n ComputeBudgetProgram,\n Connection,\n PublicKey,\n SystemProgram,\n TransactionMessage,\n VersionedTransaction,\n} from \"@solana/web3.js\";\nimport { decode as bs58Decode } from \"bs58\";\nimport { Hash } from \"crypto\";\nimport { keccak256 } from \"ethereum-cryptography/keccak\";\nimport { bytesToHex, hexToBytes } from \"ethereum-cryptography/utils\";\nimport { AbiCoder, solidityPackedKeccak256 } from \"ethers\";\nimport {\n utils as CoreUtils,\n AddOrderlyKeyInputs,\n RegisterAccountInputs,\n type SettleInputs,\n type SignatureDomain,\n type WithdrawInputs,\n InternalTransferInputs,\n} from \"@orderly.network/core\";\nimport { DexRequestInputs } from \"@orderly.network/core\";\nimport {\n DEFAUL_ORDERLY_KEY_SCOPE,\n LedgerWalletKey,\n} from \"@orderly.network/types\";\nimport {\n DVN_PROGRAM_ID,\n ENDPOINT_PROGRAM_ID,\n EXECUTOR_PROGRAM_ID,\n PRICE_FEED_PROGRAM_ID,\n SEND_LIB_PROGRAM_ID,\n TREASURY_PROGRAM_ID,\n} from \"./constant\";\nimport { IDL as VaultIDL, SolanaVault } from \"./idl/solana_vault\";\nimport {\n getBrokerPDA,\n getDefaultSendConfigPda,\n getDefaultSendLibConfigPda,\n getDstEID,\n getDvnConfigPda,\n getEndorcedOptionsPda,\n getEndpointSettingPda,\n getEventAuthorityPda,\n getExecutorConfigPda,\n getLookupTableAccount,\n getLookupTableAddress,\n getMessageLibInfoPda,\n getMessageLibPda,\n getNoncePda,\n getOAppConfigPda,\n getPeerAddress,\n getPeerPda,\n getPriceFeedPda,\n getSendConfigPda,\n getSendLibConfigPda,\n getSendLibInfoPda,\n getSendLibPda,\n getTokenPDA,\n getUlnEventAuthorityPda,\n getUlnSettingPda,\n getTokenAccounts,\n getVaultAuthorityPda,\n getSolVaultPda,\n} from \"./solana.util\";\n\nexport function addOrderlyKeyMessage(\n inputs: AddOrderlyKeyInputs & { chainId: number },\n) {\n const {\n publicKey,\n brokerId,\n expiration = 365,\n timestamp = Date.now(),\n scope,\n tag,\n chainId,\n subAccountId,\n } = inputs;\n const message = {\n brokerId: brokerId,\n chainType: \"SOL\",\n orderlyKey: publicKey,\n scope: scope || DEFAUL_ORDERLY_KEY_SCOPE,\n chainId,\n timestamp,\n expiration: timestamp + 1000 * 60 * 60 * 24 * expiration,\n ...(typeof tag !== \"undefined\" ? { tag } : {}),\n ...(typeof subAccountId !== \"undefined\" ? { subAccountId } : {}),\n };\n\n const brokerIdHash = solidityPackedKeccak256([\"string\"], [message.brokerId]);\n\n const orderlyKeyHash = solidityPackedKeccak256(\n [\"string\"],\n [message.orderlyKey],\n );\n const scopeHash = solidityPackedKeccak256([\"string\"], [message.scope]);\n const abicoder = AbiCoder.defaultAbiCoder();\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\"bytes32\", \"bytes32\", \"bytes32\", \"uint256\", \"uint256\", \"uint256\"],\n [\n brokerIdHash,\n orderlyKeyHash,\n scopeHash,\n message.chainId,\n message.timestamp,\n message.expiration,\n ],\n ),\n ),\n );\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n return [message, msgToSignTextEncoded];\n}\n\nexport function registerAccountMessage(\n inputs: RegisterAccountInputs & {\n chainId: number;\n },\n) {\n const { chainId, registrationNonce, brokerId, timestamp } = inputs;\n\n const message = {\n brokerId,\n chainId,\n timestamp,\n registrationNonce,\n };\n const brokerIdHash = solidityPackedKeccak256([\"string\"], [message.brokerId]);\n const abicoder = AbiCoder.defaultAbiCoder();\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\"bytes32\", \"uint256\", \"uint256\", \"uint256\"],\n [\n brokerIdHash,\n message.chainId,\n message.timestamp,\n message.registrationNonce,\n ],\n ),\n ),\n );\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n return [message, msgToSignTextEncoded];\n}\n\nexport function internalTransferMessage(\n inputs: InternalTransferInputs & {\n chainId: number;\n },\n) {\n const { chainId, receiver, token, amount, nonce } = inputs;\n const message = {\n chainId,\n receiver,\n token,\n amount,\n transferNonce: nonce,\n chainType: \"SOL\",\n };\n\n const tokenSymbolHash = solidityPackedKeccak256([\"string\"], [message.token]);\n\n const abicoder = AbiCoder.defaultAbiCoder();\n // StaticStruct staticStruct = new StaticStruct(\n // new Bytes32(Numeric.hexStringToByteArray(receiver)),\n // new Bytes32(Numeric.hexStringToByteArray(Hash.sha3(TypeEncoder.encodePacked(new Utf8String(token))))),\n // new Uint256(amount),\n // new Uint64(transferNonce),\n // new Uint256(Long.parseLong(chainId))\n // );\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\"bytes32\", \"bytes32\", \"uint256\", \"uint64\", \"uint256\"],\n [\n message.receiver,\n tokenSymbolHash,\n message.amount,\n message.transferNonce,\n chainId,\n ],\n ),\n ),\n );\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n return [message, msgToSignTextEncoded];\n}\n\nexport async function dexRequestMessage(\n inputs: DexRequestInputs & {\n domain: SignatureDomain;\n chainId: number;\n },\n) {\n const {\n payloadType,\n nonce,\n receiver,\n amount,\n vaultId,\n token,\n dexBrokerId,\n chainId,\n } = inputs;\n\n const message = {\n payloadType,\n nonce,\n receiver,\n amount,\n vaultId,\n token,\n dexBrokerId,\n chainId,\n };\n\n let receiverBytes: Uint8Array;\n receiverBytes = bs58Decode(receiver);\n const receiverBytes32 = new Uint8Array(32);\n receiverBytes32.set(receiverBytes);\n\n const vaultIdHex = vaultId;\n const vaultIdBytes = hexToBytes(vaultIdHex);\n\n const tokenHash = keccak256(new TextEncoder().encode(token));\n const dexBrokerIdHash = keccak256(new TextEncoder().encode(dexBrokerId));\n const abicoder = AbiCoder.defaultAbiCoder();\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\n \"uint8\", // payloadType\n \"uint256\", // nonce\n \"bytes32\", // receiver (Base58 decoded)\n \"uint256\", // amount\n \"bytes32\", // vaultId\n \"bytes32\", // token hash\n \"bytes32\", // dexBrokerId hash\n \"uint256\", // chainId\n ],\n [\n payloadType,\n nonce,\n receiverBytes,\n amount,\n vaultIdBytes,\n tokenHash,\n dexBrokerIdHash,\n chainId,\n ],\n ),\n ),\n );\n\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n\n return [message, msgToSignTextEncoded];\n}\n\nexport function withdrawMessage(\n inputs: WithdrawInputs & {\n chainId: number;\n },\n) {\n const { chainId, receiver, token, amount, nonce, brokerId } = inputs;\n const timestamp = Date.now();\n\n const message = {\n brokerId,\n chainId,\n receiver,\n token: token,\n amount: amount,\n withdrawNonce: nonce,\n timestamp,\n chainType: \"SOL\",\n };\n\n const brokerIdHash = solidityPackedKeccak256([\"string\"], [message.brokerId]);\n const tokenSymbolHash = solidityPackedKeccak256([\"string\"], [message.token]);\n const salt = keccak256(Buffer.from(\"Orderly Network\"));\n const abicoder = AbiCoder.defaultAbiCoder();\n\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\n \"bytes32\",\n \"bytes32\",\n \"uint256\",\n \"bytes32\",\n \"uint256\",\n \"uint64\",\n \"uint64\",\n \"bytes32\",\n ],\n [\n brokerIdHash,\n tokenSymbolHash,\n chainId,\n bs58Decode(message.receiver),\n message.amount,\n message.withdrawNonce,\n timestamp,\n salt,\n ],\n ),\n ),\n );\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n return [message, msgToSignTextEncoded];\n}\n\nexport function settleMessage(\n inputs: SettleInputs & {\n chainId: number;\n },\n) {\n const { settlePnlNonce, brokerId, chainId, timestamp } = inputs;\n\n const message = {\n brokerId: brokerId,\n chainId: chainId,\n timestamp: timestamp,\n chainType: \"SOL\",\n settleNonce: settlePnlNonce,\n };\n const brokerIdHash = solidityPackedKeccak256([\"string\"], [brokerId]);\n\n const abicoder = AbiCoder.defaultAbiCoder();\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\"bytes32\", \"uint256\", \"uint64\", \"uint64\"],\n [brokerIdHash, message.chainId, message.settleNonce, message.timestamp],\n ),\n ),\n );\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n return [message, msgToSignTextEncoded];\n}\n\nexport enum MsgType {\n Deposit = 0,\n // Add other message types if needed\n}\n\nexport interface LzMessage {\n msgType: MsgType;\n payload: Buffer;\n}\n\nexport function encodeLzMessage(message: LzMessage): Buffer {\n const msgTypeBuffer = Buffer.alloc(1);\n msgTypeBuffer.writeUInt8(message.msgType);\n return Buffer.concat([msgTypeBuffer, message.payload]);\n}\n\nexport async function getDepositQuoteFee({\n vaultAddress,\n userAddress,\n connection,\n depositData,\n}: {\n vaultAddress: string;\n userAddress: string;\n connection: Connection;\n depositData: {\n tokenHash: string;\n brokerHash: string;\n accountId: string;\n tokenAddress: string;\n tokenAmount: string;\n };\n}) {\n console.log(\"-- vaultAddress\", vaultAddress);\n const appProgramId = new PublicKey(vaultAddress);\n const DST_EID = getDstEID(appProgramId);\n\n const program = new Program<SolanaVault>(VaultIDL, appProgramId, {\n connection,\n });\n const userPublicKey = new PublicKey(userAddress);\n\n const oappConfigPDA = getOAppConfigPda(appProgramId);\n const peerPDA = getPeerPda(appProgramId, oappConfigPDA, DST_EID);\n const endorcedPDA = getEndorcedOptionsPda(\n appProgramId,\n oappConfigPDA,\n DST_EID,\n );\n const sendLibConfigPDA = getSendLibConfigPda(oappConfigPDA, DST_EID);\n const defaultSendLibPDA = getDefaultSendLibConfigPda(DST_EID);\n\n const endpointSettingPDA = getEndpointSettingPda();\n const noncePDA = getNoncePda(appProgramId, oappConfigPDA, DST_EID);\n const sendConfigPDA = getSendConfigPda(oappConfigPDA, DST_EID);\n const defaultSendConfigPDA = getDefaultSendConfigPda(DST_EID);\n const executorConfigPDA = getExecutorConfigPda();\n const priceFeedPDA = getPriceFeedPda();\n const dvnConfigPDA = getDvnConfigPda();\n\n const messageLibPDA = getMessageLibPda(SEND_LIB_PROGRAM_ID);\n const messageLibInfoPDA = getMessageLibInfoPda(messageLibPDA);\n const vaultAuthorityPDA = getVaultAuthorityPda(appProgramId);\n\n const depositParams = getDepositParams(userAddress, depositData);\n\n // deposit fee\n const quoteFee = await program.methods\n .oappQuote(depositParams)\n .accounts({\n oappConfig: oappConfigPDA,\n peer: peerPDA,\n enforcedOptions: endorcedPDA,\n vaultAuthority: vaultAuthorityPDA,\n })\n .remainingAccounts([\n // ENDPOINT solana/programs/programs/uln/src/instructions/endpoint/send.rs\n {\n pubkey: ENDPOINT_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: SEND_LIB_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: sendLibConfigPDA, // send_library_config\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: defaultSendLibPDA, // default_send_library_config\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: messageLibInfoPDA, // send_library_info\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: endpointSettingPDA, // endpoint settings\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: noncePDA, // nonce\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: messageLibPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: sendConfigPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: defaultSendConfigPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: EXECUTOR_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: executorConfigPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: PRICE_FEED_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: priceFeedPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: DVN_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: dvnConfigPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: PRICE_FEED_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: priceFeedPDA,\n isWritable: false,\n isSigner: false,\n },\n ])\n .instruction();\n\n const lastBlockHash = await connection.getLatestBlockhash();\n\n const lookupTableAddress = getLookupTableAddress(appProgramId);\n const lookupTableAccount = await getLookupTableAccount(\n connection,\n lookupTableAddress,\n );\n if (!lookupTableAccount) {\n console.log(\"-- lookup table account error\");\n throw new Error(\"-- lookup table account error\");\n }\n const feeMsg = new TransactionMessage({\n payerKey: userPublicKey,\n recentBlockhash: lastBlockHash.blockhash,\n instructions: [quoteFee],\n }).compileToV0Message([lookupTableAccount]);\n\n const feeTx = new VersionedTransaction(feeMsg);\n\n const feeRes = await connection.simulateTransaction(feeTx);\n\n console.log(\"-- feeRes\", feeRes);\n if (feeRes.value.err) {\n const errorInfo =\n typeof feeRes.value.err === \"object\"\n ? JSON.stringify(feeRes.value.err)\n : feeRes.value.err;\n\n if (errorInfo.toString().includes(\"AccountNotFound\")) {\n throw new Error(\"Error: Account gas is insufficient.\");\n }\n\n throw new Error(`Error: ${errorInfo}`);\n }\n const returnPrefix = `Program return: ${program.programId} `;\n const returnLogEntry = feeRes.value.logs!.find((log) =>\n log.startsWith(returnPrefix),\n );\n if (!returnLogEntry) {\n throw new Error(\"Error: get deposit fee error\");\n }\n\n // Slice out the prefix to get the base64 return data\n const encodedReturnData = returnLogEntry.slice(returnPrefix.length);\n\n // Convert the Base64 return data\n const decodedBuffer = Buffer.from(encodedReturnData, \"base64\");\n console.log(\n decodedBuffer.readBigUInt64LE(0),\n decodedBuffer.readBigUInt64LE(1),\n );\n return decodedBuffer.readBigUInt64LE(0);\n}\nconst getDepositParams = (\n userAddress: string,\n depositData: {\n tokenHash: string;\n brokerHash: string;\n accountId: string;\n tokenAddress: string;\n tokenAmount: string;\n },\n) => {\n const brokerHash = depositData.brokerHash;\n const codedBrokerHash = Array.from(Buffer.from(brokerHash.slice(2), \"hex\"));\n\n const tokenHash = depositData.tokenHash;\n const codedTokenHash = Array.from(Buffer.from(tokenHash.slice(2), \"hex\"));\n\n const solAccountId = depositData.accountId;\n const codedAccountId = Array.from(Buffer.from(solAccountId.slice(2), \"hex\"));\n const userPublicKey = new PublicKey(userAddress);\n\n return {\n accountId: codedAccountId,\n brokerHash: codedBrokerHash,\n tokenHash: codedTokenHash,\n userAddress: Array.from(userPublicKey.toBuffer()),\n tokenAmount: new BN(depositData.tokenAmount),\n };\n};\n\nexport async function deposit({\n vaultAddress,\n userAddress,\n connection,\n sendTransaction,\n depositData,\n}: {\n vaultAddress: string;\n userAddress: string;\n connection: Connection;\n sendTransaction: WalletAdapterProps[\"sendTransaction\"];\n depositData: {\n tokenHash: string;\n brokerHash: string;\n accountId: string;\n tokenAddress: string;\n tokenAmount: string;\n };\n}) {\n const brokerHash = depositData.brokerHash;\n const tokenHash = depositData.tokenHash;\n\n const SOL_HASH = CoreUtils.parseTokenHash(\"SOL\");\n const isSolDeposit = tokenHash.toLowerCase() === SOL_HASH.toLowerCase();\n\n console.log(\"-- vault address\", vaultAddress);\n const appProgramId = new PublicKey(vaultAddress);\n const program = new Program<SolanaVault>(VaultIDL, appProgramId, {\n connection,\n });\n // If is not SOL deposit, tokenAddress is the token address\n // else, tokenAddress is the USDC address\n const token = new PublicKey(depositData.tokenAddress);\n const userPublicKey = new PublicKey(userAddress);\n const userTokenAccount = getTokenAccounts(token, userPublicKey);\n const vaultAuthorityPda = getVaultAuthorityPda(appProgramId);\n const vaultTokenAccount = getTokenAccounts(token, vaultAuthorityPda);\n const allowedBrokerPDA = getBrokerPDA(appProgramId, brokerHash);\n const allowedTokenPDA = getTokenPDA(appProgramId, tokenHash);\n const oappConfigPDA = getOAppConfigPda(appProgramId);\n console.log(\"-- oappconfig pda\", oappConfigPDA.toBase58());\n const DST_EID = getDstEID(appProgramId);\n // const lzPDA = getLzReceiveTypesPda(appProgramId, oappConfigPDA);\n const peerPDA = getPeerPda(appProgramId, oappConfigPDA, DST_EID);\n const endorcedPDA = getEndorcedOptionsPda(\n appProgramId,\n oappConfigPDA,\n DST_EID,\n );\n const sendLibPDA = getSendLibPda();\n const sendLibConfigPDA = getSendLibConfigPda(oappConfigPDA, DST_EID);\n const defaultSendLibPDA = getDefaultSendLibConfigPda(DST_EID);\n const sendLibInfoPDA = getSendLibInfoPda(sendLibPDA);\n\n const endpointSettingPDA = getEndpointSettingPda();\n const noncePDA = getNoncePda(appProgramId, oappConfigPDA, DST_EID);\n const eventAuthorityPDA = getEventAuthorityPda();\n const ulnSettingPDA = getUlnSettingPda();\n const sendConfigPDA = getSendConfigPda(oappConfigPDA, DST_EID);\n const defaultSendConfigPDA = getDefaultSendConfigPda(DST_EID);\n const ulnEventAuthorityPDA = getUlnEventAuthorityPda();\n const executorConfigPDA = getExecutorConfigPda();\n const priceFeedPDA = getPriceFeedPda();\n const dvnConfigPDA = getDvnConfigPda();\n\n const vaultDepositParams = getDepositParams(userAddress, depositData);\n\n const buildSendRemainingAccounts = () => [\n // ENDPOINT solana/programs/programs/uln/src/instructions/endpoint/send.rs\n {\n isSigner: false,\n isWritable: false,\n pubkey: ENDPOINT_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n // 0\n pubkey: oappConfigPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: SEND_LIB_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n // 7\n pubkey: sendLibConfigPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 9\n pubkey: defaultSendLibPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 8\n pubkey: sendLibInfoPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 14\n pubkey: endpointSettingPDA,\n },\n {\n isSigner: false,\n isWritable: true,\n // 15\n pubkey: noncePDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 3\n pubkey: eventAuthorityPDA,\n },\n // ULN solana/programs/programs/uln/src/instructions/endpoint/send.rs\n {\n isSigner: false,\n isWritable: false,\n pubkey: ENDPOINT_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n // 13\n pubkey: ulnSettingPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 10\n pubkey: sendConfigPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 11\n pubkey: defaultSendConfigPDA,\n },\n {\n isSigner: true,\n isWritable: false,\n pubkey: userPublicKey,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: TREASURY_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: SystemProgram.programId,\n },\n {\n isSigner: false,\n isWritable: false,\n // 12\n pubkey: ulnEventAuthorityPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: SEND_LIB_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: EXECUTOR_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: true,\n // 16\n pubkey: executorConfigPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: PRICE_FEED_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n // 17\n pubkey: priceFeedPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: DVN_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: true,\n // 18\n pubkey: dvnConfigPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: PRICE_FEED_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n // 17\n pubkey: priceFeedPDA,\n },\n ];\n\n const fee = await getDepositQuoteFee({\n vaultAddress,\n userAddress,\n connection,\n depositData,\n });\n\n const sendParam = {\n nativeFee: new BN(fee.toString()),\n lzTokenFee: new BN(0),\n };\n\n // const sendParam = {\n // nativeFee: new BN(1_000_000_000),\n // lzTokenFee:new BN(0),\n //\n // }\n console.log(\"--- value params\", {\n vaultDepositParams,\n sendParam,\n });\n const ixDepositEntry = isSolDeposit\n ? await program.methods\n .depositSol(vaultDepositParams, sendParam)\n .accounts({\n solVault: getSolVaultPda(appProgramId),\n vaultAuthority: vaultAuthorityPda,\n user: userPublicKey,\n peer: peerPDA,\n enforcedOptions: endorcedPDA,\n oappConfig: oappConfigPDA,\n allowedBroker: allowedBrokerPDA,\n allowedToken: allowedTokenPDA,\n })\n .remainingAccounts(buildSendRemainingAccounts())\n .instruction()\n : await program.methods\n .deposit(vaultDepositParams, sendParam)\n .accounts({\n userTokenAccount: userTokenAccount,\n vaultAuthority: vaultAuthorityPda,\n vaultTokenAccount: vaultTokenAccount,\n depositToken: token,\n user: userPublicKey,\n peer: peerPDA,\n enforcedOptions: endorcedPDA,\n oappConfig: oappConfigPDA,\n allowedBroker: allowedBrokerPDA,\n allowedToken: allowedTokenPDA,\n })\n .remainingAccounts(buildSendRemainingAccounts())\n .instruction();\n\n const lookupTableAddress = getLookupTableAddress(appProgramId);\n const lookupTableAccount = await getLookupTableAccount(\n connection,\n lookupTableAddress,\n );\n if (!lookupTableAccount) {\n console.log(\"-- lookup table account error\");\n return;\n }\n\n const ixAddComputeBudget = ComputeBudgetProgram.setComputeUnitLimit({\n units: 400_000,\n });\n\n const lastBlockHash = await connection.getLatestBlockhash();\n const msg = new TransactionMessage({\n payerKey: userPublicKey,\n recentBlockhash: lastBlockHash.blockhash,\n instructions: [ixDepositEntry, ixAddComputeBudget],\n }).compileToV0Message([lookupTableAccount]);\n\n const tx = new VersionedTransaction(msg);\n\n const res = await sendTransaction(tx, connection);\n console.log(\"res\", res);\n return res;\n}\n\nexport function checkIsLedgerWallet(userAddress: string): boolean {\n const info = window.localStorage.getItem(LedgerWalletKey);\n if (!info) {\n return false;\n }\n const addressArr = JSON.parse(info ?? \"[]\");\n console.log(\"-- addressArr\", addressArr);\n if (addressArr.includes(userAddress)) {\n return true;\n }\n return false;\n}\n","import { addressToBytes32 } from \"@layerzerolabs/lz-v2-utilities\";\nimport { PublicKey } from \"@solana/web3.js\";\n\nexport const ENDPOINT_PROGRAM_ID = new PublicKey(\n \"76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6\",\n);\nexport const SEND_LIB_PROGRAM_ID = new PublicKey(\n \"7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH\",\n);\nexport const EXECUTOR_PROGRAM_ID = new PublicKey(\n \"6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn\",\n);\nexport const PRICE_FEED_PROGRAM_ID = new PublicKey(\n \"8ahPGPjEbpgGaZx2NV1iG5Shj7TDwvsjkEDcGWjt94TP\",\n);\nexport const RECEIVE_LIB_PROGRAM_ID = SEND_LIB_PROGRAM_ID;\nexport const TREASURY_PROGRAM_ID = SEND_LIB_PROGRAM_ID;\nexport const DVN_PROGRAM_ID = new PublicKey(\n \"HtEYV4xB4wvsj5fgTkcfuChYpvGYzgzwvNhgDZQNh7wW\",\n);\nexport const VAULT_AUTHORITY_SEED = \"VaultAuthority\";\nexport const BROKER_SEED = \"Broker\";\nexport const TOKEN_SEED = \"Token\";\nexport const SOL_VAULT_SEED = \"SolVault\";\n// fro dev\n// export const PEER_ADDRESS = addressToBytes32('0x9Dc724b24146BeDD2dA28b8C4B74126169B8f312');\n// for qa\nexport const DEV_PEER_ADDRESS = addressToBytes32(\n \"0x9Dc724b24146BeDD2dA28b8C4B74126169B8f312\",\n);\nexport const QA_PEER_ADDRESS = addressToBytes32(\n \"0x45b6C6266A7A2170617d8A27A50C642fd68b91c4\",\n);\nexport const STAGING_PEER_ADDRESS = addressToBytes32(\n \"0x5Bf771A65d057e778C5f0Ed52A0003316f94322D\",\n);\nexport const MAINNET_PEER_ADDRESS = addressToBytes32(\n \"0xCecAe061aa078e13b5e70D5F9eCee90a3F2B6AeA\",\n);\n\nexport const DEV_DST_EID = 40200;\nexport const MAIN_DST_EID = 30213;\n\nexport const DEV_LOOKUP_TABLE_ADDRESS = new PublicKey(\n \"BWp8HaYYhiNHekt3zgQhqoCrRftneGxxfgKmCZ6svHN\",\n);\nexport const QA_LOOKUP_TABLE_ADDRESS = new PublicKey(\n \"BswrQQoPKAFojTuJutZcBMtigAgTghEH4M8ofn3EG2X2\",\n);\nexport const STAGING_LOOKUP_TABLE_ADDRESS = new PublicKey(\n \"BbGKfxuPwDmu58BjPpd7PMG69TqnZjSpKaLDMgf9E9Dr\",\n);\nexport const MAINNET_LOOKUP_TABLE_ADDRESS = new PublicKey(\n \"8iq7xCQt3bLdRRn4A46d5GuaXYinBoiAhbe2sUmZVzwg\",\n);\n\nexport const DEV_OAPP_PROGRAM_ID = new PublicKey(\n \"EYJq9eU4GMRUriUJBgGoZ8YLQBXcWaciXuSsEXE7ieQS\",\n);\nexport const QA_OAPP_PROGRAM_ID = new PublicKey(\n \"5zBjLor7vEraAt4zp2H82sy9MSqFoDnNa1Lx6EYKTYRZ\",\n);\nexport const STAGING_OAPP_PROGRAM_ID = new PublicKey(\n \"9shwxWDUNhtwkHocsUAmrNAQfBH2DHh4njdAEdHZZkF2\",\n);\nexport const MAINNET_OAPP_PROGRAM_ID = new PublicKey(\n \"ErBmAD61mGFKvrFNaTJuxoPwqrS8GgtwtqJTJVjFWx9Q\",\n);\n","export type SolanaVault = {\n version: \"0.1.0\";\n name: \"solana_vault\";\n instructions: [\n {\n name: \"setVault\";\n accounts: [\n {\n name: \"admin\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetVaultParams\";\n };\n },\n ];\n },\n {\n name: \"deposit\";\n accounts: [\n {\n name: \"user\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"userTokenAccount\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"vaultTokenAccount\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"depositToken\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"peer\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"enforcedOptions\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"allowedBroker\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"allowedToken\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"tokenProgram\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"associatedTokenProgram\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"depositParams\";\n type: {\n defined: \"DepositParams\";\n };\n },\n {\n name: \"oappParams\";\n type: {\n defined: \"OAppSendParams\";\n };\n },\n ];\n returns: {\n defined: \"MessagingReceipt\";\n };\n },\n {\n name: \"depositSol\";\n accounts: [\n {\n name: \"user\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"solVault\";\n isMut: true;\n isSigner: false;\n docs: [\"CHECKED: sol_vault is used for SOL deposit\"];\n },\n {\n name: \"peer\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"enforcedOptions\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"allowedBroker\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"allowedToken\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"depositParams\";\n type: {\n defined: \"DepositParams\";\n };\n },\n {\n name: \"oappParams\";\n type: {\n defined: \"OAppSendParams\";\n };\n },\n ];\n returns: {\n defined: \"MessagingReceipt\";\n };\n },\n {\n name: \"initOapp\";\n accounts: [\n {\n name: \"payer\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"oappConfig\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"lzReceiveTypes\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"accountList\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"InitOAppParams\";\n };\n },\n ];\n },\n {\n name: \"setAccountList\";\n accounts: [\n {\n name: \"admin\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"lzReceiveTypes\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"accountsList\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetAccountListParams\";\n };\n },\n ];\n },\n {\n name: \"setManagerRole\";\n accounts: [\n {\n name: \"owner\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"managerRole\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetManagerRoleParams\";\n };\n },\n ];\n },\n {\n name: \"setBroker\";\n accounts: [\n {\n name: \"brokerManager\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"allowedBroker\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"managerRole\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetBrokerParams\";\n };\n },\n ];\n },\n {\n name: \"setWithdrawBroker\";\n accounts: [\n {\n name: \"brokerManager\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"withdrawBroker\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"managerRole\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetWithdrawBrokerParams\";\n };\n },\n ];\n },\n {\n name: \"setToken\";\n accounts: [\n {\n name: \"tokenManager\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"allowedToken\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"managerRole\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"mintAccount\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetTokenParams\";\n };\n },\n ];\n },\n {\n name: \"setWithdrawToken\";\n accounts: [\n {\n name: \"tokenManager\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"withdrawToken\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"managerRole\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"mintAccount\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetWithdrawTokenParams\";\n };\n },\n ];\n },\n {\n name: \"setOrderDelivery\";\n accounts: [\n {\n name: \"owner\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetOrderDeliveryParams\";\n };\n },\n ];\n },\n {\n name: \"oappQuote\";\n accounts: [\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"peer\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"enforcedOptions\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"vaultAuthority\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"DepositParams\";\n };\n },\n ];\n returns: {\n defined: \"MessagingFee\";\n };\n },\n {\n name: \"lzReceive\";\n accounts: [\n {\n name: \"payer\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"peer\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"withdrawBrokerPda\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"withdrawTokenPda\";\n isMut: false;\n isSigner: false;\n docs: [\"CHECK\"];\n },\n {\n name: \"tokenMint\";\n isMut: false;\n isSigner: false;\n docs: [\"CHECK\"];\n },\n {\n name: \"receiver\";\n isMut: true;\n isSigner: false;\n docs: [\"CHECK\"];\n },\n {\n name: \"receiverTokenAccount\";\n isMut: true;\n isSigner: false;\n docs: [\"UNCHECKED\"];\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"vaultTokenAccount\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"tokenProgram\";\n isMut: false;\n isSigner: false;\n docs: [\"CHECKED: sol_vault is used for SOL withdrawal\"];\n },\n {\n name: \"associatedTokenProgram\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"eventAuthority\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"program\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"OAppLzReceiveParams\";\n };\n },\n ];\n },\n {\n name: \"lzReceiveTypes\";\n accounts: [\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"accountList\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"OAppLzReceiveParams\";\n };\n },\n ];\n returns: {\n vec: {\n defined: \"oapp::endpoint_cpi::LzAccount\";\n };\n };\n },\n {\n name: \"setRateLimit\";\n accounts: [\n {\n name: \"admin\";\n isMut: false;\n isSigner: true;\n },\n {\n name: \"peer\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetRateLimitParams\";\n };\n },\n ];\n },\n {\n name: \"setDelegate\";\n accounts: [\n {\n name: \"admin\";\n isMut: false;\n isSigner: true;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetDelegateParams\";\n };\n },\n ];\n },\n {\n name: \"transferAdmin\";\n accounts: [\n {\n name: \"admin\";\n isMut: false;\n isSigner: true;\n },\n {\n name: \"oappConfig\";\n isMut: true;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"TransferAdminParams\";\n };\n },\n ];\n },\n {\n name: \"setPeer\";\n accounts: [\n {\n name: \"admin\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"peer\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetPeerParams\";\n };\n },\n ];\n },\n {\n name: \"setEnforcedOptions\";\n accounts: [\n {\n name: \"admin\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"enforcedOptions\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetEnforcedOptionsParams\";\n };\n },\n ];\n },\n ];\n accounts: [\n {\n name: \"enforcedOptions\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"send\";\n type: \"bytes\";\n },\n {\n name: \"sendAndCall\";\n type: \"bytes\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"oAppConfig\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"endpointProgram\";\n type: \"publicKey\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n {\n name: \"admin\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"oAppLzReceiveTypesAccounts\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"oappConfig\";\n type: \"publicKey\";\n },\n {\n name: \"accountList\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"accountList\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"bump\";\n type: \"u8\";\n },\n {\n name: \"woofiProPda\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawUsdcPda\";\n type: \"publicKey\";\n },\n {\n name: \"usdcMint\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawUsdtPda\";\n type: \"publicKey\";\n },\n {\n name: \"usdtMint\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawWsolPda\";\n type: \"publicKey\";\n },\n {\n name: \"wsolMint\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"peer\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"address\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"rateLimiter\";\n type: {\n option: {\n defined: \"RateLimiter\";\n };\n };\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"allowedBroker\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"allowedToken\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenDecimals\";\n type: \"u8\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"managerRole\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"roleHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"vaultAuthority\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"bump\";\n docs: [\"Bump seed for the vault authority PDA\"];\n type: \"u8\";\n },\n {\n name: \"owner\";\n type: \"publicKey\";\n },\n {\n name: \"depositNonce\";\n type: \"u64\";\n },\n {\n name: \"orderDelivery\";\n type: \"bool\";\n },\n {\n name: \"inboundNonce\";\n type: \"u64\";\n },\n {\n name: \"dstEid\";\n type: \"u32\";\n },\n {\n name: \"solChainId\";\n type: \"u128\";\n },\n ];\n };\n },\n {\n name: \"withdrawBroker\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerIndex\";\n type: \"u16\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"withdrawToken\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenDecimals\";\n type: \"u8\";\n },\n {\n name: \"tokenIndex\";\n type: \"u8\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n ];\n types: [\n {\n name: \"VaultDepositParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"userAddress\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"srcChainId\";\n type: \"u128\";\n },\n {\n name: \"tokenAmount\";\n type: \"u128\";\n },\n {\n name: \"srcChainDepositNonce\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"LzMessage\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"msgType\";\n type: \"u8\";\n },\n {\n name: \"payload\";\n type: \"bytes\";\n },\n ];\n };\n },\n {\n name: \"AccountWithdrawSol\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"sender\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"receiver\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerIndex\";\n type: \"u16\";\n },\n {\n name: \"tokenIndex\";\n type: \"u8\";\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n },\n {\n name: \"fee\";\n type: \"u64\";\n },\n {\n name: \"chainId\";\n type: \"u64\";\n },\n {\n name: \"withdrawNonce\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"VaultWithdrawParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"sender\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"receiver\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n },\n {\n name: \"fee\";\n type: \"u128\";\n },\n {\n name: \"chainId\";\n type: \"u128\";\n },\n {\n name: \"withdrawNonce\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"InitOAppParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"admin\";\n type: \"publicKey\";\n },\n {\n name: \"accountList\";\n type: \"publicKey\";\n },\n {\n name: \"endpointProgram\";\n type: {\n option: \"publicKey\";\n };\n },\n ];\n };\n },\n {\n name: \"OAppLzReceiveParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"srcEid\";\n type: \"u32\";\n },\n {\n name: \"sender\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"nonce\";\n type: \"u64\";\n },\n {\n name: \"guid\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"message\";\n type: \"bytes\";\n },\n {\n name: \"extraData\";\n type: \"bytes\";\n },\n ];\n };\n },\n {\n name: \"MessagingFee\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"nativeFee\";\n type: \"u64\";\n },\n {\n name: \"lzTokenFee\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"SetAccountListParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"woofiProPda\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawUsdcPda\";\n type: \"publicKey\";\n },\n {\n name: \"usdcMint\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawUsdtPda\";\n type: \"publicKey\";\n },\n {\n name: \"usdtMint\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawWsolPda\";\n type: \"publicKey\";\n },\n {\n name: \"wsolMint\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"SetDelegateParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"delegate\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"SetEnforcedOptionsParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"dstEid\";\n type: \"u32\";\n },\n {\n name: \"send\";\n type: \"bytes\";\n },\n {\n name: \"sendAndCall\";\n type: \"bytes\";\n },\n ];\n };\n },\n {\n name: \"SetPeerParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"dstEid\";\n type: \"u32\";\n },\n {\n name: \"peer\";\n type: {\n array: [\"u8\", 32];\n };\n },\n ];\n };\n },\n {\n name: \"SetRateLimitParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"dstEid\";\n type: \"u32\";\n },\n {\n name: \"refillPerSecond\";\n type: {\n option: \"u64\";\n };\n },\n {\n name: \"capacity\";\n type: {\n option: \"u64\";\n };\n },\n {\n name: \"enabled\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"TransferAdminParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"admin\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"DepositParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"userAddress\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"OAppSendParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"nativeFee\";\n type: \"u64\";\n },\n {\n name: \"lzTokenFee\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"SetBrokerParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"brokerManagerRole\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"SetManagerRoleParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"roleHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"managerAddress\";\n type: \"publicKey\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"SetOrderDeliveryParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"orderDelivery\";\n type: \"bool\";\n },\n {\n name: \"nonce\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"SetTokenParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"tokenManagerRole\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"SetVaultParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"owner\";\n type: \"publicKey\";\n },\n {\n name: \"depositNonce\";\n type: \"u64\";\n },\n {\n name: \"orderDelivery\";\n type: \"bool\";\n },\n {\n name: \"inboundNonce\";\n type: \"u64\";\n },\n {\n name: \"dstEid\";\n type: \"u32\";\n },\n {\n name: \"solChainId\";\n type: \"u128\";\n },\n ];\n };\n },\n {\n name: \"SetWithdrawBrokerParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"brokerManagerRole\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerIndex\";\n type: \"u16\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"SetWithdrawTokenParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"tokenManagerRole\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenIndex\";\n type: \"u8\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"RateLimiter\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"capacity\";\n type: \"u64\";\n },\n {\n name: \"tokens\";\n type: \"u64\";\n },\n {\n name: \"refillPerSecond\";\n type: \"u64\";\n },\n {\n name: \"lastRefillTime\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"OAppError\";\n type: {\n kind: \"enum\";\n variants: [\n {\n name: \"Unauthorized\";\n },\n {\n name: \"InvalidSender\";\n },\n {\n name: \"InvalidReceiver\";\n },\n {\n name: \"InvalidOptions\";\n },\n {\n name: \"InvalidEndpointProgram\";\n },\n {\n name: \"RateLimitExceeded\";\n },\n {\n name: \"WithdrawFailed\";\n },\n {\n name: \"InvalidInboundNonce\";\n },\n {\n name: \"InvalidReceiverTokenAccount\";\n },\n {\n name: \"InvalidAdminTokenAccount\";\n },\n {\n name: \"InvalidMessageType\";\n },\n {\n name: \"InvalidTokenIndex\";\n },\n ];\n };\n },\n {\n name: \"MsgType\";\n type: {\n kind: \"enum\";\n variants: [\n {\n name: \"Deposit\";\n },\n {\n name: \"Withdraw\";\n },\n {\n name: \"RebalanceBurn\";\n },\n {\n name: \"RebalanceMint\";\n },\n ];\n };\n },\n ];\n events: [\n {\n name: \"SetAllowedBroker\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n ];\n },\n {\n name: \"ResetAllowedBroker\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n ];\n },\n {\n name: \"SetAllowedToken\";\n fields: [\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n index: false;\n },\n ];\n },\n {\n name: \"ResetAllowedToken\";\n fields: [\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n index: false;\n },\n ];\n },\n {\n name: \"SetWithdrawTokenIndex\";\n fields: [\n {\n name: \"tokenIndex\";\n type: \"u8\";\n index: false;\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n index: false;\n },\n ];\n },\n {\n name: \"ResetWithdrawTokenIndex\";\n fields: [\n {\n name: \"tokenIndex\";\n type: \"u8\";\n index: false;\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n index: false;\n },\n ];\n },\n {\n name: \"SetWithdrawBrokerEvent\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"brokerIndex\";\n type: \"u16\";\n index: false;\n },\n ];\n },\n {\n name: \"ResetWithdrawBrokerEvent\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"brokerIndex\";\n type: \"u16\";\n index: false;\n },\n ];\n },\n {\n name: \"SetManager\";\n fields: [\n {\n name: \"roleHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"managerAddress\";\n type: \"publicKey\";\n index: false;\n },\n {\n name: \"allowed\";\n type: \"bool\";\n index: false;\n },\n ];\n },\n {\n name: \"Deposited\";\n fields: [\n {\n name: \"user\";\n type: \"publicKey\";\n index: false;\n },\n {\n name: \"amount\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"Withdrawn\";\n fields: [\n {\n name: \"user\";\n type: \"publicKey\";\n index: false;\n },\n {\n name: \"amount\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"CreatedATA\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"receiver\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"receiverTokenAccount\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"withdrawNonce\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"VaultDeposited\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"userAddress\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"srcChainId\";\n type: \"u128\";\n index: false;\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n index: false;\n },\n {\n name: \"srcChainDepositNonce\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"VaultWithdrawn\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"sender\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"receiver\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n index: false;\n },\n {\n name: \"fee\";\n type: \"u128\";\n index: false;\n },\n {\n name: \"chainId\";\n type: \"u128\";\n index: false;\n },\n {\n name: \"withdrawNonce\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"FrozenWithdrawn\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"sender\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"receiver\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n index: false;\n },\n {\n name: \"fee\";\n type: \"u128\";\n index: false;\n },\n {\n name: \"chainId\";\n type: \"u128\";\n index: false;\n },\n {\n name: \"withdrawNonce\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"OAppSent\";\n fields: [\n {\n name: \"guid\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"dstEid\";\n type: \"u32\";\n index: false;\n },\n ];\n },\n {\n name: \"OAppReceived\";\n fields: [\n {\n name: \"guid\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"srcEid\";\n type: \"u32\";\n index: false;\n },\n ];\n },\n ];\n errors: [\n {\n code: 6000;\n name: \"InsufficientFunds\";\n msg: \"Deposited funds are insufficient for withdrawal\";\n },\n {\n code: 6001;\n name: \"UserInfoBelongsToAnotherUser\";\n msg: \"User info pda belongs to another user\";\n },\n {\n code: 6002;\n name: \"BrokerNotAllowed\";\n msg: \"Broker is not allowed\";\n },\n {\n code: 6003;\n name: \"TokenNotAllowed\";\n msg: \"Token is not allowed\";\n },\n {\n code: 6004;\n name: \"InvalidAccountId\";\n msg: \"AccountId is invalid\";\n },\n {\n code: 6005;\n name: \"InvalidVaultOwner\";\n msg: \"Vault owner is not the same as the payer\";\n },\n {\n code: 6006;\n name: \"ManagerRoleNotAllowed\";\n msg: \"Manager role is not allowed\";\n },\n ];\n};\n\nexport const IDL: SolanaVault = {\n version: \"0.1.0\",\n name: \"solana_vault\",\n instructions: [\n {\n name: \"setVault\",\n accounts: [\n {\n name: \"admin\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetVaultParams\",\n },\n },\n ],\n },\n {\n name: \"deposit\",\n accounts: [\n {\n name: \"user\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"userTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"vaultTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"depositToken\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"peer\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"enforcedOptions\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"allowedBroker\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"allowedToken\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"associatedTokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"depositParams\",\n type: {\n defined: \"DepositParams\",\n },\n },\n {\n name: \"oappParams\",\n type: {\n defined: \"OAppSendParams\",\n },\n },\n ],\n returns: {\n defined: \"MessagingReceipt\",\n },\n },\n {\n name: \"depositSol\",\n accounts: [\n {\n name: \"user\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"solVault\",\n isMut: true,\n isSigner: false,\n docs: [\"CHECKED: sol_vault is used for SOL deposit\"],\n },\n {\n name: \"peer\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"enforcedOptions\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"allowedBroker\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"allowedToken\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"depositParams\",\n type: {\n defined: \"DepositParams\",\n },\n },\n {\n name: \"oappParams\",\n type: {\n defined: \"OAppSendParams\",\n },\n },\n ],\n returns: {\n defined: \"MessagingReceipt\",\n },\n },\n {\n name: \"initOapp\",\n accounts: [\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"oappConfig\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"lzReceiveTypes\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"accountList\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"InitOAppParams\",\n },\n },\n ],\n },\n {\n name: \"setAccountList\",\n accounts: [\n {\n name: \"admin\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"lzReceiveTypes\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"accountsList\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetAccountListParams\",\n },\n },\n ],\n },\n {\n name: \"setManagerRole\",\n accounts: [\n {\n name: \"owner\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"managerRole\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetManagerRoleParams\",\n },\n },\n ],\n },\n {\n name: \"setBroker\",\n accounts: [\n {\n name: \"brokerManager\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"allowedBroker\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"managerRole\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetBrokerParams\",\n },\n },\n ],\n },\n {\n name: \"setWithdrawBroker\",\n accounts: [\n {\n name: \"brokerManager\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"withdrawBroker\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"managerRole\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetWithdrawBrokerParams\",\n },\n },\n ],\n },\n {\n name: \"setToken\",\n accounts: [\n {\n name: \"tokenManager\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"allowedToken\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"managerRole\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mintAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetTokenParams\",\n },\n },\n ],\n },\n {\n name: \"setWithdrawToken\",\n accounts: [\n {\n name: \"tokenManager\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"withdrawToken\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"managerRole\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mintAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetWithdrawTokenParams\",\n },\n },\n ],\n },\n {\n name: \"setOrderDelivery\",\n accounts: [\n {\n name: \"owner\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetOrderDeliveryParams\",\n },\n },\n ],\n },\n {\n name: \"oappQuote\",\n accounts: [\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"peer\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"enforcedOptions\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"vaultAuthority\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"DepositParams\",\n },\n },\n ],\n returns: {\n defined: \"MessagingFee\",\n },\n },\n {\n name: \"lzReceive\",\n accounts: [\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"peer\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"withdrawBrokerPda\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"withdrawTokenPda\",\n isMut: false,\n isSigner: false,\n docs: [\"CHECK\"],\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n docs: [\"CHECK\"],\n },\n {\n name: \"receiver\",\n isMut: true,\n isSigner: false,\n docs: [\"CHECK\"],\n },\n {\n name: \"receiverTokenAccount\",\n isMut: true,\n isSigner: false,\n docs: [\"UNCHECKED\"],\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"vaultTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n docs: [\"CHECKED: sol_vault is used for SOL withdrawal\"],\n },\n {\n name: \"associatedTokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"eventAuthority\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"program\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OAppLzReceiveParams\",\n },\n },\n ],\n },\n {\n name: \"lzReceiveTypes\",\n accounts: [\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"accountList\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OAppLzReceiveParams\",\n },\n },\n ],\n returns: {\n vec: {\n defined: \"oapp::endpoint_cpi::LzAccount\",\n },\n },\n },\n {\n name: \"setRateLimit\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"peer\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetRateLimitParams\",\n },\n },\n ],\n },\n {\n name: \"setDelegate\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetDelegateParams\",\n },\n },\n ],\n },\n {\n name: \"transferAdmin\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"oappConfig\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"TransferAdminParams\",\n },\n },\n ],\n },\n {\n name: \"setPeer\",\n accounts: [\n {\n name: \"admin\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"peer\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetPeerParams\",\n },\n },\n ],\n },\n {\n name: \"setEnforcedOptions\",\n accounts: [\n {\n name: \"admin\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"enforcedOptions\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetEnforcedOptionsParams\",\n },\n },\n ],\n },\n ],\n accounts: [\n {\n name: \"enforcedOptions\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"send\",\n type: \"bytes\",\n },\n {\n name: \"sendAndCall\",\n type: \"bytes\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"oAppConfig\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"endpointProgram\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"admin\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"oAppLzReceiveTypesAccounts\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"oappConfig\",\n type: \"publicKey\",\n },\n {\n name: \"accountList\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"accountList\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"woofiProPda\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawUsdcPda\",\n type: \"publicKey\",\n },\n {\n name: \"usdcMint\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawUsdtPda\",\n type: \"publicKey\",\n },\n {\n name: \"usdtMint\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawWsolPda\",\n type: \"publicKey\",\n },\n {\n name: \"wsolMint\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"peer\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"address\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"rateLimiter\",\n type: {\n option: {\n defined: \"RateLimiter\",\n },\n },\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"allowedBroker\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"allowedToken\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenDecimals\",\n type: \"u8\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"managerRole\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"roleHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"vaultAuthority\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bump\",\n docs: [\"Bump seed for the vault authority PDA\"],\n type: \"u8\",\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n {\n name: \"depositNonce\",\n type: \"u64\",\n },\n {\n name: \"orderDelivery\",\n type: \"bool\",\n },\n {\n name: \"inboundNonce\",\n type: \"u64\",\n },\n {\n name: \"dstEid\",\n type: \"u32\",\n },\n {\n name: \"solChainId\",\n type: \"u128\",\n },\n ],\n },\n },\n {\n name: \"withdrawBroker\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerIndex\",\n type: \"u16\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"withdrawToken\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenDecimals\",\n type: \"u8\",\n },\n {\n name: \"tokenIndex\",\n type: \"u8\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n ],\n types: [\n {\n name: \"VaultDepositParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"userAddress\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"srcChainId\",\n type: \"u128\",\n },\n {\n name: \"tokenAmount\",\n type: \"u128\",\n },\n {\n name: \"srcChainDepositNonce\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"LzMessage\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"msgType\",\n type: \"u8\",\n },\n {\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n },\n },\n {\n name: \"AccountWithdrawSol\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"sender\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"receiver\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerIndex\",\n type: \"u16\",\n },\n {\n name: \"tokenIndex\",\n type: \"u8\",\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n },\n {\n name: \"fee\",\n type: \"u64\",\n },\n {\n name: \"chainId\",\n type: \"u64\",\n },\n {\n name: \"withdrawNonce\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"VaultWithdrawParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"sender\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"receiver\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n },\n {\n name: \"fee\",\n type: \"u128\",\n },\n {\n name: \"chainId\",\n type: \"u128\",\n },\n {\n name: \"withdrawNonce\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"InitOAppParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"admin\",\n type: \"publicKey\",\n },\n {\n name: \"accountList\",\n type: \"publicKey\",\n },\n {\n name: \"endpointProgram\",\n type: {\n option: \"publicKey\",\n },\n },\n ],\n },\n },\n {\n name: \"OAppLzReceiveParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"srcEid\",\n type: \"u32\",\n },\n {\n name: \"sender\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"nonce\",\n type: \"u64\",\n },\n {\n name: \"guid\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"message\",\n type: \"bytes\",\n },\n {\n name: \"extraData\",\n type: \"bytes\",\n },\n ],\n },\n },\n {\n name: \"MessagingFee\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"nativeFee\",\n type: \"u64\",\n },\n {\n name: \"lzTokenFee\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"SetAccountListParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"woofiProPda\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawUsdcPda\",\n type: \"publicKey\",\n },\n {\n name: \"usdcMint\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawUsdtPda\",\n type: \"publicKey\",\n },\n {\n name: \"usdtMint\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawWsolPda\",\n type: \"publicKey\",\n },\n {\n name: \"wsolMint\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"SetDelegateParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"delegate\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"SetEnforcedOptionsParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"dstEid\",\n type: \"u32\",\n },\n {\n name: \"send\",\n type: \"bytes\",\n },\n {\n name: \"sendAndCall\",\n type: \"bytes\",\n },\n ],\n },\n },\n {\n name: \"SetPeerParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"dstEid\",\n type: \"u32\",\n },\n {\n name: \"peer\",\n type: {\n array: [\"u8\", 32],\n },\n },\n ],\n },\n },\n {\n name: \"SetRateLimitParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"dstEid\",\n type: \"u32\",\n },\n {\n name: \"refillPerSecond\",\n type: {\n option: \"u64\",\n },\n },\n {\n name: \"capacity\",\n type: {\n option: \"u64\",\n },\n },\n {\n name: \"enabled\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"TransferAdminParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"admin\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"DepositParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"userAddress\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"OAppSendParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"nativeFee\",\n type: \"u64\",\n },\n {\n name: \"lzTokenFee\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"SetBrokerParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"brokerManagerRole\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"SetManagerRoleParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"roleHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"managerAddress\",\n type: \"publicKey\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"SetOrderDeliveryParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"orderDelivery\",\n type: \"bool\",\n },\n {\n name: \"nonce\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"SetTokenParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"tokenManagerRole\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"SetVaultParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n {\n name: \"depositNonce\",\n type: \"u64\",\n },\n {\n name: \"orderDelivery\",\n type: \"bool\",\n },\n {\n name: \"inboundNonce\",\n type: \"u64\",\n },\n {\n name: \"dstEid\",\n type: \"u32\",\n },\n {\n name: \"solChainId\",\n type: \"u128\",\n },\n ],\n },\n },\n {\n name: \"SetWithdrawBrokerParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"brokerManagerRole\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerIndex\",\n type: \"u16\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"SetWithdrawTokenParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"tokenManagerRole\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenIndex\",\n type: \"u8\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"RateLimiter\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"capacity\",\n type: \"u64\",\n },\n {\n name: \"tokens\",\n type: \"u64\",\n },\n {\n name: \"refillPerSecond\",\n type: \"u64\",\n },\n {\n name: \"lastRefillTime\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"OAppError\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Unauthorized\",\n },\n {\n name: \"InvalidSender\",\n },\n {\n name: \"InvalidReceiver\",\n },\n {\n name: \"InvalidOptions\",\n },\n {\n name: \"InvalidEndpointProgram\",\n },\n {\n name: \"RateLimitExceeded\",\n },\n {\n name: \"WithdrawFailed\",\n },\n {\n name: \"InvalidInboundNonce\",\n },\n {\n name: \"InvalidReceiverTokenAccount\",\n },\n {\n name: \"InvalidAdminTokenAccount\",\n },\n {\n name: \"InvalidMessageType\",\n },\n {\n name: \"InvalidTokenIndex\",\n },\n ],\n },\n },\n {\n name: \"MsgType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Deposit\",\n },\n {\n name: \"Withdraw\",\n },\n {\n name: \"RebalanceBurn\",\n },\n {\n name: \"RebalanceMint\",\n },\n ],\n },\n },\n ],\n events: [\n {\n name: \"SetAllowedBroker\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n ],\n },\n {\n name: \"ResetAllowedBroker\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n ],\n },\n {\n name: \"SetAllowedToken\",\n fields: [\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"ResetAllowedToken\",\n fields: [\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"SetWithdrawTokenIndex\",\n fields: [\n {\n name: \"tokenIndex\",\n type: \"u8\",\n index: false,\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"ResetWithdrawTokenIndex\",\n fields: [\n {\n name: \"tokenIndex\",\n type: \"u8\",\n index: false,\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"SetWithdrawBrokerEvent\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"brokerIndex\",\n type: \"u16\",\n index: false,\n },\n ],\n },\n {\n name: \"ResetWithdrawBrokerEvent\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"brokerIndex\",\n type: \"u16\",\n index: false,\n },\n ],\n },\n {\n name: \"SetManager\",\n fields: [\n {\n name: \"roleHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"managerAddress\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"allowed\",\n type: \"bool\",\n index: false,\n },\n ],\n },\n {\n name: \"Deposited\",\n fields: [\n {\n name: \"user\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"Withdrawn\",\n fields: [\n {\n name: \"user\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"CreatedATA\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"receiver\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"receiverTokenAccount\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"withdrawNonce\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"VaultDeposited\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"userAddress\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"srcChainId\",\n type: \"u128\",\n index: false,\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"srcChainDepositNonce\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"VaultWithdrawn\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"sender\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"receiver\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"fee\",\n type: \"u128\",\n index: false,\n },\n {\n name: \"chainId\",\n type: \"u128\",\n index: false,\n },\n {\n name: \"withdrawNonce\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"FrozenWithdrawn\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"sender\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"receiver\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"fee\",\n type: \"u128\",\n index: false,\n },\n {\n name: \"chainId\",\n type: \"u128\",\n index: false,\n },\n {\n name: \"withdrawNonce\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"OAppSent\",\n fields: [\n {\n name: \"guid\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"dstEid\",\n type: \"u32\",\n index: false,\n },\n ],\n },\n {\n name: \"OAppReceived\",\n fields: [\n {\n name: \"guid\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"srcEid\",\n type: \"u32\",\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"InsufficientFunds\",\n msg: \"Deposited funds are insufficient for withdrawal\",\n },\n {\n code: 6001,\n name: \"UserInfoBelongsToAnotherUser\",\n msg: \"User info pda belongs to another user\",\n },\n {\n code: 6002,\n name: \"BrokerNotAllowed\",\n msg: \"Broker is not allowed\",\n },\n {\n code: 6003,\n name: \"TokenNotAllowed\",\n msg: \"Token is not allowed\",\n },\n {\n code: 6004,\n name: \"InvalidAccountId\",\n msg: \"AccountId is invalid\",\n },\n {\n code: 6005,\n name: \"InvalidVaultOwner\",\n msg: \"Vault owner is not the same as the payer\",\n },\n {\n code: 6006,\n name: \"ManagerRoleNotAllowed\",\n msg: \"Manager role is not allowed\",\n },\n ],\n};\n","import {\n DVN_CONFIG_SEED,\n ENDPOINT_SEED,\n ENFORCED_OPTIONS_SEED,\n EVENT_SEED,\n EXECUTOR_CONFIG_SEED,\n LZ_RECEIVE_TYPES_SEED,\n MESSAGE_LIB_SEED,\n NONCE_SEED,\n OAPP_SEED,\n PEER_SEED,\n PRICE_FEED_SEED,\n SEND_CONFIG_SEED,\n SEND_LIBRARY_CONFIG_SEED,\n ULN_SEED,\n} from \"@layerzerolabs/lz-solana-sdk-v2\";\nimport { getAssociatedTokenAddressSync } from \"@solana/spl-token\";\nimport { Connection, PublicKey } from \"@solana/web3.js\";\nimport {\n BROKER_SEED,\n DEV_DST_EID,\n DEV_LOOKUP_TABLE_ADDRESS,\n DEV_OAPP_PROGRAM_ID,\n DEV_PEER_ADDRESS,\n DVN_PROGRAM_ID,\n ENDPOINT_PROGRAM_ID,\n EXECUTOR_PROGRAM_ID,\n MAIN_DST_EID,\n MAINNET_LOOKUP_TABLE_ADDRESS,\n MAINNET_OAPP_PROGRAM_ID,\n MAINNET_PEER_ADDRESS,\n PRICE_FEED_PROGRAM_ID,\n QA_LOOKUP_TABLE_ADDRESS,\n QA_OAPP_PROGRAM_ID,\n QA_PEER_ADDRESS,\n RECEIVE_LIB_PROGRAM_ID,\n SEND_LIB_PROGRAM_ID,\n STAGING_LOOKUP_TABLE_ADDRESS,\n STAGING_OAPP_PROGRAM_ID,\n STAGING_PEER_ADDRESS,\n TOKEN_SEED,\n VAULT_AUTHORITY_SEED,\n SOL_VAULT_SEED,\n} from \"./constant\";\n\nexport const getTokenAccounts = (\n token: PublicKey,\n owner: PublicKey,\n): PublicKey => {\n const tokenAccount = getAssociatedTokenAddressSync(token, owner, true);\n return tokenAccount;\n};\n\nexport function getVaultAuthorityPda(VAULT_PROGRAM_ID: PublicKey): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(VAULT_AUTHORITY_SEED, \"utf8\")],\n VAULT_PROGRAM_ID,\n )[0];\n}\n\nexport function getSolVaultPda(VAULT_PROGRAM_ID: PublicKey): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SOL_VAULT_SEED, \"utf8\")],\n VAULT_PROGRAM_ID,\n )[0];\n}\n\nexport function getBrokerPDA(\n programId: PublicKey,\n brokerHash: string,\n): PublicKey {\n const hash = Array.from(Buffer.from(brokerHash.slice(2), \"hex\"));\n return PublicKey.findProgramAddressSync(\n [Buffer.from(BROKER_SEED, \"utf8\"), Buffer.from(hash)],\n programId,\n )[0];\n}\n\nexport function getTokenPDA(\n programId: PublicKey,\n tokenHash: string,\n): PublicKey {\n const hash = Array.from(Buffer.from(tokenHash.slice(2), \"hex\"));\n return PublicKey.findProgramAddressSync(\n [Buffer.from(TOKEN_SEED, \"utf8\"), Buffer.from(hash)],\n programId,\n )[0];\n}\n\nexport function getOAppConfigPda(programId: PublicKey): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(OAPP_SEED, \"utf8\")],\n programId,\n )[0];\n}\n\nexport function getLzReceiveTypesPda(\n programId: PublicKey,\n oappConfigPda: PublicKey,\n): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(LZ_RECEIVE_TYPES_SEED, \"utf8\"), oappConfigPda.toBuffer()],\n programId,\n )[0];\n}\n\nexport function getPeerPda(\n OAPP_PROGRAM_ID: PublicKey,\n oappConfigPda: PublicKey,\n dstEid: number,\n): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n\n return PublicKey.findProgramAddressSync(\n [Buffer.from(PEER_SEED, \"utf8\"), oappConfigPda.toBuffer(), bufferDstEid],\n OAPP_PROGRAM_ID,\n )[0];\n}\n\nexport function getEndorcedOptionsPda(\n OAPP_PROGRAM_ID: PublicKey,\n oappConfigPda: PublicKey,\n dstEid: number,\n): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(ENFORCED_OPTIONS_SEED, \"utf8\"),\n oappConfigPda.toBuffer(),\n bufferDstEid,\n ],\n OAPP_PROGRAM_ID,\n )[0];\n}\n\nexport function getSendLibPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, \"utf8\")],\n SEND_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getSendLibConfigPda(\n oappConfigPda: PublicKey,\n dstEid: number,\n): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEND_LIBRARY_CONFIG_SEED, \"utf8\"),\n oappConfigPda.toBuffer(),\n bufferDstEid,\n ],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getDefaultSendLibConfigPda(dstEid: number): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEND_LIBRARY_CONFIG_SEED, \"utf8\"), bufferDstEid],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getSendLibInfoPda(sendLibPda: PublicKey): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, \"utf8\"), sendLibPda.toBuffer()],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getEndpointSettingPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(ENDPOINT_SEED, \"utf8\")],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getPeerAddress(OAPP_PROGRAM_ID: PublicKey): Uint8Array {\n let peer_address = DEV_PEER_ADDRESS;\n if (OAPP_PROGRAM_ID.toBase58() === DEV_OAPP_PROGRAM_ID.toBase58()) {\n peer_address = DEV_PEER_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === QA_OAPP_PROGRAM_ID.toBase58()) {\n peer_address = QA_PEER_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === STAGING_OAPP_PROGRAM_ID.toBase58()) {\n peer_address = STAGING_PEER_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === MAINNET_OAPP_PROGRAM_ID.toBase58()) {\n peer_address = MAINNET_PEER_ADDRESS;\n }\n return peer_address;\n}\n\nexport function getNoncePda(\n OAPP_PROGRAM_ID: PublicKey,\n oappConfigPda: PublicKey,\n dstEid: number,\n): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n const peer_address = getPeerAddress(OAPP_PROGRAM_ID);\n\n bufferDstEid.writeUInt32BE(dstEid);\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(NONCE_SEED, \"utf8\"),\n oappConfigPda.toBuffer(),\n bufferDstEid,\n peer_address,\n ],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getEventAuthorityPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(EVENT_SEED, \"utf8\")],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getUlnSettingPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(ULN_SEED, \"utf8\")],\n SEND_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getSendConfigPda(\n oappConfigPda: PublicKey,\n dstEid: number,\n): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEND_CONFIG_SEED, \"utf8\"),\n bufferDstEid,\n oappConfigPda.toBuffer(),\n ],\n SEND_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getDefaultSendConfigPda(dstEid: number): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEND_CONFIG_SEED, \"utf8\"), bufferDstEid],\n RECEIVE_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getUlnEventAuthorityPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(EVENT_SEED, \"utf8\")],\n SEND_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getExecutorConfigPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(EXECUTOR_CONFIG_SEED, \"utf8\")],\n EXECUTOR_PROGRAM_ID,\n )[0];\n}\n\nexport function getPriceFeedPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(PRICE_FEED_SEED, \"utf8\")],\n PRICE_FEED_PROGRAM_ID,\n )[0];\n}\n\nexport function getDvnConfigPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(DVN_CONFIG_SEED, \"utf8\")],\n DVN_PROGRAM_ID,\n )[0];\n}\n\nexport function getDstEID(OAPP_PROGRAM_ID: PublicKey) {\n if (OAPP_PROGRAM_ID.toBase58() === MAINNET_OAPP_PROGRAM_ID.toBase58()) {\n return MAIN_DST_EID;\n }\n\n return DEV_DST_EID;\n}\n\nexport function getLookupTableAddress(OAPP_PROGRAM_ID: PublicKey): PublicKey {\n if (OAPP_PROGRAM_ID.toBase58() === DEV_OAPP_PROGRAM_ID.toBase58()) {\n console.log(\n \"DEV_LOOKUP_TABLE_ADDRESS: \",\n DEV_LOOKUP_TABLE_ADDRESS.toBase58(),\n );\n return DEV_LOOKUP_TABLE_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === QA_OAPP_PROGRAM_ID.toBase58()) {\n return QA_LOOKUP_TABLE_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === STAGING_OAPP_PROGRAM_ID.toBase58()) {\n return STAGING_LOOKUP_TABLE_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === MAINNET_OAPP_PROGRAM_ID.toBase58()) {\n return MAINNET_LOOKUP_TABLE_ADDRESS;\n }\n\n return DEV_LOOKUP_TABLE_ADDRESS;\n}\n\nexport function getMessageLibPda(programId?: PublicKey): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, \"utf8\")],\n programId ? programId : SEND_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getMessageLibInfoPda(\n msgLibPda: PublicKey,\n programId?: PublicKey,\n): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, \"utf8\"), msgLibPda.toBytes()],\n programId ? programId : ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport async function getLookupTableAccount(\n connection: Connection,\n lookupTableAddress: PublicKey,\n) {\n const lookupTableAccount = (\n await connection.getAddressLookupTable(lookupTableAddress)\n ).value;\n\n return lookupTableAccount;\n}\n"],"mappings":"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","names":["import_spl_token","import_web3","import_bs58","import_utils","import_core","import_types","import_web3","import_web3","bs58Decode","CoreUtils","bs58encode"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/version.ts","../src/walletAdapter.ts","../src/helper.ts","../src/constant.ts","../src/idl/solana_vault.ts","../src/solana.util.ts"],"sourcesContent":["export { default as version } from \"./version\";\nexport { DefaultSolanaWalletAdapter } from \"./walletAdapter\";\nexport type { SolanaWalletProvider } from \"./types\";","declare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/default-solana-adapter\"] = \"2.8.3-alpha.0\";\n}\n\nexport default \"2.8.3-alpha.0\";\n","import * as ed from \"@noble/ed25519\";\nimport { getAccount } from \"@solana/spl-token\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport {\n clusterApiUrl,\n Connection,\n PublicKey,\n Transaction,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { encode as bs58encode, decode as bs58Decode } from \"bs58\";\nimport { bytesToHex } from \"ethereum-cryptography/utils\";\nimport {\n AddOrderlyKeyInputs,\n BaseWalletAdapter,\n Message,\n RegisterAccountInputs,\n SettleInputs,\n SignatureDomain,\n SimpleDI,\n WithdrawInputs,\n Account,\n MessageFactor,\n DexRequestInputs,\n InternalTransferInputs,\n} from \"@orderly.network/core\";\nimport { API, MaxUint256, ChainNamespace } from \"@orderly.network/types\";\nimport {\n addOrderlyKeyMessage,\n checkIsLedgerWallet,\n deposit,\n encodeLzMessage,\n getDepositQuoteFee,\n MsgType,\n registerAccountMessage,\n settleMessage,\n internalTransferMessage,\n withdrawMessage,\n dexRequestMessage,\n} from \"./helper\";\nimport { getTokenAccounts } from \"./solana.util\";\nimport { SolanaAdapterOption, SolanaWalletProvider } from \"./types\";\n\nclass DefaultSolanaWalletAdapter extends BaseWalletAdapter<SolanaAdapterOption> {\n chainNamespace: ChainNamespace = ChainNamespace.solana;\n\n private _address!: string;\n private _chainId!: number;\n private _provider!: SolanaWalletProvider;\n private _connection!: Connection;\n\n constructor() {\n super();\n }\n\n get address(): string {\n return this._address;\n }\n\n get chainId(): number {\n return this._chainId;\n }\n\n set chainId(chainId: number) {\n this._chainId = chainId;\n }\n\n get connection(): Connection {\n if (this._connection) {\n return this._connection;\n }\n if (this._provider.rpcUrl) {\n this._connection = new Connection(this._provider.rpcUrl, {\n commitment: \"confirmed\",\n });\n return this._connection;\n }\n if (this._provider.network === WalletAdapterNetwork.Devnet) {\n this._connection = new Connection(clusterApiUrl(this._provider.network), {\n commitment: \"confirmed\",\n });\n return this._connection;\n }\n\n const account = SimpleDI.get<Account>(\"account\");\n const url = \"/v1/solana-rpc-proxy\";\n this._connection = new Connection(`${account.apiBaseUrl}${url}`, {\n commitment: \"confirmed\",\n fetchMiddleware: async (info, init, fetch) => {\n const payload: MessageFactor = {\n url,\n method: init?.method as \"GET\" | \"POST\" | \"PUT\" | \"DELETE\",\n data: JSON.parse(init?.body as string),\n };\n // console.log('payload', payload);\n const signature = await this.signMessageByOrderlyKey(payload);\n for (const key of Object.keys(signature)) {\n (init?.headers as any)[key] = signature[\n key as keyof typeof signature\n ] as string;\n }\n return fetch(info, init);\n },\n });\n return this._connection;\n }\n\n private setConfig(config: SolanaAdapterOption) {\n this._address = config.address;\n this._chainId = config.chain.id;\n if (config.provider) {\n this._provider = config.provider;\n }\n }\n\n private lifecycleName(name: string, data: any) {\n console.log(\"lifecycle\", name, data);\n }\n\n active(config: SolanaAdapterOption): void {\n this.setConfig(config);\n this.lifecycleName(\"active\", config);\n }\n\n deactivate(): void {\n this.lifecycleName(\"deactivate\", {});\n }\n\n update(config: SolanaAdapterOption): void {\n this.lifecycleName(\"update\", config);\n this.setConfig(config);\n }\n\n generateSecretKey(): string {\n let privKey, secretKey;\n do {\n privKey = ed.utils.randomPrivateKey();\n secretKey = bs58encode(privKey);\n } while (secretKey.length !== 44);\n\n return secretKey;\n }\n\n uint8ArrayToHexString(uint8Array: Uint8Array): string {\n return Array.from(uint8Array)\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\");\n }\n\n async signMessage(message: Uint8Array): Promise<string> {\n const isLedger = checkIsLedgerWallet(this._address);\n // test ledger wallet\n // if (!isLedger) {\n // console.log(\"-- test error\");\n // throw new Error(\n // \"xxx Signing off chain messages with Ledger is not yet supported\"\n // );\n // }\n\n if (isLedger) {\n const transaction = new Transaction();\n\n transaction.add(\n new TransactionInstruction({\n keys: [],\n programId: new PublicKey(\n \"ComputeBudget111111111111111111111111111111\",\n ),\n data: new Uint8Array([3, 0, 0, 0, 0, 0, 0, 0, 0]) as any,\n }),\n );\n\n transaction.add(\n new TransactionInstruction({\n keys: [],\n programId: new PublicKey(\n \"ComputeBudget111111111111111111111111111111\",\n ),\n data: new Uint8Array([2, 0, 0, 0, 0]) as any,\n }),\n );\n\n transaction.add(\n new TransactionInstruction({\n keys: [],\n programId: new PublicKey(\n \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\",\n ),\n data: message as any,\n }),\n );\n\n const userPublicKey = new PublicKey(this.address);\n\n transaction.feePayer = userPublicKey;\n\n const zeroHash = new Uint8Array(32).fill(0);\n transaction.recentBlockhash = new PublicKey(zeroHash).toString();\n\n const signedTransaction =\n await this._provider.signTransaction(transaction);\n\n const signature = signedTransaction.signatures[0].signature;\n if (signature) {\n return this.uint8ArrayToHexString(signature as any);\n } else {\n console.log(\"-- sign message error\", signature);\n throw new Error(\"Unsupported signature\");\n }\n }\n const signRes = await this._provider.signMessage(message);\n return \"0x\" + bytesToHex(signRes);\n }\n\n async generateRegisterAccountMessage(\n inputs: RegisterAccountInputs,\n ): Promise<Message> {\n const [message, toSignatureMessage] = registerAccountMessage({\n ...inputs,\n chainId: this.chainId,\n });\n\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n\n return {\n message: {\n ...message,\n chainType: \"SOL\",\n },\n signatured: signature,\n };\n }\n\n async generateWithdrawMessage(\n inputs: WithdrawInputs,\n ): Promise<Message & { domain: SignatureDomain }> {\n const [message, toSignatureMessage] = withdrawMessage({\n ...inputs,\n chainId: this.chainId,\n });\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n\n return {\n message: {\n ...message,\n chainType: \"SOL\",\n },\n domain: {\n name: \"\",\n version: \"\",\n chainId: this.chainId,\n verifyingContract: inputs.verifyContract!,\n },\n signatured: signature,\n };\n }\n\n async generateInternalTransferMessage(\n inputs: InternalTransferInputs,\n ): Promise<Message & { domain: SignatureDomain }> {\n const [message, toSignatureMessage] = internalTransferMessage({\n ...inputs,\n chainId: this.chainId,\n });\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n\n return {\n message: {\n ...message,\n chainType: \"SOL\",\n },\n domain: {\n name: \"\",\n version: \"\",\n chainId: this.chainId,\n verifyingContract: inputs.verifyContract!,\n },\n signatured: signature,\n };\n }\n\n async generateAddOrderlyKeyMessage(\n inputs: AddOrderlyKeyInputs,\n ): Promise<Message> {\n const [message, toSignatureMessage] = addOrderlyKeyMessage({\n ...inputs,\n chainId: this.chainId,\n });\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n\n return {\n message: {\n ...message,\n chainType: \"SOL\",\n },\n signatured: signature,\n };\n }\n\n async generateSettleMessage(\n inputs: SettleInputs,\n ): Promise<Message & { domain: SignatureDomain }> {\n const [message, toSignatureMessage] = settleMessage({\n ...inputs,\n chainId: this.chainId,\n });\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n return {\n message: {\n ...message,\n chainType: \"SOL\",\n },\n domain: {\n name: \"\",\n version: \"\",\n chainId: this.chainId,\n verifyingContract: inputs.verifyContract!,\n },\n signatured: signature,\n };\n }\n\n async generateDexRequestMessage(inputs: DexRequestInputs): Promise<\n Message & {\n domain: SignatureDomain;\n }\n > {\n const [message, toSignatureMessage] = await dexRequestMessage({\n ...inputs,\n chainId: this.chainId,\n });\n\n // 使用 signMessage 方法签名,而不是 signTypedData\n const signature = await this.signMessage(toSignatureMessage as Uint8Array);\n\n return {\n message: {\n ...inputs,\n chainType: \"SOL\",\n },\n signatured: signature,\n domain: inputs.domain,\n };\n }\n\n async getBalance(): Promise<bigint> {\n const publicKey = new PublicKey(this.address);\n const lamports = await this.connection.getBalance(publicKey);\n return BigInt(lamports);\n }\n\n async call(\n address: string,\n method: string,\n params: any[],\n options?: {\n abi: any;\n },\n ) {\n // console.log('-- solanan call', {\n // address,\n // method,\n // params,\n // options,\n // })\n if (method === \"balanceOf\") {\n const tokenPublicKey = new PublicKey(address);\n const userPublicKey = new PublicKey(this._address);\n const userTokenAccount = getTokenAccounts(tokenPublicKey, userPublicKey);\n const connection = this.connection;\n\n const tokenAmount = await getAccount(\n connection,\n userTokenAccount,\n \"confirmed\",\n );\n return tokenAmount.amount;\n }\n if (method === \"allowance\") {\n return MaxUint256;\n }\n return BigInt(0);\n }\n\n async sendTransaction(\n contractAddress: string,\n method: string,\n payload: {\n from: string;\n to?: string;\n data: any[];\n value?: bigint;\n },\n options: {\n abi: any;\n },\n ) {\n console.log(\"-- solanan sendTransaction\", {\n contractAddress,\n method,\n payload,\n options,\n });\n if (method === \"deposit\") {\n return deposit({\n vaultAddress: contractAddress,\n userAddress: this._address,\n connection: this.connection,\n depositData: payload.data[0],\n sendTransaction: this._provider.sendTransaction,\n });\n }\n }\n\n async callOnChain(\n chain: API.NetworkInfos,\n address: string,\n method: string,\n params: any[],\n options: {\n abi: any;\n },\n ): Promise<any> {\n console.log(\"-- params \", {\n chain,\n address,\n method,\n params,\n });\n if (method === \"getDepositFee\") {\n return getDepositQuoteFee({\n vaultAddress: address,\n userAddress: this._address,\n connection: this.connection,\n depositData: params[1],\n });\n }\n return 0;\n }\n\n async pollTransactionReceiptWithBackoff(\n txHash: string,\n baseInterval?: number,\n maxInterval?: number,\n maxRetries?: number,\n ): Promise<any> {\n return Promise.resolve({ status: 1 });\n }\n}\n\nexport { DefaultSolanaWalletAdapter };\n","import { BN, Program } from \"@coral-xyz/anchor\";\nimport type { WalletAdapterProps } from \"@solana/wallet-adapter-base\";\nimport {\n ComputeBudgetProgram,\n Connection,\n PublicKey,\n SystemProgram,\n TransactionMessage,\n VersionedTransaction,\n} from \"@solana/web3.js\";\nimport { decode as bs58Decode } from \"bs58\";\nimport { Hash } from \"crypto\";\nimport { keccak256 } from \"ethereum-cryptography/keccak\";\nimport { bytesToHex, hexToBytes } from \"ethereum-cryptography/utils\";\nimport { AbiCoder, solidityPackedKeccak256 } from \"ethers\";\nimport {\n utils as CoreUtils,\n AddOrderlyKeyInputs,\n RegisterAccountInputs,\n type SettleInputs,\n type SignatureDomain,\n type WithdrawInputs,\n InternalTransferInputs,\n} from \"@orderly.network/core\";\nimport { DexRequestInputs } from \"@orderly.network/core\";\nimport {\n DEFAUL_ORDERLY_KEY_SCOPE,\n LedgerWalletKey,\n} from \"@orderly.network/types\";\nimport {\n DVN_PROGRAM_ID,\n ENDPOINT_PROGRAM_ID,\n EXECUTOR_PROGRAM_ID,\n PRICE_FEED_PROGRAM_ID,\n SEND_LIB_PROGRAM_ID,\n TREASURY_PROGRAM_ID,\n} from \"./constant\";\nimport { IDL as VaultIDL, SolanaVault } from \"./idl/solana_vault\";\nimport {\n getBrokerPDA,\n getDefaultSendConfigPda,\n getDefaultSendLibConfigPda,\n getDstEID,\n getDvnConfigPda,\n getEndorcedOptionsPda,\n getEndpointSettingPda,\n getEventAuthorityPda,\n getExecutorConfigPda,\n getLookupTableAccount,\n getLookupTableAddress,\n getMessageLibInfoPda,\n getMessageLibPda,\n getNoncePda,\n getOAppConfigPda,\n getPeerAddress,\n getPeerPda,\n getPriceFeedPda,\n getSendConfigPda,\n getSendLibConfigPda,\n getSendLibInfoPda,\n getSendLibPda,\n getTokenPDA,\n getUlnEventAuthorityPda,\n getUlnSettingPda,\n getTokenAccounts,\n getVaultAuthorityPda,\n getSolVaultPda,\n} from \"./solana.util\";\n\nexport function addOrderlyKeyMessage(\n inputs: AddOrderlyKeyInputs & { chainId: number },\n) {\n const {\n publicKey,\n brokerId,\n expiration = 365,\n timestamp = Date.now(),\n scope,\n tag,\n chainId,\n subAccountId,\n } = inputs;\n const message = {\n brokerId: brokerId,\n chainType: \"SOL\",\n orderlyKey: publicKey,\n scope: scope || DEFAUL_ORDERLY_KEY_SCOPE,\n chainId,\n timestamp,\n expiration: timestamp + 1000 * 60 * 60 * 24 * expiration,\n ...(typeof tag !== \"undefined\" ? { tag } : {}),\n ...(typeof subAccountId !== \"undefined\" ? { subAccountId } : {}),\n };\n\n const brokerIdHash = solidityPackedKeccak256([\"string\"], [message.brokerId]);\n\n const orderlyKeyHash = solidityPackedKeccak256(\n [\"string\"],\n [message.orderlyKey],\n );\n const scopeHash = solidityPackedKeccak256([\"string\"], [message.scope]);\n const abicoder = AbiCoder.defaultAbiCoder();\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\"bytes32\", \"bytes32\", \"bytes32\", \"uint256\", \"uint256\", \"uint256\"],\n [\n brokerIdHash,\n orderlyKeyHash,\n scopeHash,\n message.chainId,\n message.timestamp,\n message.expiration,\n ],\n ),\n ),\n );\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n return [message, msgToSignTextEncoded];\n}\n\nexport function registerAccountMessage(\n inputs: RegisterAccountInputs & {\n chainId: number;\n },\n) {\n const { chainId, registrationNonce, brokerId, timestamp } = inputs;\n\n const message = {\n brokerId,\n chainId,\n timestamp,\n registrationNonce,\n };\n const brokerIdHash = solidityPackedKeccak256([\"string\"], [message.brokerId]);\n const abicoder = AbiCoder.defaultAbiCoder();\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\"bytes32\", \"uint256\", \"uint256\", \"uint256\"],\n [\n brokerIdHash,\n message.chainId,\n message.timestamp,\n message.registrationNonce,\n ],\n ),\n ),\n );\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n return [message, msgToSignTextEncoded];\n}\n\nexport function internalTransferMessage(\n inputs: InternalTransferInputs & {\n chainId: number;\n },\n) {\n const { chainId, receiver, token, amount, nonce } = inputs;\n const message = {\n chainId,\n receiver,\n token,\n amount,\n transferNonce: nonce,\n chainType: \"SOL\",\n };\n\n const tokenSymbolHash = solidityPackedKeccak256([\"string\"], [message.token]);\n\n const abicoder = AbiCoder.defaultAbiCoder();\n // StaticStruct staticStruct = new StaticStruct(\n // new Bytes32(Numeric.hexStringToByteArray(receiver)),\n // new Bytes32(Numeric.hexStringToByteArray(Hash.sha3(TypeEncoder.encodePacked(new Utf8String(token))))),\n // new Uint256(amount),\n // new Uint64(transferNonce),\n // new Uint256(Long.parseLong(chainId))\n // );\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\"bytes32\", \"bytes32\", \"uint256\", \"uint64\", \"uint256\"],\n [\n message.receiver,\n tokenSymbolHash,\n message.amount,\n message.transferNonce,\n chainId,\n ],\n ),\n ),\n );\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n return [message, msgToSignTextEncoded];\n}\n\nexport async function dexRequestMessage(\n inputs: DexRequestInputs & {\n domain: SignatureDomain;\n chainId: number;\n },\n) {\n const {\n payloadType,\n nonce,\n receiver,\n amount,\n vaultId,\n token,\n dexBrokerId,\n chainId,\n } = inputs;\n\n const message = {\n payloadType,\n nonce,\n receiver,\n amount,\n vaultId,\n token,\n dexBrokerId,\n chainId,\n };\n\n let receiverBytes: Uint8Array;\n receiverBytes = bs58Decode(receiver);\n const receiverBytes32 = new Uint8Array(32);\n receiverBytes32.set(receiverBytes);\n\n const vaultIdHex = vaultId;\n const vaultIdBytes = hexToBytes(vaultIdHex);\n\n const tokenHash = keccak256(new TextEncoder().encode(token));\n const dexBrokerIdHash = keccak256(new TextEncoder().encode(dexBrokerId));\n const abicoder = AbiCoder.defaultAbiCoder();\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\n \"uint8\", // payloadType\n \"uint256\", // nonce\n \"bytes32\", // receiver (Base58 decoded)\n \"uint256\", // amount\n \"bytes32\", // vaultId\n \"bytes32\", // token hash\n \"bytes32\", // dexBrokerId hash\n \"uint256\", // chainId\n ],\n [\n payloadType,\n nonce,\n receiverBytes,\n amount,\n vaultIdBytes,\n tokenHash,\n dexBrokerIdHash,\n chainId,\n ],\n ),\n ),\n );\n\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n\n return [message, msgToSignTextEncoded];\n}\n\nexport function withdrawMessage(\n inputs: WithdrawInputs & {\n chainId: number;\n },\n) {\n const { chainId, receiver, token, amount, nonce, brokerId } = inputs;\n const timestamp = Date.now();\n\n const message = {\n brokerId,\n chainId,\n receiver,\n token: token,\n amount: amount,\n withdrawNonce: nonce,\n timestamp,\n chainType: \"SOL\",\n };\n\n const brokerIdHash = solidityPackedKeccak256([\"string\"], [message.brokerId]);\n const tokenSymbolHash = solidityPackedKeccak256([\"string\"], [message.token]);\n const salt = keccak256(Buffer.from(\"Orderly Network\"));\n const abicoder = AbiCoder.defaultAbiCoder();\n\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\n \"bytes32\",\n \"bytes32\",\n \"uint256\",\n \"bytes32\",\n \"uint256\",\n \"uint64\",\n \"uint64\",\n \"bytes32\",\n ],\n [\n brokerIdHash,\n tokenSymbolHash,\n chainId,\n bs58Decode(message.receiver),\n message.amount,\n message.withdrawNonce,\n timestamp,\n salt,\n ],\n ),\n ),\n );\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n return [message, msgToSignTextEncoded];\n}\n\nexport function settleMessage(\n inputs: SettleInputs & {\n chainId: number;\n },\n) {\n const { settlePnlNonce, brokerId, chainId, timestamp } = inputs;\n\n const message = {\n brokerId: brokerId,\n chainId: chainId,\n timestamp: timestamp,\n chainType: \"SOL\",\n settleNonce: settlePnlNonce,\n };\n const brokerIdHash = solidityPackedKeccak256([\"string\"], [brokerId]);\n\n const abicoder = AbiCoder.defaultAbiCoder();\n const msgToSign = keccak256(\n hexToBytes(\n abicoder.encode(\n [\"bytes32\", \"uint256\", \"uint64\", \"uint64\"],\n [brokerIdHash, message.chainId, message.settleNonce, message.timestamp],\n ),\n ),\n );\n const msgToSignHex = bytesToHex(msgToSign);\n const msgToSignTextEncoded: Uint8Array = new TextEncoder().encode(\n msgToSignHex,\n );\n return [message, msgToSignTextEncoded];\n}\n\nexport enum MsgType {\n Deposit = 0,\n // Add other message types if needed\n}\n\nexport interface LzMessage {\n msgType: MsgType;\n payload: Buffer;\n}\n\nexport function encodeLzMessage(message: LzMessage): Buffer {\n const msgTypeBuffer = Buffer.alloc(1);\n msgTypeBuffer.writeUInt8(message.msgType);\n return Buffer.concat([msgTypeBuffer, message.payload]);\n}\n\nexport async function getDepositQuoteFee({\n vaultAddress,\n userAddress,\n connection,\n depositData,\n}: {\n vaultAddress: string;\n userAddress: string;\n connection: Connection;\n depositData: {\n tokenHash: string;\n brokerHash: string;\n accountId: string;\n tokenAddress: string;\n tokenAmount: string;\n };\n}) {\n console.log(\"-- vaultAddress\", vaultAddress);\n const appProgramId = new PublicKey(vaultAddress);\n const DST_EID = getDstEID(appProgramId);\n\n const program = new Program<SolanaVault>(VaultIDL, appProgramId, {\n connection,\n });\n const userPublicKey = new PublicKey(userAddress);\n\n const oappConfigPDA = getOAppConfigPda(appProgramId);\n const peerPDA = getPeerPda(appProgramId, oappConfigPDA, DST_EID);\n const endorcedPDA = getEndorcedOptionsPda(\n appProgramId,\n oappConfigPDA,\n DST_EID,\n );\n const sendLibConfigPDA = getSendLibConfigPda(oappConfigPDA, DST_EID);\n const defaultSendLibPDA = getDefaultSendLibConfigPda(DST_EID);\n\n const endpointSettingPDA = getEndpointSettingPda();\n const noncePDA = getNoncePda(appProgramId, oappConfigPDA, DST_EID);\n const sendConfigPDA = getSendConfigPda(oappConfigPDA, DST_EID);\n const defaultSendConfigPDA = getDefaultSendConfigPda(DST_EID);\n const executorConfigPDA = getExecutorConfigPda();\n const priceFeedPDA = getPriceFeedPda();\n const dvnConfigPDA = getDvnConfigPda();\n\n const messageLibPDA = getMessageLibPda(SEND_LIB_PROGRAM_ID);\n const messageLibInfoPDA = getMessageLibInfoPda(messageLibPDA);\n const vaultAuthorityPDA = getVaultAuthorityPda(appProgramId);\n\n const depositParams = getDepositParams(userAddress, depositData);\n\n // deposit fee\n const quoteFee = await program.methods\n .oappQuote(depositParams)\n .accounts({\n oappConfig: oappConfigPDA,\n peer: peerPDA,\n enforcedOptions: endorcedPDA,\n vaultAuthority: vaultAuthorityPDA,\n })\n .remainingAccounts([\n // ENDPOINT solana/programs/programs/uln/src/instructions/endpoint/send.rs\n {\n pubkey: ENDPOINT_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: SEND_LIB_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: sendLibConfigPDA, // send_library_config\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: defaultSendLibPDA, // default_send_library_config\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: messageLibInfoPDA, // send_library_info\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: endpointSettingPDA, // endpoint settings\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: noncePDA, // nonce\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: messageLibPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: sendConfigPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: defaultSendConfigPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: EXECUTOR_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: executorConfigPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: PRICE_FEED_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: priceFeedPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: DVN_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: dvnConfigPDA,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: PRICE_FEED_PROGRAM_ID,\n isWritable: false,\n isSigner: false,\n },\n {\n pubkey: priceFeedPDA,\n isWritable: false,\n isSigner: false,\n },\n ])\n .instruction();\n\n const lastBlockHash = await connection.getLatestBlockhash();\n\n const lookupTableAddress = getLookupTableAddress(appProgramId);\n const lookupTableAccount = await getLookupTableAccount(\n connection,\n lookupTableAddress,\n );\n if (!lookupTableAccount) {\n console.log(\"-- lookup table account error\");\n throw new Error(\"-- lookup table account error\");\n }\n const feeMsg = new TransactionMessage({\n payerKey: userPublicKey,\n recentBlockhash: lastBlockHash.blockhash,\n instructions: [quoteFee],\n }).compileToV0Message([lookupTableAccount]);\n\n const feeTx = new VersionedTransaction(feeMsg);\n\n const feeRes = await connection.simulateTransaction(feeTx);\n\n console.log(\"-- feeRes\", feeRes);\n if (feeRes.value.err) {\n const errorInfo =\n typeof feeRes.value.err === \"object\"\n ? JSON.stringify(feeRes.value.err)\n : feeRes.value.err;\n\n if (errorInfo.toString().includes(\"AccountNotFound\")) {\n throw new Error(\"Error: Account gas is insufficient.\");\n }\n\n throw new Error(`Error: ${errorInfo}`);\n }\n const returnPrefix = `Program return: ${program.programId} `;\n const returnLogEntry = feeRes.value.logs!.find((log) =>\n log.startsWith(returnPrefix),\n );\n if (!returnLogEntry) {\n throw new Error(\"Error: get deposit fee error\");\n }\n\n // Slice out the prefix to get the base64 return data\n const encodedReturnData = returnLogEntry.slice(returnPrefix.length);\n\n // Convert the Base64 return data\n const decodedBuffer = Buffer.from(encodedReturnData, \"base64\");\n console.log(\n decodedBuffer.readBigUInt64LE(0),\n decodedBuffer.readBigUInt64LE(1),\n );\n return decodedBuffer.readBigUInt64LE(0);\n}\nconst getDepositParams = (\n userAddress: string,\n depositData: {\n tokenHash: string;\n brokerHash: string;\n accountId: string;\n tokenAddress: string;\n tokenAmount: string;\n },\n) => {\n const brokerHash = depositData.brokerHash;\n const codedBrokerHash = Array.from(Buffer.from(brokerHash.slice(2), \"hex\"));\n\n const tokenHash = depositData.tokenHash;\n const codedTokenHash = Array.from(Buffer.from(tokenHash.slice(2), \"hex\"));\n\n const solAccountId = depositData.accountId;\n const codedAccountId = Array.from(Buffer.from(solAccountId.slice(2), \"hex\"));\n const userPublicKey = new PublicKey(userAddress);\n\n return {\n accountId: codedAccountId,\n brokerHash: codedBrokerHash,\n tokenHash: codedTokenHash,\n userAddress: Array.from(userPublicKey.toBuffer()),\n tokenAmount: new BN(depositData.tokenAmount),\n };\n};\n\nexport async function deposit({\n vaultAddress,\n userAddress,\n connection,\n sendTransaction,\n depositData,\n}: {\n vaultAddress: string;\n userAddress: string;\n connection: Connection;\n sendTransaction: WalletAdapterProps[\"sendTransaction\"];\n depositData: {\n tokenHash: string;\n brokerHash: string;\n accountId: string;\n tokenAddress: string;\n tokenAmount: string;\n };\n}) {\n const brokerHash = depositData.brokerHash;\n const tokenHash = depositData.tokenHash;\n\n const SOL_HASH = CoreUtils.parseTokenHash(\"SOL\");\n const isSolDeposit = tokenHash.toLowerCase() === SOL_HASH.toLowerCase();\n\n console.log(\"-- vault address\", vaultAddress);\n const appProgramId = new PublicKey(vaultAddress);\n const program = new Program<SolanaVault>(VaultIDL, appProgramId, {\n connection,\n });\n // If is not SOL deposit, tokenAddress is the token address\n // else, tokenAddress is the USDC address\n const token = new PublicKey(depositData.tokenAddress);\n const userPublicKey = new PublicKey(userAddress);\n const userTokenAccount = getTokenAccounts(token, userPublicKey);\n const vaultAuthorityPda = getVaultAuthorityPda(appProgramId);\n const vaultTokenAccount = getTokenAccounts(token, vaultAuthorityPda);\n const allowedBrokerPDA = getBrokerPDA(appProgramId, brokerHash);\n const allowedTokenPDA = getTokenPDA(appProgramId, tokenHash);\n const oappConfigPDA = getOAppConfigPda(appProgramId);\n console.log(\"-- oappconfig pda\", oappConfigPDA.toBase58());\n const DST_EID = getDstEID(appProgramId);\n // const lzPDA = getLzReceiveTypesPda(appProgramId, oappConfigPDA);\n const peerPDA = getPeerPda(appProgramId, oappConfigPDA, DST_EID);\n const endorcedPDA = getEndorcedOptionsPda(\n appProgramId,\n oappConfigPDA,\n DST_EID,\n );\n const sendLibPDA = getSendLibPda();\n const sendLibConfigPDA = getSendLibConfigPda(oappConfigPDA, DST_EID);\n const defaultSendLibPDA = getDefaultSendLibConfigPda(DST_EID);\n const sendLibInfoPDA = getSendLibInfoPda(sendLibPDA);\n\n const endpointSettingPDA = getEndpointSettingPda();\n const noncePDA = getNoncePda(appProgramId, oappConfigPDA, DST_EID);\n const eventAuthorityPDA = getEventAuthorityPda();\n const ulnSettingPDA = getUlnSettingPda();\n const sendConfigPDA = getSendConfigPda(oappConfigPDA, DST_EID);\n const defaultSendConfigPDA = getDefaultSendConfigPda(DST_EID);\n const ulnEventAuthorityPDA = getUlnEventAuthorityPda();\n const executorConfigPDA = getExecutorConfigPda();\n const priceFeedPDA = getPriceFeedPda();\n const dvnConfigPDA = getDvnConfigPda();\n\n const vaultDepositParams = getDepositParams(userAddress, depositData);\n\n const buildSendRemainingAccounts = () => [\n // ENDPOINT solana/programs/programs/uln/src/instructions/endpoint/send.rs\n {\n isSigner: false,\n isWritable: false,\n pubkey: ENDPOINT_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n // 0\n pubkey: oappConfigPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: SEND_LIB_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n // 7\n pubkey: sendLibConfigPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 9\n pubkey: defaultSendLibPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 8\n pubkey: sendLibInfoPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 14\n pubkey: endpointSettingPDA,\n },\n {\n isSigner: false,\n isWritable: true,\n // 15\n pubkey: noncePDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 3\n pubkey: eventAuthorityPDA,\n },\n // ULN solana/programs/programs/uln/src/instructions/endpoint/send.rs\n {\n isSigner: false,\n isWritable: false,\n pubkey: ENDPOINT_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n // 13\n pubkey: ulnSettingPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 10\n pubkey: sendConfigPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n // 11\n pubkey: defaultSendConfigPDA,\n },\n {\n isSigner: true,\n isWritable: false,\n pubkey: userPublicKey,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: TREASURY_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: SystemProgram.programId,\n },\n {\n isSigner: false,\n isWritable: false,\n // 12\n pubkey: ulnEventAuthorityPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: SEND_LIB_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: EXECUTOR_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: true,\n // 16\n pubkey: executorConfigPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: PRICE_FEED_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n // 17\n pubkey: priceFeedPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: DVN_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: true,\n // 18\n pubkey: dvnConfigPDA,\n },\n {\n isSigner: false,\n isWritable: false,\n pubkey: PRICE_FEED_PROGRAM_ID,\n },\n {\n isSigner: false,\n isWritable: false,\n // 17\n pubkey: priceFeedPDA,\n },\n ];\n\n const fee = await getDepositQuoteFee({\n vaultAddress,\n userAddress,\n connection,\n depositData,\n });\n\n const sendParam = {\n nativeFee: new BN(fee.toString()),\n lzTokenFee: new BN(0),\n };\n\n // const sendParam = {\n // nativeFee: new BN(1_000_000_000),\n // lzTokenFee:new BN(0),\n //\n // }\n console.log(\"--- value params\", {\n vaultDepositParams,\n sendParam,\n });\n const ixDepositEntry = isSolDeposit\n ? await program.methods\n .depositSol(vaultDepositParams, sendParam)\n .accounts({\n solVault: getSolVaultPda(appProgramId),\n vaultAuthority: vaultAuthorityPda,\n user: userPublicKey,\n peer: peerPDA,\n enforcedOptions: endorcedPDA,\n oappConfig: oappConfigPDA,\n allowedBroker: allowedBrokerPDA,\n allowedToken: allowedTokenPDA,\n })\n .remainingAccounts(buildSendRemainingAccounts())\n .instruction()\n : await program.methods\n .deposit(vaultDepositParams, sendParam)\n .accounts({\n userTokenAccount: userTokenAccount,\n vaultAuthority: vaultAuthorityPda,\n vaultTokenAccount: vaultTokenAccount,\n depositToken: token,\n user: userPublicKey,\n peer: peerPDA,\n enforcedOptions: endorcedPDA,\n oappConfig: oappConfigPDA,\n allowedBroker: allowedBrokerPDA,\n allowedToken: allowedTokenPDA,\n })\n .remainingAccounts(buildSendRemainingAccounts())\n .instruction();\n\n const lookupTableAddress = getLookupTableAddress(appProgramId);\n const lookupTableAccount = await getLookupTableAccount(\n connection,\n lookupTableAddress,\n );\n if (!lookupTableAccount) {\n console.log(\"-- lookup table account error\");\n return;\n }\n\n const ixAddComputeBudget = ComputeBudgetProgram.setComputeUnitLimit({\n units: 400_000,\n });\n\n const lastBlockHash = await connection.getLatestBlockhash();\n const msg = new TransactionMessage({\n payerKey: userPublicKey,\n recentBlockhash: lastBlockHash.blockhash,\n instructions: [ixDepositEntry, ixAddComputeBudget],\n }).compileToV0Message([lookupTableAccount]);\n\n const tx = new VersionedTransaction(msg);\n\n const res = await sendTransaction(tx, connection);\n console.log(\"res\", res);\n return res;\n}\n\nexport function checkIsLedgerWallet(userAddress: string): boolean {\n const info = window.localStorage.getItem(LedgerWalletKey);\n if (!info) {\n return false;\n }\n const addressArr = JSON.parse(info ?? \"[]\");\n console.log(\"-- addressArr\", addressArr);\n if (addressArr.includes(userAddress)) {\n return true;\n }\n return false;\n}\n","import { addressToBytes32 } from \"@layerzerolabs/lz-v2-utilities\";\nimport { PublicKey } from \"@solana/web3.js\";\n\nexport const ENDPOINT_PROGRAM_ID = new PublicKey(\n \"76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6\",\n);\nexport const SEND_LIB_PROGRAM_ID = new PublicKey(\n \"7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH\",\n);\nexport const EXECUTOR_PROGRAM_ID = new PublicKey(\n \"6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn\",\n);\nexport const PRICE_FEED_PROGRAM_ID = new PublicKey(\n \"8ahPGPjEbpgGaZx2NV1iG5Shj7TDwvsjkEDcGWjt94TP\",\n);\nexport const RECEIVE_LIB_PROGRAM_ID = SEND_LIB_PROGRAM_ID;\nexport const TREASURY_PROGRAM_ID = SEND_LIB_PROGRAM_ID;\nexport const DVN_PROGRAM_ID = new PublicKey(\n \"HtEYV4xB4wvsj5fgTkcfuChYpvGYzgzwvNhgDZQNh7wW\",\n);\nexport const VAULT_AUTHORITY_SEED = \"VaultAuthority\";\nexport const BROKER_SEED = \"Broker\";\nexport const TOKEN_SEED = \"Token\";\nexport const SOL_VAULT_SEED = \"SolVault\";\n// fro dev\n// export const PEER_ADDRESS = addressToBytes32('0x9Dc724b24146BeDD2dA28b8C4B74126169B8f312');\n// for qa\nexport const DEV_PEER_ADDRESS = addressToBytes32(\n \"0x9Dc724b24146BeDD2dA28b8C4B74126169B8f312\",\n);\nexport const QA_PEER_ADDRESS = addressToBytes32(\n \"0x45b6C6266A7A2170617d8A27A50C642fd68b91c4\",\n);\nexport const STAGING_PEER_ADDRESS = addressToBytes32(\n \"0x5Bf771A65d057e778C5f0Ed52A0003316f94322D\",\n);\nexport const MAINNET_PEER_ADDRESS = addressToBytes32(\n \"0xCecAe061aa078e13b5e70D5F9eCee90a3F2B6AeA\",\n);\n\nexport const DEV_DST_EID = 40200;\nexport const MAIN_DST_EID = 30213;\n\nexport const DEV_LOOKUP_TABLE_ADDRESS = new PublicKey(\n \"BWp8HaYYhiNHekt3zgQhqoCrRftneGxxfgKmCZ6svHN\",\n);\nexport const QA_LOOKUP_TABLE_ADDRESS = new PublicKey(\n \"BswrQQoPKAFojTuJutZcBMtigAgTghEH4M8ofn3EG2X2\",\n);\nexport const STAGING_LOOKUP_TABLE_ADDRESS = new PublicKey(\n \"BbGKfxuPwDmu58BjPpd7PMG69TqnZjSpKaLDMgf9E9Dr\",\n);\nexport const MAINNET_LOOKUP_TABLE_ADDRESS = new PublicKey(\n \"8iq7xCQt3bLdRRn4A46d5GuaXYinBoiAhbe2sUmZVzwg\",\n);\n\nexport const DEV_OAPP_PROGRAM_ID = new PublicKey(\n \"EYJq9eU4GMRUriUJBgGoZ8YLQBXcWaciXuSsEXE7ieQS\",\n);\nexport const QA_OAPP_PROGRAM_ID = new PublicKey(\n \"5zBjLor7vEraAt4zp2H82sy9MSqFoDnNa1Lx6EYKTYRZ\",\n);\nexport const STAGING_OAPP_PROGRAM_ID = new PublicKey(\n \"9shwxWDUNhtwkHocsUAmrNAQfBH2DHh4njdAEdHZZkF2\",\n);\nexport const MAINNET_OAPP_PROGRAM_ID = new PublicKey(\n \"ErBmAD61mGFKvrFNaTJuxoPwqrS8GgtwtqJTJVjFWx9Q\",\n);\n","export type SolanaVault = {\n version: \"0.1.0\";\n name: \"solana_vault\";\n instructions: [\n {\n name: \"setVault\";\n accounts: [\n {\n name: \"admin\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetVaultParams\";\n };\n },\n ];\n },\n {\n name: \"deposit\";\n accounts: [\n {\n name: \"user\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"userTokenAccount\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"vaultTokenAccount\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"depositToken\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"peer\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"enforcedOptions\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"allowedBroker\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"allowedToken\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"tokenProgram\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"associatedTokenProgram\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"depositParams\";\n type: {\n defined: \"DepositParams\";\n };\n },\n {\n name: \"oappParams\";\n type: {\n defined: \"OAppSendParams\";\n };\n },\n ];\n returns: {\n defined: \"MessagingReceipt\";\n };\n },\n {\n name: \"depositSol\";\n accounts: [\n {\n name: \"user\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"solVault\";\n isMut: true;\n isSigner: false;\n docs: [\"CHECKED: sol_vault is used for SOL deposit\"];\n },\n {\n name: \"peer\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"enforcedOptions\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"allowedBroker\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"allowedToken\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"depositParams\";\n type: {\n defined: \"DepositParams\";\n };\n },\n {\n name: \"oappParams\";\n type: {\n defined: \"OAppSendParams\";\n };\n },\n ];\n returns: {\n defined: \"MessagingReceipt\";\n };\n },\n {\n name: \"initOapp\";\n accounts: [\n {\n name: \"payer\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"oappConfig\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"lzReceiveTypes\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"accountList\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"InitOAppParams\";\n };\n },\n ];\n },\n {\n name: \"setAccountList\";\n accounts: [\n {\n name: \"admin\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"lzReceiveTypes\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"accountsList\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetAccountListParams\";\n };\n },\n ];\n },\n {\n name: \"setManagerRole\";\n accounts: [\n {\n name: \"owner\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"managerRole\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetManagerRoleParams\";\n };\n },\n ];\n },\n {\n name: \"setBroker\";\n accounts: [\n {\n name: \"brokerManager\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"allowedBroker\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"managerRole\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetBrokerParams\";\n };\n },\n ];\n },\n {\n name: \"setWithdrawBroker\";\n accounts: [\n {\n name: \"brokerManager\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"withdrawBroker\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"managerRole\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetWithdrawBrokerParams\";\n };\n },\n ];\n },\n {\n name: \"setToken\";\n accounts: [\n {\n name: \"tokenManager\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"allowedToken\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"managerRole\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"mintAccount\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetTokenParams\";\n };\n },\n ];\n },\n {\n name: \"setWithdrawToken\";\n accounts: [\n {\n name: \"tokenManager\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"withdrawToken\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"managerRole\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"mintAccount\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetWithdrawTokenParams\";\n };\n },\n ];\n },\n {\n name: \"setOrderDelivery\";\n accounts: [\n {\n name: \"owner\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetOrderDeliveryParams\";\n };\n },\n ];\n },\n {\n name: \"oappQuote\";\n accounts: [\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"peer\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"enforcedOptions\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"vaultAuthority\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"DepositParams\";\n };\n },\n ];\n returns: {\n defined: \"MessagingFee\";\n };\n },\n {\n name: \"lzReceive\";\n accounts: [\n {\n name: \"payer\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"peer\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"withdrawBrokerPda\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"withdrawTokenPda\";\n isMut: false;\n isSigner: false;\n docs: [\"CHECK\"];\n },\n {\n name: \"tokenMint\";\n isMut: false;\n isSigner: false;\n docs: [\"CHECK\"];\n },\n {\n name: \"receiver\";\n isMut: true;\n isSigner: false;\n docs: [\"CHECK\"];\n },\n {\n name: \"receiverTokenAccount\";\n isMut: true;\n isSigner: false;\n docs: [\"UNCHECKED\"];\n },\n {\n name: \"vaultAuthority\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"vaultTokenAccount\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"tokenProgram\";\n isMut: false;\n isSigner: false;\n docs: [\"CHECKED: sol_vault is used for SOL withdrawal\"];\n },\n {\n name: \"associatedTokenProgram\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"eventAuthority\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"program\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"OAppLzReceiveParams\";\n };\n },\n ];\n },\n {\n name: \"lzReceiveTypes\";\n accounts: [\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"accountList\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"OAppLzReceiveParams\";\n };\n },\n ];\n returns: {\n vec: {\n defined: \"oapp::endpoint_cpi::LzAccount\";\n };\n };\n },\n {\n name: \"setRateLimit\";\n accounts: [\n {\n name: \"admin\";\n isMut: false;\n isSigner: true;\n },\n {\n name: \"peer\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetRateLimitParams\";\n };\n },\n ];\n },\n {\n name: \"setDelegate\";\n accounts: [\n {\n name: \"admin\";\n isMut: false;\n isSigner: true;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetDelegateParams\";\n };\n },\n ];\n },\n {\n name: \"transferAdmin\";\n accounts: [\n {\n name: \"admin\";\n isMut: false;\n isSigner: true;\n },\n {\n name: \"oappConfig\";\n isMut: true;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"TransferAdminParams\";\n };\n },\n ];\n },\n {\n name: \"setPeer\";\n accounts: [\n {\n name: \"admin\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"peer\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetPeerParams\";\n };\n },\n ];\n },\n {\n name: \"setEnforcedOptions\";\n accounts: [\n {\n name: \"admin\";\n isMut: true;\n isSigner: true;\n },\n {\n name: \"enforcedOptions\";\n isMut: true;\n isSigner: false;\n },\n {\n name: \"oappConfig\";\n isMut: false;\n isSigner: false;\n },\n {\n name: \"systemProgram\";\n isMut: false;\n isSigner: false;\n },\n ];\n args: [\n {\n name: \"params\";\n type: {\n defined: \"SetEnforcedOptionsParams\";\n };\n },\n ];\n },\n ];\n accounts: [\n {\n name: \"enforcedOptions\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"send\";\n type: \"bytes\";\n },\n {\n name: \"sendAndCall\";\n type: \"bytes\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"oAppConfig\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"endpointProgram\";\n type: \"publicKey\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n {\n name: \"admin\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"oAppLzReceiveTypesAccounts\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"oappConfig\";\n type: \"publicKey\";\n },\n {\n name: \"accountList\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"accountList\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"bump\";\n type: \"u8\";\n },\n {\n name: \"woofiProPda\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawUsdcPda\";\n type: \"publicKey\";\n },\n {\n name: \"usdcMint\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawUsdtPda\";\n type: \"publicKey\";\n },\n {\n name: \"usdtMint\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawWsolPda\";\n type: \"publicKey\";\n },\n {\n name: \"wsolMint\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"peer\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"address\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"rateLimiter\";\n type: {\n option: {\n defined: \"RateLimiter\";\n };\n };\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"allowedBroker\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"allowedToken\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenDecimals\";\n type: \"u8\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"managerRole\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"roleHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"vaultAuthority\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"bump\";\n docs: [\"Bump seed for the vault authority PDA\"];\n type: \"u8\";\n },\n {\n name: \"owner\";\n type: \"publicKey\";\n },\n {\n name: \"depositNonce\";\n type: \"u64\";\n },\n {\n name: \"orderDelivery\";\n type: \"bool\";\n },\n {\n name: \"inboundNonce\";\n type: \"u64\";\n },\n {\n name: \"dstEid\";\n type: \"u32\";\n },\n {\n name: \"solChainId\";\n type: \"u128\";\n },\n ];\n };\n },\n {\n name: \"withdrawBroker\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerIndex\";\n type: \"u16\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n {\n name: \"withdrawToken\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenDecimals\";\n type: \"u8\";\n },\n {\n name: \"tokenIndex\";\n type: \"u8\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n {\n name: \"bump\";\n type: \"u8\";\n },\n ];\n };\n },\n ];\n types: [\n {\n name: \"VaultDepositParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"userAddress\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"srcChainId\";\n type: \"u128\";\n },\n {\n name: \"tokenAmount\";\n type: \"u128\";\n },\n {\n name: \"srcChainDepositNonce\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"LzMessage\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"msgType\";\n type: \"u8\";\n },\n {\n name: \"payload\";\n type: \"bytes\";\n },\n ];\n };\n },\n {\n name: \"AccountWithdrawSol\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"sender\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"receiver\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerIndex\";\n type: \"u16\";\n },\n {\n name: \"tokenIndex\";\n type: \"u8\";\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n },\n {\n name: \"fee\";\n type: \"u64\";\n },\n {\n name: \"chainId\";\n type: \"u64\";\n },\n {\n name: \"withdrawNonce\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"VaultWithdrawParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"sender\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"receiver\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n },\n {\n name: \"fee\";\n type: \"u128\";\n },\n {\n name: \"chainId\";\n type: \"u128\";\n },\n {\n name: \"withdrawNonce\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"InitOAppParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"admin\";\n type: \"publicKey\";\n },\n {\n name: \"accountList\";\n type: \"publicKey\";\n },\n {\n name: \"endpointProgram\";\n type: {\n option: \"publicKey\";\n };\n },\n ];\n };\n },\n {\n name: \"OAppLzReceiveParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"srcEid\";\n type: \"u32\";\n },\n {\n name: \"sender\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"nonce\";\n type: \"u64\";\n },\n {\n name: \"guid\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"message\";\n type: \"bytes\";\n },\n {\n name: \"extraData\";\n type: \"bytes\";\n },\n ];\n };\n },\n {\n name: \"MessagingFee\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"nativeFee\";\n type: \"u64\";\n },\n {\n name: \"lzTokenFee\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"SetAccountListParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"woofiProPda\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawUsdcPda\";\n type: \"publicKey\";\n },\n {\n name: \"usdcMint\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawUsdtPda\";\n type: \"publicKey\";\n },\n {\n name: \"usdtMint\";\n type: \"publicKey\";\n },\n {\n name: \"withdrawWsolPda\";\n type: \"publicKey\";\n },\n {\n name: \"wsolMint\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"SetDelegateParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"delegate\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"SetEnforcedOptionsParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"dstEid\";\n type: \"u32\";\n },\n {\n name: \"send\";\n type: \"bytes\";\n },\n {\n name: \"sendAndCall\";\n type: \"bytes\";\n },\n ];\n };\n },\n {\n name: \"SetPeerParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"dstEid\";\n type: \"u32\";\n },\n {\n name: \"peer\";\n type: {\n array: [\"u8\", 32];\n };\n },\n ];\n };\n },\n {\n name: \"SetRateLimitParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"dstEid\";\n type: \"u32\";\n },\n {\n name: \"refillPerSecond\";\n type: {\n option: \"u64\";\n };\n },\n {\n name: \"capacity\";\n type: {\n option: \"u64\";\n };\n },\n {\n name: \"enabled\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"TransferAdminParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"admin\";\n type: \"publicKey\";\n },\n ];\n };\n },\n {\n name: \"DepositParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"userAddress\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"OAppSendParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"nativeFee\";\n type: \"u64\";\n },\n {\n name: \"lzTokenFee\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"SetBrokerParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"brokerManagerRole\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"SetManagerRoleParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"roleHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"managerAddress\";\n type: \"publicKey\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"SetOrderDeliveryParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"orderDelivery\";\n type: \"bool\";\n },\n {\n name: \"nonce\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"SetTokenParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"tokenManagerRole\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"SetVaultParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"owner\";\n type: \"publicKey\";\n },\n {\n name: \"depositNonce\";\n type: \"u64\";\n },\n {\n name: \"orderDelivery\";\n type: \"bool\";\n },\n {\n name: \"inboundNonce\";\n type: \"u64\";\n },\n {\n name: \"dstEid\";\n type: \"u32\";\n },\n {\n name: \"solChainId\";\n type: \"u128\";\n },\n ];\n };\n },\n {\n name: \"SetWithdrawBrokerParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"brokerManagerRole\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"brokerIndex\";\n type: \"u16\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"SetWithdrawTokenParams\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"tokenManagerRole\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n },\n {\n name: \"tokenIndex\";\n type: \"u8\";\n },\n {\n name: \"allowed\";\n type: \"bool\";\n },\n ];\n };\n },\n {\n name: \"RateLimiter\";\n type: {\n kind: \"struct\";\n fields: [\n {\n name: \"capacity\";\n type: \"u64\";\n },\n {\n name: \"tokens\";\n type: \"u64\";\n },\n {\n name: \"refillPerSecond\";\n type: \"u64\";\n },\n {\n name: \"lastRefillTime\";\n type: \"u64\";\n },\n ];\n };\n },\n {\n name: \"OAppError\";\n type: {\n kind: \"enum\";\n variants: [\n {\n name: \"Unauthorized\";\n },\n {\n name: \"InvalidSender\";\n },\n {\n name: \"InvalidReceiver\";\n },\n {\n name: \"InvalidOptions\";\n },\n {\n name: \"InvalidEndpointProgram\";\n },\n {\n name: \"RateLimitExceeded\";\n },\n {\n name: \"WithdrawFailed\";\n },\n {\n name: \"InvalidInboundNonce\";\n },\n {\n name: \"InvalidReceiverTokenAccount\";\n },\n {\n name: \"InvalidAdminTokenAccount\";\n },\n {\n name: \"InvalidMessageType\";\n },\n {\n name: \"InvalidTokenIndex\";\n },\n ];\n };\n },\n {\n name: \"MsgType\";\n type: {\n kind: \"enum\";\n variants: [\n {\n name: \"Deposit\";\n },\n {\n name: \"Withdraw\";\n },\n {\n name: \"RebalanceBurn\";\n },\n {\n name: \"RebalanceMint\";\n },\n ];\n };\n },\n ];\n events: [\n {\n name: \"SetAllowedBroker\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n ];\n },\n {\n name: \"ResetAllowedBroker\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n ];\n },\n {\n name: \"SetAllowedToken\";\n fields: [\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n index: false;\n },\n ];\n },\n {\n name: \"ResetAllowedToken\";\n fields: [\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n index: false;\n },\n ];\n },\n {\n name: \"SetWithdrawTokenIndex\";\n fields: [\n {\n name: \"tokenIndex\";\n type: \"u8\";\n index: false;\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n index: false;\n },\n ];\n },\n {\n name: \"ResetWithdrawTokenIndex\";\n fields: [\n {\n name: \"tokenIndex\";\n type: \"u8\";\n index: false;\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"mintAccount\";\n type: \"publicKey\";\n index: false;\n },\n ];\n },\n {\n name: \"SetWithdrawBrokerEvent\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"brokerIndex\";\n type: \"u16\";\n index: false;\n },\n ];\n },\n {\n name: \"ResetWithdrawBrokerEvent\";\n fields: [\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"brokerIndex\";\n type: \"u16\";\n index: false;\n },\n ];\n },\n {\n name: \"SetManager\";\n fields: [\n {\n name: \"roleHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"managerAddress\";\n type: \"publicKey\";\n index: false;\n },\n {\n name: \"allowed\";\n type: \"bool\";\n index: false;\n },\n ];\n },\n {\n name: \"Deposited\";\n fields: [\n {\n name: \"user\";\n type: \"publicKey\";\n index: false;\n },\n {\n name: \"amount\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"Withdrawn\";\n fields: [\n {\n name: \"user\";\n type: \"publicKey\";\n index: false;\n },\n {\n name: \"amount\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"CreatedATA\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"receiver\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"receiverTokenAccount\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"withdrawNonce\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"VaultDeposited\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"userAddress\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"srcChainId\";\n type: \"u128\";\n index: false;\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n index: false;\n },\n {\n name: \"srcChainDepositNonce\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"VaultWithdrawn\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"sender\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"receiver\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n index: false;\n },\n {\n name: \"fee\";\n type: \"u128\";\n index: false;\n },\n {\n name: \"chainId\";\n type: \"u128\";\n index: false;\n },\n {\n name: \"withdrawNonce\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"FrozenWithdrawn\";\n fields: [\n {\n name: \"accountId\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"sender\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"receiver\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"brokerHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"tokenHash\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"tokenAmount\";\n type: \"u64\";\n index: false;\n },\n {\n name: \"fee\";\n type: \"u128\";\n index: false;\n },\n {\n name: \"chainId\";\n type: \"u128\";\n index: false;\n },\n {\n name: \"withdrawNonce\";\n type: \"u64\";\n index: false;\n },\n ];\n },\n {\n name: \"OAppSent\";\n fields: [\n {\n name: \"guid\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"dstEid\";\n type: \"u32\";\n index: false;\n },\n ];\n },\n {\n name: \"OAppReceived\";\n fields: [\n {\n name: \"guid\";\n type: {\n array: [\"u8\", 32];\n };\n index: false;\n },\n {\n name: \"srcEid\";\n type: \"u32\";\n index: false;\n },\n ];\n },\n ];\n errors: [\n {\n code: 6000;\n name: \"InsufficientFunds\";\n msg: \"Deposited funds are insufficient for withdrawal\";\n },\n {\n code: 6001;\n name: \"UserInfoBelongsToAnotherUser\";\n msg: \"User info pda belongs to another user\";\n },\n {\n code: 6002;\n name: \"BrokerNotAllowed\";\n msg: \"Broker is not allowed\";\n },\n {\n code: 6003;\n name: \"TokenNotAllowed\";\n msg: \"Token is not allowed\";\n },\n {\n code: 6004;\n name: \"InvalidAccountId\";\n msg: \"AccountId is invalid\";\n },\n {\n code: 6005;\n name: \"InvalidVaultOwner\";\n msg: \"Vault owner is not the same as the payer\";\n },\n {\n code: 6006;\n name: \"ManagerRoleNotAllowed\";\n msg: \"Manager role is not allowed\";\n },\n ];\n};\n\nexport const IDL: SolanaVault = {\n version: \"0.1.0\",\n name: \"solana_vault\",\n instructions: [\n {\n name: \"setVault\",\n accounts: [\n {\n name: \"admin\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetVaultParams\",\n },\n },\n ],\n },\n {\n name: \"deposit\",\n accounts: [\n {\n name: \"user\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"userTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"vaultTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"depositToken\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"peer\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"enforcedOptions\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"allowedBroker\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"allowedToken\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"associatedTokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"depositParams\",\n type: {\n defined: \"DepositParams\",\n },\n },\n {\n name: \"oappParams\",\n type: {\n defined: \"OAppSendParams\",\n },\n },\n ],\n returns: {\n defined: \"MessagingReceipt\",\n },\n },\n {\n name: \"depositSol\",\n accounts: [\n {\n name: \"user\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"solVault\",\n isMut: true,\n isSigner: false,\n docs: [\"CHECKED: sol_vault is used for SOL deposit\"],\n },\n {\n name: \"peer\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"enforcedOptions\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"allowedBroker\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"allowedToken\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"depositParams\",\n type: {\n defined: \"DepositParams\",\n },\n },\n {\n name: \"oappParams\",\n type: {\n defined: \"OAppSendParams\",\n },\n },\n ],\n returns: {\n defined: \"MessagingReceipt\",\n },\n },\n {\n name: \"initOapp\",\n accounts: [\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"oappConfig\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"lzReceiveTypes\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"accountList\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"InitOAppParams\",\n },\n },\n ],\n },\n {\n name: \"setAccountList\",\n accounts: [\n {\n name: \"admin\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"lzReceiveTypes\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"accountsList\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetAccountListParams\",\n },\n },\n ],\n },\n {\n name: \"setManagerRole\",\n accounts: [\n {\n name: \"owner\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"managerRole\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetManagerRoleParams\",\n },\n },\n ],\n },\n {\n name: \"setBroker\",\n accounts: [\n {\n name: \"brokerManager\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"allowedBroker\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"managerRole\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetBrokerParams\",\n },\n },\n ],\n },\n {\n name: \"setWithdrawBroker\",\n accounts: [\n {\n name: \"brokerManager\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"withdrawBroker\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"managerRole\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetWithdrawBrokerParams\",\n },\n },\n ],\n },\n {\n name: \"setToken\",\n accounts: [\n {\n name: \"tokenManager\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"allowedToken\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"managerRole\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mintAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetTokenParams\",\n },\n },\n ],\n },\n {\n name: \"setWithdrawToken\",\n accounts: [\n {\n name: \"tokenManager\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"withdrawToken\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"managerRole\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mintAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetWithdrawTokenParams\",\n },\n },\n ],\n },\n {\n name: \"setOrderDelivery\",\n accounts: [\n {\n name: \"owner\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetOrderDeliveryParams\",\n },\n },\n ],\n },\n {\n name: \"oappQuote\",\n accounts: [\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"peer\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"enforcedOptions\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"vaultAuthority\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"DepositParams\",\n },\n },\n ],\n returns: {\n defined: \"MessagingFee\",\n },\n },\n {\n name: \"lzReceive\",\n accounts: [\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"peer\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"withdrawBrokerPda\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"withdrawTokenPda\",\n isMut: false,\n isSigner: false,\n docs: [\"CHECK\"],\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n docs: [\"CHECK\"],\n },\n {\n name: \"receiver\",\n isMut: true,\n isSigner: false,\n docs: [\"CHECK\"],\n },\n {\n name: \"receiverTokenAccount\",\n isMut: true,\n isSigner: false,\n docs: [\"UNCHECKED\"],\n },\n {\n name: \"vaultAuthority\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"vaultTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n docs: [\"CHECKED: sol_vault is used for SOL withdrawal\"],\n },\n {\n name: \"associatedTokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"eventAuthority\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"program\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OAppLzReceiveParams\",\n },\n },\n ],\n },\n {\n name: \"lzReceiveTypes\",\n accounts: [\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"accountList\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OAppLzReceiveParams\",\n },\n },\n ],\n returns: {\n vec: {\n defined: \"oapp::endpoint_cpi::LzAccount\",\n },\n },\n },\n {\n name: \"setRateLimit\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"peer\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetRateLimitParams\",\n },\n },\n ],\n },\n {\n name: \"setDelegate\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetDelegateParams\",\n },\n },\n ],\n },\n {\n name: \"transferAdmin\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"oappConfig\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"TransferAdminParams\",\n },\n },\n ],\n },\n {\n name: \"setPeer\",\n accounts: [\n {\n name: \"admin\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"peer\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetPeerParams\",\n },\n },\n ],\n },\n {\n name: \"setEnforcedOptions\",\n accounts: [\n {\n name: \"admin\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"enforcedOptions\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"oappConfig\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"SetEnforcedOptionsParams\",\n },\n },\n ],\n },\n ],\n accounts: [\n {\n name: \"enforcedOptions\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"send\",\n type: \"bytes\",\n },\n {\n name: \"sendAndCall\",\n type: \"bytes\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"oAppConfig\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"endpointProgram\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"admin\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"oAppLzReceiveTypesAccounts\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"oappConfig\",\n type: \"publicKey\",\n },\n {\n name: \"accountList\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"accountList\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"woofiProPda\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawUsdcPda\",\n type: \"publicKey\",\n },\n {\n name: \"usdcMint\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawUsdtPda\",\n type: \"publicKey\",\n },\n {\n name: \"usdtMint\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawWsolPda\",\n type: \"publicKey\",\n },\n {\n name: \"wsolMint\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"peer\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"address\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"rateLimiter\",\n type: {\n option: {\n defined: \"RateLimiter\",\n },\n },\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"allowedBroker\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"allowedToken\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenDecimals\",\n type: \"u8\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"managerRole\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"roleHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"vaultAuthority\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bump\",\n docs: [\"Bump seed for the vault authority PDA\"],\n type: \"u8\",\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n {\n name: \"depositNonce\",\n type: \"u64\",\n },\n {\n name: \"orderDelivery\",\n type: \"bool\",\n },\n {\n name: \"inboundNonce\",\n type: \"u64\",\n },\n {\n name: \"dstEid\",\n type: \"u32\",\n },\n {\n name: \"solChainId\",\n type: \"u128\",\n },\n ],\n },\n },\n {\n name: \"withdrawBroker\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerIndex\",\n type: \"u16\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n {\n name: \"withdrawToken\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenDecimals\",\n type: \"u8\",\n },\n {\n name: \"tokenIndex\",\n type: \"u8\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n },\n ],\n types: [\n {\n name: \"VaultDepositParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"userAddress\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"srcChainId\",\n type: \"u128\",\n },\n {\n name: \"tokenAmount\",\n type: \"u128\",\n },\n {\n name: \"srcChainDepositNonce\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"LzMessage\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"msgType\",\n type: \"u8\",\n },\n {\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n },\n },\n {\n name: \"AccountWithdrawSol\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"sender\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"receiver\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerIndex\",\n type: \"u16\",\n },\n {\n name: \"tokenIndex\",\n type: \"u8\",\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n },\n {\n name: \"fee\",\n type: \"u64\",\n },\n {\n name: \"chainId\",\n type: \"u64\",\n },\n {\n name: \"withdrawNonce\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"VaultWithdrawParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"sender\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"receiver\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n },\n {\n name: \"fee\",\n type: \"u128\",\n },\n {\n name: \"chainId\",\n type: \"u128\",\n },\n {\n name: \"withdrawNonce\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"InitOAppParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"admin\",\n type: \"publicKey\",\n },\n {\n name: \"accountList\",\n type: \"publicKey\",\n },\n {\n name: \"endpointProgram\",\n type: {\n option: \"publicKey\",\n },\n },\n ],\n },\n },\n {\n name: \"OAppLzReceiveParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"srcEid\",\n type: \"u32\",\n },\n {\n name: \"sender\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"nonce\",\n type: \"u64\",\n },\n {\n name: \"guid\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"message\",\n type: \"bytes\",\n },\n {\n name: \"extraData\",\n type: \"bytes\",\n },\n ],\n },\n },\n {\n name: \"MessagingFee\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"nativeFee\",\n type: \"u64\",\n },\n {\n name: \"lzTokenFee\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"SetAccountListParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"woofiProPda\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawUsdcPda\",\n type: \"publicKey\",\n },\n {\n name: \"usdcMint\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawUsdtPda\",\n type: \"publicKey\",\n },\n {\n name: \"usdtMint\",\n type: \"publicKey\",\n },\n {\n name: \"withdrawWsolPda\",\n type: \"publicKey\",\n },\n {\n name: \"wsolMint\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"SetDelegateParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"delegate\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"SetEnforcedOptionsParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"dstEid\",\n type: \"u32\",\n },\n {\n name: \"send\",\n type: \"bytes\",\n },\n {\n name: \"sendAndCall\",\n type: \"bytes\",\n },\n ],\n },\n },\n {\n name: \"SetPeerParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"dstEid\",\n type: \"u32\",\n },\n {\n name: \"peer\",\n type: {\n array: [\"u8\", 32],\n },\n },\n ],\n },\n },\n {\n name: \"SetRateLimitParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"dstEid\",\n type: \"u32\",\n },\n {\n name: \"refillPerSecond\",\n type: {\n option: \"u64\",\n },\n },\n {\n name: \"capacity\",\n type: {\n option: \"u64\",\n },\n },\n {\n name: \"enabled\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"TransferAdminParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"admin\",\n type: \"publicKey\",\n },\n ],\n },\n },\n {\n name: \"DepositParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"userAddress\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"OAppSendParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"nativeFee\",\n type: \"u64\",\n },\n {\n name: \"lzTokenFee\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"SetBrokerParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"brokerManagerRole\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"SetManagerRoleParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"roleHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"managerAddress\",\n type: \"publicKey\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"SetOrderDeliveryParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"orderDelivery\",\n type: \"bool\",\n },\n {\n name: \"nonce\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"SetTokenParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"tokenManagerRole\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"SetVaultParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n {\n name: \"depositNonce\",\n type: \"u64\",\n },\n {\n name: \"orderDelivery\",\n type: \"bool\",\n },\n {\n name: \"inboundNonce\",\n type: \"u64\",\n },\n {\n name: \"dstEid\",\n type: \"u32\",\n },\n {\n name: \"solChainId\",\n type: \"u128\",\n },\n ],\n },\n },\n {\n name: \"SetWithdrawBrokerParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"brokerManagerRole\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"brokerIndex\",\n type: \"u16\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"SetWithdrawTokenParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"tokenManagerRole\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n },\n {\n name: \"tokenIndex\",\n type: \"u8\",\n },\n {\n name: \"allowed\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"RateLimiter\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"capacity\",\n type: \"u64\",\n },\n {\n name: \"tokens\",\n type: \"u64\",\n },\n {\n name: \"refillPerSecond\",\n type: \"u64\",\n },\n {\n name: \"lastRefillTime\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"OAppError\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Unauthorized\",\n },\n {\n name: \"InvalidSender\",\n },\n {\n name: \"InvalidReceiver\",\n },\n {\n name: \"InvalidOptions\",\n },\n {\n name: \"InvalidEndpointProgram\",\n },\n {\n name: \"RateLimitExceeded\",\n },\n {\n name: \"WithdrawFailed\",\n },\n {\n name: \"InvalidInboundNonce\",\n },\n {\n name: \"InvalidReceiverTokenAccount\",\n },\n {\n name: \"InvalidAdminTokenAccount\",\n },\n {\n name: \"InvalidMessageType\",\n },\n {\n name: \"InvalidTokenIndex\",\n },\n ],\n },\n },\n {\n name: \"MsgType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Deposit\",\n },\n {\n name: \"Withdraw\",\n },\n {\n name: \"RebalanceBurn\",\n },\n {\n name: \"RebalanceMint\",\n },\n ],\n },\n },\n ],\n events: [\n {\n name: \"SetAllowedBroker\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n ],\n },\n {\n name: \"ResetAllowedBroker\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n ],\n },\n {\n name: \"SetAllowedToken\",\n fields: [\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"ResetAllowedToken\",\n fields: [\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"SetWithdrawTokenIndex\",\n fields: [\n {\n name: \"tokenIndex\",\n type: \"u8\",\n index: false,\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"ResetWithdrawTokenIndex\",\n fields: [\n {\n name: \"tokenIndex\",\n type: \"u8\",\n index: false,\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"mintAccount\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"SetWithdrawBrokerEvent\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"brokerIndex\",\n type: \"u16\",\n index: false,\n },\n ],\n },\n {\n name: \"ResetWithdrawBrokerEvent\",\n fields: [\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"brokerIndex\",\n type: \"u16\",\n index: false,\n },\n ],\n },\n {\n name: \"SetManager\",\n fields: [\n {\n name: \"roleHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"managerAddress\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"allowed\",\n type: \"bool\",\n index: false,\n },\n ],\n },\n {\n name: \"Deposited\",\n fields: [\n {\n name: \"user\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"Withdrawn\",\n fields: [\n {\n name: \"user\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"CreatedATA\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"receiver\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"receiverTokenAccount\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"withdrawNonce\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"VaultDeposited\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"userAddress\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"srcChainId\",\n type: \"u128\",\n index: false,\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"srcChainDepositNonce\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"VaultWithdrawn\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"sender\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"receiver\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"fee\",\n type: \"u128\",\n index: false,\n },\n {\n name: \"chainId\",\n type: \"u128\",\n index: false,\n },\n {\n name: \"withdrawNonce\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"FrozenWithdrawn\",\n fields: [\n {\n name: \"accountId\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"sender\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"receiver\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"brokerHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"tokenHash\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"tokenAmount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"fee\",\n type: \"u128\",\n index: false,\n },\n {\n name: \"chainId\",\n type: \"u128\",\n index: false,\n },\n {\n name: \"withdrawNonce\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"OAppSent\",\n fields: [\n {\n name: \"guid\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"dstEid\",\n type: \"u32\",\n index: false,\n },\n ],\n },\n {\n name: \"OAppReceived\",\n fields: [\n {\n name: \"guid\",\n type: {\n array: [\"u8\", 32],\n },\n index: false,\n },\n {\n name: \"srcEid\",\n type: \"u32\",\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"InsufficientFunds\",\n msg: \"Deposited funds are insufficient for withdrawal\",\n },\n {\n code: 6001,\n name: \"UserInfoBelongsToAnotherUser\",\n msg: \"User info pda belongs to another user\",\n },\n {\n code: 6002,\n name: \"BrokerNotAllowed\",\n msg: \"Broker is not allowed\",\n },\n {\n code: 6003,\n name: \"TokenNotAllowed\",\n msg: \"Token is not allowed\",\n },\n {\n code: 6004,\n name: \"InvalidAccountId\",\n msg: \"AccountId is invalid\",\n },\n {\n code: 6005,\n name: \"InvalidVaultOwner\",\n msg: \"Vault owner is not the same as the payer\",\n },\n {\n code: 6006,\n name: \"ManagerRoleNotAllowed\",\n msg: \"Manager role is not allowed\",\n },\n ],\n};\n","import {\n DVN_CONFIG_SEED,\n ENDPOINT_SEED,\n ENFORCED_OPTIONS_SEED,\n EVENT_SEED,\n EXECUTOR_CONFIG_SEED,\n LZ_RECEIVE_TYPES_SEED,\n MESSAGE_LIB_SEED,\n NONCE_SEED,\n OAPP_SEED,\n PEER_SEED,\n PRICE_FEED_SEED,\n SEND_CONFIG_SEED,\n SEND_LIBRARY_CONFIG_SEED,\n ULN_SEED,\n} from \"@layerzerolabs/lz-solana-sdk-v2\";\nimport { getAssociatedTokenAddressSync } from \"@solana/spl-token\";\nimport { Connection, PublicKey } from \"@solana/web3.js\";\nimport {\n BROKER_SEED,\n DEV_DST_EID,\n DEV_LOOKUP_TABLE_ADDRESS,\n DEV_OAPP_PROGRAM_ID,\n DEV_PEER_ADDRESS,\n DVN_PROGRAM_ID,\n ENDPOINT_PROGRAM_ID,\n EXECUTOR_PROGRAM_ID,\n MAIN_DST_EID,\n MAINNET_LOOKUP_TABLE_ADDRESS,\n MAINNET_OAPP_PROGRAM_ID,\n MAINNET_PEER_ADDRESS,\n PRICE_FEED_PROGRAM_ID,\n QA_LOOKUP_TABLE_ADDRESS,\n QA_OAPP_PROGRAM_ID,\n QA_PEER_ADDRESS,\n RECEIVE_LIB_PROGRAM_ID,\n SEND_LIB_PROGRAM_ID,\n STAGING_LOOKUP_TABLE_ADDRESS,\n STAGING_OAPP_PROGRAM_ID,\n STAGING_PEER_ADDRESS,\n TOKEN_SEED,\n VAULT_AUTHORITY_SEED,\n SOL_VAULT_SEED,\n} from \"./constant\";\n\nexport const getTokenAccounts = (\n token: PublicKey,\n owner: PublicKey,\n): PublicKey => {\n const tokenAccount = getAssociatedTokenAddressSync(token, owner, true);\n return tokenAccount;\n};\n\nexport function getVaultAuthorityPda(VAULT_PROGRAM_ID: PublicKey): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(VAULT_AUTHORITY_SEED, \"utf8\")],\n VAULT_PROGRAM_ID,\n )[0];\n}\n\nexport function getSolVaultPda(VAULT_PROGRAM_ID: PublicKey): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SOL_VAULT_SEED, \"utf8\")],\n VAULT_PROGRAM_ID,\n )[0];\n}\n\nexport function getBrokerPDA(\n programId: PublicKey,\n brokerHash: string,\n): PublicKey {\n const hash = Array.from(Buffer.from(brokerHash.slice(2), \"hex\"));\n return PublicKey.findProgramAddressSync(\n [Buffer.from(BROKER_SEED, \"utf8\"), Buffer.from(hash)],\n programId,\n )[0];\n}\n\nexport function getTokenPDA(\n programId: PublicKey,\n tokenHash: string,\n): PublicKey {\n const hash = Array.from(Buffer.from(tokenHash.slice(2), \"hex\"));\n return PublicKey.findProgramAddressSync(\n [Buffer.from(TOKEN_SEED, \"utf8\"), Buffer.from(hash)],\n programId,\n )[0];\n}\n\nexport function getOAppConfigPda(programId: PublicKey): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(OAPP_SEED, \"utf8\")],\n programId,\n )[0];\n}\n\nexport function getLzReceiveTypesPda(\n programId: PublicKey,\n oappConfigPda: PublicKey,\n): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(LZ_RECEIVE_TYPES_SEED, \"utf8\"), oappConfigPda.toBuffer()],\n programId,\n )[0];\n}\n\nexport function getPeerPda(\n OAPP_PROGRAM_ID: PublicKey,\n oappConfigPda: PublicKey,\n dstEid: number,\n): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n\n return PublicKey.findProgramAddressSync(\n [Buffer.from(PEER_SEED, \"utf8\"), oappConfigPda.toBuffer(), bufferDstEid],\n OAPP_PROGRAM_ID,\n )[0];\n}\n\nexport function getEndorcedOptionsPda(\n OAPP_PROGRAM_ID: PublicKey,\n oappConfigPda: PublicKey,\n dstEid: number,\n): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(ENFORCED_OPTIONS_SEED, \"utf8\"),\n oappConfigPda.toBuffer(),\n bufferDstEid,\n ],\n OAPP_PROGRAM_ID,\n )[0];\n}\n\nexport function getSendLibPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, \"utf8\")],\n SEND_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getSendLibConfigPda(\n oappConfigPda: PublicKey,\n dstEid: number,\n): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEND_LIBRARY_CONFIG_SEED, \"utf8\"),\n oappConfigPda.toBuffer(),\n bufferDstEid,\n ],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getDefaultSendLibConfigPda(dstEid: number): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEND_LIBRARY_CONFIG_SEED, \"utf8\"), bufferDstEid],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getSendLibInfoPda(sendLibPda: PublicKey): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, \"utf8\"), sendLibPda.toBuffer()],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getEndpointSettingPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(ENDPOINT_SEED, \"utf8\")],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getPeerAddress(OAPP_PROGRAM_ID: PublicKey): Uint8Array {\n let peer_address = DEV_PEER_ADDRESS;\n if (OAPP_PROGRAM_ID.toBase58() === DEV_OAPP_PROGRAM_ID.toBase58()) {\n peer_address = DEV_PEER_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === QA_OAPP_PROGRAM_ID.toBase58()) {\n peer_address = QA_PEER_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === STAGING_OAPP_PROGRAM_ID.toBase58()) {\n peer_address = STAGING_PEER_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === MAINNET_OAPP_PROGRAM_ID.toBase58()) {\n peer_address = MAINNET_PEER_ADDRESS;\n }\n return peer_address;\n}\n\nexport function getNoncePda(\n OAPP_PROGRAM_ID: PublicKey,\n oappConfigPda: PublicKey,\n dstEid: number,\n): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n const peer_address = getPeerAddress(OAPP_PROGRAM_ID);\n\n bufferDstEid.writeUInt32BE(dstEid);\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(NONCE_SEED, \"utf8\"),\n oappConfigPda.toBuffer(),\n bufferDstEid,\n peer_address,\n ],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getEventAuthorityPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(EVENT_SEED, \"utf8\")],\n ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport function getUlnSettingPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(ULN_SEED, \"utf8\")],\n SEND_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getSendConfigPda(\n oappConfigPda: PublicKey,\n dstEid: number,\n): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEND_CONFIG_SEED, \"utf8\"),\n bufferDstEid,\n oappConfigPda.toBuffer(),\n ],\n SEND_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getDefaultSendConfigPda(dstEid: number): PublicKey {\n const bufferDstEid = Buffer.alloc(4);\n bufferDstEid.writeUInt32BE(dstEid);\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEND_CONFIG_SEED, \"utf8\"), bufferDstEid],\n RECEIVE_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getUlnEventAuthorityPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(EVENT_SEED, \"utf8\")],\n SEND_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getExecutorConfigPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(EXECUTOR_CONFIG_SEED, \"utf8\")],\n EXECUTOR_PROGRAM_ID,\n )[0];\n}\n\nexport function getPriceFeedPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(PRICE_FEED_SEED, \"utf8\")],\n PRICE_FEED_PROGRAM_ID,\n )[0];\n}\n\nexport function getDvnConfigPda(): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(DVN_CONFIG_SEED, \"utf8\")],\n DVN_PROGRAM_ID,\n )[0];\n}\n\nexport function getDstEID(OAPP_PROGRAM_ID: PublicKey) {\n if (OAPP_PROGRAM_ID.toBase58() === MAINNET_OAPP_PROGRAM_ID.toBase58()) {\n return MAIN_DST_EID;\n }\n\n return DEV_DST_EID;\n}\n\nexport function getLookupTableAddress(OAPP_PROGRAM_ID: PublicKey): PublicKey {\n if (OAPP_PROGRAM_ID.toBase58() === DEV_OAPP_PROGRAM_ID.toBase58()) {\n console.log(\n \"DEV_LOOKUP_TABLE_ADDRESS: \",\n DEV_LOOKUP_TABLE_ADDRESS.toBase58(),\n );\n return DEV_LOOKUP_TABLE_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === QA_OAPP_PROGRAM_ID.toBase58()) {\n return QA_LOOKUP_TABLE_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === STAGING_OAPP_PROGRAM_ID.toBase58()) {\n return STAGING_LOOKUP_TABLE_ADDRESS;\n }\n if (OAPP_PROGRAM_ID.toBase58() === MAINNET_OAPP_PROGRAM_ID.toBase58()) {\n return MAINNET_LOOKUP_TABLE_ADDRESS;\n }\n\n return DEV_LOOKUP_TABLE_ADDRESS;\n}\n\nexport function getMessageLibPda(programId?: PublicKey): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, \"utf8\")],\n programId ? programId : SEND_LIB_PROGRAM_ID,\n )[0];\n}\n\nexport function getMessageLibInfoPda(\n msgLibPda: PublicKey,\n programId?: PublicKey,\n): PublicKey {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(MESSAGE_LIB_SEED, \"utf8\"), msgLibPda.toBytes()],\n programId ? programId : ENDPOINT_PROGRAM_ID,\n )[0];\n}\n\nexport async function getLookupTableAccount(\n connection: Connection,\n lookupTableAddress: PublicKey,\n) {\n const lookupTableAccount = (\n await connection.getAddressLookupTable(lookupTableAddress)\n ).value;\n\n return lookupTableAccount;\n}\n"],"mappings":"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","names":["import_spl_token","import_web3","import_bs58","import_utils","import_core","import_types","import_web3","import_web3","bs58Decode","CoreUtils","bs58encode"]}