UNPKG

fsl-js-sdk

Version:
626 lines (625 loc) 32.3 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SolanaLz = exports.LzKits = exports.LzArgs = exports.initProgram = exports.OFT = exports.OFT_TEST = exports.program = void 0; var anchor_1 = require("@coral-xyz/anchor"); var ggusd_oft_1 = __importDefault(require("./target/idl/ggusd_oft")); var web3_js_1 = require("@solana/web3.js"); var bn_js_1 = require("bn.js"); var spl_token_1 = require("@solana/spl-token"); var lz_v2_utilities_1 = require("@layerzerolabs/lz-v2-utilities"); var oft_v2_solana_sdk_1 = require("@layerzerolabs/oft-v2-solana-sdk"); var umi_public_keys_1 = require("@metaplex-foundation/umi-public-keys"); var umi_bundle_defaults_1 = require("@metaplex-foundation/umi-bundle-defaults"); var mpl_toolbox_1 = require("@metaplex-foundation/mpl-toolbox"); var lz_solana_sdk_v2_1 = require("@layerzerolabs/lz-solana-sdk-v2"); var lz_definitions_1 = require("@layerzerolabs/lz-definitions"); var nodewallet_1 = __importDefault(require("@coral-xyz/anchor/dist/cjs/nodewallet")); // noinspection JSUnusedGlobalSymbols,JSUnusedLocalSymbols var OFT_STAGE = { programId: '8MXrVQgxtDKQ74nwypF966WUnuMKowy4nQGkaMSf4MVt', mint: 'MMUSDMbcL4vWzW2AFCan4R8VDfk27m1JFHyZN2QitZs', mintAuthority: 'Ds3izwrmqwZqy44qDwMykqfZFktoKb4TYKbPspFpcMkb', escrow: '5Cw4uPDAK5rEuAQMHpgZZgHXmgXhPCSmnSULrXWYkqXM', oftStore: 'Ds3izwrmqwZqy44qDwMykqfZFktoKb4TYKbPspFpcMkb', }; // noinspection JSUnusedGlobalSymbols,JSUnusedLocalSymbols var OFT_MAINNET = { programId: 'LZoFTceDb1ByqS6y6hkFa8mvSzbtcQiMX4mT9aMeWRy', mint: 'GGUSDyBUPFg5RrgWwqEqhXoha85iYGs6cL57SyK4G2Y7', mintAuthority: '2SHAuyFQ1yecRFA28iQ99B5BXbQ3MhjSroZGTWK9p9SW', escrow: '5HErqiEwt5hPsJ58ufdWdgioZionvtAVf7SexYBM6sBm', oftStore: '2SHAuyFQ1yecRFA28iQ99B5BXbQ3MhjSroZGTWK9p9SW', }; // noinspection JSUnusedGlobalSymbols,JSUnusedLocalSymbols exports.OFT_TEST = { programId: 'MoLyZZiu5kb1JBVHfhLgqB7suEftg5vEpwDQqVgd1pg', mint: 'GGUSDrZc64SxsMRB1DNhzYwixrq5YEMdps4skLVRDkR3', escrow: '3dxJjfPF7a2ijnpcjitSWxZvBAECXHb8FRob8jkY89aa', oftStore: 'Baqegac1Gtq1AvCDQ3aZd5oCNNwfpDDbEhdp1n3FG1Gk', }; exports.OFT = OFT_MAINNET; /** * Initializes the program with the given connection and keypair. */ function initProgram(connection, keyPair) { try { var wallet = keyPair instanceof web3_js_1.Keypair ? new nodewallet_1.default(keyPair) : keyPair; var provider = new anchor_1.AnchorProvider(connection, wallet, anchor_1.AnchorProvider.defaultOptions()); (0, anchor_1.setProvider)(provider); exports.program = new anchor_1.Program(ggusd_oft_1.default, exports.OFT.programId, provider); } catch (e) { console.log(e); throw e; } } exports.initProgram = initProgram; var LzArgs; (function (LzArgs) { function createSetOFTConfigParams(arg) { switch (arg.__kind) { case 'Admin': return { admin: arg.fields }; case 'Delegate': return { delegate: arg.fields }; case 'DefaultFee': return { defaultFee: arg.fields }; case 'Paused': return { paused: arg.fields }; case 'Pauser': return { pauser: arg.fields }; case 'Unpauser': return { unpauser: arg.fields }; case 'FeeReceiver': return { feeReceiver: arg.fields }; case 'AddWhitelist': return { addWhitelist: arg.fields }; case 'DelWhitelist': return { delWhitelist: arg.fields }; default: throw new Error('Invalid action'); } } LzArgs.createSetOFTConfigParams = createSetOFTConfigParams; function storeAdmin() { return __awaiter(this, void 0, void 0, function () { var store; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, exports.program.account.oftStore.fetch(exports.OFT.oftStore)]; case 1: store = _a.sent(); return [2 /*return*/, store.admin]; } }); }); } LzArgs.storeAdmin = storeAdmin; function feeReceiver() { return __awaiter(this, void 0, void 0, function () { var store; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, exports.program.account.oftStore.fetch(exports.OFT.oftStore)]; case 1: store = _a.sent(); return [2 /*return*/, store.feeReceiver]; } }); }); } LzArgs.feeReceiver = feeReceiver; })(LzArgs = exports.LzArgs || (exports.LzArgs = {})); var LzKits; (function (LzKits) { var _a; var _this = this; var LOOKUP_TABLE_ADDRESS = (_a = {}, _a[lz_definitions_1.EndpointId.SOLANA_V2_MAINNET] = toPublicKey('AokBxha6VMLLgf97B5VYHEtqztamWmYERBmmFvjuTzJB'), _a[lz_definitions_1.EndpointId.SOLANA_V2_TESTNET] = toPublicKey('9thqPdbR27A1yLWw2spwJLySemiGMXxPnEvfmXVk4KuK'), _a); function toPublicKey(key) { return typeof key === 'string' ? new web3_js_1.PublicKey(key) : key; } LzKits.toPublicKey = toPublicKey; function getLayerZeroConnection(rpcEndpoint) { try { var nodeRequire = typeof require === 'function' ? require : undefined; if (!nodeRequire) { throw new Error('CommonJS require is not available'); } var path = nodeRequire('path'); var lzSdkDir = path.dirname(nodeRequire.resolve('@layerzerolabs/lz-solana-sdk-v2/package.json')); var LayerZeroConnection = nodeRequire(path.join(lzSdkDir, 'node_modules/@solana/web3.js/lib/index.cjs.js')).Connection; return new LayerZeroConnection(rpcEndpoint, 'confirmed'); } catch (e) { return new web3_js_1.Connection(rpcEndpoint, 'confirmed'); } } function createLayerZeroUmi(connection) { var umi = (0, umi_bundle_defaults_1.createUmi)(connection).use((0, mpl_toolbox_1.mplToolbox)()); umi.rpc.connection = getLayerZeroConnection(connection.rpcEndpoint); return umi; } LzKits.createLayerZeroUmi = createLayerZeroUmi; LzKits.deriveConnection = function () { return __awaiter(_this, void 0, void 0, function () { var connection, umi; return __generator(this, function (_a) { connection = new web3_js_1.Connection(exports.program.provider.connection.rpcEndpoint); umi = createLayerZeroUmi(connection); return [2 /*return*/, { connection: connection, umi: umi }]; }); }); }; function getSendLibraryProgram(connection, endpoint, payer, oftStore, remoteEid) { return __awaiter(this, void 0, void 0, function () { var sendLibInfo, msgLibProgram, msgLibVersion; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, endpoint.getSendLibrary(connection, toPublicKey(oftStore), remoteEid)]; case 1: sendLibInfo = _a.sent(); if (!sendLibInfo.programId) { throw new Error('Send library not initialized or blocked message library'); } msgLibProgram = sendLibInfo.programId; return [4 /*yield*/, endpoint.getMessageLibVersion(connection, toPublicKey(payer), msgLibProgram)]; case 2: msgLibVersion = _a.sent(); if (msgLibVersion.major.toString() === '0' && msgLibVersion.minor == 0 && msgLibVersion.endpointVersion == 2) { return [2 /*return*/, new lz_solana_sdk_v2_1.SimpleMessageLibProgram.SimpleMessageLib(msgLibProgram)]; } else if (msgLibVersion.major.toString() === '3' && msgLibVersion.minor == 0 && msgLibVersion.endpointVersion == 2) { return [2 /*return*/, new lz_solana_sdk_v2_1.UlnProgram.Uln(msgLibProgram)]; } throw new Error("Unsupported message library version: ".concat(JSON.stringify(msgLibVersion, null, 2))); } }); }); } LzKits.getSendLibraryProgram = getSendLibraryProgram; LzKits.getAddressLookupTable = function (connection, umi, fromEid) { return __awaiter(_this, void 0, void 0, function () { var lookupTableAddress, LookupTablePublicKey, lookupTableAccount; return __generator(this, function (_a) { switch (_a.label) { case 0: lookupTableAddress = LOOKUP_TABLE_ADDRESS[fromEid]; if (!lookupTableAddress) { throw new Error("No lookup table found for ".concat(fromEid)); } LookupTablePublicKey = (0, umi_public_keys_1.publicKey)(lookupTableAddress); return [4 /*yield*/, (0, mpl_toolbox_1.fetchAddressLookupTable)(umi, LookupTablePublicKey)]; case 1: if (!(_a.sent())) { throw new Error("No address lookup table found for ".concat(lookupTableAddress)); } return [4 /*yield*/, connection.getAddressLookupTable(lookupTableAddress)]; case 2: lookupTableAccount = (_a.sent()).value; if (!lookupTableAccount) { throw new Error("No address lookup table account found for ".concat(lookupTableAddress)); } return [2 /*return*/, LookupTablePublicKey]; } }); }); }; function versionedTransaction(fromEid, payer, instructions) { return __awaiter(this, void 0, void 0, function () { var latestBlockhash, lookupTableKey, lookupTableAccount, messageV0; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, exports.program.provider.connection.getLatestBlockhash('finalized')]; case 1: latestBlockhash = (_a.sent()).blockhash; lookupTableKey = LOOKUP_TABLE_ADDRESS[fromEid]; return [4 /*yield*/, exports.program.provider.connection.getAddressLookupTable(lookupTableKey)]; case 2: lookupTableAccount = (_a.sent()).value; if (!lookupTableAccount) { throw new Error('Lookup table not found for address: ' + lookupTableKey.toBase58()); } messageV0 = new web3_js_1.TransactionMessage({ payerKey: toPublicKey(payer), recentBlockhash: latestBlockhash, instructions: instructions, }).compileToV0Message([lookupTableAccount]); return [2 /*return*/, new web3_js_1.VersionedTransaction(messageV0)]; } }); }); } LzKits.versionedTransaction = versionedTransaction; })(LzKits = exports.LzKits || (exports.LzKits = {})); var SolanaLz; (function (SolanaLz) { var toPublicKey = LzKits.toPublicKey; function defaultSendOptions() { return Buffer.from(lz_v2_utilities_1.Options.newOptions().addExecutorLzReceiveOption(127000, 0).toBytes()); } /** Quote the native fee for sending tokens via OFT. */ function quoteSend(arg) { return __awaiter(this, void 0, void 0, function () { var recipientAddressBytes32, options, _a, connection, umi, nativeFee, _b, _c, _d; return __generator(this, function (_e) { switch (_e.label) { case 0: recipientAddressBytes32 = (0, lz_v2_utilities_1.addressToBytes32)(arg.dstWallet); options = defaultSendOptions(); return [4 /*yield*/, LzKits.deriveConnection()]; case 1: _a = _e.sent(), connection = _a.connection, umi = _a.umi; _c = (_b = oft_v2_solana_sdk_1.oft).quote; _d = [umi.rpc, { payer: (0, umi_public_keys_1.publicKey)(arg.srcWallet), tokenMint: (0, umi_public_keys_1.publicKey)(exports.OFT.mint), tokenEscrow: (0, umi_public_keys_1.publicKey)(exports.OFT.escrow), }, { payInLzToken: false, to: Buffer.from(recipientAddressBytes32), dstEid: arg.dstEid, amountLd: BigInt(arg.amount), minAmountLd: BigInt(1), options: options, composeMsg: undefined, }, { oft: (0, umi_public_keys_1.publicKey)(exports.OFT.programId), }, []]; return [4 /*yield*/, LzKits.getAddressLookupTable(connection, umi, arg.srcEid)]; case 2: return [4 /*yield*/, _c.apply(_b, _d.concat([_e.sent()]))]; case 3: nativeFee = (_e.sent()).nativeFee; return [2 /*return*/, nativeFee]; } }); }); } SolanaLz.quoteSend = quoteSend; /** * Sends tokens from the source wallet to the destination wallet on the specified endpoint. * @param arg.endpointId - The endpoint ID for the destination chain. * @param arg.srcEid - The source endpoint ID. * @param arg.dstEid - The destination endpoint ID. * @param arg.srcWallet - The source wallet address. * @param arg.dstWallet - The destination wallet address. * @param arg.amount - The amount of tokens to send. * @returns A Promise transaction object for sending tokens. */ function send(arg) { return __awaiter(this, void 0, void 0, function () { var tx; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, sendBy(arg)]; case 1: tx = _a.sent(); return [4 /*yield*/, LzKits.versionedTransaction(arg.srcEid, arg.srcWallet, tx.instructions)]; case 2: return [2 /*return*/, _a.sent()]; } }); }); } SolanaLz.send = send; function sendBy(arg) { var _a; return __awaiter(this, void 0, void 0, function () { var recipientAddressBytes32, options, umi, lzConnection, deriver, peer, nativeFee, param, wallet, tokenAccount, accounts, endpoint, msgLibProgram, peerConfig, solanaPacketPath, remainingAccounts, tx, _b, _c; return __generator(this, function (_d) { switch (_d.label) { case 0: recipientAddressBytes32 = (0, lz_v2_utilities_1.addressToBytes32)(arg.dstWallet); options = defaultSendOptions(); return [4 /*yield*/, LzKits.deriveConnection()]; case 1: umi = (_d.sent()).umi; lzConnection = umi.rpc.connection; deriver = new oft_v2_solana_sdk_1.OftPDA((0, umi_public_keys_1.publicKey)(exports.OFT.programId)); peer = deriver.peer((0, umi_public_keys_1.publicKey)(exports.OFT.oftStore), arg.dstEid)[0]; return [4 /*yield*/, quoteSend(arg)]; case 2: nativeFee = _d.sent(); param = { dstEid: arg.dstEid, to: Array.from(recipientAddressBytes32), amountLd: new bn_js_1.BN(arg.amount), minAmountLd: new bn_js_1.BN(arg.amount).div(new bn_js_1.BN(2)), options: options, composeMsg: null, nativeFee: new bn_js_1.BN(nativeFee.toString(10)), lzTokenFee: new bn_js_1.BN(0), }; wallet = toPublicKey(arg.srcWallet); tokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(toPublicKey(exports.OFT.mint), wallet, true, spl_token_1.TOKEN_PROGRAM_ID, spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID); accounts = { signer: wallet, peer: peer, oftStore: exports.OFT.oftStore, tokenSource: tokenAccount, tokenEscrow: exports.OFT.escrow, tokenMint: exports.OFT.mint, tokenProgram: spl_token_1.TOKEN_PROGRAM_ID, }; endpoint = new lz_solana_sdk_v2_1.EndpointProgram.Endpoint(toPublicKey((_a = arg.endpoint) !== null && _a !== void 0 ? _a : '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6')); return [4 /*yield*/, LzKits.getSendLibraryProgram(lzConnection, endpoint, arg.srcWallet, exports.OFT.oftStore, arg.dstEid)]; case 3: msgLibProgram = _d.sent(); return [4 /*yield*/, exports.program.account.peerConfig.fetch(peer)]; case 4: peerConfig = _d.sent(); solanaPacketPath = { sender: '0x' + toPublicKey(exports.OFT.oftStore).toBuffer().toString('hex'), dstEid: arg.dstEid, receiver: '0x' + Buffer.from(peerConfig.peerAddress).toString('hex'), }; return [4 /*yield*/, endpoint.getSendIXAccountMetaForCPI(lzConnection, toPublicKey(arg.srcWallet), solanaPacketPath, msgLibProgram)]; case 5: remainingAccounts = _d.sent(); tx = new web3_js_1.Transaction(); tx.add(anchor_1.web3.ComputeBudgetProgram.setComputeUnitLimit({ units: 400000, })); _c = (_b = tx).add; return [4 /*yield*/, exports.program.methods .send(param) .accounts(accounts) .remainingAccounts(remainingAccounts) .instruction()]; case 6: _c.apply(_b, [_d.sent()]); return [2 /*return*/, tx]; } }); }); } /** * Withdraws the fee collected from the OFT transactions. * @param para - Parameters for withdrawing the fee. * @param para.fee - The amount of fee to withdraw, if fee==0, will withdraw all available fees. * @param para.receiver - The receiver's public key or address. * @returns A Promise transaction object for withdrawing the fee. */ function withdrawFee(para) { var _a, _b; return __awaiter(this, void 0, void 0, function () { var store, receiver, ata, accounts; return __generator(this, function (_c) { switch (_c.label) { case 0: return [4 /*yield*/, exports.program.account.oftStore.fetch(exports.OFT.oftStore)]; case 1: store = _c.sent(); receiver = toPublicKey((_a = para.receiver) !== null && _a !== void 0 ? _a : store.feeReceiver); if (receiver.toString() === web3_js_1.PublicKey.default.toString()) { throw new Error('feeReceiver is not set'); } ata = (0, spl_token_1.getAssociatedTokenAddressSync)(store.tokenMint, receiver, true); accounts = { admin: toPublicKey(para.payer), oftStore: exports.OFT.oftStore, tokenMint: exports.OFT.mint, tokenEscrow: exports.OFT.escrow, tokenDest: ata, tokenProgram: spl_token_1.TOKEN_PROGRAM_ID, }; return [2 /*return*/, exports.program.methods .withdrawFee({ feeLd: new bn_js_1.BN((_b = para.fee) !== null && _b !== void 0 ? _b : 0), }) .accounts(accounts) .transaction()]; } }); }); } SolanaLz.withdrawFee = withdrawFee; /** * Sends tokens and withdraws the fee in a single transaction. * @param arg - Arguments for sending tokens. * @returns A Promise transaction object that includes both sending tokens and withdrawing the fee. */ function sendAndWithdrawFee(arg) { return __awaiter(this, void 0, void 0, function () { var receiver, tx, _a, _b, _c, _d; return __generator(this, function (_e) { switch (_e.label) { case 0: return [4 /*yield*/, LzArgs.feeReceiver()]; case 1: receiver = _e.sent(); tx = new web3_js_1.Transaction(); _b = (_a = tx).add; return [4 /*yield*/, sendBy(arg)]; case 2: _b.apply(_a, [_e.sent()]); if (!(receiver.toBase58() != web3_js_1.PublicKey.default.toBase58())) return [3 /*break*/, 4]; _d = (_c = tx).add; return [4 /*yield*/, withdrawFee({ payer: arg.srcWallet, receiver: receiver, })]; case 3: _d.apply(_c, [_e.sent()]); _e.label = 4; case 4: return [4 /*yield*/, LzKits.versionedTransaction(arg.srcEid, arg.srcWallet, tx.instructions)]; case 5: return [2 /*return*/, _e.sent()]; } }); }); } SolanaLz.sendAndWithdrawFee = sendAndWithdrawFee; /** * Sets the configuration parameters for the OFT store. * @param para - Parameters for setting the configuration. * @param para.__kind - The kind of configuration parameter to set. * @param para.fields - The fields associated with the configuration parameter. * @param para.admin - The admin's public key or address. * @returns A Promise transaction object for setting the configuration. */ function setConfig(para) { var _a; return __awaiter(this, void 0, void 0, function () { var admin, _b, arg, accounts; return __generator(this, function (_c) { switch (_c.label) { case 0: if (!((_a = para.admin) !== null && _a !== void 0)) return [3 /*break*/, 1]; _b = _a; return [3 /*break*/, 3]; case 1: return [4 /*yield*/, LzArgs.storeAdmin()]; case 2: _b = (_c.sent()); _c.label = 3; case 3: admin = _b; arg = LzArgs.createSetOFTConfigParams(para); accounts = { admin: toPublicKey(admin), oftStore: exports.OFT.oftStore, }; return [2 /*return*/, exports.program.methods .setOftConfig(arg) .accounts(accounts) .transaction()]; } }); }); } SolanaLz.setConfig = setConfig; /** * Sets the fee basis points and receiver for the OFT store. * @param defaultBps - The default fee basis points. * @param feeReceiver - The fee receiver's public key or address. * @returns A Promise transaction object for setting the fee basis points and receiver. */ function setFeeBpsAndReceiver(defaultBps, feeReceiver) { return __awaiter(this, void 0, void 0, function () { var tx, admin, _a, _b, _c, _d; return __generator(this, function (_e) { switch (_e.label) { case 0: tx = new web3_js_1.Transaction(); return [4 /*yield*/, LzArgs.storeAdmin()]; case 1: admin = _e.sent(); _b = (_a = tx).add; return [4 /*yield*/, setConfig({ __kind: 'DefaultFee', fields: [defaultBps], admin: admin })]; case 2: _b.apply(_a, [_e.sent()]); if (!feeReceiver) return [3 /*break*/, 4]; _d = (_c = tx).add; return [4 /*yield*/, setConfig({ __kind: 'FeeReceiver', fields: [toPublicKey(feeReceiver)], admin: admin, })]; case 3: _d.apply(_c, [_e.sent()]); _e.label = 4; case 4: return [2 /*return*/, tx]; } }); }); } SolanaLz.setFeeBpsAndReceiver = setFeeBpsAndReceiver; function getStoreConfig() { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, exports.program.account.oftStore.fetch(exports.OFT.oftStore)]; case 1: return [2 /*return*/, _a.sent()]; } }); }); } SolanaLz.getStoreConfig = getStoreConfig; /** Sets the fee basis points for a specific endpoint ID. * @param dstEid - The destination endpoint ID. * @param feeBps - The fee basis points to set. * @returns A Promise transaction object for setting the fee basis points. */ function setEidFeeBps(dstEid, feeBps) { return __awaiter(this, void 0, void 0, function () { var deriver, peer, _a, _b; var _c; return __generator(this, function (_d) { switch (_d.label) { case 0: deriver = new oft_v2_solana_sdk_1.OftPDA((0, umi_public_keys_1.publicKey)(exports.OFT.programId)); peer = deriver.peer((0, umi_public_keys_1.publicKey)(exports.OFT.oftStore), dstEid)[0]; _b = (_a = exports.program.methods .setPeerConfig({ remoteEid: dstEid, config: { feeBps: [feeBps !== null && feeBps !== void 0 ? feeBps : null] }, })) .accounts; _c = {}; return [4 /*yield*/, LzArgs.storeAdmin()]; case 1: return [2 /*return*/, _b.apply(_a, [(_c.admin = _d.sent(), _c.peer = peer, _c.oftStore = exports.OFT.oftStore, _c.systemProgram = web3_js_1.SystemProgram.programId, _c)]) .transaction()]; } }); }); } SolanaLz.setEidFeeBps = setEidFeeBps; function getPeerConfig(dstEid) { return __awaiter(this, void 0, void 0, function () { var deriver, peerConfig; return __generator(this, function (_a) { switch (_a.label) { case 0: deriver = new oft_v2_solana_sdk_1.OftPDA((0, umi_public_keys_1.publicKey)(exports.OFT.programId)); peerConfig = deriver.peer((0, umi_public_keys_1.publicKey)(exports.OFT.oftStore), dstEid)[0]; return [4 /*yield*/, exports.program.account.peerConfig.fetch(peerConfig)]; case 1: return [2 /*return*/, _a.sent()]; } }); }); } SolanaLz.getPeerConfig = getPeerConfig; })(SolanaLz = exports.SolanaLz || (exports.SolanaLz = {}));