import { TokenDetailResponse, TokenHoldersResponse, PaginatedTokenHoldersResponse, TopHolder, AthPrice, BundlersResponse, DeployerParams, DeployerTokensResponse, SearchParams, SearchResponse, MultiTokensResponse, TokenOverview, PriceData, PriceHistoryData, PriceTimestampData, PriceRangeData, MultiPriceResponse, WalletBasicResponse, WalletResponse, WalletChartResponse, WalletTradesResponse, TradesResponse, TradeEvents, TradeParams, TradeHistoryResponse, TradeEventFor, EnrichedTrade, TradeEvent, ChartDataParams, ChartResponse, HoldersChartResponse, SnipersChartResponse, InsidersChartResponse, BundlersChartResponse, PnLResponse, FirstBuyerData, TokenPnLResponse, TopTradersResponse, TokenStats, SubscriptionResponse, CreditsResponse, ProcessedEvent, PnlV2KOLLeaderboardParams, PnlV2KOLLeaderboardResponse, PnlV2KOLPeriodParams, PnlV2KOLPeriodResponse, PnlV2KOLCalendarParams, PnlV2KOLCalendarResponse, PnlV2KOLByDateParams, PnlV2KOLByDateResponse, PnlV2TopTradersParams, PnlV2TopTradersResponse, PnlV2TokenTradersParams, PnlV2TokenTradersResponse, PnlV2TokenFirstBuyersParams, PnlV2WalletOverviewParams, PnlV2WalletOverviewResponse, PnlV2WalletQueued, PnlV2WalletHistoryParams, PnlV2WalletHistoryResponse, PnlV2WalletPerformanceParams, PnlV2WalletPerformanceResponse, PnlV2WalletTokenPositionParams, PnlV2WalletTokenPositionResponse, PnlV2WalletHighlightsResponse, PnlV2WalletRiskResponse, PnlV2WalletPositionsParams, PnlV2WalletPositionsResponse, PnlV2WalletChartParams, PnlV2WalletChartResponse, PnlV2BatchWalletSummariesResponse, PnlV2BatchParams, PnlV2BatchWalletPositionsResponse, PnlV2BatchTokenPositionsResponse, PnlV2BatchPositionPairsResponse, DcaProgramsResponse, DcaListParams, DcaWalletResponse, DcaOrdersListResponse, DcaProgramParams, DcaOrder, DcaTokenFlowResponse, DcaTokenOrdersResponse, DcaTokenUsersResponse, DcaPairResponse, LighthouseResponse, WhaleTradesParams, WhaleKolTradesResponse, KolTradesParams, KolTokenTradesParams } from './interfaces.mjs'; declare class DataApiError extends Error { status?: number | undefined; code?: string | undefined; details?: any; constructor(message: string, status?: number | undefined, code?: string | undefined, details?: any); } declare class RateLimitError extends DataApiError { retryAfter?: number | undefined; constructor(message: string, retryAfter?: number | undefined, details?: any); } declare class ValidationError extends DataApiError { constructor(message: string, details?: any); } /** * Config options for the Solana Tracker Data API */ interface DataApiConfig { /** Your API key from solanatracker.io */ apiKey: string; /** Optional base URL override */ baseUrl?: string; } interface RequestOptions { method: string; body?: any; /** Optional headers to include in the request */ headers?: Record; /** Disable logs for rate limit warnings */ disableLogs?: boolean; } /** * Parameters for token overview endpoint (/tokens/multi/all) */ interface TokenOverviewParams { /** Number of tokens per category (default: 100, max: 500) */ limit?: number; /** Minimum curve percentage for graduating tokens (default: 40) */ minCurve?: number; /** Minimum number of holders for graduating tokens (default: 20) */ minHolders?: number; /** Maximum number of holders for graduating tokens */ maxHolders?: number; /** Reduce spam by filtering out quick graduated tokens */ reduceSpam?: boolean; minLiquidity?: number; maxLiquidity?: number; minMarketCap?: number; maxMarketCap?: number; markets?: string[]; minRiskScore?: number; maxRiskScore?: number; rugged?: boolean; } /** * Parameters for graduated tokens endpoint (/tokens/multi/graduated) */ interface GraduatedTokensParams { /** Number of tokens to return (default: 100, max: 500) */ limit?: number; /** Page number for pagination (default: 1) */ page?: number; /** Reduce spam by filtering out quick graduated tokens */ reduceSpam?: boolean; minLiquidity?: number; maxLiquidity?: number; minMarketCap?: number; maxMarketCap?: number; markets?: string[]; minRiskScore?: number; maxRiskScore?: number; rugged?: boolean; } /** * Parameters for graduating tokens endpoint (/tokens/multi/graduating) */ interface GraduatingTokensParams { /** Number of tokens to return (default: 100, max: 500) */ limit?: number; /** Minimum curve percentage (default: 40) */ minCurve?: number; /** Maximum curve percentage (default: 100) */ maxCurve?: number; /** Minimum number of holders (default: 20) */ minHolders?: number; /** Maximum number of holders */ maxHolders?: number; minLiquidity?: number; maxLiquidity?: number; minMarketCap?: number; maxMarketCap?: number; markets?: string[]; minRiskScore?: number; maxRiskScore?: number; rugged?: boolean; } /** * Solana Tracker Data API client */ declare class Client { private apiKey; private baseUrl; /** * Creates a new instance of the Solana Tracker Data API client * @param config Configuration options including API key */ constructor(config: DataApiConfig); /** * Makes a request to the API * @param endpoint The API endpoint * @param options Additional fetch options * @returns The API response */ private request; /** * Preserve the 0.3.x risk response surface while using the corrected wire * field names. The server now returns `wallet` and may omit `bundlers`. */ private normalizeLegacyRiskFields; /** * Validates a Solana public key * @param address The address to validate * @param paramName The parameter name for error messaging * @throws ValidationError if the address is invalid */ private validatePublicKey; /** * Builds query string from parameters object * @param params Parameters object * @returns Query string */ private buildQueryString; /** * Get comprehensive information about a specific token * @param tokenAddress The token's mint address * @returns Detailed token information */ getTokenInfo(tokenAddress: string): Promise; /** * Get token information by searching with a pool address * @param poolAddress The pool address * @returns Detailed token information */ getTokenByPool(poolAddress: string): Promise; /** * Get token holders information * @param tokenAddress The token's mint address * @returns Information about token holders */ getTokenHolders(tokenAddress: string, enrich?: 'identity' | 'walletPnl' | 'identity,walletPnl' | 'all' | '*'): Promise; /** * Get token holders with pagination support * @param tokenAddress The token's mint address * @param limit Number of holders to return per page (default: 100, max: 100) * @param cursor Pagination cursor from previous response * @returns Paginated token holders information */ getTokenHoldersPaginated(tokenAddress: string, limit?: number, cursor?: string): Promise; /** * Get top 20 token holders * @param tokenAddress The token's mint address * @returns Top holders information */ getTopHolders(tokenAddress: string): Promise; /** * Get the all-time high price and market cap for a token * @param tokenAddress The token's mint address * @returns All-time high price and market cap data */ getAthPrice(tokenAddress: string): Promise; /** * Get bundler information for a token * @param tokenAddress The token's mint address * @returns Bundler wallet stats including top 500 bundler wallets */ getTokenBundlers(tokenAddress: string): Promise; /** * Get tokens created by a specific wallet with pagination * @param wallet The deployer wallet address * @param pageOrParams Page number (legacy) or DeployerParams object * @param limit Number of items per page when using legacy positional args * @returns List of tokens created by the deployer (TokenDetailResponse items when format=full) */ getTokensByDeployer(wallet: string, params: DeployerParams & { format: 'full'; }): Promise>; getTokensByDeployer(wallet: string, pageOrParams?: number | DeployerParams, limit?: number): Promise; /** * Search for tokens with flexible filtering options * @param params Search parameters and filters * @returns Search results (TokenDetailResponse items when format=full) */ searchTokens(params: SearchParams & { format: 'full'; }): Promise>; searchTokens(params: SearchParams): Promise; /** * Get the latest tokens * @param page Page number (1-10) * @returns List of latest tokens */ getLatestTokens(page?: number): Promise; /** * Get information about multiple tokens * @param tokenAddresses Array of token addresses * @returns Information about multiple tokens */ getMultipleTokens(tokenAddresses: string[]): Promise; /** * Get trending tokens * @param timeframe Optional timeframe for trending calculation * @returns List of trending tokens */ getTrendingTokens(timeframe?: string): Promise; /** * Get top performing tokens by price change percentage * @param timeframe Timeframe for performance calculation (5m, 15m, 30m, 1h, 6h, 12h, 24h) * @returns List of top performing tokens */ getTopPerformers(timeframe: string): Promise; /** * Get tokens sorted by volume * @param timeframe Optional timeframe for volume calculation * @returns List of tokens sorted by volume */ getTokensByVolume(timeframe?: string): Promise; /** * Get an overview of latest, graduating, and graduated tokens * @param limit Number of tokens per category (or params object) * @returns Token overview (Memescope / Pumpvision style) */ getTokenOverview(limit?: number): Promise; getTokenOverview(params?: TokenOverviewParams): Promise; /** * Get graduated tokens * @param params Optional parameters including limit, page, and filters * @returns List of graduated tokens */ getGraduatedTokens(): Promise; getGraduatedTokens(params?: GraduatedTokensParams): Promise; /** * Get graduating tokens * @param params Optional parameters including limit, curve percentages, holders, and filters * @returns List of graduating tokens */ getGraduatingTokens(): Promise; getGraduatingTokens(params?: GraduatingTokensParams): Promise; /** * Get price information for a token * @param tokenAddress The token's mint address * @param priceChanges Include price change percentages * @returns Price data */ getPrice(tokenAddress: string, priceChanges?: boolean): Promise; /** * Get historic price information for a token * @param tokenAddress The token's mint address * @returns Historic price data */ getPriceHistory(tokenAddress: string): Promise; /** * Get price at a specific timestamp * @param tokenAddress The token's mint address * @param timestamp Unix timestamp * @returns Price at the specified timestamp */ getPriceAtTimestamp(tokenAddress: string, timestamp: number): Promise; /** * Get lowest and highest price in a time range * @param tokenAddress The token's mint address * @param timeFrom Start time (unix timestamp) * @param timeTo End time (unix timestamp) * @returns Price range data */ getPriceRange(tokenAddress: string, timeFrom: number, timeTo: number): Promise; /** * Get price information for a token (POST method) * @param tokenAddress The token's mint address * @param priceChanges Include price change percentages * @returns Price data */ postPrice(tokenAddress: string, priceChanges?: boolean): Promise; /** * Get price information for multiple tokens * @param tokenAddresses Array of token addresses * @param priceChanges Include price change percentages * @returns Price data for multiple tokens */ getMultiplePrices(tokenAddresses: string[], priceChanges?: boolean): Promise; /** * Get price information for multiple tokens (POST method) * @param tokenAddresses Array of token addresses * @param priceChanges Include price change percentages * @returns Price data for multiple tokens */ postMultiplePrices(tokenAddresses: string[], priceChanges?: boolean): Promise; /** * Get basic wallet information * @param owner Wallet address * @returns Basic wallet data */ getWalletBasic(owner: string): Promise; /** * Get all tokens in a wallet * @param owner Wallet address * @returns Detailed wallet data */ getWallet(owner: string): Promise; /** * Get wallet tokens with pagination * @param owner Wallet address * @param page Page number * @returns Paginated wallet data */ getWalletPage(owner: string, page: number): Promise; /** * Get wallet portfolio chart data with PnL information * @param wallet Wallet address * @returns Wallet chart data with historical values and PnL * @throws DataApiError if no data found for the wallet */ getWalletChart(wallet: string): Promise; /** * Get wallet trades * @param owner Wallet address * @param cursor Pagination cursor * @param showMeta Include token metadata * @param parseJupiter Parse Jupiter swaps * @param hideArb Hide arbitrage transactions * @returns Wallet trades data */ getWalletTrades(owner: string, cursor?: number, showMeta?: boolean, parseJupiter?: boolean, hideArb?: boolean): Promise; /** Validate filters for the opt-in activity history methods. */ private buildTradeQuery; /** * Get trades for a token * @param tokenAddress Token address * @param cursor Pagination cursor * @param showMeta Include token metadata * @param parseJupiter Parse Jupiter swaps * @param hideArb Hide arbitrage transactions * @returns Token trades data */ getTokenTrades(tokenAddress: string, cursor?: number, showMeta?: boolean, parseJupiter?: boolean, hideArb?: boolean): Promise; /** * Get trades for a specific token and pool * @param tokenAddress Token address * @param poolAddress Pool address * @param cursor Pagination cursor * @param showMeta Include token metadata * @param parseJupiter Parse Jupiter swaps * @param hideArb Hide arbitrage transactions * @returns Pool-specific token trades data */ getPoolTrades(tokenAddress: string, poolAddress: string, cursor?: number, showMeta?: boolean, parseJupiter?: boolean, hideArb?: boolean): Promise; /** * Get trades for a specific token, pool, and wallet * @param tokenAddress Token address * @param poolAddress Pool address * @param owner Wallet address * @param cursor Pagination cursor * @param showMeta Include token metadata * @param parseJupiter Parse Jupiter swaps * @param hideArb Hide arbitrage transactions * @returns User-specific pool trades data */ getUserPoolTrades(tokenAddress: string, poolAddress: string, owner: string, cursor?: number, showMeta?: boolean, parseJupiter?: boolean, hideArb?: boolean): Promise; /** * Get trades for a specific token and wallet * @param tokenAddress Token address * @param owner Wallet address * @param cursor Pagination cursor * @param showMeta Include token metadata * @param parseJupiter Parse Jupiter swaps * @param hideArb Hide arbitrage transactions * @returns User-specific token trades data */ getUserTokenTrades(tokenAddress: string, owner: string, cursor?: number, showMeta?: boolean, parseJupiter?: boolean, hideArb?: boolean): Promise; /** Opt-in trade/LP history with exact cursors, identity and filtering. */ getTokenTradeHistory(tokenAddress: string, params: TradeParams): Promise>>; getTokenTradeHistory(tokenAddress: string, params?: undefined): Promise>; getTokenTradeHistory(tokenAddress: string, params: TradeParams | undefined): Promise>; /** Opt-in trade/LP history with exact cursors, identity and filtering. */ getPoolTradeHistory(tokenAddress: string, poolAddress: string, params: TradeParams): Promise>>; getPoolTradeHistory(tokenAddress: string, poolAddress: string, params?: undefined): Promise>; getPoolTradeHistory(tokenAddress: string, poolAddress: string, params: TradeParams | undefined): Promise>; /** Opt-in trade/LP history with exact cursors, identity and filtering. */ getUserPoolTradeHistory(tokenAddress: string, poolAddress: string, owner: string, params: TradeParams): Promise>>; getUserPoolTradeHistory(tokenAddress: string, poolAddress: string, owner: string, params?: undefined): Promise>; getUserPoolTradeHistory(tokenAddress: string, poolAddress: string, owner: string, params: TradeParams | undefined): Promise>; /** Opt-in trade/LP history with exact cursors, identity and filtering. */ getUserTokenTradeHistory(tokenAddress: string, owner: string, params: TradeParams): Promise>>; getUserTokenTradeHistory(tokenAddress: string, owner: string, params?: undefined): Promise>; getUserTokenTradeHistory(tokenAddress: string, owner: string, params: TradeParams | undefined): Promise>; /** * Get OHLCV data for a token * @param params Chart parameters as an object or individual parameters * @returns OHLCV chart data */ getChartData(params: ChartDataParams): Promise; getChartData(tokenAddress: string, type?: string, timeFrom?: number, timeTo?: number, marketCap?: boolean, removeOutliers?: boolean, dynamicPools?: boolean, timezone?: string | 'current', fastCache?: boolean, currency?: 'usd' | 'eur' | 'sol'): Promise; /** * Get OHLCV data for a specific token and pool * @param params Chart parameters as an object or individual parameters * @returns OHLCV chart data for a specific pool */ getPoolChartData(params: ChartDataParams): Promise; getPoolChartData(tokenAddress: string, poolAddress: string, type?: string, timeFrom?: number, timeTo?: number, marketCap?: boolean, removeOutliers?: boolean, timezone?: string | 'current', fastCache?: boolean, currency?: 'usd' | 'eur' | 'sol'): Promise; /** * Get holder count chart data * @param tokenAddress Token address * @param type Time interval (e.g., "1s", "1m", "1h", "1d") * @param timeFrom Start time (Unix timestamp in seconds) * @param timeTo End time (Unix timestamp in seconds) * @returns Holder count chart data */ getHoldersChart(tokenAddress: string, type?: string, timeFrom?: number, timeTo?: number): Promise; /** * Get snipers percentage chart data * @param tokenAddress Token address * @param type Time interval (e.g., "1s", "1m", "1h", "1d") * @param timeFrom Start time (Unix timestamp in seconds) * @param timeTo End time (Unix timestamp in seconds) * @returns Snipers percentage chart data */ getSnipersChart(tokenAddress: string, type?: string, timeFrom?: number, timeTo?: number): Promise; /** * Get insiders percentage chart data * @param tokenAddress Token address * @param type Time interval (e.g., "1s", "1m", "1h", "1d") * @param timeFrom Start time (Unix timestamp in seconds) * @param timeTo End time (Unix timestamp in seconds) * @returns Insiders percentage chart data */ getInsidersChart(tokenAddress: string, type?: string, timeFrom?: number, timeTo?: number): Promise; /** * Get bundlers percentage chart data * @param tokenAddress Token address * @param type Time interval (e.g., "1s", "1m", "1h", "1d") * @param timeFrom Start time (Unix timestamp in seconds) * @param timeTo End time (Unix timestamp in seconds) * @returns Bundlers percentage chart data */ getBundlersChart(tokenAddress: string, type?: string, timeFrom?: number, timeTo?: number): Promise; /** * Get PnL data for all positions of a wallet * @param wallet Wallet address * @param showHistoricPnL Add PnL data for 1d, 7d and 30d intervals (BETA) * @param holdingCheck Additional check for current holding value * @param hideDetails Return only summary without data for each token * @returns Wallet PnL data */ getWalletPnL(wallet: string, showHistoricPnL?: boolean, holdingCheck?: boolean, hideDetails?: boolean): Promise; /** * Get the first 100 buyers of a token with PnL data * @param tokenAddress Token address * @returns First buyers data with PnL */ getFirstBuyers(tokenAddress: string): Promise; /** * Get PnL data for a specific token in a wallet * @param wallet Wallet address * @param tokenAddress Token address * @param holdingCheck Additional check for current holding value in wallet * @returns Token-specific PnL data */ getTokenPnL(wallet: string, tokenAddress: string, holdingCheck?: boolean): Promise; /** * Get the most profitable traders across all tokens * @param page Page number (optional) * @param expandPnL Include detailed PnL data for each token * @param sortBy Sort results by metric ("total" or "winPercentage") * @returns Top traders data */ getTopTraders(page?: number, expandPnL?: boolean, sortBy?: 'total' | 'winPercentage'): Promise; /** * Get top 100 traders by PnL for a token * @param tokenAddress Token address * @returns Top traders for a specific token */ getTokenTopTraders(tokenAddress: string): Promise; /** * Get detailed stats for a token over various time intervals * @param tokenAddress Token address * @returns Detailed token stats */ getTokenStats(tokenAddress: string): Promise; /** * Get detailed stats for a specific token and pool * @param tokenAddress Token address * @param poolAddress Pool address * @returns Detailed token-pool stats */ getPoolStats(tokenAddress: string, poolAddress: string): Promise; /** * Get current subscription information including credits, plan, and billing details * @returns Subscription information */ getSubscription(): Promise; /** * Get remaining API credits for the current API key * @returns Credits information */ getCredits(): Promise; /** * Get events data for a token (all pools) * NOTE: For non-live statistics, use getTokenStats() instead which is more efficient * @param tokenAddress The token's mint address * @returns Decoded events array */ getEvents(tokenAddress: string): Promise; /** * Get events data for a specific token and pool * NOTE: For non-live statistics, use getPoolStats() instead which is more efficient * @param tokenAddress The token's mint address * @param poolAddress The pool's address * @returns Decoded events array */ getPoolEvents(tokenAddress: string, poolAddress: string): Promise; getPnlV2KOLLeaderboard(params?: PnlV2KOLLeaderboardParams): Promise; getPnlV2KOLPeriodLeaderboard(params?: PnlV2KOLPeriodParams): Promise; getPnlV2KOLCalendar(params?: PnlV2KOLCalendarParams): Promise; getPnlV2KOLByDate(params?: PnlV2KOLByDateParams): Promise; getPnlV2TopTraders(params?: PnlV2TopTradersParams): Promise; getPnlV2TokenTraders(token: string, params?: PnlV2TokenTradersParams): Promise; getPnlV2TokenFirstBuyers(token: string, params?: PnlV2TokenFirstBuyersParams): Promise; getPnlV2WalletOverview(wallet: string, params?: PnlV2WalletOverviewParams): Promise; getPnlV2WalletHistory(wallet: string, params?: PnlV2WalletHistoryParams): Promise; getPnlV2WalletPerformance(wallet: string, params?: PnlV2WalletPerformanceParams): Promise; getPnlV2WalletTokenPosition(wallet: string, token: string, params?: PnlV2WalletTokenPositionParams): Promise; getPnlV2WalletHighlights(wallet: string): Promise; getPnlV2WalletRisk(wallet: string): Promise; getPnlV2WalletPositions(wallet: string, params?: PnlV2WalletPositionsParams): Promise; getPnlV2WalletChart(wallet: string, params?: PnlV2WalletChartParams): Promise; /** * Batch fetch lifetime PnL summaries for up to 100 wallets in one request. * Duplicates are deduped server-side; if more than 100 unique wallets are sent, * the server truncates and returns `truncated: true` in the response. */ batchPnlV2WalletSummaries(wallets: string[]): Promise; batchPnlV2WalletTokenPositions(wallet: string, tokens: string[], params?: PnlV2BatchParams): Promise; batchPnlV2TokenWalletPositions(token: string, wallets: string[], params?: PnlV2BatchParams): Promise; batchPnlV2PositionPairs(pairs: Array<{ wallet: string; token: string; }>, params?: PnlV2BatchParams): Promise; /** List supported DCA programs (currently `jupiter`). */ getDcaPrograms(): Promise; /** * Get a wallet's DCA orders with status counts and pagination. * @param wallet Wallet pubkey * @param params Optional `program`, `limit`, `cursor`, `sort`, `status` */ getDcaWallet(wallet: string, params?: DcaListParams): Promise; /** Paginated DCA orders for a wallet (no status summary). */ getDcaWalletOrders(wallet: string, params?: DcaListParams): Promise; /** Fetch a single DCA order by its account pubkey. */ getDcaOrder(address: string, params?: DcaProgramParams): Promise; /** Aggregate buyer/seller flow on a token across DCA orders. */ getDcaTokenFlow(mint: string, params?: DcaListParams): Promise; /** DCA orders buying this token (token is the output mint). */ getDcaTokenBuyers(mint: string, params?: DcaListParams): Promise; /** DCA orders selling this token (token is the input mint). */ getDcaTokenSellers(mint: string, params?: DcaListParams): Promise; /** Top wallets by DCA activity on a token. */ getDcaTokenUsers(mint: string, params?: { program?: string; limit?: number; }): Promise; /** DCA orders for a specific input → output trading pair. */ getDcaPair(inputMint: string, outputMint: string, params?: DcaListParams): Promise; /** * Live activity overview across Solana launchpads and DEXs. * Returns buys, sells, traders, volume, new token launches, and migrations * over `5m`, `1h`, `6h`, and `24h` windows with period-over-period change. * @returns Array of market rows (DEX, launchpad, and aggregate) */ getLighthouse(): Promise; /** * Latest high-volume (whale) spot trades. * @param params Optional `minVolume` (1000|2500|5000|10000), `cursor`, `limit`, `showMeta`, `hideArb` */ getWhaleTrades(params?: WhaleTradesParams): Promise; /** * Latest trades from the tracked KOL wallet roster. * @param params Optional `minVolume` (0|1000|2500|5000|10000; default 0), `cursor`, `limit`, `showMeta` */ getKolTrades(params?: KolTradesParams): Promise; /** * KOL trades for a specific token mint. * @param tokenMint Token mint address * @param params Optional filters including `hideArb` to keep rows matching the path token */ getKolTradesByToken(tokenMint: string, params?: KolTokenTradesParams): Promise; } export { Client, type DataApiConfig, DataApiError, type GraduatedTokensParams, type GraduatingTokensParams, RateLimitError, type RequestOptions, type TokenOverviewParams, ValidationError };