UNPKG

solana-token-extension-boost

Version:

SDK for Solana Token Extensions with wallet adapter support

115 lines (114 loc) 5.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TokenFreezeExtension = void 0; const web3_js_1 = require("@solana/web3.js"); const spl_token_1 = require("@solana/spl-token"); /** * Class for managing token freeze and thaw functionality * Designed to be compatible with wallet adapter in web environments */ class TokenFreezeExtension { /** * Create instruction to freeze a token account * @param account - Token account address * @param mint - Token mint address * @param authority - Freeze authority address * @param multiSigners - List of signers if using multisig * @param programId - Token Extension Program ID * @returns Instruction to freeze the account */ static createFreezeAccountInstruction(account, mint, authority, multiSigners = [], programId = spl_token_1.TOKEN_2022_PROGRAM_ID) { return (0, spl_token_1.createFreezeAccountInstruction)(account, mint, authority, multiSigners, programId); } /** * Create instruction to thaw a token account * @param account - Token account address * @param mint - Token mint address * @param authority - Freeze authority address * @param multiSigners - List of signers if using multisig * @param programId - Token Extension Program ID * @returns Instruction to thaw the account */ static createThawAccountInstruction(account, mint, authority, multiSigners = [], programId = spl_token_1.TOKEN_2022_PROGRAM_ID) { return (0, spl_token_1.createThawAccountInstruction)(account, mint, authority, multiSigners, programId); } /** * Create instruction to update the default account state of a token * @param mint - Mint address * @param accountState - New default state (frozen or initialized) * @param freezeAuthority - Freeze authority address * @param multiSigners - List of signers if using multisig * @param programId - Token Extension Program ID * @returns Instruction to update the default state */ static createUpdateDefaultAccountStateInstruction(mint, accountState, freezeAuthority, multiSigners = [], programId = spl_token_1.TOKEN_2022_PROGRAM_ID) { return (0, spl_token_1.createUpdateDefaultAccountStateInstruction)(mint, accountState, freezeAuthority, multiSigners, programId); } /** * Prepare a transaction to freeze a token account * Wallet adapter compatible version * * @param account - Token account address * @param mint - Token mint address * @param authority - Freeze authority address * @param feePayer - Transaction fee payer address * @param multiSigners - List of signers if using multisig * @param programId - Token Extension Program ID * @returns Configured transaction */ static prepareFreezeAccountTransaction(account, mint, authority, feePayer, multiSigners = [], programId = spl_token_1.TOKEN_2022_PROGRAM_ID) { const instruction = this.createFreezeAccountInstruction(account, mint, authority, multiSigners, programId); const transaction = new web3_js_1.Transaction().add(instruction); transaction.feePayer = feePayer; return transaction; } /** * Prepare a transaction to thaw a token account * Wallet adapter compatible version * * @param account - Token account address * @param mint - Token mint address * @param authority - Freeze authority address * @param feePayer - Transaction fee payer address * @param multiSigners - List of signers if using multisig * @param programId - Token Extension Program ID * @returns Configured transaction */ static prepareThawAccountTransaction(account, mint, authority, feePayer, multiSigners = [], programId = spl_token_1.TOKEN_2022_PROGRAM_ID) { const instruction = this.createThawAccountInstruction(account, mint, authority, multiSigners, programId); const transaction = new web3_js_1.Transaction().add(instruction); transaction.feePayer = feePayer; return transaction; } /** * Prepare a transaction to update the default account state of a token * Wallet adapter compatible version * * @param mint - Token mint address * @param accountState - New default state * @param freezeAuthority - Freeze authority address * @param feePayer - Transaction fee payer address * @param multiSigners - List of signers if using multisig * @param programId - Token Extension Program ID * @returns Configured transaction */ static prepareUpdateDefaultAccountStateTransaction(mint, accountState, freezeAuthority, feePayer, multiSigners = [], programId = spl_token_1.TOKEN_2022_PROGRAM_ID) { const instruction = this.createUpdateDefaultAccountStateInstruction(mint, accountState, freezeAuthority, multiSigners, programId); const transaction = new web3_js_1.Transaction().add(instruction); transaction.feePayer = feePayer; return transaction; } /** * Utility method to create a transaction from instructions * @param instructions - Instructions to add to the transaction * @param feePayer - Transaction fee payer * @returns Configured transaction */ static buildTransaction(instructions, feePayer) { const transaction = new web3_js_1.Transaction(); instructions.forEach(instruction => transaction.add(instruction)); transaction.feePayer = feePayer; return transaction; } } exports.TokenFreezeExtension = TokenFreezeExtension;