UNPKG

@wormhole-foundation/sdk-solana-cctp

Version:

SDK for Solana, used in conjunction with @wormhole-foundation/sdk

48 lines 2.85 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createDepositForBurnInstruction = void 0; const spl_token_1 = require("@solana/spl-token"); const web3_js_1 = require("@solana/web3.js"); const bn_js_1 = __importDefault(require("bn.js")); const program_js_1 = require("../program.js"); const index_js_1 = require("./../accounts/index.js"); function createDepositForBurnInstruction(messageTransmitterProgramId, tokenMessengerProgramId, tokenMint, destinationDomain, senderAddress, senderAssociatedTokenAccountAddress, recipient, amount, messageSendEventData) { // Find pdas const messageTransmitterAccount = (0, index_js_1.findProgramAddress)('message_transmitter', messageTransmitterProgramId); const tokenMessenger = (0, index_js_1.findProgramAddress)('token_messenger', tokenMessengerProgramId); const tokenMinter = (0, index_js_1.findProgramAddress)('token_minter', tokenMessengerProgramId); const localToken = (0, index_js_1.findProgramAddress)('local_token', tokenMessengerProgramId, [tokenMint]); const remoteTokenMessengerKey = (0, index_js_1.findProgramAddress)('remote_token_messenger', tokenMessengerProgramId, [destinationDomain.toString()]); const authorityPda = (0, index_js_1.findProgramAddress)('sender_authority', tokenMessengerProgramId); const tokenMessengerProgram = (0, program_js_1.createTokenMessengerProgramInterface)(tokenMessengerProgramId); const eventAuthority = (0, index_js_1.findProgramAddress)('__event_authority', tokenMessengerProgramId); return tokenMessengerProgram.methods .depositForBurn({ amount: new bn_js_1.default(amount.toString()), destinationDomain, mintRecipient: new web3_js_1.PublicKey(recipient.toUint8Array()), }) .accounts({ owner: senderAddress, senderAuthorityPda: authorityPda.publicKey, burnTokenAccount: senderAssociatedTokenAccountAddress, messageTransmitter: messageTransmitterAccount.publicKey, tokenMessenger: tokenMessenger.publicKey, remoteTokenMessenger: remoteTokenMessengerKey.publicKey, tokenMinter: tokenMinter.publicKey, localToken: localToken.publicKey, burnTokenMint: tokenMint, messageTransmitterProgram: messageTransmitterProgramId, tokenMessengerMinterProgram: tokenMessengerProgramId, tokenProgram: spl_token_1.TOKEN_PROGRAM_ID, eventAuthority: eventAuthority.publicKey, eventRentPayer: senderAddress, messageSentEventData: messageSendEventData, }) .instruction(); } exports.createDepositForBurnInstruction = createDepositForBurnInstruction; //# sourceMappingURL=depositForBurn.js.map