import type { CoverageConfig } from "./types/coverage.js";
import type { LoggerConfig } from "./types/logger.js";
import type { ChainDescriptorsConfig, EdrNetworkConfig } from "../../../../types/config.js";
import type { RequestArguments, SuccessfulJsonRpcResponse } from "../../../../types/providers.js";
import type { RequireField } from "../../../../types/utils.js";
import type { JsonRpcRequestWrapperFunction } from "../network-manager.js";
import type { SubscriptionEvent, ProviderConfig, TracingConfigWithBuffers, GasReportConfig } from "@nomicfoundation/edr";
import { ContractDecoder, IncludeTraces } from "@nomicfoundation/edr";
import { BaseProvider } from "../base-provider.js";
interface EdrProviderConfig {
    chainDescriptors: ChainDescriptorsConfig;
    networkConfig: RequireField<EdrNetworkConfig, "chainType">;
    loggerConfig?: LoggerConfig;
    contractDecoder: ContractDecoder;
    jsonRpcRequestWrapper?: JsonRpcRequestWrapperFunction;
    coverageConfig?: CoverageConfig;
    gasReportConfig?: GasReportConfig;
    includeCallTraces?: IncludeTraces;
    connectionId: number;
    networkName: string;
    verbosity: number;
}
export declare class EdrProvider extends BaseProvider {
    #private;
    static createContractDecoder(tracingConfig: TracingConfigWithBuffers): Promise<ContractDecoder>;
    /**
     * Creates a new instance of `EdrProvider`.
     */
    static create({ chainDescriptors, networkConfig, loggerConfig, contractDecoder, jsonRpcRequestWrapper, coverageConfig, gasReportConfig, includeCallTraces, verbosity, connectionId, networkName, }: EdrProviderConfig): Promise<EdrProvider>;
    /**
     * @private
     *
     * This constructor is intended for internal use only.
     * Use the static method {@link EdrProvider.create} to create an instance of
     * `EdrProvider`.
     */
    private constructor();
    request(requestArguments: RequestArguments): Promise<SuccessfulJsonRpcResponse["result"]>;
    close(): Promise<void>;
    addCompilationResult(solcVersion: string, compilerInput: any, compilerOutput: any): Promise<void>;
    onSubscriptionEvent(event: SubscriptionEvent): void;
}
export declare function getProviderConfig(networkConfig: RequireField<EdrNetworkConfig, "chainType">, coverageConfig: CoverageConfig | undefined, gasReportConfig: GasReportConfig | undefined, chainDescriptors: ChainDescriptorsConfig, includeCallTraces?: IncludeTraces): Promise<ProviderConfig>;
export {};
//# sourceMappingURL=edr-provider.d.ts.map