import type { ContractFunctionInteraction, DeployMethod, DeployOptions, Logger, ProfileMethodOptions } from '@aztec/aztec.js';
import { type PrivateExecutionStep } from '@aztec/stdlib/kernel';
import type { ProvingStats, ProvingTimings, SimulationStats, SimulationTimings } from '@aztec/stdlib/tx';
import type { GithubActionBenchmarkResult } from '../utils.js';
declare const logLevel: readonly ["silent", "fatal", "error", "warn", "info", "verbose", "debug", "trace"];
type LogLevel = (typeof logLevel)[number];
export type Log = {
    type: LogLevel;
    timestamp: number;
    prefix: string;
    message: string;
    data: any;
};
declare const GATE_TYPES: readonly ["ecc_op", "busread", "lookup", "pub_inputs", "arithmetic", "delta_range", "elliptic", "memory", "nnf", "poseidon2_external", "poseidon2_internal", "overflow"];
type GateType = (typeof GATE_TYPES)[number];
type StructuredTrace = {
    [k in GateType]: number;
};
export declare class ProxyLogger {
    private static instance;
    private logs;
    private constructor();
    static create(): void;
    static getInstance(): ProxyLogger;
    createLogger(prefix: string): Logger;
    private handleLog;
    flushLogs(): void;
    getLogs(): Log[];
}
export type ProverType = 'wasm' | 'native';
type CallRecording = {
    calls: number;
    max: number;
    min: number;
    avg: number;
    total: number;
};
type Step = Pick<PrivateExecutionStep, 'functionName' | 'gateCount'> & {
    time: number;
    accGateCount?: number;
    oracles: Record<string, CallRecording>;
};
type ClientFlowBenchmark = {
    name: string;
    timings: Omit<ProvingTimings & SimulationTimings, 'perFunction'> & {
        witgen: number;
    };
    maxMemory: number;
    rpc: Record<string, CallRecording>;
    proverType: ProverType;
    minimumTrace: StructuredTrace;
    totalGateCount: number;
    steps: Step[];
    error: string | undefined;
};
export declare function generateBenchmark(flow: string, logs: Log[], stats: ProvingStats | SimulationStats, privateExecutionSteps: PrivateExecutionStep[], proverType: ProverType, error: string | undefined): ClientFlowBenchmark;
export declare function convertProfileToGHBenchmark(benchmark: ClientFlowBenchmark): GithubActionBenchmarkResult[];
export declare function captureProfile(label: string, interaction: ContractFunctionInteraction | DeployMethod, opts: Omit<ProfileMethodOptions & DeployOptions, 'profileMode'>, expectedSteps?: number): Promise<import("@aztec/aztec.js").TxProfileResult>;
export {};
//# sourceMappingURL=benchmark.d.ts.map