solana-token-extension-boost
Version:
SDK for Solana Token Extensions with wallet adapter support
151 lines (150 loc) • 6.8 kB
TypeScript
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[]>;
}