import { Fr } from '@aztec/circuits.js';
import { type ConfigMappingsType } from '@aztec/foundation/config';
import { z } from 'zod';
import { type TxHash } from '../tx/tx_hash.js';
import { type EpochProver } from './epoch-prover.js';
import { type ProvingJobConsumer } from './prover-broker.js';
import { type ProvingJobStatus } from './proving-job.js';
export type ActualProverConfig = {
    /** Whether to construct real proofs */
    realProofs: boolean;
    /** Artificial delay to introduce to all operations to the test prover. */
    proverTestDelayMs: number;
};
/**
 * The prover configuration.
 */
export type ProverConfig = ActualProverConfig & {
    /** The URL to the Aztec node to take proving jobs from */
    nodeUrl?: string;
    /** Identifier of the prover */
    proverId: Fr;
    /** Where to store temporary data */
    cacheDir?: string;
    proverAgentCount: number;
};
export declare const ProverConfigSchema: z.ZodObject<{
    nodeUrl: z.ZodOptional<z.ZodString>;
    realProofs: z.ZodBoolean;
    proverId: z.ZodType<Fr, any, string>;
    proverTestDelayMs: z.ZodNumber;
    cacheDir: z.ZodOptional<z.ZodString>;
    proverAgentCount: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    realProofs: boolean;
    proverId: Fr;
    proverTestDelayMs: number;
    proverAgentCount: number;
    nodeUrl?: string | undefined;
    cacheDir?: string | undefined;
}, {
    realProofs: boolean;
    proverId: string;
    proverTestDelayMs: number;
    proverAgentCount: number;
    nodeUrl?: string | undefined;
    cacheDir?: string | undefined;
}>;
export declare const proverConfigMappings: ConfigMappingsType<ProverConfig>;
/**
 * A database where the proving orchestrator can store intermediate results
 */
export interface ProverCache {
    /**
     * Saves the status of a proving job
     * @param jobId - The job ID
     * @param status - The status of the proof
     */
    setProvingJobStatus(jobId: string, status: ProvingJobStatus): Promise<void>;
    /**
     * Retrieves the status of a proving job (if known)
     * @param jobId - The job ID
     */
    getProvingJobStatus(jobId: string): Promise<ProvingJobStatus>;
    /**
     * Closes the cache
     */
    close(): Promise<void>;
}
/**
 * The interface to the prover client.
 * Provides the ability to generate proofs and build rollups.
 */
export interface EpochProverManager {
    createEpochProver(cache?: ProverCache): EpochProver;
    start(): Promise<void>;
    stop(): Promise<void>;
    getProvingJobSource(): ProvingJobConsumer;
    updateProverConfig(config: Partial<ProverConfig>): Promise<void>;
}
export declare class BlockProofError extends Error {
    #private;
    readonly txHashes: TxHash[];
    name: string;
    constructor(message: string, txHashes: TxHash[]);
    static isBlockProofError(err: any): err is BlockProofError;
}
//# sourceMappingURL=prover-client.d.ts.map