import { type ForeignCallHandler } from '@aztec-foundation/noir-acvm_js'; import type { InputMap } from '@aztec-foundation/noir-types'; import { type Logger, type LoggerBindings } from '@aztec-labs/foundation/log'; import type { FunctionArtifactWithContractName } from '@aztec-labs/stdlib/abi'; import type { NoirCompiledCircuitWithName } from '@aztec-labs/stdlib/noir'; import type { ACIRCallback, ACIRExecutionResult } from './acvm/acvm.js'; import type { ACVMWitness } from './acvm/acvm_types.js'; import type { CircuitSimulator, ProtocolCircuitResult } from './circuit_simulator.js'; export declare enum ACVM_RESULT { SUCCESS = 0, FAILURE = 1 } export type ACVMSuccess = { status: ACVM_RESULT.SUCCESS; duration: number; witness: Map; }; export type ACVMFailure = { status: ACVM_RESULT.FAILURE; reason: string; }; export type ACVMResult = ACVMSuccess | ACVMFailure; export declare class NativeACVMSimulator implements CircuitSimulator { private workingDirectory; private pathToNoirExecute; private witnessFilename?; private logger; /** * Artifacts are rewritten and written to disk once per circuit rather than per execution: they run * to tens of megabytes, and `noir-execute` reads the artifact from a path. */ private artifactPaths; constructor(workingDirectory: string, pathToNoirExecute: string, witnessFilename?: string | undefined, loggerOrBindings?: Logger | LoggerBindings); executeProtocolCircuit(inputs: InputMap, artifact: NoirCompiledCircuitWithName, callback: ForeignCallHandler | undefined): Promise>; executeProtocolCircuitToWitness(input: ACVMWitness, artifact: NoirCompiledCircuitWithName, callback: ForeignCallHandler | undefined): Promise; executeUserCircuit(_input: ACVMWitness, _artifact: FunctionArtifactWithContractName, _callback: ACIRCallback): Promise; private rejectForeignCalls; /** Spawns `noir-execute`, resolving once the circuit has been solved. */ private run; /** * Writes the artifact in the shape `noir-execute` expects, reusing the file across executions of * the same circuit. Keyed on the fields that distinguish a circuit's compiled output, since * simulated and real variants of a circuit share a name. */ private getArtifactPath; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN2bV9uYXRpdmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcml2YXRlL2Fjdm1fbmF0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFxQixNQUFNLGdDQUFnQyxDQUFDO0FBRTVGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzdELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBRSxLQUFLLGNBQWMsRUFBaUIsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RixPQUFPLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9FLE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFPM0UsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RixvQkFBWSxXQUFXO0lBQ3JCLE9BQU8sSUFBQTtJQUNQLE9BQU8sSUFBQTtDQUNSO0FBRUQsTUFBTSxNQUFNLFdBQVcsR0FBRztJQUN4QixNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUM1QixRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQzlCLENBQUM7QUFFRixNQUFNLE1BQU0sV0FBVyxHQUFHO0lBQ3hCLE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDO0lBQzVCLE1BQU0sRUFBRSxNQUFNLENBQUM7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sTUFBTSxVQUFVLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQztBQWFuRCxxQkFBYSxtQkFBb0IsWUFBVyxnQkFBZ0I7SUFTeEQsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsaUJBQWlCO0lBQ3pCLE9BQU8sQ0FBQyxlQUFlLENBQUM7SUFWMUIsT0FBTyxDQUFDLE1BQU0sQ0FBUztJQUN2Qjs7O09BR0c7SUFDSCxPQUFPLENBQUMsYUFBYSxDQUFzQztJQUUzRCxZQUNVLGdCQUFnQixFQUFFLE1BQU0sRUFDeEIsaUJBQWlCLEVBQUUsTUFBTSxFQUN6QixlQUFlLENBQUMsb0JBQVEsRUFDaEMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEdBQUcsY0FBYyxFQUczQztJQUVLLHNCQUFzQixDQUFDLFVBQVUsRUFDckMsTUFBTSxFQUFFLFFBQVEsRUFDaEIsUUFBUSxFQUFFLDJCQUEyQixFQUNyQyxRQUFRLEVBQUUsa0JBQWtCLEdBQUcsU0FBUyxHQUN2QyxPQUFPLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0EyQjVDO0lBRUssK0JBQStCLENBQ25DLEtBQUssRUFBRSxXQUFXLEVBQ2xCLFFBQVEsRUFBRSwyQkFBMkIsRUFDckMsUUFBUSxFQUFFLGtCQUFrQixHQUFHLFNBQVMsR0FDdkMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQTBCdEI7SUFFRCxrQkFBa0IsQ0FDaEIsTUFBTSxFQUFFLFdBQVcsRUFDbkIsU0FBUyxFQUFFLGdDQUFnQyxFQUMzQyxTQUFTLEVBQUUsWUFBWSxHQUN0QixPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FFOUI7SUFFRCxPQUFPLENBQUMsa0JBQWtCO0lBTTFCLHlFQUF5RTtJQUN6RSxPQUFPLENBQUMsR0FBRztJQW9DWDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLGVBQWU7Q0E0Q3hCIn0=