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