import { BaseError, type Transport } from "viem";
import { type TraceFormatConfig } from "./format";
export type TracerConfig = TraceFormatConfig & {
    /**
     * Whether to trace all transactions. Defaults to `false`.
     */
    all: boolean;
    /**
     * Whether to trace the next submitted transaction. Defaults to `undefined`.
     */
    next?: boolean;
    /**
     * Whether to trace all failed transactions. Defaults to `true`.
     */
    failed: boolean;
};
export type TracedTransport<transport extends Transport = Transport> = transport extends Transport<infer type, infer rpcAttributes, infer eip1193RequestFn> ? Transport<type, rpcAttributes & {
    tracer: TracerConfig;
}, eip1193RequestFn> : never;
export declare class ExecutionRevertedTraceError extends BaseError {
    static code: number;
    static nodeMessage: RegExp;
    constructor(trace: string, message?: string);
}
/**
 * @description Overloads a transport intended to be used with a test client, to trace and debug transactions.
 */
export declare function traced<transport extends Transport>(transport: transport, { all, next, failed, gas, raw }?: Partial<TracerConfig>): TracedTransport<transport>;
