@orderly.network/default-solana-adapter
Version:
2,431 lines (2,424 loc) • 92.1 kB
JavaScript
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __getProtoOf = Object.getPrototypeOf;
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 __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
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/index.ts
var index_exports = {};
__export(index_exports, {
DefaultSolanaWalletAdapter: () => DefaultSolanaWalletAdapter,
version: () => version_default
});
module.exports = __toCommonJS(index_exports);
// 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
var ed = __toESM(require("@noble/ed25519"));
var import_spl_token2 = require("@solana/spl-token");
var import_wallet_adapter_base = require("@solana/wallet-adapter-base");
var import_web34 = require("@solana/web3.js");
var import_bs582 = require("bs58");
var import_utils2 = require("ethereum-cryptography/utils");
var import_core2 = require("@orderly.network/core");
var import_types2 = require("@orderly.network/types");
// src/helper.ts
var import_anchor = require("@coral-xyz/anchor");
var import_web33 = require("@solana/web3.js");
var import_bs58 = require("bs58");
var import_keccak = require("ethereum-cryptography/keccak");
var import_utils = require("ethereum-cryptography/utils");
var import_ethers = require("ethers");
var import_core = require("@orderly.network/core");
var import_types = require("@orderly.network/types");
// src/constant.ts
var import_lz_v2_utilities = require("@layerzerolabs/lz-v2-utilities");
var import_web3 = require("@solana/web3.js");
var ENDPOINT_PROGRAM_ID = new import_web3.PublicKey(
"76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6"
);
var SEND_LIB_PROGRAM_ID = new import_web3.PublicKey(
"7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH"
);
var EXECUTOR_PROGRAM_ID = new import_web3.PublicKey(
"6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn"
);
var PRICE_FEED_PROGRAM_ID = new import_web3.PublicKey(
"8ahPGPjEbpgGaZx2NV1iG5Shj7TDwvsjkEDcGWjt94TP"
);
var RECEIVE_LIB_PROGRAM_ID = SEND_LIB_PROGRAM_ID;
var TREASURY_PROGRAM_ID = SEND_LIB_PROGRAM_ID;
var DVN_PROGRAM_ID = new import_web3.PublicKey(
"HtEYV4xB4wvsj5fgTkcfuChYpvGYzgzwvNhgDZQNh7wW"
);
var LZ_DVN_PROGRAM_ID = DVN_PROGRAM_ID;
var CANARY_DVN_PROGRAM_ID = new import_web3.PublicKey(
"5KAALa8AEEKnW6p6AacdnqNDmGMpfhwR7AEyWs1gUvsT"
);
var NEVERMIND_DVN_PROGRAM_ID = new import_web3.PublicKey(
"4fs6aL12L18K5giDy9Dgxgrb3aNRYiuRV2a7JPPj3e7F"
);
var LZ_DVN_PDA = new import_web3.PublicKey(
"4VDjp6XQaxoZf5RGwiPU9NR1EXSZn2TP4ATMmiSzLfhb"
);
var CANARY_DVN_PDA = new import_web3.PublicKey(
"7jMeX5mzXnSSKYd8DxBDP4xMnkNFZZZm5W28FWUTbwU3"
);
var NEVERMIND_DVN_PDA = new import_web3.PublicKey(
"GPjyWr8vCotGuFubDpTxDxy9Vj1ZeEN4F2dwRmFiaGab"
);
var VAULT_AUTHORITY_SEED = "VaultAuthority";
var BROKER_SEED = "Broker";
var TOKEN_SEED = "Token";
var SOL_VAULT_SEED = "SolVault";
var DEV_PEER_ADDRESS = (0, import_lz_v2_utilities.addressToBytes32)(
"0x9Dc724b24146BeDD2dA28b8C4B74126169B8f312"
);
var QA_PEER_ADDRESS = (0, import_lz_v2_utilities.addressToBytes32)(
"0x45b6C6266A7A2170617d8A27A50C642fd68b91c4"
);
var STAGING_PEER_ADDRESS = (0, import_lz_v2_utilities.addressToBytes32)(
"0x5Bf771A65d057e778C5f0Ed52A0003316f94322D"
);
var MAINNET_PEER_ADDRESS = (0, import_lz_v2_utilities.addressToBytes32)(
"0xCecAe061aa078e13b5e70D5F9eCee90a3F2B6AeA"
);
var DEV_DST_EID = 40200;
var MAIN_DST_EID = 30213;
var DEV_LOOKUP_TABLE_ADDRESS = new import_web3.PublicKey(
"BWp8HaYYhiNHekt3zgQhqoCrRftneGxxfgKmCZ6svHN"
);
var QA_LOOKUP_TABLE_ADDRESS = new import_web3.PublicKey(
"BswrQQoPKAFojTuJutZcBMtigAgTghEH4M8ofn3EG2X2"
);
var STAGING_LOOKUP_TABLE_ADDRESS = new import_web3.PublicKey(
"BbGKfxuPwDmu58BjPpd7PMG69TqnZjSpKaLDMgf9E9Dr"
);
var MAINNET_LOOKUP_TABLE_ADDRESS = new import_web3.PublicKey(
"8iq7xCQt3bLdRRn4A46d5GuaXYinBoiAhbe2sUmZVzwg"
);
var DEV_OAPP_PROGRAM_ID = new import_web3.PublicKey(
"EYJq9eU4GMRUriUJBgGoZ8YLQBXcWaciXuSsEXE7ieQS"
);
var QA_OAPP_PROGRAM_ID = new import_web3.PublicKey(
"5zBjLor7vEraAt4zp2H82sy9MSqFoDnNa1Lx6EYKTYRZ"
);
var STAGING_OAPP_PROGRAM_ID = new import_web3.PublicKey(
"9shwxWDUNhtwkHocsUAmrNAQfBH2DHh4njdAEdHZZkF2"
);
var MAINNET_OAPP_PROGRAM_ID = new import_web3.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
var import_lz_solana_sdk_v2 = require("@layerzerolabs/lz-solana-sdk-v2");
var import_spl_token = require("@solana/spl-token");
var import_web32 = require("@solana/web3.js");
var getTokenAccounts = (token, owner) => {
const tokenAccount = (0, import_spl_token.getAssociatedTokenAddressSync)(token, owner, true);
return tokenAccount;
};
function getVaultAuthorityPda(VAULT_PROGRAM_ID) {
return import_web32.PublicKey.findProgramAddressSync(
[Buffer.from(VAULT_AUTHORITY_SEED, "utf8")],
VAULT_PROGRAM_ID
)[0];
}
function getSolVaultPda(VAULT_PROGRAM_ID) {
return import_web32.PublicKey.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 import_web32.PublicKey.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 import_web32.PublicKey.findProgramAddressSync(
[Buffer.from(TOKEN_SEED, "utf8"), Buffer.from(hash)],
programId
)[0];
}
function getOAppConfigPda(programId) {
return import_web32.PublicKey.findProgramAddressSync(
[Buffer.from(import_lz_solana_sdk_v2.OAPP_SEED, "utf8")],
programId
)[0];
}
function getPeerPda(OAPP_PROGRAM_ID, oappConfigPda, dstEid) {
const bufferDstEid = Buffer.alloc(4);
bufferDstEid.writeUInt32BE(dstEid);
return import_web32.PublicKey.findProgramAddressSync(
[Buffer.from(import_lz_solana_sdk_v2.PEER_SEED, "utf8"), oappConfigPda.toBuffer(), bufferDstEid],
OAPP_PROGRAM_ID
)[0];
}
function getEndorcedOptionsPda(OAPP_PROGRAM_ID, oappConfigPda, dstEid) {
cons