import { BigNumber } from '../utils/numerics';
import { Contracts } from './Contracts';
import { EncodedStrategy, Fetcher, TokenPair, TradeData, BlockMetadata } from '../common/types';
/**
 * Class that provides methods to read data from contracts.
 */
export default class Reader implements Fetcher {
    private _contracts;
    constructor(contracts: Contracts);
    private _multicall;
    strategy(id: BigNumber): Promise<EncodedStrategy>;
    strategies(ids: BigNumber[]): Promise<EncodedStrategy[]>;
    pairs(): Promise<TokenPair[]>;
    strategiesByPair(token0: string, token1: string): Promise<EncodedStrategy[]>;
    strategiesByPairs(pairs: TokenPair[]): Promise<{
        pair: TokenPair;
        strategies: EncodedStrategy[];
    }[]>;
    tokensByOwner(owner: string): Promise<BigNumber[]>;
    tradingFeePPM(): Promise<number>;
    onTradingFeePPMUpdated(listener: (prevFeePPM: number, newFeePPM: number) => void): import("../abis/types/CarbonController").CarbonController;
    pairTradingFeePPM(token0: string, token1: string): Promise<number>;
    pairsTradingFeePPM(pairs: TokenPair[]): Promise<[string, string, number][]>;
    onPairTradingFeePPMUpdated(listener: (token0: string, token1: string, prevFeePPM: number, newFeePPM: number) => void): import("../abis/types/CarbonController").CarbonController;
    getDecimalsByAddress: (address: string) => Promise<number>;
    private _getFilteredStrategies;
    getLatestStrategyCreatedStrategies(fromBlock: number, toBlock: number): Promise<EncodedStrategy[]>;
    getLatestStrategyUpdatedStrategies(fromBlock: number, toBlock: number): Promise<EncodedStrategy[]>;
    getLatestStrategyDeletedStrategies(fromBlock: number, toBlock: number): Promise<EncodedStrategy[]>;
    getLatestTokensTradedTrades: (fromBlock: number, toBlock: number) => Promise<TradeData[]>;
    getLatestTradingFeeUpdates(fromBlock: number, toBlock: number): Promise<number[]>;
    getLatestPairTradingFeeUpdates(fromBlock: number, toBlock: number): Promise<[string, string, number][]>;
    getBlockNumber: () => Promise<number>;
    getBlock: (blockNumber: number) => Promise<BlockMetadata>;
}
//# sourceMappingURL=Reader.d.ts.map