UNPKG

solana-token-extension-boost

Version:

SDK for Solana Token Extensions with wallet adapter support

151 lines (150 loc) 6.8 kB
import { Connection, PublicKey, Keypair, TransactionInstruction } from '@solana/web3.js'; export declare const GroupPointerExtensionType = 20; export declare const TokenGroupExtensionType = 23; export declare const TokenGroupMemberExtensionType = 24; /** * Token Group Member Status Flags */ export declare enum TokenGroupMemberStatus { NONE = 0, ACTIVE = 1, FROZEN = 2 } /** * Create instruction to initialize group pointer for a token * @param mint - Mint address * @param groupMint - Mint address of the token group * @param programId - Token Extension Program ID * @returns Instruction to initialize group pointer */ export declare function createInitializeGroupPointerInstruction(mint: PublicKey, groupMint: PublicKey, programId?: PublicKey): any; /** * Create instruction to initialize a mint as a token group * @param mint - Public key of the mint account * @param payer - Public key of the payer * @param groupAuthority - Public key of the authority for managing group * @param updateAuthority - (Optional) Public key of the authority for updating metadata * @param name - Group name (max 32 bytes) * @param symbol - Group symbol (max 10 bytes) * @param programId - SPL Token program ID * @returns TransactionInstruction */ export declare function createInitializeTokenGroupInstruction(mint: PublicKey, payer: PublicKey, groupAuthority: PublicKey, updateAuthority: (PublicKey | null) | undefined, name: string, symbol: string, programId?: PublicKey): TransactionInstruction; /** * Create instruction to update a token group * @param mint - Public key of the mint account * @param updateAuthority - Public key of the update authority * @param name - New group name (max 32 bytes) * @param symbol - New group symbol (max 10 bytes) * @param programId - SPL Token program ID * @returns TransactionInstruction */ export declare function createUpdateTokenGroupInstruction(mint: PublicKey, updateAuthority: PublicKey, name: string, symbol: string, programId?: PublicKey): TransactionInstruction; /** * Create instruction to initialize a mint as a token group member * @param memberMint - Public key of the member mint account * @param groupMint - Public key of the group mint account * @param payer - Public key of the payer * @param memberAuthority - Public key of the authority for managing member status * @param programId - SPL Token program ID * @returns TransactionInstruction */ export declare function createInitializeTokenGroupMemberInstruction(memberMint: PublicKey, groupMint: PublicKey, payer: PublicKey, memberAuthority: PublicKey, programId?: PublicKey): TransactionInstruction; /** * Create instruction to update a token group member's status * @param memberMint - Public key of the member mint account * @param memberAuthority - Public key of the member authority * @param status - New status for the member * @param programId - SPL Token program ID * @returns TransactionInstruction */ export declare function createUpdateTokenGroupMemberInstruction(memberMint: PublicKey, memberAuthority: PublicKey, status: TokenGroupMemberStatus, programId?: PublicKey): TransactionInstruction; /** * Class for managing token groups */ export declare class TokenGroupExtension { private connection; private mint; /** * Create a new TokenGroupExtension instance * @param connection - Connection to Solana cluster * @param mint - Public key of the token group mint */ constructor(connection: Connection, mint: PublicKey); /** * Get token group information * @returns Promise resolving to token group information */ getTokenGroupInfo(): Promise<{ name: string; symbol: string; maxSize?: number; memberCount?: number; groupAuthority: PublicKey | null; updateAuthority: PublicKey | null; }>; /** * Check if a mint is a member of this token group * @param memberMint - Public key of the potential member mint * @returns Promise resolving to boolean indicating membership */ isMember(memberMint: PublicKey): Promise<boolean>; /** * Get member status * @param memberMint - Public key of the member mint * @returns Promise resolving to member status */ getMemberStatus(memberMint: PublicKey): Promise<TokenGroupMemberStatus>; /** * Create instructions to create a new token group * @param connection - Connection to Solana cluster * @param payer - Public key of the fee payer * @param mintAuthority - Mint authority * @param groupAuthority - Group authority * @param updateAuthority - (Optional) Update authority * @param name - Group name * @param symbol - Group symbol * @param decimals - Number of decimals * @returns Instructions, signers, and mint address */ static createTokenGroupInstructions(connection: Connection, payer: PublicKey, mintAuthority: PublicKey, groupAuthority: PublicKey, updateAuthority: PublicKey | null, name: string, symbol: string, decimals?: number): Promise<{ instructions: TransactionInstruction[]; signers: Keypair[]; mint: PublicKey; }>; /** * Create instructions to create a new token group member * @param connection - Connection to Solana cluster * @param payer - Public key of the fee payer * @param mintAuthority - Mint authority * @param memberAuthority - Member authority * @param decimals - Number of decimals * @returns Instructions, signers, and mint address */ createTokenGroupMemberInstructions(payer: PublicKey, mintAuthority: PublicKey, memberAuthority: PublicKey, decimals?: number): Promise<{ instructions: TransactionInstruction[]; signers: Keypair[]; mint: PublicKey; }>; /** * Create instruction to update token group information * @param updateAuthority - Public key of the update authority * @param name - New group name * @param symbol - New group symbol * @returns Instruction to update token group */ createUpdateTokenGroupInstruction(updateAuthority: PublicKey, name: string, symbol: string): TransactionInstruction; /** * Create instruction to update a member's status * @param memberMint - Public key of the member mint * @param memberAuthority - Public key of the member authority * @param status - New status for the member * @returns Instruction to update member status */ createUpdateMemberStatusInstruction(memberMint: PublicKey, memberAuthority: PublicKey, status: TokenGroupMemberStatus): TransactionInstruction; /** * List all members of this token group * @returns Promise resolving to array of member mints */ listMembers(): Promise<PublicKey[]>; }