import { ContractInfo } from './abi/contract';
import { DecodedFunctionCall } from './abi/decode';
import { Config, DeepPartial } from './config';
import { EthereumClient } from './eth/client';
import { RawLogResponse, RawParityLogResponse } from './eth/responses';
import { FormattedBlock, FormattedLogEvent, FormattedPendingTransaction, FormattedTransaction } from './msgs';
import { Classification } from './utils/classification';
interface FullBlockResponse {
    block: FormattedBlock;
    transactions: FormattedTransactionResponse[];
}
interface FormattedTransactionResponse {
    transaction: FormattedTransaction;
    logEvents: FormattedLogEvent[];
}
export declare class EvmDecoder {
    private config;
    private abortHandle;
    private abiRepo;
    private contractInfoCache;
    private resources;
    private waitAfterFailure;
    classification: Classification;
    ethClient: EthereumClient;
    private contractResources;
    constructor(config: DeepPartial<Config>);
    initialize(): Promise<void>;
    decodeFunctionCall({ input, address }: {
        input: string;
        address?: string;
    }): Promise<DecodedFunctionCall | undefined>;
    contractInfo({ address }: {
        address: string;
    }): Promise<ContractInfo | undefined>;
    getBlock(blockNumber: number): Promise<FullBlockResponse>;
    getBlocks(blockNumbers: number[]): Promise<FullBlockResponse[]>;
    getPendingTransaction(hash: string): Promise<FormattedPendingTransaction | undefined>;
    getTransaction(hash: string): Promise<FormattedTransactionResponse>;
    getTransactionReceipt(hash: string): Promise<FormattedLogEvent[]>;
    private processBlock;
    private processTransaction;
    private processPendingTransaction;
    processTransactionLog(evt: RawLogResponse | RawParityLogResponse | FormattedLogEvent): Promise<FormattedLogEvent>;
    private addResource;
}
export {};
