import { ConvertableToDate, RedstoneApiConfigForQueryExec, PriceData } from "./types"; declare type QueryParams = { symbols: string[]; startDate?: ConvertableToDate; endDate?: ConvertableToDate; date?: ConvertableToDate; interval?: number; latest?: boolean; }; export declare class RedstoneQuery { protected params: QueryParams; constructor(params?: {}); /** * Sets a token symbol to fetch * @param symbol - Token symbol string * @returns query object */ symbol(symbol: string): RedstoneQueryForSingleSymbol; /** * Sets token symbols to fetch * @param symbols - Array of strings (token symbols) * @returns query object */ symbols(symbols: string[]): RedstoneQueryForSeveralSymbols; /** * Configures query to fetch prices for all supported tokens. * It doesn't support any params * @returns query object */ allSymbols(): RedstoneQueryForSeveralSymbols; } export declare class RedstoneQueryForSingleOrSeveralSymbols { protected params: QueryParams; constructor(params: QueryParams); protected getExecutableQuery(update: any): RedstoneQueryExecutable; /** * Configures query to fetch the latest price/prices * It doesn't support any params * @returns query object */ latest(): RedstoneQueryExecutable; /** * Configures query to fetch the price for X hours ago. * @param hoursCount - Number of hours ago * @returns query object */ hoursAgo(hoursCount: number): RedstoneQueryExecutable; /** * Configures query to fetch the price for a specific date. * @param date - Date for the historical price (date | timestamp | string) * @returns query object */ atDate(date: ConvertableToDate): RedstoneQueryExecutable; } export declare class RedstoneQueryForSingleSymbol extends RedstoneQueryForSingleOrSeveralSymbols { constructor(params: QueryParams); /** * Configures query to fetch the price in a time range. It is important to use fromDate with toDate query methods * @param date - Start date/time for the time range * * @returns query object */ fromDate(date: ConvertableToDate): RedstoneQueryForSingleSymbol; /** * Configures query to fetch the price in a time range. toDate method should go after the fromDate * @param date - End date/time for the time range * * @returns query object */ toDate(date: ConvertableToDate): RedstoneQueryExecutable; /** * Configures query to fetch the price for the last few hours * @param hoursCount - Number of hours in the time range * * @returns query object */ forLastHours(hoursCount: number): RedstoneQueryExecutable; /** * Configures query to fetch the price for the last few days * @param daysCount - Number of days in the time range * * @returns query object */ forLastDays(daysCount: number): RedstoneQueryExecutable; } export declare class RedstoneQueryForSeveralSymbols extends RedstoneQueryForSingleOrSeveralSymbols<{ [symbol: string]: PriceData; }> { constructor(params: QueryParams); } export declare class RedstoneQueryExecutable { private params; constructor(params?: {}); /** * Executes the query * * @returns Promise resolving the query result (result type depends on the query) */ exec(redstoneApiConfig?: RedstoneApiConfigForQueryExec): Promise; } /** * Initializes and returns an empty query. * It doesn't support any params * @returns query object */ declare const query: () => RedstoneQuery; export default query;