@wormhole-foundation/sdk-solana-cctp
Version:
SDK for Solana, used in conjunction with @wormhole-foundation/sdk
48 lines • 2.85 kB
JavaScript
"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