@solana-tracker/data-api
Version:
Official Solana Tracker Data API client for accessing Solana Data
336 lines (335 loc) • 14 kB
TypeScript
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>;
}