@aztec/prover-client 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +1 -0
  2. package/dest/config.d.ts +21 -0
  3. package/dest/config.d.ts.map +1 -0
  4. package/dest/config.js +31 -0
  5. package/dest/index.d.ts +4 -0
  6. package/dest/index.d.ts.map +1 -0
  7. package/dest/index.js +3 -0
  8. package/dest/mocks/fixtures.d.ts +22 -0
  9. package/dest/mocks/fixtures.d.ts.map +1 -0
  10. package/dest/mocks/fixtures.js +95 -0
  11. package/dest/mocks/test_context.d.ts +32 -0
  12. package/dest/mocks/test_context.d.ts.map +1 -0
  13. package/dest/mocks/test_context.js +116 -0
  14. package/dest/orchestrator/block-building-helpers.d.ts +36 -0
  15. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -0
  16. package/dest/orchestrator/block-building-helpers.js +236 -0
  17. package/dest/orchestrator/orchestrator.d.ts +113 -0
  18. package/dest/orchestrator/orchestrator.d.ts.map +1 -0
  19. package/dest/orchestrator/orchestrator.js +574 -0
  20. package/dest/orchestrator/proving-state.d.ts +68 -0
  21. package/dest/orchestrator/proving-state.d.ts.map +1 -0
  22. package/dest/orchestrator/proving-state.js +142 -0
  23. package/dest/orchestrator/tx-proving-state.d.ts +35 -0
  24. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -0
  25. package/dest/orchestrator/tx-proving-state.js +92 -0
  26. package/dest/prover-agent/index.d.ts +4 -0
  27. package/dest/prover-agent/index.d.ts.map +1 -0
  28. package/dest/prover-agent/index.js +4 -0
  29. package/dest/prover-agent/memory-proving-queue.d.ts +64 -0
  30. package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -0
  31. package/dest/prover-agent/memory-proving-queue.js +187 -0
  32. package/dest/prover-agent/prover-agent.d.ts +30 -0
  33. package/dest/prover-agent/prover-agent.d.ts.map +1 -0
  34. package/dest/prover-agent/prover-agent.js +115 -0
  35. package/dest/prover-agent/proving-error.d.ts +5 -0
  36. package/dest/prover-agent/proving-error.d.ts.map +1 -0
  37. package/dest/prover-agent/proving-error.js +9 -0
  38. package/dest/prover-agent/rpc.d.ts +5 -0
  39. package/dest/prover-agent/rpc.d.ts.map +1 -0
  40. package/dest/prover-agent/rpc.js +53 -0
  41. package/dest/tx-prover/tx-prover.d.ts +65 -0
  42. package/dest/tx-prover/tx-prover.d.ts.map +1 -0
  43. package/dest/tx-prover/tx-prover.js +122 -0
  44. package/package.json +87 -0
  45. package/src/config.ts +59 -0
  46. package/src/index.ts +4 -0
  47. package/src/mocks/fixtures.ts +182 -0
  48. package/src/mocks/test_context.ts +217 -0
  49. package/src/orchestrator/block-building-helpers.ts +470 -0
  50. package/src/orchestrator/orchestrator.ts +883 -0
  51. package/src/orchestrator/proving-state.ts +210 -0
  52. package/src/orchestrator/tx-proving-state.ts +139 -0
  53. package/src/prover-agent/index.ts +3 -0
  54. package/src/prover-agent/memory-proving-queue.ts +303 -0
  55. package/src/prover-agent/prover-agent.ts +144 -0
  56. package/src/prover-agent/proving-error.ts +9 -0
  57. package/src/prover-agent/rpc.ts +91 -0
  58. package/src/tx-prover/tx-prover.ts +171 -0
@@ -0,0 +1,68 @@
1
+ import { type L2Block, type MerkleTreeId, type ProvingResult } from '@aztec/circuit-types';
2
+ import { type AppendOnlyTreeSnapshot, type BaseOrMergeRollupPublicInputs, type Fr, type GlobalVariables, type L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_PROOF_LENGTH, type NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, type Proof, type RECURSIVE_PROOF_LENGTH, type RecursiveProof, type RootParityInput, type RootRollupPublicInputs, type VerificationKeyAsFields, type VerificationKeys } from '@aztec/circuits.js';
3
+ import { type Tuple } from '@aztec/foundation/serialize';
4
+ import { type TxProvingState } from './tx-proving-state.js';
5
+ export type MergeRollupInputData = {
6
+ inputs: [BaseOrMergeRollupPublicInputs | undefined, BaseOrMergeRollupPublicInputs | undefined];
7
+ proofs: [
8
+ RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH> | undefined,
9
+ RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH> | undefined
10
+ ];
11
+ verificationKeys: [VerificationKeyAsFields | undefined, VerificationKeyAsFields | undefined];
12
+ };
13
+ export type TreeSnapshots = Map<MerkleTreeId, AppendOnlyTreeSnapshot>;
14
+ /**
15
+ * The current state of the proving schedule. Contains the raw inputs (txs) and intermediate state to generate every constituent proof in the tree.
16
+ * Carries an identifier so we can identify if the proving state is discarded and a new one started.
17
+ * Captures resolve and reject callbacks to provide a promise base interface to the consumer of our proving.
18
+ */
19
+ export declare class ProvingState {
20
+ readonly totalNumTxs: number;
21
+ private completionCallback;
22
+ private rejectionCallback;
23
+ readonly globalVariables: GlobalVariables;
24
+ readonly newL1ToL2Messages: Tuple<Fr, typeof NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP>;
25
+ readonly messageTreeSnapshot: AppendOnlyTreeSnapshot;
26
+ readonly messageTreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>;
27
+ readonly privateKernelVerificationKeys: VerificationKeys;
28
+ private provingStateLifecycle;
29
+ private mergeRollupInputs;
30
+ private rootParityInputs;
31
+ private finalRootParityInputs;
32
+ rootRollupPublicInputs: RootRollupPublicInputs | undefined;
33
+ finalAggregationObject: Fr[] | undefined;
34
+ finalProof: Proof | undefined;
35
+ block: L2Block | undefined;
36
+ private txs;
37
+ constructor(totalNumTxs: number, completionCallback: (result: ProvingResult) => void, rejectionCallback: (reason: string) => void, globalVariables: GlobalVariables, newL1ToL2Messages: Tuple<Fr, typeof NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP>, numRootParityInputs: number, messageTreeSnapshot: AppendOnlyTreeSnapshot, messageTreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>, privateKernelVerificationKeys: VerificationKeys);
38
+ get numMergeLevels(): bigint;
39
+ addNewTx(tx: TxProvingState): number;
40
+ get transactionsReceived(): number;
41
+ get finalRootParityInput(): RootParityInput<typeof NESTED_RECURSIVE_PROOF_LENGTH> | undefined;
42
+ set finalRootParityInput(input: RootParityInput<typeof NESTED_RECURSIVE_PROOF_LENGTH> | undefined);
43
+ get rootParityInput(): (RootParityInput<93> | undefined)[];
44
+ verifyState(): boolean;
45
+ isAcceptingTransactions(): boolean;
46
+ get allTxs(): TxProvingState[];
47
+ /**
48
+ * Stores the inputs to a merge circuit and determines if the circuit is ready to be executed
49
+ * @param mergeInputs - The inputs to store
50
+ * @param indexWithinMerge - The index in the set of inputs to this merge circuit
51
+ * @param indexOfMerge - The global index of this merge circuit
52
+ * @returns True if the merge circuit is ready to be executed, false otherwise
53
+ */
54
+ storeMergeInputs(mergeInputs: [
55
+ BaseOrMergeRollupPublicInputs,
56
+ RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>,
57
+ VerificationKeyAsFields
58
+ ], indexWithinMerge: number, indexOfMerge: number): boolean;
59
+ getTxProvingState(txIndex: number): TxProvingState;
60
+ getMergeInputs(indexOfMerge: number): MergeRollupInputData;
61
+ isReadyForRootRollup(): boolean;
62
+ setRootParityInputs(inputs: RootParityInput<typeof RECURSIVE_PROOF_LENGTH>, index: number): void;
63
+ areRootParityInputsReady(): boolean;
64
+ cancel(): void;
65
+ reject(reason: string): void;
66
+ resolve(result: ProvingResult): void;
67
+ }
68
+ //# sourceMappingURL=proving-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/proving-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ var PROVING_STATE_LIFECYCLE;
2
+ (function (PROVING_STATE_LIFECYCLE) {
3
+ PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_CREATED"] = 0] = "PROVING_STATE_CREATED";
4
+ PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_FULL"] = 1] = "PROVING_STATE_FULL";
5
+ PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_RESOLVED"] = 2] = "PROVING_STATE_RESOLVED";
6
+ PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_REJECTED"] = 3] = "PROVING_STATE_REJECTED";
7
+ })(PROVING_STATE_LIFECYCLE || (PROVING_STATE_LIFECYCLE = {}));
8
+ /**
9
+ * The current state of the proving schedule. Contains the raw inputs (txs) and intermediate state to generate every constituent proof in the tree.
10
+ * Carries an identifier so we can identify if the proving state is discarded and a new one started.
11
+ * Captures resolve and reject callbacks to provide a promise base interface to the consumer of our proving.
12
+ */
13
+ export class ProvingState {
14
+ constructor(totalNumTxs, completionCallback, rejectionCallback, globalVariables, newL1ToL2Messages, numRootParityInputs, messageTreeSnapshot, messageTreeRootSiblingPath, privateKernelVerificationKeys) {
15
+ this.totalNumTxs = totalNumTxs;
16
+ this.completionCallback = completionCallback;
17
+ this.rejectionCallback = rejectionCallback;
18
+ this.globalVariables = globalVariables;
19
+ this.newL1ToL2Messages = newL1ToL2Messages;
20
+ this.messageTreeSnapshot = messageTreeSnapshot;
21
+ this.messageTreeRootSiblingPath = messageTreeRootSiblingPath;
22
+ this.privateKernelVerificationKeys = privateKernelVerificationKeys;
23
+ this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
24
+ this.mergeRollupInputs = [];
25
+ this.rootParityInputs = [];
26
+ this.txs = [];
27
+ this.rootParityInputs = Array.from({ length: numRootParityInputs }).map(_ => undefined);
28
+ }
29
+ // Returns the number of levels of merge rollups
30
+ get numMergeLevels() {
31
+ return BigInt(Math.ceil(Math.log2(this.totalNumTxs)) - 1);
32
+ }
33
+ // Adds a transaction to the proving state, returns it's index
34
+ // Will update the proving life cycle if this is the last transaction
35
+ addNewTx(tx) {
36
+ this.txs.push(tx);
37
+ if (this.txs.length === this.totalNumTxs) {
38
+ this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_FULL;
39
+ }
40
+ return this.txs.length - 1;
41
+ }
42
+ // Returns the number of received transactions
43
+ get transactionsReceived() {
44
+ return this.txs.length;
45
+ }
46
+ // Returns the final set of root parity inputs
47
+ get finalRootParityInput() {
48
+ return this.finalRootParityInputs;
49
+ }
50
+ // Sets the final set of root parity inputs
51
+ set finalRootParityInput(input) {
52
+ this.finalRootParityInputs = input;
53
+ }
54
+ // Returns the set of root parity inputs
55
+ get rootParityInput() {
56
+ return this.rootParityInputs;
57
+ }
58
+ // Returns true if this proving state is still valid, false otherwise
59
+ verifyState() {
60
+ return (this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED ||
61
+ this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_FULL);
62
+ }
63
+ // Returns true if we are still able to accept transactions, false otherwise
64
+ isAcceptingTransactions() {
65
+ return this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
66
+ }
67
+ // Returns the complete set of transaction proving state objects
68
+ get allTxs() {
69
+ return this.txs;
70
+ }
71
+ /**
72
+ * Stores the inputs to a merge circuit and determines if the circuit is ready to be executed
73
+ * @param mergeInputs - The inputs to store
74
+ * @param indexWithinMerge - The index in the set of inputs to this merge circuit
75
+ * @param indexOfMerge - The global index of this merge circuit
76
+ * @returns True if the merge circuit is ready to be executed, false otherwise
77
+ */
78
+ storeMergeInputs(mergeInputs, indexWithinMerge, indexOfMerge) {
79
+ if (!this.mergeRollupInputs[indexOfMerge]) {
80
+ const mergeInputData = {
81
+ inputs: [undefined, undefined],
82
+ proofs: [undefined, undefined],
83
+ verificationKeys: [undefined, undefined],
84
+ };
85
+ mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
86
+ mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
87
+ mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
88
+ this.mergeRollupInputs[indexOfMerge] = mergeInputData;
89
+ return false;
90
+ }
91
+ const mergeInputData = this.mergeRollupInputs[indexOfMerge];
92
+ mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
93
+ mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
94
+ mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
95
+ return true;
96
+ }
97
+ // Returns a specific transaction proving state
98
+ getTxProvingState(txIndex) {
99
+ return this.txs[txIndex];
100
+ }
101
+ // Returns a set of merge rollup inputs
102
+ getMergeInputs(indexOfMerge) {
103
+ return this.mergeRollupInputs[indexOfMerge];
104
+ }
105
+ // Returns true if we have sufficient inputs to execute the root rollup
106
+ isReadyForRootRollup() {
107
+ return !(this.mergeRollupInputs[0] === undefined ||
108
+ this.finalRootParityInput === undefined ||
109
+ this.mergeRollupInputs[0].inputs.findIndex(p => !p) !== -1);
110
+ }
111
+ // Stores a set of root parity inputs at the given index
112
+ setRootParityInputs(inputs, index) {
113
+ this.rootParityInputs[index] = inputs;
114
+ }
115
+ // Returns true if we have sufficient root parity inputs to execute the root parity circuit
116
+ areRootParityInputsReady() {
117
+ return this.rootParityInputs.findIndex(p => !p) === -1;
118
+ }
119
+ // Attempts to reject the proving state promise with a reason of 'cancelled'
120
+ cancel() {
121
+ this.reject('Proving cancelled');
122
+ }
123
+ // Attempts to reject the proving state promise with the given reason
124
+ // Does nothing if not in a valid state
125
+ reject(reason) {
126
+ if (!this.verifyState()) {
127
+ return;
128
+ }
129
+ this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_REJECTED;
130
+ this.rejectionCallback(reason);
131
+ }
132
+ // Attempts to resolve the proving state promise with the given result
133
+ // Does nothing if not in a valid state
134
+ resolve(result) {
135
+ if (!this.verifyState()) {
136
+ return;
137
+ }
138
+ this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_RESOLVED;
139
+ this.completionCallback(result);
140
+ }
141
+ }
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZy1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQ0EsSUFBSyx1QkFLSjtBQUxELFdBQUssdUJBQXVCO0lBQzFCLHVHQUFxQixDQUFBO0lBQ3JCLGlHQUFrQixDQUFBO0lBQ2xCLHlHQUFzQixDQUFBO0lBQ3RCLHlHQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFMSSx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBSzNCO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBVXZCLFlBQ2tCLFdBQW1CLEVBQzNCLGtCQUFtRCxFQUNuRCxpQkFBMkMsRUFDbkMsZUFBZ0MsRUFDaEMsaUJBQXdFLEVBQ3hGLG1CQUEyQixFQUNYLG1CQUEyQyxFQUMzQywwQkFBc0YsRUFDdEYsNkJBQStDO1FBUi9DLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQzNCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBaUM7UUFDbkQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUNuQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF1RDtRQUV4RSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEQ7UUFDdEYsa0NBQTZCLEdBQTdCLDZCQUE2QixDQUFrQjtRQWxCekQsMEJBQXFCLEdBQUcsdUJBQXVCLENBQUMscUJBQXFCLENBQUM7UUFDdEUsc0JBQWlCLEdBQTJCLEVBQUUsQ0FBQztRQUMvQyxxQkFBZ0IsR0FBc0UsRUFBRSxDQUFDO1FBTXpGLFFBQUcsR0FBcUIsRUFBRSxDQUFDO1FBWWpDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELElBQVcsY0FBYztRQUN2QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDhEQUE4RDtJQUM5RCxxRUFBcUU7SUFDOUQsUUFBUSxDQUFDLEVBQWtCO1FBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQztRQUMxRSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELDhDQUE4QztJQUM5QyxJQUFXLG9CQUFvQjtRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxJQUFXLG9CQUFvQixDQUFDLEtBQXdFO1FBQ3RHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELHFFQUFxRTtJQUM5RCxXQUFXO1FBQ2hCLE9BQU8sQ0FDTCxJQUFJLENBQUMscUJBQXFCLEtBQUssdUJBQXVCLENBQUMscUJBQXFCO1lBQzVFLElBQUksQ0FBQyxxQkFBcUIsS0FBSyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FDMUUsQ0FBQztJQUNKLENBQUM7SUFFRCw0RUFBNEU7SUFDckUsdUJBQXVCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixLQUFLLHVCQUF1QixDQUFDLHFCQUFxQixDQUFDO0lBQ3RGLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxnQkFBZ0IsQ0FDckIsV0FJQyxFQUNELGdCQUF3QixFQUN4QixZQUFvQjtRQUVwQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDMUMsTUFBTSxjQUFjLEdBQXlCO2dCQUMzQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO2dCQUM5QixNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO2dCQUM5QixnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7YUFDekMsQ0FBQztZQUNGLGNBQWMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekQsY0FBYyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxjQUFjLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxHQUFHLGNBQWMsQ0FBQztZQUN0RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUQsY0FBYyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxjQUFjLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwrQ0FBK0M7SUFDeEMsaUJBQWlCLENBQUMsT0FBZTtRQUN0QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELHVDQUF1QztJQUNoQyxjQUFjLENBQUMsWUFBb0I7UUFDeEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELHVFQUF1RTtJQUNoRSxvQkFBb0I7UUFDekIsT0FBTyxDQUFDLENBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVM7WUFDdkMsSUFBSSxDQUFDLG9CQUFvQixLQUFLLFNBQVM7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUMzRCxDQUFDO0lBQ0osQ0FBQztJQUVELHdEQUF3RDtJQUNqRCxtQkFBbUIsQ0FBQyxNQUFzRCxFQUFFLEtBQWE7UUFDOUYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUN4QyxDQUFDO0lBRUQsMkZBQTJGO0lBQ3BGLHdCQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCw0RUFBNEU7SUFDckUsTUFBTTtRQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLHVDQUF1QztJQUNoQyxNQUFNLENBQUMsTUFBYztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsdUJBQXVCLENBQUMsc0JBQXNCLENBQUM7UUFDNUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsdUNBQXVDO0lBQ2hDLE9BQU8sQ0FBQyxNQUFxQjtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsdUJBQXVCLENBQUMsc0JBQXNCLENBQUM7UUFDNUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDRiJ9
@@ -0,0 +1,35 @@
1
+ import { type AvmProvingRequest, type MerkleTreeId, type ProcessedTx, type PublicKernelRequest, PublicKernelType } from '@aztec/circuit-types';
2
+ import { type AppendOnlyTreeSnapshot, type BaseRollupInputs, NESTED_RECURSIVE_PROOF_LENGTH, type Proof, type RecursiveProof, type VerificationKeyData } from '@aztec/circuits.js';
3
+ export declare enum TX_PROVING_CODE {
4
+ NOT_READY = 0,
5
+ READY = 1,
6
+ COMPLETED = 2
7
+ }
8
+ export type PublicFunction = {
9
+ vmRequest: AvmProvingRequest | undefined;
10
+ vmProof: Proof | undefined;
11
+ previousProofType: PublicKernelType;
12
+ previousKernelProven: boolean;
13
+ publicKernelRequest: PublicKernelRequest;
14
+ };
15
+ export type TxProvingInstruction = {
16
+ code: TX_PROVING_CODE;
17
+ function: PublicFunction | undefined;
18
+ };
19
+ /**
20
+ * Helper class to manage the proving cycle of a transaction
21
+ * This includes the public VMs and the public kernels
22
+ * Also stores the inputs to the base rollup for this transaction and the tree snapshots
23
+ */
24
+ export declare class TxProvingState {
25
+ readonly processedTx: ProcessedTx;
26
+ readonly baseRollupInputs: BaseRollupInputs;
27
+ readonly treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>;
28
+ private publicFunctions;
29
+ constructor(processedTx: ProcessedTx, baseRollupInputs: BaseRollupInputs, treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>, privateKernelVk: VerificationKeyData);
30
+ getNextPublicKernelFromKernelProof(provenIndex: number, proof: RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>, verificationKey: VerificationKeyData): TxProvingInstruction;
31
+ getNextPublicKernelFromVMProof(provenIndex: number, proof: Proof): TxProvingInstruction;
32
+ getPublicFunctionState(functionIndex: number): PublicFunction;
33
+ getNumPublicKernels(): number;
34
+ }
35
+ //# sourceMappingURL=tx-proving-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/tx-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,6BAA6B,EAC7B,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAEzB,MAAM,oBAAoB,CAAC;AAE5B,oBAAY,eAAe;IACzB,SAAS,IAAA;IACT,KAAK,IAAA;IACL,SAAS,IAAA;CACV;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC;IAC3B,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C,CAAC;AAIF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,cAAc;aAIP,WAAW,EAAE,WAAW;aACxB,gBAAgB,EAAE,gBAAgB;aAClC,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAL1E,OAAO,CAAC,eAAe,CAAwB;gBAG7B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC,EACxE,eAAe,EAAE,mBAAmB;IA6B/B,kCAAkC,CACvC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,cAAc,CAAC,OAAO,6BAA6B,CAAC,EAC3D,eAAe,EAAE,mBAAmB,GACnC,oBAAoB;IA6BhB,8BAA8B,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,oBAAoB;IAcvF,sBAAsB,CAAC,aAAa,EAAE,MAAM;IAQ5C,mBAAmB;CAG3B"}
@@ -0,0 +1,92 @@
1
+ import { AVM_REQUEST, PublicKernelType, } from '@aztec/circuit-types';
2
+ import { NESTED_RECURSIVE_PROOF_LENGTH, makeRecursiveProofFromBinary, } from '@aztec/circuits.js';
3
+ export var TX_PROVING_CODE;
4
+ (function (TX_PROVING_CODE) {
5
+ TX_PROVING_CODE[TX_PROVING_CODE["NOT_READY"] = 0] = "NOT_READY";
6
+ TX_PROVING_CODE[TX_PROVING_CODE["READY"] = 1] = "READY";
7
+ TX_PROVING_CODE[TX_PROVING_CODE["COMPLETED"] = 2] = "COMPLETED";
8
+ })(TX_PROVING_CODE || (TX_PROVING_CODE = {}));
9
+ /**
10
+ * Helper class to manage the proving cycle of a transaction
11
+ * This includes the public VMs and the public kernels
12
+ * Also stores the inputs to the base rollup for this transaction and the tree snapshots
13
+ */
14
+ export class TxProvingState {
15
+ constructor(processedTx, baseRollupInputs, treeSnapshots, privateKernelVk) {
16
+ this.processedTx = processedTx;
17
+ this.baseRollupInputs = baseRollupInputs;
18
+ this.treeSnapshots = treeSnapshots;
19
+ this.publicFunctions = [];
20
+ let previousKernelProof = makeRecursiveProofFromBinary(processedTx.proof, NESTED_RECURSIVE_PROOF_LENGTH);
21
+ let previousProofType = PublicKernelType.NON_PUBLIC;
22
+ for (let i = 0; i < processedTx.publicProvingRequests.length; i++) {
23
+ const provingRequest = processedTx.publicProvingRequests[i];
24
+ const kernelRequest = provingRequest.type === AVM_REQUEST ? provingRequest.kernelRequest : provingRequest;
25
+ // the first circuit has a valid previous proof, it came from private
26
+ if (previousKernelProof) {
27
+ kernelRequest.inputs.previousKernel.proof = previousKernelProof;
28
+ kernelRequest.inputs.previousKernel.vk = privateKernelVk;
29
+ }
30
+ const vmRequest = provingRequest.type === AVM_REQUEST ? provingRequest : undefined;
31
+ const publicFunction = {
32
+ vmRequest,
33
+ vmProof: undefined,
34
+ previousProofType,
35
+ previousKernelProven: i === 0,
36
+ publicKernelRequest: kernelRequest,
37
+ };
38
+ this.publicFunctions.push(publicFunction);
39
+ previousKernelProof = undefined;
40
+ previousProofType = kernelRequest.type;
41
+ }
42
+ }
43
+ // Updates the transaction's proving state after completion of a kernel proof
44
+ // Returns an instruction as to the next stage of tx proving
45
+ getNextPublicKernelFromKernelProof(provenIndex, proof, verificationKey) {
46
+ const kernelRequest = this.getPublicFunctionState(provenIndex).publicKernelRequest;
47
+ const nextKernelIndex = provenIndex + 1;
48
+ if (nextKernelIndex >= this.publicFunctions.length) {
49
+ // The next kernel index is greater than our set of functions, we are done!
50
+ return { code: TX_PROVING_CODE.COMPLETED, function: undefined };
51
+ }
52
+ // There is more work to do, are we ready?
53
+ const nextFunction = this.publicFunctions[nextKernelIndex];
54
+ // pass both the proof and verification key forward to the next circuit
55
+ nextFunction.publicKernelRequest.inputs.previousKernel.proof = proof;
56
+ nextFunction.publicKernelRequest.inputs.previousKernel.vk = verificationKey;
57
+ // We need to update this so the state machine knows this proof is ready
58
+ nextFunction.previousKernelProven = true;
59
+ nextFunction.previousProofType = kernelRequest.type;
60
+ if (nextFunction.vmProof === undefined) {
61
+ // The VM proof for the next function is not ready
62
+ return { code: TX_PROVING_CODE.NOT_READY, function: undefined };
63
+ }
64
+ // The VM proof is ready, we can continue
65
+ return { code: TX_PROVING_CODE.READY, function: nextFunction };
66
+ }
67
+ // Updates the transaction's proving state after completion of a VM proof
68
+ // Returns an instruction as to the next stage of tx proving
69
+ getNextPublicKernelFromVMProof(provenIndex, proof) {
70
+ const provenFunction = this.publicFunctions[provenIndex];
71
+ provenFunction.vmProof = proof;
72
+ if (!provenFunction.previousKernelProven) {
73
+ // The previous kernel is not yet ready
74
+ return { code: TX_PROVING_CODE.NOT_READY, function: undefined };
75
+ }
76
+ // The previous kernel is ready so we can prove this kernel
77
+ return { code: TX_PROVING_CODE.READY, function: provenFunction };
78
+ }
79
+ // Returns the public function state at the given index
80
+ // Throws if out of bounds
81
+ getPublicFunctionState(functionIndex) {
82
+ if (functionIndex < 0 || functionIndex >= this.publicFunctions.length) {
83
+ throw new Error(`Requested public function index was out of bounds`);
84
+ }
85
+ return this.publicFunctions[functionIndex];
86
+ }
87
+ // Returns the number of public kernels required by this transaction
88
+ getNumPublicKernels() {
89
+ return this.publicFunctions.length;
90
+ }
91
+ }
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgtcHJvdmluZy1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvdHgtcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUtYLGdCQUFnQixHQUNqQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFHTCw2QkFBNkIsRUFJN0IsNEJBQTRCLEdBQzdCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsTUFBTSxDQUFOLElBQVksZUFJWDtBQUpELFdBQVksZUFBZTtJQUN6QiwrREFBUyxDQUFBO0lBQ1QsdURBQUssQ0FBQTtJQUNMLCtEQUFTLENBQUE7QUFDWCxDQUFDLEVBSlcsZUFBZSxLQUFmLGVBQWUsUUFJMUI7QUFpQkQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ2tCLFdBQXdCLEVBQ3hCLGdCQUFrQyxFQUNsQyxhQUF3RCxFQUN4RSxlQUFvQztRQUhwQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUEyQztRQUxsRSxvQkFBZSxHQUFxQixFQUFFLENBQUM7UUFRN0MsSUFBSSxtQkFBbUIsR0FDckIsNEJBQTRCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ2pGLElBQUksaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDO1FBQ3BELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEUsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxJQUFJLEtBQUssV0FB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
@@ -0,0 +1,4 @@
1
+ export * from './prover-agent.js';
2
+ export * from './memory-proving-queue.js';
3
+ export * from './rpc.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prover-agent/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './prover-agent.js';
2
+ export * from './memory-proving-queue.js';
3
+ export * from './rpc.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmVyLWFnZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLFVBQVUsQ0FBQyJ9
@@ -0,0 +1,64 @@
1
+ import { type ProofAndVerificationKey, type ProvingJob, type ProvingJobSource, type ProvingRequest, type ProvingRequestResult, ProvingRequestType, type PublicInputsAndRecursiveProof, type PublicKernelNonTailRequest, type PublicKernelTailRequest, type ServerCircuitProver } from '@aztec/circuit-types';
2
+ import type { AvmCircuitInputs, BaseOrMergeRollupPublicInputs, BaseParityInputs, BaseRollupInputs, KernelCircuitPublicInputs, MergeRollupInputs, NESTED_RECURSIVE_PROOF_LENGTH, PrivateKernelEmptyInputData, PublicKernelCircuitPublicInputs, RECURSIVE_PROOF_LENGTH, RootParityInput, RootParityInputs, RootRollupInputs, RootRollupPublicInputs } from '@aztec/circuits.js';
3
+ /**
4
+ * A helper class that sits in between services that need proofs created and agents that can create them.
5
+ * The queue accumulates jobs and provides them to agents in FIFO order.
6
+ */
7
+ export declare class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource {
8
+ private generateId;
9
+ private log;
10
+ private queue;
11
+ private jobsInProgress;
12
+ constructor(generateId?: () => string);
13
+ getProvingJob({ timeoutSec }?: {
14
+ timeoutSec?: number | undefined;
15
+ }): Promise<ProvingJob<ProvingRequest> | undefined>;
16
+ resolveProvingJob<T extends ProvingRequestType>(jobId: string, result: ProvingRequestResult<T>): Promise<void>;
17
+ rejectProvingJob(jobId: string, err: any): Promise<void>;
18
+ private enqueue;
19
+ getEmptyPrivateKernelProof(inputs: PrivateKernelEmptyInputData, signal?: AbortSignal): Promise<PublicInputsAndRecursiveProof<KernelCircuitPublicInputs>>;
20
+ /**
21
+ * Creates a proof for the given input.
22
+ * @param input - Input to the circuit.
23
+ */
24
+ getBaseParityProof(inputs: BaseParityInputs, signal?: AbortSignal): Promise<RootParityInput<typeof RECURSIVE_PROOF_LENGTH>>;
25
+ /**
26
+ * Creates a proof for the given input.
27
+ * @param input - Input to the circuit.
28
+ */
29
+ getRootParityProof(inputs: RootParityInputs, signal?: AbortSignal): Promise<RootParityInput<typeof NESTED_RECURSIVE_PROOF_LENGTH>>;
30
+ /**
31
+ * Creates a proof for the given input.
32
+ * @param input - Input to the circuit.
33
+ */
34
+ getBaseRollupProof(input: BaseRollupInputs, signal?: AbortSignal): Promise<PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs>>;
35
+ /**
36
+ * Creates a proof for the given input.
37
+ * @param input - Input to the circuit.
38
+ */
39
+ getMergeRollupProof(input: MergeRollupInputs, signal?: AbortSignal): Promise<PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs>>;
40
+ /**
41
+ * Creates a proof for the given input.
42
+ * @param input - Input to the circuit.
43
+ */
44
+ getRootRollupProof(input: RootRollupInputs, signal?: AbortSignal): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>>;
45
+ /**
46
+ * Create a public kernel proof.
47
+ * @param kernelRequest - Object containing the details of the proof required
48
+ */
49
+ getPublicKernelProof(kernelRequest: PublicKernelNonTailRequest, signal?: AbortSignal): Promise<PublicInputsAndRecursiveProof<PublicKernelCircuitPublicInputs>>;
50
+ /**
51
+ * Create a public kernel tail proof.
52
+ * @param kernelRequest - Object containing the details of the proof required
53
+ */
54
+ getPublicTailProof(kernelRequest: PublicKernelTailRequest, signal?: AbortSignal): Promise<PublicInputsAndRecursiveProof<KernelCircuitPublicInputs>>;
55
+ /**
56
+ * Creates an AVM proof.
57
+ */
58
+ getAvmProof(inputs: AvmCircuitInputs, signal?: AbortSignal | undefined): Promise<ProofAndVerificationKey>;
59
+ /**
60
+ * Verifies a circuit proof
61
+ */
62
+ verifyProof(): Promise<void>;
63
+ }
64
+ //# sourceMappingURL=memory-proving-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-proving-queue.d.ts","sourceRoot":"","sources":["../../src/prover-agent/memory-proving-queue.ts"],"names":[],"mappings":"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"}