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.

114 lines (113 loc) 3.29 kB
/** * Advanced Token Holdings Analyzer for Gorbchain SDK v2 * Provides comprehensive token portfolio analysis with multi-program support */ import { EnhancedRpcClient, TokenHolding, TokenConfig } from '../rpc/enhancedClient.js'; export interface TokenPortfolio { walletAddress: string; holdings: TokenHolding[]; summary: PortfolioSummary; timestamp: string; } export interface PortfolioSummary { totalTokens: number; totalNFTs: number; totalFungibleTokens: number; uniqueMints: number; hasMetadata: number; totalValue?: number; topHoldings: TokenHolding[]; } export interface PortfolioAnalysis { diversification: { mintCount: number; largestHoldingPercentage: number; concentrationRisk: 'low' | 'medium' | 'high'; }; tokenTypes: { fungibleTokens: number; nfts: number; unknownTokens: number; }; balanceDistribution: { zeroBalance: number; smallBalance: number; mediumBalance: number; largeBalance: number; }; } export interface TokenMetadata { name?: string; symbol?: string; uri?: string; description?: string; image?: string; attributes?: Array<{ trait_type: string; value: string | number; }>; } /** * Advanced Token Holdings Analyzer */ export declare class AdvancedTokenHoldings { private rpcClient; private networkConfig; constructor(rpcClient: EnhancedRpcClient); /** * Get all tokens for a wallet across all supported programs */ getAllTokens(walletAddress: string, config?: TokenConfig): Promise<TokenPortfolio>; /** * Get tokens from a specific custom program */ getCustomProgramTokens(walletAddress: string, programId: string): Promise<TokenHolding[]>; /** * Detect token decimals from mint account */ detectTokenDecimals(mintAddress: string): Promise<number>; /** * Resolve token metadata (when available) */ resolveTokenMetadata(mintAddress: string): Promise<TokenMetadata | null>; /** * Analyze portfolio for insights */ analyzePortfolio(holdings: TokenHolding[]): Promise<PortfolioAnalysis>; /** * Get tokens by category (NFTs vs Fungible) */ getTokensByCategory(walletAddress: string): Promise<{ nfts: TokenHolding[]; fungibleTokens: TokenHolding[]; }>; /** * Get top holdings by balance */ getTopHoldings(walletAddress: string, limit?: number): Promise<TokenHolding[]>; /** * Enhance holdings with additional metadata and analysis */ private enhanceHoldings; /** * Generate portfolio summary */ private generatePortfolioSummary; /** * Batch process multiple wallets */ batchAnalyzeWallets(walletAddresses: string[], config?: TokenConfig): Promise<TokenPortfolio[]>; /** * Utility function to chunk array into smaller arrays */ private chunkArray; /** * Compare portfolios to find similarities */ comparePortfolios(walletAddress1: string, walletAddress2: string): Promise<{ commonTokens: TokenHolding[]; uniqueToWallet1: TokenHolding[]; uniqueToWallet2: TokenHolding[]; similarity: number; }>; }