import { ethers } from "ethers";
import { CachingMechanismInterface } from "../interfaces";
import { Logger } from "winston";
export declare class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
    readonly nodeQuorumThreshold: number;
    readonly retries: number;
    readonly delay: number;
    readonly maxConcurrency: number;
    readonly logger?: Logger | undefined;
    readonly providers: ethers.providers.StaticJsonRpcProvider[];
    constructor(params: ConstructorParameters<typeof ethers.providers.StaticJsonRpcProvider>[], chainId: number, nodeQuorumThreshold: number, retries: number, delay: number, maxConcurrency: number, providerCacheNamespace: string, pctRpcCallsLogged: number, redisClient?: CachingMechanismInterface, standardTtlBlockDistance?: number, noTtlBlockDistance?: number, providerCacheTtl?: number, logger?: Logger | undefined);
    send(method: string, params: Array<unknown>): Promise<unknown>;
    _validateResponse(method: string, _: Array<unknown>, response: unknown): boolean;
    _sendAndValidate(provider: ethers.providers.StaticJsonRpcProvider, method: string, params: Array<unknown>): Promise<unknown>;
    protected parseError(response: unknown): {
        code: number;
        message: string;
        data?: unknown;
    } | undefined;
    protected failImmediate(method: string, response: unknown): boolean;
    _trySend(provider: ethers.providers.StaticJsonRpcProvider, method: string, params: Array<unknown>): Promise<unknown>;
    _getQuorum(method: string, params: Array<unknown>): number;
}
