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