import { providers } from "ethers";
import { CachingMechanismInterface } from "../interfaces";
import { EventSearchConfig, MakeOptional } from "../utils";
import { SVMProvider } from "../arch/svm";
import winston from "winston";
export declare enum UpdateFailureReason {
    NotReady = 0,
    AlreadyUpdated = 1,
    BadRequest = 2,
    RPCError = 3
}
export declare function isUpdateFailureReason(x: EventSearchConfig | UpdateFailureReason): x is UpdateFailureReason;
export declare abstract class BaseAbstractClient {
    readonly eventSearchConfig: MakeOptional<EventSearchConfig, "to">;
    protected cachingMechanism?: CachingMechanismInterface | undefined;
    protected _isUpdated: boolean;
    firstHeightToSearch: number;
    latestHeightSearched: number;
    constructor(eventSearchConfig?: MakeOptional<EventSearchConfig, "to">, cachingMechanism?: CachingMechanismInterface | undefined);
    get isUpdated(): boolean;
    set isUpdated(value: boolean);
    updateSearchConfig(provider: providers.Provider): Promise<EventSearchConfig | UpdateFailureReason>;
    updateSvmSearchConfig(provider: SVMProvider, logger: winston.Logger): Promise<EventSearchConfig | UpdateFailureReason>;
    protected assertUpdated(): void;
    protected hasCachingMechanism(): boolean;
}
