import type { EpochNumber } from '@aztec/foundation/branded-types'; import type { ProvingRequestType } from '../proofs/proving_request_type.js'; import type { ProofUri, ProvingJob, ProvingJobId, ProvingJobStatus } from './proving-job.js'; /** * An interface for the proving orchestrator. The producer uses this to enqueue jobs for agents */ export interface ProvingJobProducer { /** * Enqueues a proving job * @param job - The job to enqueue */ enqueueProvingJob(job: ProvingJob): Promise; /** * Cancels a proving job. * @param id - The ID of the job to cancel */ cancelProvingJob(id: ProvingJobId): Promise; /** * Returns the current status fof the proving job * @param id - The ID of the job to get the status of */ getProvingJobStatus(id: ProvingJobId): Promise; /** * Returns the ids of jobs that have been completed since the last call * Also returns the set of provided job ids that are completed * @param ids - The set of job ids to check for completion */ getCompletedJobs(ids: ProvingJobId[]): Promise; } export type ProvingJobFilter = { allowList: ProvingRequestType[]; }; export type GetProvingJobResponse = { job: ProvingJob; time: number; }; /** * An interface for proving agents to request jobs and report results */ export interface ProvingJobConsumer { /** * Gets a proving job to work on * @param filter - Optional filter for the type of job to get */ getProvingJob(filter?: ProvingJobFilter): Promise; /** * Marks a proving job as successful * @param id - The ID of the job to report success for * @param result - The result of the job */ reportProvingJobSuccess(id: ProvingJobId, result: ProofUri, filter?: ProvingJobFilter): Promise; /** * Marks a proving job as errored * @param id - The ID of the job to report an error for * @param err - The error that occurred while processing the job * @param retry - Whether to retry the job */ reportProvingJobError(id: ProvingJobId, err: string, retry?: boolean, filter?: ProvingJobFilter): Promise; /** * Sends a heartbeat to the broker to indicate that the agent is still working on the given proving job * @param id - The ID of the job to report progress for * @param startedAt - The unix epoch when the job was started * @param filter - Optional filter for the type of job to get */ reportProvingJobProgress(id: ProvingJobId, startedAt: number, filter?: ProvingJobFilter): Promise; } export interface ProvingJobBroker extends ProvingJobProducer, ProvingJobConsumer { } /** * Debug interface for replaying proving jobs from stored inputs. * Used for benchmarking different agent configurations against the same workload. */ export interface ProvingJobBrokerDebug { /** * Replays a proving job by re-enqueuing it with inputs from the configured proof store. * The proof type is parsed from the job ID (format: epoch:typeName:hash). * @param jobId - The original job ID to replay * @param epochNumber - The epoch number to assign * @param inputsUri - The proof inputs location */ replayProvingJob(jobId: ProvingJobId, type: ProvingRequestType, epochNumber: EpochNumber, inputsUri: ProofUri): Promise; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWJyb2tlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvcHJvdmVyLWJyb2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0Y7O0dBRUc7QUFDSCxNQUFNLFdBQVcsa0JBQWtCO0lBQ2pDOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLEdBQUcsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFOUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEQ7OztPQUdHO0lBQ0gsbUJBQW1CLENBQUMsRUFBRSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVqRTs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0NBQ2hFO0FBRUQsTUFBTSxNQUFNLGdCQUFnQixHQUFHO0lBQzdCLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0NBQ2pDLENBQUM7QUFFRixNQUFNLE1BQU0scUJBQXFCLEdBQUc7SUFDbEMsR0FBRyxFQUFFLFVBQVUsQ0FBQztJQUNoQixJQUFJLEVBQUUsTUFBTSxDQUFDO0NBQ2QsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxXQUFXLGtCQUFrQjtJQUNqQzs7O09BR0c7SUFDSCxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBRXJGOzs7O09BSUc7SUFDSCx1QkFBdUIsQ0FDckIsRUFBRSxFQUFFLFlBQVksRUFDaEIsTUFBTSxFQUFFLFFBQVEsRUFDaEIsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCLEdBQ3hCLE9BQU8sQ0FBQyxxQkFBcUIsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUU5Qzs7Ozs7T0FLRztJQUNILHFCQUFxQixDQUNuQixFQUFFLEVBQUUsWUFBWSxFQUNoQixHQUFHLEVBQUUsTUFBTSxFQUNYLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFDZixNQUFNLENBQUMsRUFBRSxnQkFBZ0IsR0FDeEIsT0FBTyxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBRTlDOzs7OztPQUtHO0lBQ0gsd0JBQXdCLENBQ3RCLEVBQUUsRUFBRSxZQUFZLEVBQ2hCLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixHQUN4QixPQUFPLENBQUMscUJBQXFCLEdBQUcsU0FBUyxDQUFDLENBQUM7Q0FDL0M7QUFFRCxNQUFNLFdBQVcsZ0JBQWlCLFNBQVEsa0JBQWtCLEVBQUUsa0JBQWtCO0NBQUc7QUFFbkY7OztHQUdHO0FBQ0gsTUFBTSxXQUFXLHFCQUFxQjtJQUNwQzs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FDZCxLQUFLLEVBQUUsWUFBWSxFQUNuQixJQUFJLEVBQUUsa0JBQWtCLEVBQ3hCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLFNBQVMsRUFBRSxRQUFRLEdBQ2xCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0NBQzlCIn0=