@wormhole-foundation/sdk-solana-cctp
Version:
SDK for Solana, used in conjunction with @wormhole-foundation/sdk
41 lines • 2.35 kB
JavaScript
import { TOKEN_PROGRAM_ID } from '@solana/spl-token';
import { PublicKey } from '@solana/web3.js';
import BN from 'bn.js';
import { createTokenMessengerProgramInterface } from '../program.js';
import { findProgramAddress } from './../accounts/index.js';
export function createDepositForBurnInstruction(messageTransmitterProgramId, tokenMessengerProgramId, tokenMint, destinationDomain, senderAddress, senderAssociatedTokenAccountAddress, recipient, amount, messageSendEventData) {
// Find pdas
const messageTransmitterAccount = findProgramAddress('message_transmitter', messageTransmitterProgramId);
const tokenMessenger = findProgramAddress('token_messenger', tokenMessengerProgramId);
const tokenMinter = findProgramAddress('token_minter', tokenMessengerProgramId);
const localToken = findProgramAddress('local_token', tokenMessengerProgramId, [tokenMint]);
const remoteTokenMessengerKey = findProgramAddress('remote_token_messenger', tokenMessengerProgramId, [destinationDomain.toString()]);
const authorityPda = findProgramAddress('sender_authority', tokenMessengerProgramId);
const tokenMessengerProgram = createTokenMessengerProgramInterface(tokenMessengerProgramId);
const eventAuthority = findProgramAddress('__event_authority', tokenMessengerProgramId);
return tokenMessengerProgram.methods
.depositForBurn({
amount: new BN(amount.toString()),
destinationDomain,
mintRecipient: new 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: TOKEN_PROGRAM_ID,
eventAuthority: eventAuthority.publicKey,
eventRentPayer: senderAddress,
messageSentEventData: messageSendEventData,
})
.instruction();
}
//# sourceMappingURL=depositForBurn.js.map