UNPKG

@gorbchain-xyz/chaindecode

Version:

GorbchainSDK V1.3+ - Complete Solana development toolkit with advanced cryptography, messaging, and collaboration features. Build secure applications with blockchain, DeFi, and end-to-end encryption.

137 lines (136 loc) 4.41 kB
/** * Gorbchain SDK - Token and NFT Minting Functions * * This module provides comprehensive token and NFT minting capabilities * for the Gorbchain network, including Token22 program integration and * Metaplex Core NFT minting. */ import type { Connection } from '@solana/web3.js'; import { PublicKey, Transaction, Keypair } from '@solana/web3.js'; import { ExtensionType } from '@solana/spl-token'; declare const TOKEN22_PROGRAM: PublicKey; declare const ASSOCIATED_TOKEN_PROGRAM: PublicKey; declare const CUSTOM_MPL_CORE_PROGRAM = "BvoSmPBF6mBRxBMY9FPguw1zUoUg3xrc5CaWf7y5ACkc"; /** * Token creation parameters */ export interface TokenCreationParams { name: string; symbol: string; supply: number; decimals: number; uri?: string; description?: string; } /** * NFT creation parameters */ export interface NFTCreationParams { name: string; uri: string; description?: string; royaltyBasisPoints?: number; creators?: Array<{ address: string; percentage: number; }>; attributes?: Array<{ trait_type: string; value: string | number; display_type?: string; }>; } /** * Token minting result */ export interface TokenMintResult { signature: string; tokenAddress: string; associatedTokenAddress: string; transactionUrl?: string; } /** * NFT minting result */ export interface NFTMintResult { signature: string; assetAddress: string; transactionUrl?: string; } /** * Transaction options */ export interface TransactionOptions { commitment?: 'processed' | 'confirmed' | 'finalized'; maxRetries?: number; skipPreflight?: boolean; } /** * Calculate the required space for token metadata */ declare function calculateMetadataSpace(name: string, symbol: string, uri: string): number; /** * Calculate mint account size with extensions */ declare function calculateMintAccountSize(extensions: ExtensionType[]): number; /** * Validate token parameters */ declare function validateTokenParameters(params: TokenCreationParams): void; /** * Validate NFT parameters */ declare function validateNFTParameters(params: NFTCreationParams): void; /** * Send transaction with retry logic */ declare function sendTransactionWithRetry(connection: Connection, transaction: Transaction, signers: Keypair[], options?: TransactionOptions): Promise<string>; /** * Create a new Token22 token with metadata (Two-Transaction Approach) * * This is the recommended approach for reliability with complex metadata */ export declare function createToken22TwoTx(connection: Connection, payer: Keypair, params: TokenCreationParams, options?: TransactionOptions): Promise<TokenMintResult>; /** * Create a new Token22 token with metadata (Single Transaction Approach) * * Faster execution but may be less reliable for complex metadata */ export declare function createToken22SingleTx(connection: Connection, payer: Keypair, params: TokenCreationParams, options?: TransactionOptions): Promise<TokenMintResult>; /** * Create a new NFT using Metaplex Core */ export declare function createNFT(connection: Connection, wallet: any, // Wallet adapter params: NFTCreationParams, _options?: TransactionOptions): Promise<NFTMintResult>; /** * Check if user has sufficient balance for transaction */ export declare function checkSufficientBalance(connection: Connection, payer: PublicKey, estimatedCost: number): Promise<{ sufficient: boolean; balance: number; required: number; }>; /** * Estimate cost for token creation */ export declare function estimateTokenCreationCost(connection: Connection, params: TokenCreationParams): Promise<number>; /** * Estimate cost for NFT creation */ export declare function estimateNFTCreationCost(connection: Connection, params: NFTCreationParams): Promise<number>; /** * Get token information from mint address */ export declare function getTokenInfo(connection: Connection, mintAddress: string): Promise<{ mint: string; supply: string; decimals: number; mintAuthority: string | null; freezeAuthority: string | null; metadata?: { name: string; symbol: string; uri: string; }; }>; export { TOKEN22_PROGRAM, ASSOCIATED_TOKEN_PROGRAM, CUSTOM_MPL_CORE_PROGRAM, calculateMetadataSpace, calculateMintAccountSize, validateTokenParameters, validateNFTParameters, sendTransactionWithRetry };