@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
TypeScript
/**
* 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 };