import { Contract } from "ethers";
import { FillStatus, Log, RelayData } from "../../interfaces";
import { BigNumber, DepositSearchResult, MakeOptional } from "../../utils";
import { EventSearchConfig } from "../../utils/EventUtils";
import { SpokePoolClient, SpokePoolUpdate } from "./SpokePoolClient";
import winston from "winston";
import { HubPoolClient } from "../HubPoolClient";
export declare class EVMSpokePoolClient extends SpokePoolClient {
    readonly spokePool: Contract;
    readonly type = "EVM";
    readonly tvm: boolean;
    constructor(logger: winston.Logger, spokePool: Contract, hubPoolClient: HubPoolClient | null, chainId: number, deploymentBlock: number, eventSearchConfig?: MakeOptional<EventSearchConfig, "to">);
    relayFillStatus(relayData: RelayData, atHeight?: number): Promise<FillStatus>;
    fillStatusArray(relayData: RelayData[], atHeight?: number): Promise<(FillStatus | undefined)[]>;
    getMaxFillDeadlineInRange(startBlock: number, endBlock: number): Promise<number>;
    private _availableEventsOnSpoke;
    _queryableEventNames(): string[];
    protected _getCurrentTime(blockNumber: number): Promise<number>;
    protected _update(eventsToQuery: string[]): Promise<SpokePoolUpdate>;
    getTimeAt(blockNumber: number): Promise<number>;
    findDeposit(depositId: BigNumber): Promise<DepositSearchResult>;
    getTimestampForBlock(blockNumber: number): Promise<number>;
    protected _findDepositBlock(depositId: BigNumber, lowBlock: number, highBlock?: number): Promise<number | undefined>;
    protected queryDepositEvents(depositId: BigNumber): Promise<{
        event: Log;
        elapsedMs: number;
    } | {
        reason: string;
    }>;
}
