import { CoinGeckoPrice } from "../coingecko";
import { Logger } from "../relayFeeCalculator";
export { Logger };
export type TokenPrice = CoinGeckoPrice;
export interface PriceFeedAdapter {
    readonly name: string;
    getPriceByAddress(address: string, currency: string): Promise<TokenPrice>;
    getPricesByAddress(addresses: string[], currency: string): Promise<TokenPrice[]>;
}
export type PriceCache = {
    [address: string]: TokenPrice;
};
export declare function msToS(ms: number): number;
export declare class PriceClient implements PriceFeedAdapter {
    protected logger: Logger;
    readonly priceFeeds: PriceFeedAdapter[];
    readonly throwOnFailure: boolean;
    readonly name: string;
    private _maxPriceAge;
    protected prices: {
        [currency: string]: PriceCache;
    };
    constructor(logger: Logger, priceFeeds: PriceFeedAdapter[], throwOnFailure?: boolean);
    get maxPriceAge(): number;
    set maxPriceAge(age: number);
    listPriceFeeds(): string[];
    getPriceByAddress(address: string, currency?: string): Promise<TokenPrice>;
    getPricesByAddress(addresses: string[], currency?: string): Promise<TokenPrice[]>;
    expireCache(currency: string): void;
    protected getPriceCache(currency: string): PriceCache;
    private updatePrices;
    private updateCache;
}
//# sourceMappingURL=priceClient.d.ts.map