{"version":3,"sources":["../src/version.ts","../src/walletAdapter.ts","../src/helper.ts","../src/constant.ts","../src/idl/solana_vault.ts","../src/solana.util.ts"],"sourcesContent":["\ndeclare 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.5.3\";\n};\n\nexport default \"2.5.3\";\n","import { SolanaAdapterOption, SolanaWalletProvider } from \"./types\";\nimport {\n  AddOrderlyKeyInputs,\n  BaseWalletAdapter,\n  Message,\n  RegisterAccountInputs,\n  SettleInputs,\n  SignatureDomain,\n  SimpleDI,\n  WithdrawInputs,\n  Account,\n  MessageFactor,\n} from \"@orderly.network/core\";\nimport { API, MaxUint256, ChainNamespace } from \"@orderly.network/types\";\nimport * as ed from \"@noble/ed25519\";\nimport { encode as bs58encode, decode as bs58Decode } from \"bs58\";\nimport {\n  addOrderlyKeyMessage,\n  checkIsLedgerWallet,\n  deposit,\n  encodeLzMessage,\n  getDepositQuoteFee,\n  MsgType,\n  registerAccountMessage,\n  settleMessage,\n  withdrawMessage,\n} from \"./helper\";\nimport { bytesToHex } from \"ethereum-cryptography/utils\";\nimport { getAccount } from \"@solana/spl-token\";\nimport { getUSDCAccounts } from \"./solana.util\";\nimport {\n  clusterApiUrl,\n  Connection,\n  PublicKey,\n  Transaction,\n  TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\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\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       \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[key as keyof typeof signature] 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\n      const signedTransaction = await this._provider.signTransaction(\n        transaction\n      );\n\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\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 getBalance(): Promise<bigint> {\n    return BigInt(0);\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 usdcPublicKey = new PublicKey(address);\n      const userPublicKey = new PublicKey(this._address);\n      const userUSDCAccount = getUSDCAccounts(usdcPublicKey, userPublicKey);\n      const connection = this.connection;\n\n      const usdcamount = await getAccount(\n        connection,\n        userUSDCAccount,\n        \"confirmed\"\n      );\n      return usdcamount.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 { keccak256 } from \"ethereum-cryptography/keccak\";\nimport { bytesToHex, hexToBytes } from \"ethereum-cryptography/utils\";\nimport { AbiCoder, solidityPackedKeccak256 } from \"ethers\";\nimport {\n  AddOrderlyKeyInputs,\n  RegisterAccountInputs,\n  type SettleInputs,\n  type SignatureDomain,\n  type WithdrawInputs,\n} from \"@orderly.network/core\";\nimport { LedgerWalletKey } 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  getUSDCAccounts,\n  getVaultAuthorityPda,\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 || \"read,trading,asset\",\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 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    USDCAddress: 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    USDCAddress: 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    USDCAddress: string;\n    tokenAmount: string;\n  };\n}) {\n  const brokerHash = depositData.brokerHash;\n  const tokenHash = depositData.tokenHash;\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  const usdc = new PublicKey(depositData.USDCAddress);\n  const userPublicKey = new PublicKey(userAddress);\n  const userUSDCAccount = getUSDCAccounts(usdc, userPublicKey);\n  const vaultAuthorityPda = getVaultAuthorityPda(appProgramId);\n  const vaultUSDCAccount = getUSDCAccounts(usdc, 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 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 = await program.methods\n    .deposit(vaultDepositParams, sendParam)\n    .accounts({\n      userTokenAccount: userUSDCAccount,\n      vaultAuthority: vaultAuthorityPda,\n      vaultTokenAccount: vaultUSDCAccount,\n      depositToken: usdc,\n      user: userPublicKey,\n      peer: peerPDA,\n      enforcedOptions: endorcedPDA,\n      oappConfig: oappConfigPDA,\n      allowedBroker: allowedBrokerPDA,\n      allowedToken: allowedTokenPDA,\n    })\n    .remainingAccounts([\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    .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 { PublicKey } from \"@solana/web3.js\";\nimport { addressToBytes32 } from \"@layerzerolabs/lz-v2-utilities\";\n\n\nexport const ENDPOINT_PROGRAM_ID = new PublicKey(\"76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6\");\nexport const SEND_LIB_PROGRAM_ID = new PublicKey(\"7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH\");\nexport const EXECUTOR_PROGRAM_ID = new PublicKey(\"6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn\");\nexport const PRICE_FEED_PROGRAM_ID = new PublicKey(\"8ahPGPjEbpgGaZx2NV1iG5Shj7TDwvsjkEDcGWjt94TP\");\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(\"HtEYV4xB4wvsj5fgTkcfuChYpvGYzgzwvNhgDZQNh7wW\");\nexport const VAULT_AUTHORITY_SEED = \"VaultAuthority\";\nexport const BROKER_SEED = \"Broker\";\nexport const TOKEN_SEED = \"Token\";\n// fro dev\n// export const PEER_ADDRESS = addressToBytes32('0x9Dc724b24146BeDD2dA28b8C4B74126169B8f312');\n// for qa\nexport const DEV_PEER_ADDRESS = addressToBytes32(\"0x9Dc724b24146BeDD2dA28b8C4B74126169B8f312\");\nexport const QA_PEER_ADDRESS = addressToBytes32(\"0x45b6C6266A7A2170617d8A27A50C642fd68b91c4\");\nexport const STAGING_PEER_ADDRESS = addressToBytes32(\"0x5Bf771A65d057e778C5f0Ed52A0003316f94322D\");\nexport const MAINNET_PEER_ADDRESS = addressToBytes32(\"0xCecAe061aa078e13b5e70D5F9eCee90a3F2B6AeA\");\n\nexport const DEV_DST_EID = 40200;\nexport const MAIN_DST_EID = 30213;\n\nexport const DEV_LOOKUP_TABLE_ADDRESS = new PublicKey(\"BWp8HaYYhiNHekt3zgQhqoCrRftneGxxfgKmCZ6svHN\");\nexport const QA_LOOKUP_TABLE_ADDRESS = new PublicKey(\"BswrQQoPKAFojTuJutZcBMtigAgTghEH4M8ofn3EG2X2\");\nexport const STAGING_LOOKUP_TABLE_ADDRESS = new PublicKey(\"BbGKfxuPwDmu58BjPpd7PMG69TqnZjSpKaLDMgf9E9Dr\");\nexport const MAINNET_LOOKUP_TABLE_ADDRESS = new PublicKey(\"8iq7xCQt3bLdRRn4A46d5GuaXYinBoiAhbe2sUmZVzwg\");\n\n\nexport const DEV_OAPP_PROGRAM_ID = new PublicKey(\"EYJq9eU4GMRUriUJBgGoZ8YLQBXcWaciXuSsEXE7ieQS\");\nexport const QA_OAPP_PROGRAM_ID = new PublicKey(\"5zBjLor7vEraAt4zp2H82sy9MSqFoDnNa1Lx6EYKTYRZ\");\nexport const STAGING_OAPP_PROGRAM_ID = new PublicKey(\"9shwxWDUNhtwkHocsUAmrNAQfBH2DHh4njdAEdHZZkF2\");\nexport const MAINNET_OAPP_PROGRAM_ID = new PublicKey(\"ErBmAD61mGFKvrFNaTJuxoPwqrS8GgtwtqJTJVjFWx9Q\");\n","export type SolanaVault = {\n  \"version\": \"0.1.0\",\n  \"name\": \"solana_vault\",\n  \"instructions\": [\n    {\n      \"name\": \"initVault\",\n      \"accounts\": [\n        {\n          \"name\": \"signer\",\n          \"isMut\": true,\n          \"isSigner\": true\n        },\n        {\n          \"name\": \"vaultAuthority\",\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\": \"InitVaultParams\"\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\": \"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\": \"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\": \"resetOapp\",\n      \"accounts\": [\n        {\n          \"name\": \"admin\",\n          \"isMut\": true,\n          \"isSigner\": true\n        },\n        {\n          \"name\": \"oappConfig\",\n          \"isMut\": true,\n          \"isSigner\": false\n        }\n      ],\n      \"args\": []\n    },\n    {\n      \"name\": \"reinitOapp\",\n      \"accounts\": [\n        {\n          \"name\": \"owner\",\n          \"isMut\": true,\n          \"isSigner\": true\n        },\n        {\n          \"name\": \"oappConfig\",\n          \"isMut\": true,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"vaultAuthority\",\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\": \"ReinitOAppParams\"\n          }\n        }\n      ]\n    },\n    {\n      \"name\": \"resetVault\",\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    {\n      \"name\": \"reinitVault\",\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\": \"ReinitVaultParams\"\n          }\n        }\n      ]\n    },\n    {\n      \"name\": \"setBroker\",\n      \"accounts\": [\n        {\n          \"name\": \"admin\",\n          \"isMut\": true,\n          \"isSigner\": true\n        },\n        {\n          \"name\": \"allowedBroker\",\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\": \"SetBrokerParams\"\n          }\n        }\n      ]\n    },\n    {\n      \"name\": \"setToken\",\n      \"accounts\": [\n        {\n          \"name\": \"admin\",\n          \"isMut\": true,\n          \"isSigner\": true\n        },\n        {\n          \"name\": \"allowedToken\",\n          \"isMut\": true,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"oappConfig\",\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\": \"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\": \"user\",\n          \"isMut\": false,\n          \"isSigner\": false,\n          \"docs\": [\n            \"CHECK\"\n          ]\n        },\n        {\n          \"name\": \"userDepositWallet\",\n          \"isMut\": true,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"vaultAuthority\",\n          \"isMut\": true,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"vaultDepositWallet\",\n          \"isMut\": true,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"depositToken\",\n          \"isMut\": false,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"tokenProgram\",\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      \"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            \"name\": \"usdcHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"usdcMint\",\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      }\n    },\n    {\n      \"name\": \"peer\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"address\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\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\": [\n                \"u8\",\n                32\n              ]\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\": [\n                \"u8\",\n                32\n              ]\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\": \"vaultAuthority\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"bump\",\n            \"docs\": [\n              \"Bump seed for the vault authority PDA\"\n            ],\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  \"types\": [\n    {\n      \"name\": \"VaultDepositParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"accountId\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"brokerHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"userAddress\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"tokenHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\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\": \"InitOAppParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"admin\",\n            \"type\": \"publicKey\"\n          },\n          {\n            \"name\": \"endpointProgram\",\n            \"type\": {\n              \"option\": \"publicKey\"\n            }\n          },\n          {\n            \"name\": \"usdcHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"usdcMint\",\n            \"type\": \"publicKey\"\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\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"nonce\",\n            \"type\": \"u64\"\n          },\n          {\n            \"name\": \"guid\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"message\",\n            \"type\": \"bytes\"\n          },\n          {\n            \"name\": \"extraData\",\n            \"type\": \"bytes\"\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"AccountWithdrawSol\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"accountId\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"sender\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"receiver\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"brokerHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"tokenHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\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\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"sender\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"receiver\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"brokerHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"tokenHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\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\": \"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\": \"ReinitOAppParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"admin\",\n            \"type\": \"publicKey\"\n          },\n          {\n            \"name\": \"endpointProgram\",\n            \"type\": {\n              \"option\": \"publicKey\"\n            }\n          },\n          {\n            \"name\": \"usdcHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"usdcMint\",\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\": [\n                \"u8\",\n                32\n              ]\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\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"brokerHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"tokenHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"userAddress\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\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\": \"InitVaultParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"owner\",\n            \"type\": \"publicKey\"\n          },\n          {\n            \"name\": \"orderDelivery\",\n            \"type\": \"bool\"\n          },\n          {\n            \"name\": \"dstEid\",\n            \"type\": \"u32\"\n          },\n          {\n            \"name\": \"solChainId\",\n            \"type\": \"u128\"\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"ReinitVaultParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"owner\",\n            \"type\": \"publicKey\"\n          },\n          {\n            \"name\": \"dstEid\",\n            \"type\": \"u32\"\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\": \"solChainId\",\n            \"type\": \"u128\"\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"SetBrokerParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"brokerHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\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\": \"mintAccount\",\n            \"type\": \"publicKey\"\n          },\n          {\n            \"name\": \"tokenHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\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\": \"InvalidOptions\"\n          },\n          {\n            \"name\": \"InvalidEndpointProgram\"\n          },\n          {\n            \"name\": \"RateLimitExceeded\"\n          },\n          {\n            \"name\": \"WithdrawFailed\"\n          },\n          {\n            \"name\": \"InvalidInboundNonce\"\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\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        }\n      ]\n    },\n    {\n      \"name\": \"ResetAllowedBroker\",\n      \"fields\": [\n        {\n          \"name\": \"brokerHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        }\n      ]\n    },\n    {\n      \"name\": \"SetAllowedToken\",\n      \"fields\": [\n        {\n          \"name\": \"tokenHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\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\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"mintAccount\",\n          \"type\": \"publicKey\",\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\": \"VaultDeposited\",\n      \"fields\": [\n        {\n          \"name\": \"accountId\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"brokerHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"userAddress\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"tokenHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\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\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"sender\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"receiver\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"brokerHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"tokenHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\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\": [\n              \"u8\",\n              32\n            ]\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\": [\n              \"u8\",\n              32\n            ]\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};\n\nexport const IDL: SolanaVault = {\n  \"version\": \"0.1.0\",\n  \"name\": \"solana_vault\",\n  \"instructions\": [\n    {\n      \"name\": \"initVault\",\n      \"accounts\": [\n        {\n          \"name\": \"signer\",\n          \"isMut\": true,\n          \"isSigner\": true\n        },\n        {\n          \"name\": \"vaultAuthority\",\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\": \"InitVaultParams\"\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\": \"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\": \"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\": \"resetOapp\",\n      \"accounts\": [\n        {\n          \"name\": \"admin\",\n          \"isMut\": true,\n          \"isSigner\": true\n        },\n        {\n          \"name\": \"oappConfig\",\n          \"isMut\": true,\n          \"isSigner\": false\n        }\n      ],\n      \"args\": []\n    },\n    {\n      \"name\": \"reinitOapp\",\n      \"accounts\": [\n        {\n          \"name\": \"owner\",\n          \"isMut\": true,\n          \"isSigner\": true\n        },\n        {\n          \"name\": \"oappConfig\",\n          \"isMut\": true,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"vaultAuthority\",\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\": \"ReinitOAppParams\"\n          }\n        }\n      ]\n    },\n    {\n      \"name\": \"resetVault\",\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    {\n      \"name\": \"reinitVault\",\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\": \"ReinitVaultParams\"\n          }\n        }\n      ]\n    },\n    {\n      \"name\": \"setBroker\",\n      \"accounts\": [\n        {\n          \"name\": \"admin\",\n          \"isMut\": true,\n          \"isSigner\": true\n        },\n        {\n          \"name\": \"allowedBroker\",\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\": \"SetBrokerParams\"\n          }\n        }\n      ]\n    },\n    {\n      \"name\": \"setToken\",\n      \"accounts\": [\n        {\n          \"name\": \"admin\",\n          \"isMut\": true,\n          \"isSigner\": true\n        },\n        {\n          \"name\": \"allowedToken\",\n          \"isMut\": true,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"oappConfig\",\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\": \"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\": \"user\",\n          \"isMut\": false,\n          \"isSigner\": false,\n          \"docs\": [\n            \"CHECK\"\n          ]\n        },\n        {\n          \"name\": \"userDepositWallet\",\n          \"isMut\": true,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"vaultAuthority\",\n          \"isMut\": true,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"vaultDepositWallet\",\n          \"isMut\": true,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"depositToken\",\n          \"isMut\": false,\n          \"isSigner\": false\n        },\n        {\n          \"name\": \"tokenProgram\",\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      \"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            \"name\": \"usdcHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"usdcMint\",\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      }\n    },\n    {\n      \"name\": \"peer\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"address\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\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\": [\n                \"u8\",\n                32\n              ]\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\": [\n                \"u8\",\n                32\n              ]\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\": \"vaultAuthority\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"bump\",\n            \"docs\": [\n              \"Bump seed for the vault authority PDA\"\n            ],\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  \"types\": [\n    {\n      \"name\": \"VaultDepositParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"accountId\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"brokerHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"userAddress\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"tokenHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\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\": \"InitOAppParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"admin\",\n            \"type\": \"publicKey\"\n          },\n          {\n            \"name\": \"endpointProgram\",\n            \"type\": {\n              \"option\": \"publicKey\"\n            }\n          },\n          {\n            \"name\": \"usdcHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"usdcMint\",\n            \"type\": \"publicKey\"\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\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"nonce\",\n            \"type\": \"u64\"\n          },\n          {\n            \"name\": \"guid\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"message\",\n            \"type\": \"bytes\"\n          },\n          {\n            \"name\": \"extraData\",\n            \"type\": \"bytes\"\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"AccountWithdrawSol\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"accountId\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"sender\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"receiver\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"brokerHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"tokenHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\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\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"sender\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"receiver\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"brokerHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"tokenHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\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\": \"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\": \"ReinitOAppParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"admin\",\n            \"type\": \"publicKey\"\n          },\n          {\n            \"name\": \"endpointProgram\",\n            \"type\": {\n              \"option\": \"publicKey\"\n            }\n          },\n          {\n            \"name\": \"usdcHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"usdcMint\",\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\": [\n                \"u8\",\n                32\n              ]\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\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"brokerHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"tokenHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\n          },\n          {\n            \"name\": \"userAddress\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\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\": \"InitVaultParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"owner\",\n            \"type\": \"publicKey\"\n          },\n          {\n            \"name\": \"orderDelivery\",\n            \"type\": \"bool\"\n          },\n          {\n            \"name\": \"dstEid\",\n            \"type\": \"u32\"\n          },\n          {\n            \"name\": \"solChainId\",\n            \"type\": \"u128\"\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"ReinitVaultParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"owner\",\n            \"type\": \"publicKey\"\n          },\n          {\n            \"name\": \"dstEid\",\n            \"type\": \"u32\"\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\": \"solChainId\",\n            \"type\": \"u128\"\n          }\n        ]\n      }\n    },\n    {\n      \"name\": \"SetBrokerParams\",\n      \"type\": {\n        \"kind\": \"struct\",\n        \"fields\": [\n          {\n            \"name\": \"brokerHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\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\": \"mintAccount\",\n            \"type\": \"publicKey\"\n          },\n          {\n            \"name\": \"tokenHash\",\n            \"type\": {\n              \"array\": [\n                \"u8\",\n                32\n              ]\n            }\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\": \"InvalidOptions\"\n          },\n          {\n            \"name\": \"InvalidEndpointProgram\"\n          },\n          {\n            \"name\": \"RateLimitExceeded\"\n          },\n          {\n            \"name\": \"WithdrawFailed\"\n          },\n          {\n            \"name\": \"InvalidInboundNonce\"\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\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        }\n      ]\n    },\n    {\n      \"name\": \"ResetAllowedBroker\",\n      \"fields\": [\n        {\n          \"name\": \"brokerHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        }\n      ]\n    },\n    {\n      \"name\": \"SetAllowedToken\",\n      \"fields\": [\n        {\n          \"name\": \"tokenHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\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\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"mintAccount\",\n          \"type\": \"publicKey\",\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\": \"VaultDeposited\",\n      \"fields\": [\n        {\n          \"name\": \"accountId\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"brokerHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"userAddress\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"tokenHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\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\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"sender\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"receiver\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"brokerHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\n          },\n          \"index\": false\n        },\n        {\n          \"name\": \"tokenHash\",\n          \"type\": {\n            \"array\": [\n              \"u8\",\n              32\n            ]\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\": [\n              \"u8\",\n              32\n            ]\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\": [\n              \"u8\",\n              32\n            ]\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};\n","import {Connection, PublicKey} from \"@solana/web3.js\";\nimport { getAssociatedTokenAddressSync } from \"@solana/spl-token\";\nimport {\n  BROKER_SEED, 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, MAIN_DST_EID, MAINNET_LOOKUP_TABLE_ADDRESS, MAINNET_OAPP_PROGRAM_ID, 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, STAGING_PEER_ADDRESS,\n  TOKEN_SEED,\n  VAULT_AUTHORITY_SEED\n} from \"./constant\";\nimport {\n  DVN_CONFIG_SEED,\n  ENDPOINT_SEED,\n  ENFORCED_OPTIONS_SEED, EVENT_SEED, EXECUTOR_CONFIG_SEED,\n  LZ_RECEIVE_TYPES_SEED, MESSAGE_LIB_SEED, NONCE_SEED,\n  OAPP_SEED,\n  PEER_SEED, PRICE_FEED_SEED, SEND_CONFIG_SEED,\n  SEND_LIBRARY_CONFIG_SEED, ULN_SEED\n} from \"@layerzerolabs/lz-solana-sdk-v2\";\n\nexport const getUSDCAccounts = (usdc: PublicKey, owner: PublicKey): PublicKey => {\n  const usdcTokenAccount = getAssociatedTokenAddressSync(\n    usdc,\n    owner,\n    true\n  );\n  return usdcTokenAccount;\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\n\n\nexport function getBrokerPDA(programId: PublicKey, brokerHash: string): 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(programId: PublicKey, tokenHash: string): 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(programId: PublicKey, oappConfigPda: PublicKey): PublicKey {\n  return PublicKey.findProgramAddressSync(\n    [Buffer.from(LZ_RECEIVE_TYPES_SEED, \"utf8\"), oappConfigPda.toBuffer()],\n    programId\n  )[0];\n}\n\nexport function getPeerPda(OAPP_PROGRAM_ID: PublicKey, oappConfigPda: PublicKey, dstEid: number): 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(OAPP_PROGRAM_ID: PublicKey, oappConfigPda: PublicKey, dstEid: number): PublicKey {\n  const bufferDstEid = Buffer.alloc(4);\n  bufferDstEid.writeUInt32BE(dstEid);\n\n  return PublicKey.findProgramAddressSync(\n    [Buffer.from(ENFORCED_OPTIONS_SEED, \"utf8\"), oappConfigPda.toBuffer(), bufferDstEid],\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\n\nexport function getSendLibConfigPda(oappConfigPda: PublicKey, 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\"), oappConfigPda.toBuffer(), bufferDstEid],\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\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(OAPP_PROGRAM_ID: PublicKey, oappConfigPda: PublicKey, dstEid: number): 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    [Buffer.from(NONCE_SEED, \"utf8\"), oappConfigPda.toBuffer(), bufferDstEid, peer_address],\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(oappConfigPda: PublicKey, 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, oappConfigPda.toBuffer()],\n    SEND_LIB_PROGRAM_ID\n  )[0];\n}\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(\"DEV_LOOKUP_TABLE_ADDRESS: \", DEV_LOOKUP_TABLE_ADDRESS.toBase58());\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(msgLibPda: PublicKey, programId?: PublicKey): PublicKey {\n  return PublicKey.findProgramAddressSync(\n      [Buffer.from(MESSAGE_LIB_SEED, \"utf8\"), msgLibPda.toBytes()],\n      programId ? programId :ENDPOINT_PROGRAM_ID\n  )[0];\n}\n\n\nexport async function getLookupTableAccount(connection: Connection, lookupTableAddress: PublicKey) {\n  const lookupTableAccount = (\n    await connection.getAddressLookupTable(lookupTableAddress)\n  ).value;\n\n  return lookupTableAccount;\n}"],"mappings":"+rBAQG,OAAO,QAAW,cACjB,OAAO,oBAAsB,OAAO,qBAAuB,CAAC,EAC5D,OAAO,oBAAoB,yCAAyC,EAAI,SAG5E,IAAOA,GAAQ,QCZf,OAEE,qBAAAC,GAKA,YAAAC,OAIK,wBACP,OAAc,cAAAC,GAAY,kBAAAC,OAAsB,yBAChD,UAAYC,OAAQ,iBACpB,OAAS,UAAUC,OAAwC,OCf3D,OAAS,MAAAC,GAAI,WAAAC,OAAe,oBAE5B,OACE,wBAAAC,GAEA,aAAAC,EACA,iBAAAC,GACA,sBAAAC,GACA,wBAAAC,OACK,kBACP,OAAS,UAAUC,OAAkB,OACrC,OAAS,aAAAC,MAAiB,+BAC1B,OAAS,cAAAC,EAAY,cAAAC,MAAkB,8BACvC,OAAS,YAAAC,EAAU,2BAAAC,MAA+B,SAQlD,OAAS,mBAAAC,OAAuB,yBCrBhC,OAAS,aAAAC,MAAiB,kBAC1B,OAAS,oBAAAC,MAAwB,iCAG1B,IAAMC,EAAsB,IAAIF,EAAU,8CAA8C,EAClFG,EAAsB,IAAIH,EAAU,8CAA8C,EAClFI,EAAsB,IAAIJ,EAAU,8CAA8C,EAClFK,EAAwB,IAAIL,EAAU,8CAA8C,EACpFM,GAAyBH,EACzBI,GAAsBJ,EACtBK,EAAiB,IAAIR,EAAU,8CAA8C,EAC7ES,GAAuB,iBACvBC,GAAc,SACdC,GAAa,QAIbC,GAAmBX,EAAiB,4CAA4C,EAChFY,GAAkBZ,EAAiB,4CAA4C,EAC/Ea,GAAuBb,EAAiB,4CAA4C,EACpFc,GAAuBd,EAAiB,4CAA4C,EAEpFe,GAAc,MACdC,GAAe,MAEfC,EAA2B,IAAIlB,EAAU,6CAA6C,EACtFmB,GAA0B,IAAInB,EAAU,8CAA8C,EACtFoB,GAA+B,IAAIpB,EAAU,8CAA8C,EAC3FqB,GAA+B,IAAIrB,EAAU,8CAA8C,EAG3FsB,GAAsB,IAAItB,EAAU,8CAA8C,EAClFuB,GAAqB,IAAIvB,EAAU,8CAA8C,EACjFwB,GAA0B,IAAIxB,EAAU,8CAA8C,EACtFyB,EAA0B,IAAIzB,EAAU,8CAA8C,EC0uD5F,IAAM0B,GAAmB,CAC9B,QAAW,QACX,KAAQ,eACR,aAAgB,CACd,CACE,KAAQ,YACR,SAAY,CACV,CACE,KAAQ,SACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,iBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,iBACb,CACF,CACF,CACF,EACA,CACE,KAAQ,UACR,SAAY,CACV,CACE,KAAQ,OACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,mBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,iBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,oBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,eACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,OACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,kBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,eACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,eACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,yBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,gBACR,KAAQ,CACN,QAAW,eACb,CACF,EACA,CACE,KAAQ,aACR,KAAQ,CACN,QAAW,gBACb,CACF,CACF,EACA,QAAW,CACT,QAAW,kBACb,CACF,EACA,CACE,KAAQ,WACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,iBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,gBACb,CACF,CACF,CACF,EACA,CACE,KAAQ,YACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CAAC,CACX,EACA,CACE,KAAQ,aACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,iBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,kBACb,CACF,CACF,CACF,EACA,CACE,KAAQ,aACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,iBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CAAC,CACX,EACA,CACE,KAAQ,cACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,iBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,mBACb,CACF,CACF,CACF,EACA,CACE,KAAQ,YACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,iBACb,CACF,CACF,CACF,EACA,CACE,KAAQ,WACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,eACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,cACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,gBACb,CACF,CACF,CACF,EACA,CACE,KAAQ,mBACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,iBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,wBACb,CACF,CACF,CACF,EACA,CACE,KAAQ,YACR,SAAY,CACV,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,OACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,kBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,iBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,eACb,CACF,CACF,EACA,QAAW,CACT,QAAW,cACb,CACF,EACA,CACE,KAAQ,YACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,OACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,OACR,MAAS,GACT,SAAY,GACZ,KAAQ,CACN,OACF,CACF,EACA,CACE,KAAQ,oBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,iBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,qBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,eACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,eACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,iBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,UACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,qBACb,CACF,CACF,CACF,EACA,CACE,KAAQ,iBACR,SAAY,CACV,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,qBACb,CACF,CACF,EACA,QAAW,CACT,IAAO,CACL,QAAW,+BACb,CACF,CACF,EACA,CACE,KAAQ,eACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,OACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,oBACb,CACF,CACF,CACF,EACA,CACE,KAAQ,cACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,mBACb,CACF,CACF,CACF,EACA,CACE,KAAQ,gBACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,qBACb,CACF,CACF,CACF,EACA,CACE,KAAQ,UACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,OACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,eACb,CACF,CACF,CACF,EACA,CACE,KAAQ,qBACR,SAAY,CACV,CACE,KAAQ,QACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,kBACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,aACR,MAAS,GACT,SAAY,EACd,EACA,CACE,KAAQ,gBACR,MAAS,GACT,SAAY,EACd,CACF,EACA,KAAQ,CACN,CACE,KAAQ,SACR,KAAQ,CACN,QAAW,0BACb,CACF,CACF,CACF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ACF,EACA,CACE,KAAQ,UACR,KAAQ,OACV,EACA,CACE,KAAQ,YACR,KAAQ,OACV,CACF,CACF,CACF,EACA,CACE,KAAQ,qBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,SACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,WACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,aACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,cACR,KAAQ,KACV,EACA,CACE,KAAQ,MACR,KAAQ,KACV,EACA,CACE,KAAQ,UACR,KAAQ,KACV,EACA,CACE,KAAQ,gBACR,KAAQ,KACV,CACF,CACF,CACF,EACA,CACE,KAAQ,sBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,SACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,WACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,aACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,cACR,KAAQ,KACV,EACA,CACE,KAAQ,MACR,KAAQ,MACV,EACA,CACE,KAAQ,UACR,KAAQ,MACV,EACA,CACE,KAAQ,gBACR,KAAQ,KACV,CACF,CACF,CACF,EACA,CACE,KAAQ,eACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,YACR,KAAQ,KACV,EACA,CACE,KAAQ,aACR,KAAQ,KACV,CACF,CACF,CACF,EACA,CACE,KAAQ,mBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,QACR,KAAQ,WACV,EACA,CACE,KAAQ,kBACR,KAAQ,CACN,OAAU,WACZ,CACF,EACA,CACE,KAAQ,WACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,WACR,KAAQ,WACV,CACF,CACF,CACF,EACA,CACE,KAAQ,oBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,WACR,KAAQ,WACV,CACF,CACF,CACF,EACA,CACE,KAAQ,2BACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,SACR,KAAQ,KACV,EACA,CACE,KAAQ,OACR,KAAQ,OACV,EACA,CACE,KAAQ,cACR,KAAQ,OACV,CACF,CACF,CACF,EACA,CACE,KAAQ,gBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,SACR,KAAQ,KACV,EACA,CACE,KAAQ,OACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,CACF,CACF,CACF,EACA,CACE,KAAQ,qBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,SACR,KAAQ,KACV,EACA,CACE,KAAQ,kBACR,KAAQ,CACN,OAAU,KACZ,CACF,EACA,CACE,KAAQ,WACR,KAAQ,CACN,OAAU,KACZ,CACF,EACA,CACE,KAAQ,UACR,KAAQ,MACV,CACF,CACF,CACF,EACA,CACE,KAAQ,sBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,QACR,KAAQ,WACV,CACF,CACF,CACF,EACA,CACE,KAAQ,gBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,aACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,cACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,cACR,KAAQ,KACV,CACF,CACF,CACF,EACA,CACE,KAAQ,iBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,YACR,KAAQ,KACV,EACA,CACE,KAAQ,aACR,KAAQ,KACV,CACF,CACF,CACF,EACA,CACE,KAAQ,kBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,QACR,KAAQ,WACV,EACA,CACE,KAAQ,gBACR,KAAQ,MACV,EACA,CACE,KAAQ,SACR,KAAQ,KACV,EACA,CACE,KAAQ,aACR,KAAQ,MACV,CACF,CACF,CACF,EACA,CACE,KAAQ,oBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,QACR,KAAQ,WACV,EACA,CACE,KAAQ,SACR,KAAQ,KACV,EACA,CACE,KAAQ,eACR,KAAQ,KACV,EACA,CACE,KAAQ,gBACR,KAAQ,MACV,EACA,CACE,KAAQ,eACR,KAAQ,KACV,EACA,CACE,KAAQ,aACR,KAAQ,MACV,CACF,CACF,CACF,EACA,CACE,KAAQ,kBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,aACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,UACR,KAAQ,MACV,CACF,CACF,CACF,EACA,CACE,KAAQ,yBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,gBACR,KAAQ,MACV,EACA,CACE,KAAQ,QACR,KAAQ,KACV,CACF,CACF,CACF,EACA,CACE,KAAQ,iBACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,cACR,KAAQ,WACV,EACA,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,CACF,EACA,CACE,KAAQ,UACR,KAAQ,MACV,CACF,CACF,CACF,EACA,CACE,KAAQ,cACR,KAAQ,CACN,KAAQ,SACR,OAAU,CACR,CACE,KAAQ,WACR,KAAQ,KACV,EACA,CACE,KAAQ,SACR,KAAQ,KACV,EACA,CACE,KAAQ,kBACR,KAAQ,KACV,EACA,CACE,KAAQ,iBACR,KAAQ,KACV,CACF,CACF,CACF,EACA,CACE,KAAQ,YACR,KAAQ,CACN,KAAQ,OACR,SAAY,CACV,CACE,KAAQ,cACV,EACA,CACE,KAAQ,eACV,EACA,CACE,KAAQ,gBACV,EACA,CACE,KAAQ,wBACV,EACA,CACE,KAAQ,mBACV,EACA,CACE,KAAQ,gBACV,EACA,CACE,KAAQ,qBACV,CACF,CACF,CACF,EACA,CACE,KAAQ,UACR,KAAQ,CACN,KAAQ,OACR,SAAY,CACV,CACE,KAAQ,SACV,EACA,CACE,KAAQ,UACV,EACA,CACE,KAAQ,eACV,EACA,CACE,KAAQ,eACV,CACF,CACF,CACF,CACF,EACA,OAAU,CACR,CACE,KAAQ,mBACR,OAAU,CACR,CACE,KAAQ,aACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,CACF,CACF,EACA,CACE,KAAQ,qBACR,OAAU,CACR,CACE,KAAQ,aACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,CACF,CACF,EACA,CACE,KAAQ,kBACR,OAAU,CACR,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,cACR,KAAQ,YACR,MAAS,EACX,CACF,CACF,EACA,CACE,KAAQ,oBACR,OAAU,CACR,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,cACR,KAAQ,YACR,MAAS,EACX,CACF,CACF,EACA,CACE,KAAQ,YACR,OAAU,CACR,CACE,KAAQ,OACR,KAAQ,YACR,MAAS,EACX,EACA,CACE,KAAQ,SACR,KAAQ,MACR,MAAS,EACX,CACF,CACF,EACA,CACE,KAAQ,YACR,OAAU,CACR,CACE,KAAQ,OACR,KAAQ,YACR,MAAS,EACX,EACA,CACE,KAAQ,SACR,KAAQ,MACR,MAAS,EACX,CACF,CACF,EACA,CACE,KAAQ,iBACR,OAAU,CACR,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,aACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,cACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,aACR,KAAQ,OACR,MAAS,EACX,EACA,CACE,KAAQ,cACR,KAAQ,MACR,MAAS,EACX,EACA,CACE,KAAQ,uBACR,KAAQ,MACR,MAAS,EACX,CACF,CACF,EACA,CACE,KAAQ,iBACR,OAAU,CACR,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,SACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,WACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,aACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,YACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,cACR,KAAQ,MACR,MAAS,EACX,EACA,CACE,KAAQ,MACR,KAAQ,OACR,MAAS,EACX,EACA,CACE,KAAQ,UACR,KAAQ,OACR,MAAS,EACX,EACA,CACE,KAAQ,gBACR,KAAQ,MACR,MAAS,EACX,CACF,CACF,EACA,CACE,KAAQ,WACR,OAAU,CACR,CACE,KAAQ,OACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,SACR,KAAQ,MACR,MAAS,EACX,CACF,CACF,EACA,CACE,KAAQ,eACR,OAAU,CACR,CACE,KAAQ,OACR,KAAQ,CACN,MAAS,CACP,KACA,EACF,CACF,EACA,MAAS,EACX,EACA,CACE,KAAQ,SACR,KAAQ,MACR,MAAS,EACX,CACF,CACF,CACF,EACA,OAAU,CACR,CACE,KAAQ,IACR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","names":["version_default","BaseWalletAdapter","SimpleDI","MaxUint256","ChainNamespace","ed","bs58encode","BN","Program","ComputeBudgetProgram","PublicKey","SystemProgram","TransactionMessage","VersionedTransaction","bs58Decode","keccak256","bytesToHex","hexToBytes","AbiCoder","solidityPackedKeccak256","LedgerWalletKey","PublicKey","addressToBytes32","ENDPOINT_PROGRAM_ID","SEND_LIB_PROGRAM_ID","EXECUTOR_PROGRAM_ID","PRICE_FEED_PROGRAM_ID","RECEIVE_LIB_PROGRAM_ID","TREASURY_PROGRAM_ID","DVN_PROGRAM_ID","VAULT_AUTHORITY_SEED","BROKER_SEED","TOKEN_SEED","DEV_PEER_ADDRESS","QA_PEER_ADDRESS","STAGING_PEER_ADDRESS","MAINNET_PEER_ADDRESS","DEV_DST_EID","MAIN_DST_EID","DEV_LOOKUP_TABLE_ADDRESS","QA_LOOKUP_TABLE_ADDRESS","STAGING_LOOKUP_TABLE_ADDRESS","MAINNET_LOOKUP_TABLE_ADDRESS","DEV_OAPP_PROGRAM_ID","QA_OAPP_PROGRAM_ID","STAGING_OAPP_PROGRAM_ID","MAINNET_OAPP_PROGRAM_ID","IDL","PublicKey","getAssociatedTokenAddressSync","DVN_CONFIG_SEED","ENDPOINT_SEED","ENFORCED_OPTIONS_SEED","EVENT_SEED","EXECUTOR_CONFIG_SEED","LZ_RECEIVE_TYPES_SEED","MESSAGE_LIB_SEED","NONCE_SEED","OAPP_SEED","PEER_SEED","PRICE_FEED_SEED","SEND_CONFIG_SEED","SEND_LIBRARY_CONFIG_SEED","ULN_SEED","getUSDCAccounts","usdc","owner","getAssociatedTokenAddressSync","getVaultAuthorityPda","VAULT_PROGRAM_ID","PublicKey","VAULT_AUTHORITY_SEED","getBrokerPDA","programId","brokerHash","hash","BROKER_SEED","getTokenPDA","tokenHash","TOKEN_SEED","getOAppConfigPda","OAPP_SEED","getPeerPda","OAPP_PROGRAM_ID","oappConfigPda","dstEid","bufferDstEid","PublicKey","PEER_SEED","getEndorcedOptionsPda","ENFORCED_OPTIONS_SEED","getSendLibPda","MESSAGE_LIB_SEED","SEND_LIB_PROGRAM_ID","getSendLibConfigPda","SEND_LIBRARY_CONFIG_SEED","ENDPOINT_PROGRAM_ID","getDefaultSendLibConfigPda","getSendLibInfoPda","sendLibPda","getEndpointSettingPda","ENDPOINT_SEED","getPeerAddress","peer_address","DEV_PEER_ADDRESS","DEV_OAPP_PROGRAM_ID","QA_OAPP_PROGRAM_ID","QA_PEER_ADDRESS","STAGING_OAPP_PROGRAM_ID","STAGING_PEER_ADDRESS","MAINNET_OAPP_PROGRAM_ID","MAINNET_PEER_ADDRESS","getNoncePda","NONCE_SEED","getEventAuthorityPda","EVENT_SEED","getUlnSettingPda","ULN_SEED","getSendConfigPda","SEND_CONFIG_SEED","getDefaultSendConfigPda","RECEIVE_LIB_PROGRAM_ID","getUlnEventAuthorityPda","getExecutorConfigPda","EXECUTOR_CONFIG_SEED","EXECUTOR_PROGRAM_ID","getPriceFeedPda","PRICE_FEED_SEED","PRICE_FEED_PROGRAM_ID","getDvnConfigPda","DVN_CONFIG_SEED","DVN_PROGRAM_ID","getDstEID","MAIN_DST_EID","DEV_DST_EID","getLookupTableAddress","DEV_LOOKUP_TABLE_ADDRESS","QA_LOOKUP_TABLE_ADDRESS","STAGING_LOOKUP_TABLE_ADDRESS","MAINNET_LOOKUP_TABLE_ADDRESS","getMessageLibPda","programId","getMessageLibInfoPda","msgLibPda","getLookupTableAccount","connection","lookupTableAddress","__async","addOrderlyKeyMessage","inputs","publicKey","brokerId","expiration","timestamp","scope","tag","chainId","subAccountId","message","__spreadValues","brokerIdHash","solidityPackedKeccak256","orderlyKeyHash","scopeHash","abicoder","AbiCoder","msgToSign","keccak256","hexToBytes","msgToSignHex","bytesToHex","msgToSignTextEncoded","registerAccountMessage","registrationNonce","withdrawMessage","receiver","token","amount","nonce","tokenSymbolHash","salt","bs58Decode","settleMessage","settlePnlNonce","getDepositQuoteFee","_0","__async","vaultAddress","userAddress","connection","depositData","appProgramId","PublicKey","DST_EID","getDstEID","program","Program","IDL","userPublicKey","oappConfigPDA","getOAppConfigPda","peerPDA","getPeerPda","endorcedPDA","getEndorcedOptionsPda","sendLibConfigPDA","getSendLibConfigPda","defaultSendLibPDA","getDefaultSendLibConfigPda","endpointSettingPDA","getEndpointSettingPda","noncePDA","getNoncePda","sendConfigPDA","getSendConfigPda","defaultSendConfigPDA","getDefaultSendConfigPda","executorConfigPDA","getExecutorConfigPda","priceFeedPDA","getPriceFeedPda","dvnConfigPDA","getDvnConfigPda","messageLibPDA","getMessageLibPda","SEND_LIB_PROGRAM_ID","messageLibInfoPDA","getMessageLibInfoPda","vaultAuthorityPDA","getVaultAuthorityPda","depositParams","getDepositParams","quoteFee","ENDPOINT_PROGRAM_ID","EXECUTOR_PROGRAM_ID","PRICE_FEED_PROGRAM_ID","DVN_PROGRAM_ID","lastBlockHash","lookupTableAddress","getLookupTableAddress","lookupTableAccount","getLookupTableAccount","feeMsg","TransactionMessage","feeTx","VersionedTransaction","feeRes","errorInfo","returnPrefix","returnLogEntry","log","encodedReturnData","decodedBuffer","brokerHash","codedBrokerHash","tokenHash","codedTokenHash","solAccountId","codedAccountId","BN","deposit","sendTransaction","usdc","userUSDCAccount","getUSDCAccounts","vaultAuthorityPda","vaultUSDCAccount","allowedBrokerPDA","getBrokerPDA","allowedTokenPDA","getTokenPDA","sendLibPDA","getSendLibPda","sendLibInfoPDA","getSendLibInfoPda","eventAuthorityPDA","getEventAuthorityPda","ulnSettingPDA","getUlnSettingPda","ulnEventAuthorityPDA","getUlnEventAuthorityPda","vaultDepositParams","fee","sendParam","ixDepositEntry","TREASURY_PROGRAM_ID","SystemProgram","ixAddComputeBudget","ComputeBudgetProgram","msg","tx","res","checkIsLedgerWallet","info","LedgerWalletKey","addressArr","bytesToHex","getAccount","clusterApiUrl","Connection","PublicKey","Transaction","TransactionInstruction","WalletAdapterNetwork","DefaultSolanaWalletAdapter","BaseWalletAdapter","__publicField","ChainNamespace","chainId","Connection","WalletAdapterNetwork","clusterApiUrl","account","SimpleDI","url","info","init","fetch","__async","payload","signature","key","config","name","data","privKey","secretKey","bs58encode","uint8Array","byte","message","checkIsLedgerWallet","transaction","Transaction","TransactionInstruction","PublicKey","userPublicKey","zeroHash","signRes","bytesToHex","inputs","toSignatureMessage","registerAccountMessage","__spreadProps","__spreadValues","withdrawMessage","addOrderlyKeyMessage","settleMessage","address","method","params","options","usdcPublicKey","userUSDCAccount","getUSDCAccounts","connection","getAccount","MaxUint256","contractAddress","deposit","chain","getDepositQuoteFee","txHash","baseInterval","maxInterval","maxRetries"]}