import { AVM_PROOF_LENGTH_IN_FIELDS, AvmCircuitInputs, BaseParityInputs, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, ParityPublicInputs, PrivateKernelEmptyInputData, PrivateToRollupKernelCircuitPublicInputs, RECURSIVE_PROOF_LENGTH, RecursiveProof, RootParityInputs, TUBE_PROOF_LENGTH, VerificationKeyData } from '@aztec/circuits.js';
import { BaseOrMergeRollupPublicInputs, BlockMergeRollupInputs, BlockRootOrBlockMergePublicInputs, BlockRootRollupInputs, EmptyBlockRootRollupInputs, MergeRollupInputs, PrivateBaseRollupInputs, PublicBaseRollupInputs, RootRollupInputs, RootRollupPublicInputs, TubeInputs } from '@aztec/circuits.js/rollup';
import { type ZodFor } from '@aztec/foundation/schemas';
import { z } from 'zod';
import { type CircuitName } from '../stats/index.js';
export type ProofAndVerificationKey<N extends number> = {
    proof: RecursiveProof<N>;
    verificationKey: VerificationKeyData;
};
export declare function makeProofAndVerificationKey<N extends number>(proof: RecursiveProof<N>, verificationKey: VerificationKeyData): ProofAndVerificationKey<N>;
export type PublicInputsAndRecursiveProof<T, N extends number = typeof NESTED_RECURSIVE_PROOF_LENGTH> = {
    inputs: T;
    proof: RecursiveProof<N>;
    verificationKey: VerificationKeyData;
};
export declare function makePublicInputsAndRecursiveProof<T, N extends number = typeof NESTED_RECURSIVE_PROOF_LENGTH>(inputs: T, proof: RecursiveProof<N>, verificationKey: VerificationKeyData): PublicInputsAndRecursiveProof<T, N>;
export declare enum ProvingRequestType {
    PRIVATE_KERNEL_EMPTY = 0,
    PUBLIC_VM = 1,
    PRIVATE_BASE_ROLLUP = 2,
    PUBLIC_BASE_ROLLUP = 3,
    MERGE_ROLLUP = 4,
    EMPTY_BLOCK_ROOT_ROLLUP = 5,
    BLOCK_ROOT_ROLLUP = 6,
    BLOCK_MERGE_ROLLUP = 7,
    ROOT_ROLLUP = 8,
    BASE_PARITY = 9,
    ROOT_PARITY = 10,
    /** Recursive Client IVC verification to connect private to public or rollup */
    TUBE_PROOF = 11
}
export declare function mapProvingRequestTypeToCircuitName(type: ProvingRequestType): CircuitName;
export type AvmProvingRequest = z.infer<typeof AvmProvingRequestSchema>;
export declare const AvmProvingRequestSchema: z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.PUBLIC_VM>;
    inputs: z.ZodType<AvmCircuitInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.PUBLIC_VM;
    inputs: AvmCircuitInputs;
}, {
    type: ProvingRequestType.PUBLIC_VM;
    inputs: string;
}>;
export declare const ProvingJobInputs: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.PUBLIC_VM>;
    inputs: z.ZodType<AvmCircuitInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.PUBLIC_VM;
    inputs: AvmCircuitInputs;
}, {
    type: ProvingRequestType.PUBLIC_VM;
    inputs: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.BASE_PARITY>;
    inputs: z.ZodType<BaseParityInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.BASE_PARITY;
    inputs: BaseParityInputs;
}, {
    type: ProvingRequestType.BASE_PARITY;
    inputs: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.ROOT_PARITY>;
    inputs: z.ZodType<RootParityInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.ROOT_PARITY;
    inputs: RootParityInputs;
}, {
    type: ProvingRequestType.ROOT_PARITY;
    inputs: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.PRIVATE_BASE_ROLLUP>;
    inputs: z.ZodType<PrivateBaseRollupInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.PRIVATE_BASE_ROLLUP;
    inputs: PrivateBaseRollupInputs;
}, {
    type: ProvingRequestType.PRIVATE_BASE_ROLLUP;
    inputs: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.PUBLIC_BASE_ROLLUP>;
    inputs: z.ZodType<PublicBaseRollupInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.PUBLIC_BASE_ROLLUP;
    inputs: PublicBaseRollupInputs;
}, {
    type: ProvingRequestType.PUBLIC_BASE_ROLLUP;
    inputs: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.MERGE_ROLLUP>;
    inputs: z.ZodType<MergeRollupInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.MERGE_ROLLUP;
    inputs: MergeRollupInputs;
}, {
    type: ProvingRequestType.MERGE_ROLLUP;
    inputs: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.BLOCK_ROOT_ROLLUP>;
    inputs: z.ZodType<BlockRootRollupInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.BLOCK_ROOT_ROLLUP;
    inputs: BlockRootRollupInputs;
}, {
    type: ProvingRequestType.BLOCK_ROOT_ROLLUP;
    inputs: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP>;
    inputs: z.ZodType<EmptyBlockRootRollupInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP;
    inputs: EmptyBlockRootRollupInputs;
}, {
    type: ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP;
    inputs: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.BLOCK_MERGE_ROLLUP>;
    inputs: z.ZodType<BlockMergeRollupInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.BLOCK_MERGE_ROLLUP;
    inputs: BlockMergeRollupInputs;
}, {
    type: ProvingRequestType.BLOCK_MERGE_ROLLUP;
    inputs: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.ROOT_ROLLUP>;
    inputs: z.ZodType<RootRollupInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.ROOT_ROLLUP;
    inputs: RootRollupInputs;
}, {
    type: ProvingRequestType.ROOT_ROLLUP;
    inputs: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.PRIVATE_KERNEL_EMPTY>;
    inputs: z.ZodType<PrivateKernelEmptyInputData, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.PRIVATE_KERNEL_EMPTY;
    inputs: PrivateKernelEmptyInputData;
}, {
    type: ProvingRequestType.PRIVATE_KERNEL_EMPTY;
    inputs: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.TUBE_PROOF>;
    inputs: z.ZodType<TubeInputs, any, string>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.TUBE_PROOF;
    inputs: TubeInputs;
}, {
    type: ProvingRequestType.TUBE_PROOF;
    inputs: string;
}>]>;
export type ProvingJobInputs = z.infer<typeof ProvingJobInputs>;
export type ProvingJobInputsMap = {
    [ProvingRequestType.PRIVATE_KERNEL_EMPTY]: PrivateKernelEmptyInputData;
    [ProvingRequestType.PUBLIC_VM]: AvmCircuitInputs;
    [ProvingRequestType.PRIVATE_BASE_ROLLUP]: PrivateBaseRollupInputs;
    [ProvingRequestType.PUBLIC_BASE_ROLLUP]: PublicBaseRollupInputs;
    [ProvingRequestType.MERGE_ROLLUP]: MergeRollupInputs;
    [ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP]: EmptyBlockRootRollupInputs;
    [ProvingRequestType.BLOCK_ROOT_ROLLUP]: BlockRootRollupInputs;
    [ProvingRequestType.BLOCK_MERGE_ROLLUP]: BlockMergeRollupInputs;
    [ProvingRequestType.ROOT_ROLLUP]: RootRollupInputs;
    [ProvingRequestType.BASE_PARITY]: BaseParityInputs;
    [ProvingRequestType.ROOT_PARITY]: RootParityInputs;
    [ProvingRequestType.TUBE_PROOF]: TubeInputs;
};
export declare const ProvingJobResult: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.PRIVATE_KERNEL_EMPTY>;
    result: ZodFor<PublicInputsAndRecursiveProof<PrivateToRollupKernelCircuitPublicInputs, 534>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.PRIVATE_KERNEL_EMPTY;
    result: PublicInputsAndRecursiveProof<PrivateToRollupKernelCircuitPublicInputs, 534>;
}, {
    type: ProvingRequestType.PRIVATE_KERNEL_EMPTY;
    result?: any;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.PUBLIC_VM>;
    result: ZodFor<ProofAndVerificationKey<4155>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.PUBLIC_VM;
    result: ProofAndVerificationKey<4155>;
}, {
    type: ProvingRequestType.PUBLIC_VM;
    result?: any;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.PRIVATE_BASE_ROLLUP>;
    result: ZodFor<PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, 534>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.PRIVATE_BASE_ROLLUP;
    result: PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, 534>;
}, {
    type: ProvingRequestType.PRIVATE_BASE_ROLLUP;
    result?: any;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.PUBLIC_BASE_ROLLUP>;
    result: ZodFor<PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, 534>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.PUBLIC_BASE_ROLLUP;
    result: PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, 534>;
}, {
    type: ProvingRequestType.PUBLIC_BASE_ROLLUP;
    result?: any;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.MERGE_ROLLUP>;
    result: ZodFor<PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, 534>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.MERGE_ROLLUP;
    result: PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, 534>;
}, {
    type: ProvingRequestType.MERGE_ROLLUP;
    result?: any;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP>;
    result: ZodFor<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, 534>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP;
    result: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, 534>;
}, {
    type: ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP;
    result?: any;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.BLOCK_ROOT_ROLLUP>;
    result: ZodFor<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, 534>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.BLOCK_ROOT_ROLLUP;
    result: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, 534>;
}, {
    type: ProvingRequestType.BLOCK_ROOT_ROLLUP;
    result?: any;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.BLOCK_MERGE_ROLLUP>;
    result: ZodFor<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, 534>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.BLOCK_MERGE_ROLLUP;
    result: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, 534>;
}, {
    type: ProvingRequestType.BLOCK_MERGE_ROLLUP;
    result?: any;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.ROOT_ROLLUP>;
    result: ZodFor<PublicInputsAndRecursiveProof<RootRollupPublicInputs, 459>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.ROOT_ROLLUP;
    result: PublicInputsAndRecursiveProof<RootRollupPublicInputs, 459>;
}, {
    type: ProvingRequestType.ROOT_ROLLUP;
    result?: any;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.BASE_PARITY>;
    result: ZodFor<PublicInputsAndRecursiveProof<ParityPublicInputs, 459>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.BASE_PARITY;
    result: PublicInputsAndRecursiveProof<ParityPublicInputs, 459>;
}, {
    type: ProvingRequestType.BASE_PARITY;
    result?: any;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.ROOT_PARITY>;
    result: ZodFor<PublicInputsAndRecursiveProof<ParityPublicInputs, 459>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.ROOT_PARITY;
    result: PublicInputsAndRecursiveProof<ParityPublicInputs, 459>;
}, {
    type: ProvingRequestType.ROOT_PARITY;
    result?: any;
}>, z.ZodObject<{
    type: z.ZodLiteral<ProvingRequestType.TUBE_PROOF>;
    result: ZodFor<ProofAndVerificationKey<534>>;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType.TUBE_PROOF;
    result: ProofAndVerificationKey<534>;
}, {
    type: ProvingRequestType.TUBE_PROOF;
    result?: any;
}>]>;
export type ProvingJobResult = z.infer<typeof ProvingJobResult>;
export type ProvingJobResultsMap = {
    [ProvingRequestType.PRIVATE_KERNEL_EMPTY]: PublicInputsAndRecursiveProof<PrivateToRollupKernelCircuitPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
    [ProvingRequestType.PUBLIC_VM]: ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>;
    [ProvingRequestType.PRIVATE_BASE_ROLLUP]: PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
    [ProvingRequestType.PUBLIC_BASE_ROLLUP]: PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
    [ProvingRequestType.MERGE_ROLLUP]: PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
    [ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP]: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
    [ProvingRequestType.BLOCK_ROOT_ROLLUP]: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
    [ProvingRequestType.BLOCK_MERGE_ROLLUP]: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
    [ProvingRequestType.ROOT_ROLLUP]: PublicInputsAndRecursiveProof<RootRollupPublicInputs>;
    [ProvingRequestType.BASE_PARITY]: PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>;
    [ProvingRequestType.ROOT_PARITY]: PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>;
    [ProvingRequestType.TUBE_PROOF]: ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>;
};
export type ProvingRequestResultFor<T extends ProvingRequestType> = {
    type: T;
    result: ProvingJobResultsMap[T];
};
export declare const ProvingJobId: z.ZodString;
export declare const ProofUri: z.ZodBranded<z.ZodString, "ProvingJobUri">;
export type ProofUri = z.infer<typeof ProofUri>;
export type ProvingJobId = z.infer<typeof ProvingJobId>;
export declare const ProvingJob: z.ZodObject<{
    id: z.ZodString;
    type: z.ZodNativeEnum<typeof ProvingRequestType>;
    epochNumber: z.ZodNumber;
    inputsUri: z.ZodBranded<z.ZodString, "ProvingJobUri">;
}, "strip", z.ZodTypeAny, {
    type: ProvingRequestType;
    id: string;
    epochNumber: number;
    inputsUri: string & z.BRAND<"ProvingJobUri">;
}, {
    type: ProvingRequestType;
    id: string;
    epochNumber: number;
    inputsUri: string;
}>;
export type ProvingJob = z.infer<typeof ProvingJob>;
export declare function makeProvingRequestResult(type: ProvingRequestType, result: ProvingJobResult['result']): ProvingJobResult;
export declare const ProvingJobFulfilledResult: z.ZodObject<{
    status: z.ZodLiteral<"fulfilled">;
    value: z.ZodBranded<z.ZodString, "ProvingJobUri">;
}, "strip", z.ZodTypeAny, {
    status: "fulfilled";
    value: string & z.BRAND<"ProvingJobUri">;
}, {
    status: "fulfilled";
    value: string;
}>;
export type ProvingJobFulfilledResult = z.infer<typeof ProvingJobFulfilledResult>;
export declare const ProvingJobRejectedResult: z.ZodObject<{
    status: z.ZodLiteral<"rejected">;
    reason: z.ZodString;
}, "strip", z.ZodTypeAny, {
    status: "rejected";
    reason: string;
}, {
    status: "rejected";
    reason: string;
}>;
export type ProvingJobRejectedResult = z.infer<typeof ProvingJobRejectedResult>;
export declare const ProvingJobSettledResult: z.ZodDiscriminatedUnion<"status", [z.ZodObject<{
    status: z.ZodLiteral<"fulfilled">;
    value: z.ZodBranded<z.ZodString, "ProvingJobUri">;
}, "strip", z.ZodTypeAny, {
    status: "fulfilled";
    value: string & z.BRAND<"ProvingJobUri">;
}, {
    status: "fulfilled";
    value: string;
}>, z.ZodObject<{
    status: z.ZodLiteral<"rejected">;
    reason: z.ZodString;
}, "strip", z.ZodTypeAny, {
    status: "rejected";
    reason: string;
}, {
    status: "rejected";
    reason: string;
}>]>;
export type ProvingJobSettledResult = z.infer<typeof ProvingJobSettledResult>;
export declare const ProvingJobStatus: z.ZodDiscriminatedUnion<"status", [z.ZodObject<{
    status: z.ZodLiteral<"in-queue">;
}, "strip", z.ZodTypeAny, {
    status: "in-queue";
}, {
    status: "in-queue";
}>, z.ZodObject<{
    status: z.ZodLiteral<"in-progress">;
}, "strip", z.ZodTypeAny, {
    status: "in-progress";
}, {
    status: "in-progress";
}>, z.ZodObject<{
    status: z.ZodLiteral<"not-found">;
}, "strip", z.ZodTypeAny, {
    status: "not-found";
}, {
    status: "not-found";
}>, z.ZodObject<{
    status: z.ZodLiteral<"fulfilled">;
    value: z.ZodBranded<z.ZodString, "ProvingJobUri">;
}, "strip", z.ZodTypeAny, {
    status: "fulfilled";
    value: string & z.BRAND<"ProvingJobUri">;
}, {
    status: "fulfilled";
    value: string;
}>, z.ZodObject<{
    status: z.ZodLiteral<"rejected">;
    reason: z.ZodString;
}, "strip", z.ZodTypeAny, {
    status: "rejected";
    reason: string;
}, {
    status: "rejected";
    reason: string;
}>]>;
export type ProvingJobStatus = z.infer<typeof ProvingJobStatus>;
//# sourceMappingURL=proving-job.d.ts.map