import { CarbonController } from '../abis/types/CarbonController';
import { Contracts } from './Contracts';
import { MulticallService } from './utils';
import { EncodedStrategy, Fetcher, TokenPair, BlockMetadata, SyncedEvents } from '../common/types';
/**
 * Class that provides methods to read data from contracts.
 */
export default class Reader implements Fetcher {
    private _contracts;
    private _multicallService;
    constructor(contracts: Contracts, multicallService?: MulticallService);
    private _multicall;
    strategy(id: bigint): Promise<EncodedStrategy>;
    strategies(ids: bigint[]): Promise<EncodedStrategy[]>;
    pairs(): Promise<TokenPair[]>;
    strategiesByPair(token0: string, token1: string): Promise<EncodedStrategy[]>;
    strategiesByPairs(pairs: TokenPair[]): Promise<{
        pair: TokenPair;
        strategies: EncodedStrategy[];
    }[]>;
    tokensByOwner(owner: string): Promise<bigint[]>;
    tradingFeePPM(): Promise<number>;
    onTradingFeePPMUpdated(listener: (prevFeePPM: number, newFeePPM: number) => void): Promise<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): Promise<CarbonController>;
    getDecimalsByAddress: (address: string) => Promise<number>;
    getBlockNumber: () => Promise<number>;
    getBlock: (blockNumber: number) => Promise<BlockMetadata>;
    /**
     * Fetches all events from a block range using eth_getLogs with chunking
     * @param fromBlock - Starting block number
     * @param toBlock - Ending block number
     * @param maxChunkSize - Maximum number of blocks to query in a single request
     * @returns Array of typed events sorted by block number and log index
     */
    getEvents(fromBlock: number, toBlock: number, maxChunkSize?: number): Promise<SyncedEvents>;
}
//# sourceMappingURL=Reader.d.ts.map