import { DBAdapterBase } from '../../database/DBAdapterBase.js';
import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
import '../../components/public/TokenManager/types.js';

/**
 * Constructs the URL to retrieve prices from CoinGecko.
 * @param tokens
 * @returns
 */
declare const buildCoinGeckoPricesURL: (tokens: readonly string[]) => string;
declare const buildCoinGeckoInfoURL: (tokenId: string) => string;
declare const buildCoinGeckoTokenListURL: () => string;
/**
 * Prices of each token.
 */
type CoinGeckoPrices<T extends string> = {
    [C in T]: number | null;
};
type TokenInfo = {
    id: string;
    name: string;
    symbol: string;
    market_data: {
        current_price: {
            usd: number;
        };
    };
    description: {
        en: string;
    };
    image: {
        small: string;
        large: string;
    };
    platforms: {
        [key: string]: string;
    };
};
type TokenListItem = {
    id: string;
    symbol: string;
    name: string;
};
declare const makeCoinGeckoPricesQuery: <T extends string>(tokens: readonly T[], cache?: DBAdapterBase) => UseQueryOptions<CoinGeckoPrices<T>, unknown, CoinGeckoPrices<T>, string[]>;
declare const makeTokenInfoQuery: (tokenId: string) => UseQueryOptions<TokenInfo | null, unknown, TokenInfo, string[]>;
declare const makeTokenListQuery: () => UseQueryOptions<TokenListItem[] | null, unknown, TokenListItem[], string[]>;
/**
 * Fetches prices of tokens from CoinGecko.
 * @returns The CoinGecko prices.
 */
declare const useCoinGeckoPrices: <T extends string>(tokens: readonly T[], options?: Omit<UseQueryOptions<CoinGeckoPrices<T>, unknown, CoinGeckoPrices<T>, string[]>, "queryKey" | "queryFn">, cache?: DBAdapterBase) => UseQueryResult<CoinGeckoPrices<T>, unknown>;
/**
 * Fetches the token information from CoinGecko.
 * @param tokenId The token to fetch.
 * @returns The token information.
 */
declare const useTokenInfo: (tokenId: string) => UseQueryResult<TokenInfo, unknown>;
declare const useTokenList: () => UseQueryResult<TokenListItem[], unknown>;

export { CoinGeckoPrices, TokenInfo, TokenListItem, buildCoinGeckoInfoURL, buildCoinGeckoPricesURL, buildCoinGeckoTokenListURL, makeCoinGeckoPricesQuery, makeTokenInfoQuery, makeTokenListQuery, useCoinGeckoPrices, useTokenInfo, useTokenList };
