UNPKG

@elizaos/plugin-dexscreener

Version:

DexScreener integration plugin for ElizaOS

230 lines (224 loc) 6.68 kB
import { Service, IAgentRuntime, Action, Plugin } from '@elizaos/core'; interface DexScreenerTokenInfo { address: string; name: string; symbol: string; decimals: number; } interface DexScreenerPair { chainId: string; dexId: string; url: string; pairAddress: string; labels?: string[]; baseToken: DexScreenerTokenInfo; quoteToken: DexScreenerTokenInfo; priceNative: string; priceUsd?: string; txns: { m5: { buys: number; sells: number; }; h1: { buys: number; sells: number; }; h6: { buys: number; sells: number; }; h24: { buys: number; sells: number; }; }; volume: { h24: number; h6: number; h1: number; m5: number; }; priceChange: { m5: number; h1: number; h6: number; h24: number; }; liquidity?: { usd?: number; base: number; quote: number; }; fdv?: number; marketCap?: number; pairCreatedAt?: number; info?: { imageUrl?: string; websites?: { label: string; url: string; }[]; socials?: { type: string; url: string; }[]; }; } interface DexScreenerSearchParams { query: string; } interface DexScreenerTokenParams { tokenAddress: string; } interface DexScreenerPairParams { pairAddress: string; } interface DexScreenerTrendingParams { timeframe?: "1h" | "6h" | "24h"; limit?: number; } interface DexScreenerChainParams { chain: string; sortBy?: "volume" | "liquidity" | "priceChange" | "txns"; limit?: number; } interface DexScreenerNewPairsParams { chain?: string; limit?: number; } interface DexScreenerProfile { url: string; chainId: string; tokenAddress: string; icon?: string; header?: string; openGraph?: string; description?: string; links?: Array<{ label: string; type: string; url: string; }>; } interface DexScreenerServiceResponse<T> { success: boolean; data?: T; error?: string; } interface DexScreenerConfig { apiUrl?: string; rateLimitDelay?: number; } interface DexScreenerBoostedToken { url: string; chainId: string; tokenAddress: string; amount: number; totalAmount: number; icon?: string; header?: string; description?: string; links?: Array<{ type: string; label: string; url: string; }>; } interface DexScreenerOrder { type: "tokenProfile" | "boost" | string; status: "processing" | "completed" | "failed" | string; paymentTimestamp: number; } declare class DexScreenerService extends Service { static serviceType: "dexscreener"; private api; private dexConfig; private lastRequestTime; capabilityDescription: string; /** * Start the DexScreenerService with the given runtime. * @param {IAgentRuntime} runtime - The runtime for the DexScreenerService. * @returns {Promise<Service>} A promise that resolves with the DexScreenerService instance. */ static start(runtime: IAgentRuntime): Promise<Service>; stop(): Promise<void>; /** * Ensure rate limiting between requests */ private rateLimit; /** * Search for tokens/pairs */ search(params: DexScreenerSearchParams): Promise<DexScreenerServiceResponse<DexScreenerPair[]>>; /** * Get token pairs by token address */ getTokenPairs(params: DexScreenerTokenParams): Promise<DexScreenerServiceResponse<DexScreenerPair[]>>; /** * Get pair by address */ getPair(params: DexScreenerPairParams): Promise<DexScreenerServiceResponse<DexScreenerPair>>; /** * Get trending pairs */ getTrending(params?: DexScreenerTrendingParams): Promise<DexScreenerServiceResponse<DexScreenerPair[]>>; /** * Get pairs by chain */ getPairsByChain(params: DexScreenerChainParams): Promise<DexScreenerServiceResponse<DexScreenerPair[]>>; /** * Get new pairs */ getNewPairs(params?: DexScreenerNewPairsParams): Promise<DexScreenerServiceResponse<DexScreenerPair[]>>; /** * Get token profile */ getTokenProfile(tokenAddress: string): Promise<DexScreenerServiceResponse<DexScreenerProfile>>; /** * Format price with appropriate decimals */ formatPrice(price: string | number): string; /** * Format percentage change */ formatPriceChange(change: number): string; /** * Format volume/liquidity numbers */ formatUsdValue(value: number): string; /** * Get multiple tokens by addresses (up to 30) */ getMultipleTokens(chainId: string, tokenAddresses: string[]): Promise<DexScreenerServiceResponse<DexScreenerPair[]>>; /** * Get latest token profiles */ getLatestTokenProfiles(): Promise<DexScreenerServiceResponse<DexScreenerProfile[]>>; /** * Get latest boosted tokens */ getLatestBoostedTokens(): Promise<DexScreenerServiceResponse<any[]>>; /** * Get top boosted tokens */ getTopBoostedTokens(): Promise<DexScreenerServiceResponse<any[]>>; /** * Check order status for a token */ checkOrderStatus(chainId: string, tokenAddress: string): Promise<DexScreenerServiceResponse<any[]>>; /** * Get token pairs by chain and address */ getTokenPairsByChain(chainId: string, tokenAddress: string): Promise<DexScreenerServiceResponse<DexScreenerPair[]>>; } declare const searchTokensAction: Action; declare const getTokenInfoAction: Action; declare const getTrendingAction: Action; declare const getNewPairsAction: Action; declare const getPairsByChainAction: Action; declare const getBoostedTokensAction: Action; declare const getTokenProfilesAction: Action; declare const dexscreenerActions: Action[]; declare const dexscreenerPlugin: Plugin; export { type DexScreenerBoostedToken, type DexScreenerChainParams, type DexScreenerConfig, type DexScreenerNewPairsParams, type DexScreenerOrder, type DexScreenerPair, type DexScreenerPairParams, type DexScreenerProfile, type DexScreenerSearchParams, DexScreenerService, type DexScreenerServiceResponse, type DexScreenerTokenInfo, type DexScreenerTokenParams, type DexScreenerTrendingParams, dexscreenerPlugin as default, dexscreenerActions, dexscreenerPlugin, getBoostedTokensAction, getNewPairsAction, getPairsByChainAction, getTokenInfoAction, getTokenProfilesAction, getTrendingAction, searchTokensAction };