import { ChainId, Currency, Token } from '@envanik/sdk';
import { UseQueryResult } from 'react-query';
import { CoingeckoWatchListState } from './atom';
export interface CoingeckoTokenData {
    id: string;
    symbol: string;
    name: string;
}
export interface CoingeckoWatchListToken extends CoingeckoTokenData {
    price: string | null;
    imageUrl: string | null;
    weeklyChartData: Array<{
        timestamp: string;
        priceUSD: number;
    }>;
}
export interface CoingeckoData {
    coinId: string;
    homePage: string;
    description: string;
}
export interface MarketCoinsAPIResponse {
    id: string;
    symbol: string;
    name: string;
    image: string;
    current_price: number;
    market_cap: number;
    market_cap_rank: number;
    fully_diluted_valuation?: number;
    total_volume: number;
    high_24h?: number;
    low_24h?: number;
    price_change_24h?: number;
    price_change_percentage_24h?: number;
    market_cap_change_24h?: number;
    market_cap_change_percentage_24h?: number;
    circulating_supply: number;
    total_supply?: number;
    max_supply?: number;
    ath: number;
    ath_change_percentage: number;
    ath_date: string;
    atl: number;
    atl_change_percentage: number;
    atl_date: string;
    roi?: {
        times: number;
        currency: string;
        percentage: number;
    };
    last_updated: string;
    sparkline_in_7d: {
        price: Array<number>;
    };
}
export declare function useCoinGeckoTokenPrice(coin: Token): {
    tokenUsdPrice: string;
};
export declare function useCoinGeckoTokenPriceChart(coin: CoingeckoWatchListToken, days?: string): {
    timestamp: string;
    priceUSD: number;
}[];
/**
 *
 * @param token - Token to convert to another token if it exists in COINGECKO_TOKENS_MAPPING
 * @returns Original token or converted token if it exists in COINGECKO_TOKENS_MAPPING
 */
export declare function convertCoingeckoTokens(token: Token): Token;
/**
 * Get the coingecko data for a token
 * @param coin - Token or Currency
 * @returns CoingeckoData of token if exist in coingecko else null
 * */
export declare function useCoinGeckoTokenData(coin: Token | Currency): UseQueryResult<CoingeckoData | undefined, unknown>;
/**
 * Returns the gas coin price in usd of the chain
 * @param chainId the id of chain
 * @returns Returns the useQuery where data is a usd value in number of gas coin price
 */
export declare function useCoinGeckoCurrencyPrice(chainId: ChainId): UseQueryResult<number, unknown>;
/**
 * to fetch coingecko market data
 * @param page
 * @param ids
 * @returns coinmarket data
 */
export declare const fetchCoinMarketData: (page: number, ids?: string | undefined) => () => Promise<any>;
/**
 * to make coingecko token data which is used in show token list
 * @param results
 * @returns CoingeckoWatchListState
 */
export declare const makeCoingeckoTokenData: (toknesData: MarketCoinsAPIResponse[]) => CoingeckoWatchListState;
/**
 * Get the coingecko all tokens
 * @returns CoingeckoData of token if exist in coingecko else null
 * */
export declare function useCoinGeckoTokens(): CoingeckoWatchListState;
/**
 * its use for search token based on text
 * @param coinText
 * @returns [id: string]: CoingeckoWatchListToken
 */
export declare function useCoinGeckoSearchTokens(coinText: string): {
    [id: string]: CoingeckoWatchListToken;
};
