UNPKG

@solana-tracker/data-api

Version:

Official Solana Tracker Data API client for accessing Solana Data

336 lines (335 loc) 14 kB
import { TokenDetailResponse, TokenHoldersResponse, TopHolder, AthPrice, DeployerTokensResponse, SearchParams, SearchResponse, TokenOverview, PriceData, PriceHistoryData, PriceTimestampData, PriceRangeData, MultiPriceResponse, WalletBasicResponse, TradesResponse, WalletResponse, ChartResponse, HoldersChartResponse, PnLResponse, TokenPnLResponse, FirstBuyerData, TopTradersResponse, TokenStats } from './interfaces'; export declare class DataApiError extends Error { status?: number | undefined; code?: string | undefined; constructor(message: string, status?: number | undefined, code?: string | undefined); } export declare class RateLimitError extends DataApiError { retryAfter?: number | undefined; constructor(message: string, retryAfter?: number | undefined); } export declare class ValidationError extends DataApiError { constructor(message: string); } /** * Config options for the Solana Tracker Data API */ export interface DataApiConfig { /** Your API key from solanatracker.io */ apiKey: string; /** Optional base URL override */ baseUrl?: string; } export interface RequestOptions { method: string; body: any; /** Optional headers to include in the request */ headers?: Record<string, string>; /** Disable logs for rate limit warnings */ disableLogs?: boolean; } /** * Solana Tracker Data API client */ export 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; /** * 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; /** * Get comprehensive information about a specific token * @param tokenAddress The token's mint address * @returns Detailed token information */ getTokenInfo(tokenAddress: string): Promise<TokenDetailResponse>; /** * Get token information by searching with a pool address * @param poolAddress The pool address * @returns Detailed token information */ getTokenByPool(poolAddress: string): Promise<TokenDetailResponse>; /** * Get token holders information * @param tokenAddress The token's mint address * @returns Information about token holders */ getTokenHolders(tokenAddress: string): Promise<TokenHoldersResponse>; /** * Get top 20 token holders * @param tokenAddress The token's mint address * @returns Top holders information */ getTopHolders(tokenAddress: string): Promise<TopHolder[]>; /** * Get the all-time high price for a token * @param tokenAddress The token's mint address * @returns All-time high price data */ getAthPrice(tokenAddress: string): Promise<AthPrice>; /** * Get tokens created by a specific wallet * @param wallet The deployer wallet address * @returns List of tokens created by the deployer */ getTokensByDeployer(wallet: string): Promise<DeployerTokensResponse>; /** * Search for tokens with flexible filtering options * @param params Search parameters and filters * @returns Search results */ searchTokens(params: SearchParams): Promise<SearchResponse>; /** * Get the latest tokens * @param page Page number (1-10) * @returns List of latest tokens */ getLatestTokens(page?: number): Promise<TokenDetailResponse[]>; /** * Get information about multiple tokens * @param tokenAddresses Array of token addresses * @returns Information about multiple tokens */ getMultipleTokens(tokenAddresses: string[]): Promise<TokenDetailResponse[]>; /** * Get trending tokens * @param timeframe Optional timeframe for trending calculation * @returns List of trending tokens */ getTrendingTokens(timeframe?: string): Promise<TokenDetailResponse[]>; /** * Get tokens sorted by volume * @param timeframe Optional timeframe for volume calculation * @returns List of tokens sorted by volume */ getTokensByVolume(timeframe?: string): Promise<TokenDetailResponse[]>; /** * Get an overview of latest, graduating, and graduated tokens * @returns Token overview */ getTokenOverview(): Promise<TokenOverview>; /** * Get graduated tokens * @returns List of graduated tokens */ getGraduatedTokens(): Promise<TokenDetailResponse[]>; /** * 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<PriceData>; /** * Get historic price information for a token * @param tokenAddress The token's mint address * @returns Historic price data */ getPriceHistory(tokenAddress: string): Promise<PriceHistoryData>; /** * 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<PriceTimestampData>; /** * 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<PriceRangeData>; /** * 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<PriceData>; /** * 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<MultiPriceResponse>; /** * 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<MultiPriceResponse>; /** * Get basic wallet information * @param owner Wallet address * @returns Basic wallet data */ getWalletBasic(owner: string): Promise<WalletBasicResponse>; /** * Get all tokens in a wallet * @param owner Wallet address * @returns Detailed wallet data */ getWallet(owner: string): Promise<WalletResponse>; /** * Get wallet tokens with pagination * @param owner Wallet address * @param page Page number * @returns Paginated wallet data */ getWalletPage(owner: string, page: number): Promise<WalletResponse>; /** * 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<TradesResponse>; /** * 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<TradesResponse>; /** * 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<TradesResponse>; /** * 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<TradesResponse>; /** * 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<TradesResponse>; /** * Get OHLCV data for a token * @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) * @param marketCap Return chart for market cap instead of pricing * @param removeOutliers Disable outlier removal if set to false (default: true) * @returns OHLCV chart data */ getChartData(tokenAddress: string, type?: string, timeFrom?: number, timeTo?: number, marketCap?: boolean, removeOutliers?: boolean): Promise<ChartResponse>; /** * Get OHLCV data for a specific token and pool * @param tokenAddress Token address * @param poolAddress Pool 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) * @param marketCap Return chart for market cap instead of pricing * @param removeOutliers Disable outlier removal if set to false (default: true) * @returns OHLCV chart data for a specific pool */ getPoolChartData(tokenAddress: string, poolAddress: string, type?: string, timeFrom?: number, timeTo?: number, marketCap?: boolean, removeOutliers?: boolean): Promise<ChartResponse>; /** * 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<HoldersChartResponse>; /** * 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<PnLResponse>; /** * 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<FirstBuyerData[]>; /** * Get PnL data for a specific token in a wallet * @param wallet Wallet address * @param tokenAddress Token address * @returns Token-specific PnL data */ getTokenPnL(wallet: string, tokenAddress: string): Promise<TokenPnLResponse>; /** * 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<TopTradersResponse>; /** * Get top 100 traders by PnL for a token * @param tokenAddress Token address * @returns Top traders for a specific token */ getTokenTopTraders(tokenAddress: string): Promise<FirstBuyerData[]>; /** * Get detailed stats for a token over various time intervals * @param tokenAddress Token address * @returns Detailed token stats */ getTokenStats(tokenAddress: string): Promise<TokenStats>; /** * 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<TokenStats>; }