@aztec/prover-client 0.65.2 → 0.67.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 (98) hide show
  1. package/dest/block_builder/index.d.ts +6 -0
  2. package/dest/block_builder/index.d.ts.map +1 -0
  3. package/dest/block_builder/index.js +2 -0
  4. package/dest/block_builder/light.d.ts +32 -0
  5. package/dest/block_builder/light.d.ts.map +1 -0
  6. package/dest/block_builder/light.js +75 -0
  7. package/dest/index.d.ts +1 -2
  8. package/dest/index.d.ts.map +1 -1
  9. package/dest/index.js +2 -3
  10. package/dest/mocks/fixtures.d.ts +4 -5
  11. package/dest/mocks/fixtures.d.ts.map +1 -1
  12. package/dest/mocks/fixtures.js +4 -8
  13. package/dest/mocks/test_context.d.ts +30 -12
  14. package/dest/mocks/test_context.d.ts.map +1 -1
  15. package/dest/mocks/test_context.js +61 -24
  16. package/dest/orchestrator/block-building-helpers.d.ts +5 -5
  17. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  18. package/dest/orchestrator/block-building-helpers.js +10 -11
  19. package/dest/orchestrator/epoch-proving-state.d.ts +5 -6
  20. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  21. package/dest/orchestrator/epoch-proving-state.js +10 -12
  22. package/dest/orchestrator/orchestrator.d.ts +8 -6
  23. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  24. package/dest/orchestrator/orchestrator.js +85 -74
  25. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
  26. package/dest/orchestrator/orchestrator_metrics.js +2 -5
  27. package/dest/orchestrator/tx-proving-state.d.ts +0 -1
  28. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  29. package/dest/orchestrator/tx-proving-state.js +2 -34
  30. package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
  31. package/dest/prover-agent/memory-proving-queue.js +5 -4
  32. package/dest/prover-agent/prover-agent.d.ts.map +1 -1
  33. package/dest/prover-agent/prover-agent.js +3 -3
  34. package/dest/prover-client/factory.d.ts +6 -0
  35. package/dest/prover-client/factory.d.ts.map +1 -0
  36. package/dest/prover-client/factory.js +6 -0
  37. package/dest/prover-client/index.d.ts +3 -0
  38. package/dest/prover-client/index.d.ts.map +1 -0
  39. package/dest/prover-client/index.js +3 -0
  40. package/dest/{tx-prover/tx-prover.d.ts → prover-client/prover-client.d.ts} +8 -11
  41. package/dest/prover-client/prover-client.d.ts.map +1 -0
  42. package/dest/prover-client/prover-client.js +107 -0
  43. package/dest/proving_broker/caching_broker_facade.d.ts +12 -12
  44. package/dest/proving_broker/caching_broker_facade.d.ts.map +1 -1
  45. package/dest/proving_broker/caching_broker_facade.js +32 -29
  46. package/dest/proving_broker/factory.d.ts +2 -1
  47. package/dest/proving_broker/factory.d.ts.map +1 -1
  48. package/dest/proving_broker/factory.js +4 -4
  49. package/dest/proving_broker/proving_agent.d.ts +5 -0
  50. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  51. package/dest/proving_broker/proving_agent.js +15 -4
  52. package/dest/proving_broker/proving_agent_instrumentation.d.ts +8 -0
  53. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +1 -0
  54. package/dest/proving_broker/proving_agent_instrumentation.js +16 -0
  55. package/dest/proving_broker/proving_broker.d.ts +29 -5
  56. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  57. package/dest/proving_broker/proving_broker.js +142 -41
  58. package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -1
  59. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  60. package/dest/proving_broker/proving_broker_database/persisted.js +6 -2
  61. package/dest/proving_broker/proving_broker_instrumentation.d.ts +25 -0
  62. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -0
  63. package/dest/proving_broker/proving_broker_instrumentation.js +85 -0
  64. package/dest/proving_broker/rpc.d.ts.map +1 -1
  65. package/dest/proving_broker/rpc.js +3 -2
  66. package/dest/test/mock_prover.d.ts +3 -2
  67. package/dest/test/mock_prover.d.ts.map +1 -1
  68. package/dest/test/mock_prover.js +9 -5
  69. package/package.json +18 -13
  70. package/src/block_builder/index.ts +6 -0
  71. package/src/block_builder/light.ts +120 -0
  72. package/src/index.ts +1 -2
  73. package/src/mocks/fixtures.ts +6 -18
  74. package/src/mocks/test_context.ts +85 -29
  75. package/src/orchestrator/block-building-helpers.ts +13 -14
  76. package/src/orchestrator/epoch-proving-state.ts +10 -13
  77. package/src/orchestrator/orchestrator.ts +101 -81
  78. package/src/orchestrator/orchestrator_metrics.ts +1 -11
  79. package/src/orchestrator/tx-proving-state.ts +1 -56
  80. package/src/prover-agent/memory-proving-queue.ts +4 -3
  81. package/src/prover-agent/prover-agent.ts +2 -2
  82. package/src/{tx-prover → prover-client}/factory.ts +4 -3
  83. package/src/prover-client/index.ts +2 -0
  84. package/src/{tx-prover/tx-prover.ts → prover-client/prover-client.ts} +25 -15
  85. package/src/proving_broker/caching_broker_facade.ts +31 -15
  86. package/src/proving_broker/factory.ts +7 -3
  87. package/src/proving_broker/proving_agent.ts +18 -3
  88. package/src/proving_broker/proving_agent_instrumentation.ts +21 -0
  89. package/src/proving_broker/proving_broker.ts +182 -50
  90. package/src/proving_broker/proving_broker_database/persisted.ts +11 -2
  91. package/src/proving_broker/proving_broker_instrumentation.ts +123 -0
  92. package/src/proving_broker/rpc.ts +2 -1
  93. package/src/test/mock_prover.ts +8 -4
  94. package/dest/tx-prover/factory.d.ts +0 -6
  95. package/dest/tx-prover/factory.d.ts.map +0 -1
  96. package/dest/tx-prover/factory.js +0 -6
  97. package/dest/tx-prover/tx-prover.d.ts.map +0 -1
  98. package/dest/tx-prover/tx-prover.js +0 -110
@@ -1,6 +1,6 @@
1
1
  import { ProvingRequestType, } from '@aztec/circuit-types';
2
2
  import { sha256 } from '@aztec/foundation/crypto';
3
- import { createDebugLogger } from '@aztec/foundation/log';
3
+ import { createLogger } from '@aztec/foundation/log';
4
4
  import { retryUntil } from '@aztec/foundation/retry';
5
5
  import { InlineProofStore } from './proof_store.js';
6
6
  import { InMemoryProverCache } from './prover_cache/memory.js';
@@ -10,7 +10,7 @@ const MAX_WAIT_MS = 1200000;
10
10
  * A facade around a job broker that generates stable job ids and caches results
11
11
  */
12
12
  export class CachingBrokerFacade {
13
- constructor(broker, cache = new InMemoryProverCache(), proofStore = new InlineProofStore(), waitTimeoutMs = MAX_WAIT_MS, pollIntervalMs = 1000, log = createDebugLogger('aztec:prover-client:caching-prover-broker')) {
13
+ constructor(broker, cache = new InMemoryProverCache(), proofStore = new InlineProofStore(), waitTimeoutMs = MAX_WAIT_MS, pollIntervalMs = 1000, log = createLogger('prover-client:caching-prover-broker')) {
14
14
  this.broker = broker;
15
15
  this.cache = cache;
16
16
  this.proofStore = proofStore;
@@ -18,7 +18,7 @@ export class CachingBrokerFacade {
18
18
  this.pollIntervalMs = pollIntervalMs;
19
19
  this.log = log;
20
20
  }
21
- async enqueueAndWaitForJob(id, type, inputs, signal) {
21
+ async enqueueAndWaitForJob(id, type, inputs, epochNumber = 0, signal) {
22
22
  // first try the cache
23
23
  let jobEnqueued = false;
24
24
  try {
@@ -56,6 +56,7 @@ export class CachingBrokerFacade {
56
56
  id,
57
57
  type,
58
58
  inputsUri,
59
+ epochNumber,
59
60
  });
60
61
  await this.cache.setProvingJobStatus(id, { status: 'in-queue' });
61
62
  }
@@ -68,7 +69,7 @@ export class CachingBrokerFacade {
68
69
  // notify broker of cancelled job
69
70
  const abortFn = async () => {
70
71
  signal?.removeEventListener('abort', abortFn);
71
- await this.broker.removeAndCancelProvingJob(id);
72
+ await this.broker.cancelProvingJob(id);
72
73
  };
73
74
  signal?.addEventListener('abort', abortFn);
74
75
  try {
@@ -104,47 +105,49 @@ export class CachingBrokerFacade {
104
105
  }
105
106
  finally {
106
107
  signal?.removeEventListener('abort', abortFn);
108
+ // we've saved the result in our cache. We can tell the broker to clear its state
109
+ await this.broker.cleanUpProvingJobState(id);
107
110
  }
108
111
  }
109
- getAvmProof(inputs, signal, _blockNumber) {
110
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PUBLIC_VM, inputs), ProvingRequestType.PUBLIC_VM, inputs, signal);
112
+ getAvmProof(inputs, signal, epochNumber) {
113
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PUBLIC_VM, inputs), ProvingRequestType.PUBLIC_VM, inputs, epochNumber, signal);
111
114
  }
112
- getBaseParityProof(inputs, signal, _epochNumber) {
113
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BASE_PARITY, inputs), ProvingRequestType.BASE_PARITY, inputs, signal);
115
+ getBaseParityProof(inputs, signal, epochNumber) {
116
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BASE_PARITY, inputs), ProvingRequestType.BASE_PARITY, inputs, epochNumber, signal);
114
117
  }
115
- getBlockMergeRollupProof(input, signal, _epochNumber) {
116
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input), ProvingRequestType.BLOCK_MERGE_ROLLUP, input, signal);
118
+ getBlockMergeRollupProof(input, signal, epochNumber) {
119
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input), ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber, signal);
117
120
  }
118
- getBlockRootRollupProof(input, signal, _epochNumber) {
119
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input), ProvingRequestType.BLOCK_ROOT_ROLLUP, input, signal);
121
+ getBlockRootRollupProof(input, signal, epochNumber) {
122
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input), ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber, signal);
120
123
  }
121
- getEmptyBlockRootRollupProof(input, signal, _epochNumber) {
122
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input), ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input, signal);
124
+ getEmptyBlockRootRollupProof(input, signal, epochNumber) {
125
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input), ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input, epochNumber, signal);
123
126
  }
124
- getEmptyPrivateKernelProof(inputs, signal, _epochNumber) {
125
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs), ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs, signal);
127
+ getEmptyPrivateKernelProof(inputs, signal, epochNumber) {
128
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs), ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs, epochNumber, signal);
126
129
  }
127
- getMergeRollupProof(input, signal, _epochNumber) {
128
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.MERGE_ROLLUP, input), ProvingRequestType.MERGE_ROLLUP, input, signal);
130
+ getMergeRollupProof(input, signal, epochNumber) {
131
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.MERGE_ROLLUP, input), ProvingRequestType.MERGE_ROLLUP, input, epochNumber, signal);
129
132
  }
130
- getPrivateBaseRollupProof(baseRollupInput, signal, _epochNumber) {
131
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput), ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput, signal);
133
+ getPrivateBaseRollupProof(baseRollupInput, signal, epochNumber) {
134
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput), ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput, epochNumber, signal);
132
135
  }
133
- getPublicBaseRollupProof(inputs, signal, _epochNumber) {
134
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs), ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs, signal);
136
+ getPublicBaseRollupProof(inputs, signal, epochNumber) {
137
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs), ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs, epochNumber, signal);
135
138
  }
136
- getRootParityProof(inputs, signal, _epochNumber) {
137
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.ROOT_PARITY, inputs), ProvingRequestType.ROOT_PARITY, inputs, signal);
139
+ getRootParityProof(inputs, signal, epochNumber) {
140
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.ROOT_PARITY, inputs), ProvingRequestType.ROOT_PARITY, inputs, epochNumber, signal);
138
141
  }
139
- getRootRollupProof(input, signal, _epochNumber) {
140
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.ROOT_ROLLUP, input), ProvingRequestType.ROOT_ROLLUP, input, signal);
142
+ getRootRollupProof(input, signal, epochNumber) {
143
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.ROOT_ROLLUP, input), ProvingRequestType.ROOT_ROLLUP, input, epochNumber, signal);
141
144
  }
142
- getTubeProof(tubeInput, signal, _epochNumber) {
143
- return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.TUBE_PROOF, tubeInput), ProvingRequestType.TUBE_PROOF, tubeInput, signal);
145
+ getTubeProof(tubeInput, signal, epochNumber) {
146
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.TUBE_PROOF, tubeInput), ProvingRequestType.TUBE_PROOF, tubeInput, epochNumber, signal);
144
147
  }
145
148
  generateId(type, inputs) {
146
149
  const inputsHash = sha256(inputs.toBuffer());
147
150
  return `${ProvingRequestType[type]}:${inputsHash.toString('hex')}`;
148
151
  }
149
152
  }
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZ19icm9rZXJfZmFjYWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpbmdfYnJva2VyL2NhY2hpbmdfYnJva2VyX2ZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBT0wsa0JBQWtCLEdBR25CLE1BQU0sc0JBQXNCLENBQUM7QUF3QjlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9ELDZJQUE2STtBQUM3SSxNQUFNLFdBQVcsR0FBRyxPQUFTLENBQUM7QUFFOUI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ1UsTUFBMEIsRUFDMUIsUUFBcUIsSUFBSSxtQkFBbUIsRUFBRSxFQUM5QyxhQUF5QixJQUFJLGdCQUFnQixFQUFFLEVBQy9DLGdCQUFnQixXQUFXLEVBQzNCLGlCQUFpQixJQUFJLEVBQ3JCLE1BQU0saUJBQWlCLENBQUMsMkNBQTJDLENBQUM7UUFMcEUsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBeUM7UUFDOUMsZUFBVSxHQUFWLFVBQVUsQ0FBcUM7UUFDL0Msa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQU87UUFDckIsUUFBRyxHQUFILEdBQUcsQ0FBaUU7SUFDM0UsQ0FBQztJQUVJLEtBQUssQ0FBQyxvQkFBb0IsQ0FDaEMsRUFBZ0IsRUFDaEIsSUFBTyxFQUNQLE1BQThCLEVBQzlCLE1BQW9CO1FBRXBCLHNCQUFzQjtRQUN0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
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZ19icm9rZXJfZmFjYWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpbmdfYnJva2VyL2NhY2hpbmdfYnJva2VyX2ZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBT0wsa0JBQWtCLEdBR25CLE1BQU0sc0JBQXNCLENBQUM7QUF3QjlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJELE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvRCw2SUFBNkk7QUFDN0ksTUFBTSxXQUFXLEdBQUcsT0FBUyxDQUFDO0FBRTlCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUNVLE1BQTBCLEVBQzFCLFFBQXFCLElBQUksbUJBQW1CLEVBQUUsRUFDOUMsYUFBeUIsSUFBSSxnQkFBZ0IsRUFBRSxFQUMvQyxnQkFBZ0IsV0FBVyxFQUMzQixpQkFBaUIsSUFBSSxFQUNyQixNQUFNLFlBQVksQ0FBQyxxQ0FBcUMsQ0FBQztRQUx6RCxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUF5QztRQUM5QyxlQUFVLEdBQVYsVUFBVSxDQUFxQztRQUMvQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBTztRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUFzRDtJQUNoRSxDQUFDO0lBRUksS0FBSyxDQUFDLG9CQUFvQixDQUNoQyxFQUFnQixFQUNoQixJQUFPLEVBQ1AsTUFBOEIsRUFDOUIsV0FBVyxHQUFHLENBQUMsRUFDZixNQUFvQjtRQUVwQixzQkFBc0I7UUFDdEIsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5RCxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLFlBQVksWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDckYsQ0FBQztZQUVELElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hFLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDekIsT0FBTyxNQUFNLENBQUMsTUFBaUMsQ0FBQztnQkFDbEQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLGNBQWMsSUFBSSxZQUFZLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzlDLHNGQUFzRjtnQkFDdEYsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7aUJBQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLGFBQWEsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN2RixXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDO2dCQUNILE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDekUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO29CQUNsQyxFQUFFO29CQUNGLElBQUk7b0JBQ0osU0FBUztvQkFDVCxXQUFXO2lCQUNaLENBQUMsQ0FBQztnQkFDSCxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDbkUsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQ2xFLE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUM7UUFFRCxpQ0FBaUM7UUFDakMsTUFBTSxPQUFPLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDekIsTUFBTSxFQUFFLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDO1FBRUYsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUM7WUFDSCxrQ0FBa0M7WUFDbEMsNkZBQTZGO1lBQzdGLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUM3QixLQUFLLElBQUksRUFBRTtnQkFDVCxJQUFJLENBQUM7b0JBQ0gsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xELENBQUM7Z0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztvQkFDYixzREFBc0Q7b0JBQ3RELGtDQUFrQztnQkFDcEMsQ0FBQztZQUNILENBQUMsRUFDRCxlQUFlLEVBQUUsU0FBUyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksRUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQzNCLENBQUM7WUFFRixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxpQkFBaUIsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ3pCLE9BQU8sTUFBTSxDQUFDLE1BQWlDLENBQUM7Z0JBQ2xELENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsMEJBQTBCLE1BQU0sQ0FBQyxJQUFJLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvRixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxFQUFFLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxpRkFBaUY7WUFDakYsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUNULE1BQXdCLEVBQ3hCLE1BQW9CLEVBQ3BCLFdBQW9CO1FBRXBCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFDckQsa0JBQWtCLENBQUMsU0FBUyxFQUM1QixNQUFNLEVBQ04sV0FBVyxFQUNYLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQixDQUNoQixNQUF3QixFQUN4QixNQUFvQixFQUNwQixXQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLEVBQ3ZELGtCQUFrQixDQUFDLFdBQVcsRUFDOUIsTUFBTSxFQUNOLFdBQVcsRUFDWCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCx3QkFBd0IsQ0FDdEIsS0FBNkIsRUFDN0IsTUFBb0IsRUFDcEIsV0FBb0I7UUFFcEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLEVBQzdELGtCQUFrQixDQUFDLGtCQUFrQixFQUNyQyxLQUFLLEVBQ0wsV0FBVyxFQUNYLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QixDQUNyQixLQUE0QixFQUM1QixNQUFvQixFQUNwQixXQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsRUFDNUQsa0JBQWtCLENBQUMsaUJBQWlCLEVBQ3BDLEtBQUssRUFDTCxXQUFXLEVBQ1gsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQsNEJBQTRCLENBQzFCLEtBQWlDLEVBQ2pDLE1BQW9CLEVBQ3BCLFdBQW9CO1FBRXBCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxFQUNsRSxrQkFBa0IsQ0FBQyx1QkFBdUIsRUFDMUMsS0FBSyxFQUNMLFdBQVcsRUFDWCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCwwQkFBMEIsQ0FDeEIsTUFBbUMsRUFDbkMsTUFBb0IsRUFDcEIsV0FBb0I7UUFFcEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLEVBQ2hFLGtCQUFrQixDQUFDLG9CQUFvQixFQUN2QyxNQUFNLEVBQ04sV0FBVyxFQUNYLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELG1CQUFtQixDQUNqQixLQUF3QixFQUN4QixNQUFvQixFQUNwQixXQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQ3ZELGtCQUFrQixDQUFDLFlBQVksRUFDL0IsS0FBSyxFQUNMLFdBQVcsRUFDWCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFDRCx5QkFBeUIsQ0FDdkIsZUFBd0MsRUFDeEMsTUFBb0IsRUFDcEIsV0FBb0I7UUFFcEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLEVBQ3hFLGtCQUFrQixDQUFDLG1CQUFtQixFQUN0QyxlQUFlLEVBQ2YsV0FBVyxFQUNYLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELHdCQUF3QixDQUN0QixNQUE4QixFQUM5QixNQUFvQixFQUNwQixXQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsRUFDOUQsa0JBQWtCLENBQUMsa0JBQWtCLEVBQ3JDLE1BQU0sRUFDTixXQUFXLEVBQ1gsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCLENBQ2hCLE1BQXdCLEVBQ3hCLE1BQW9CLEVBQ3BCLFdBQW9CO1FBRXBCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsRUFDdkQsa0JBQWtCLENBQUMsV0FBVyxFQUM5QixNQUFNLEVBQ04sV0FBVyxFQUNYLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQixDQUNoQixLQUF1QixFQUN2QixNQUFvQixFQUNwQixXQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQ3RELGtCQUFrQixDQUFDLFdBQVcsRUFDOUIsS0FBSyxFQUNMLFdBQVcsRUFDWCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQ1YsU0FBcUIsRUFDckIsTUFBb0IsRUFDcEIsV0FBb0I7UUFFcEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUN6RCxrQkFBa0IsQ0FBQyxVQUFVLEVBQzdCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVSxDQUFDLElBQXdCLEVBQUUsTUFBOEI7UUFDekUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDckUsQ0FBQztDQUNGIn0=
@@ -1,4 +1,5 @@
1
1
  import { type ProverBrokerConfig } from '@aztec/circuit-types';
2
+ import { type TelemetryClient } from '@aztec/telemetry-client';
2
3
  import { ProvingBroker } from './proving_broker.js';
3
- export declare function createAndStartProvingBroker(config: ProverBrokerConfig): Promise<ProvingBroker>;
4
+ export declare function createAndStartProvingBroker(config: ProverBrokerConfig, client: TelemetryClient): Promise<ProvingBroker>;
4
5
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/proving_broker/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAapG"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/proving_broker/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,CAAC,CAaxB"}
@@ -2,11 +2,11 @@ import { AztecLmdbStore } from '@aztec/kv-store/lmdb';
2
2
  import { ProvingBroker } from './proving_broker.js';
3
3
  import { InMemoryBrokerDatabase } from './proving_broker_database/memory.js';
4
4
  import { KVBrokerDatabase } from './proving_broker_database/persisted.js';
5
- export async function createAndStartProvingBroker(config) {
5
+ export async function createAndStartProvingBroker(config, client) {
6
6
  const database = config.proverBrokerDataDirectory
7
- ? new KVBrokerDatabase(AztecLmdbStore.open(config.proverBrokerDataDirectory))
7
+ ? new KVBrokerDatabase(AztecLmdbStore.open(config.proverBrokerDataDirectory), client)
8
8
  : new InMemoryBrokerDatabase();
9
- const broker = new ProvingBroker(database, {
9
+ const broker = new ProvingBroker(database, client, {
10
10
  jobTimeoutMs: config.proverBrokerJobTimeoutMs,
11
11
  maxRetries: config.proverBrokerJobMaxRetries,
12
12
  timeoutIntervalMs: config.proverBrokerPollIntervalMs,
@@ -14,4 +14,4 @@ export async function createAndStartProvingBroker(config) {
14
14
  await broker.start();
15
15
  return broker;
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFMUUsTUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FBQyxNQUEwQjtJQUMxRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMseUJBQXlCO1FBQy9DLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFDLElBQUksc0JBQXNCLEVBQUUsQ0FBQztJQUVqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUU7UUFDekMsWUFBWSxFQUFFLE1BQU0sQ0FBQyx3QkFBd0I7UUFDN0MsVUFBVSxFQUFFLE1BQU0sQ0FBQyx5QkFBeUI7UUFDNUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLDBCQUEwQjtLQUNyRCxDQUFDLENBQUM7SUFFSCxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIn0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFMUUsTUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsTUFBMEIsRUFDMUIsTUFBdUI7SUFFdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLHlCQUF5QjtRQUMvQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUNyRixDQUFDLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0lBRWpDLE1BQU0sTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUU7UUFDakQsWUFBWSxFQUFFLE1BQU0sQ0FBQyx3QkFBd0I7UUFDN0MsVUFBVSxFQUFFLE1BQU0sQ0FBQyx5QkFBeUI7UUFDNUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLDBCQUEwQjtLQUNyRCxDQUFDLENBQUM7SUFFSCxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIn0=
@@ -1,4 +1,5 @@
1
1
  import { type ProvingJobConsumer, type ProvingJobId, type ProvingJobResultsMap, ProvingRequestType, type ServerCircuitProver } from '@aztec/circuit-types';
2
+ import { type TelemetryClient } from '@aztec/telemetry-client';
2
3
  import { type ProofStore } from './proof_store.js';
3
4
  /**
4
5
  * A helper class that encapsulates a circuit prover and connects it to a job source.
@@ -17,6 +18,8 @@ export declare class ProvingAgent {
17
18
  private log;
18
19
  private currentJobController?;
19
20
  private runningPromise;
21
+ private instrumentation;
22
+ private idleTimer;
20
23
  constructor(
21
24
  /** The source of proving jobs */
22
25
  broker: ProvingJobConsumer,
@@ -24,6 +27,8 @@ export declare class ProvingAgent {
24
27
  proofStore: ProofStore,
25
28
  /** The prover implementation to defer jobs to */
26
29
  circuitProver: ServerCircuitProver,
30
+ /** A telemetry client through which to emit metrics */
31
+ client: TelemetryClient,
27
32
  /** Optional list of allowed proof types to build */
28
33
  proofAllowList?: Array<ProvingRequestType>,
29
34
  /** How long to wait between jobs */
@@ -1 +1 @@
1
- {"version":3,"file":"proving_agent.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EACzB,kBAAkB,EAClB,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;GAEG;AACH,qBAAa,YAAY;IAKrB,iCAAiC;IACjC,OAAO,CAAC,MAAM;IACd,gDAAgD;IAChD,OAAO,CAAC,UAAU;IAClB,iDAAiD;IACjD,OAAO,CAAC,aAAa;IACrB,oDAAoD;IACpD,OAAO,CAAC,cAAc;IACtB,oCAAoC;IACpC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,GAAG;IAdb,OAAO,CAAC,oBAAoB,CAAC,CAAuB;IACpD,OAAO,CAAC,cAAc,CAAiB;;IAGrC,iCAAiC;IACzB,MAAM,EAAE,kBAAkB;IAClC,gDAAgD;IACxC,UAAU,EAAE,UAAU;IAC9B,iDAAiD;IACzC,aAAa,EAAE,mBAAmB;IAC1C,oDAAoD;IAC5C,cAAc,GAAE,KAAK,CAAC,kBAAkB,CAAM;IACtD,oCAAoC;IAC5B,cAAc,SAAO,EACrB,GAAG,yCAAyD;IAK/D,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,IAAI;IAI1D,SAAS,IAAI,OAAO;IAIpB,KAAK,IAAI,IAAI;IAIP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,OAAO,CAAC,QAAQ,CAgEd;IAEF,eAAe,wCACN,YAAY,QACb,CAAC,OACF,KAAK,GAAG,SAAS,UACd,oBAAoB,CAAC,CAAC,CAAC,GAAG,SAAS,mBAa3C;CACH"}
1
+ {"version":3,"file":"proving_agent.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EACzB,kBAAkB,EAClB,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD;;GAEG;AACH,qBAAa,YAAY;IAOrB,iCAAiC;IACjC,OAAO,CAAC,MAAM;IACd,gDAAgD;IAChD,OAAO,CAAC,UAAU;IAClB,iDAAiD;IACjD,OAAO,CAAC,aAAa;IAGrB,oDAAoD;IACpD,OAAO,CAAC,cAAc;IACtB,oCAAoC;IACpC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,GAAG;IAlBb,OAAO,CAAC,oBAAoB,CAAC,CAAuB;IACpD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,SAAS,CAAoB;;IAGnC,iCAAiC;IACzB,MAAM,EAAE,kBAAkB;IAClC,gDAAgD;IACxC,UAAU,EAAE,UAAU;IAC9B,iDAAiD;IACzC,aAAa,EAAE,mBAAmB;IAC1C,uDAAuD;IACvD,MAAM,EAAE,eAAe;IACvB,oDAAoD;IAC5C,cAAc,GAAE,KAAK,CAAC,kBAAkB,CAAM;IACtD,oCAAoC;IAC5B,cAAc,SAAO,EACrB,GAAG,yCAA8C;IAMpD,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,IAAI;IAI1D,SAAS,IAAI,OAAO;IAIpB,KAAK,IAAI,IAAI;IAKP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,OAAO,CAAC,QAAQ,CAqEd;IAEF,eAAe,wCACN,YAAY,QACb,CAAC,OACF,KAAK,GAAG,SAAS,UACd,oBAAoB,CAAC,CAAC,CAAC,GAAG,SAAS,mBAc3C;CACH"}
@@ -1,6 +1,8 @@
1
1
  import { ProvingError, ProvingRequestType, } from '@aztec/circuit-types';
2
- import { createDebugLogger } from '@aztec/foundation/log';
2
+ import { createLogger } from '@aztec/foundation/log';
3
3
  import { RunningPromise } from '@aztec/foundation/running-promise';
4
+ import { Timer } from '@aztec/foundation/timer';
5
+ import { ProvingAgentInstrumentation } from './proving_agent_instrumentation.js';
4
6
  import { ProvingJobController, ProvingJobControllerStatus } from './proving_job_controller.js';
5
7
  /**
6
8
  * A helper class that encapsulates a circuit prover and connects it to a job source.
@@ -13,10 +15,12 @@ export class ProvingAgent {
13
15
  proofStore,
14
16
  /** The prover implementation to defer jobs to */
15
17
  circuitProver,
18
+ /** A telemetry client through which to emit metrics */
19
+ client,
16
20
  /** Optional list of allowed proof types to build */
17
21
  proofAllowList = [],
18
22
  /** How long to wait between jobs */
19
- pollIntervalMs = 1000, log = createDebugLogger('aztec:prover-client:proving-agent')) {
23
+ pollIntervalMs = 1000, log = createLogger('prover-client:proving-agent')) {
20
24
  this.broker = broker;
21
25
  this.proofStore = proofStore;
22
26
  this.circuitProver = circuitProver;
@@ -62,6 +66,10 @@ export class ProvingAgent {
62
66
  else {
63
67
  this.log.info(`Starting job id=${this.currentJobController.getJobId()} type=${this.currentJobController.getProofTypeName()} inputsUri=${truncateString(job.inputsUri)}`);
64
68
  }
69
+ if (this.idleTimer) {
70
+ this.instrumentation.recordIdleTime(this.idleTimer);
71
+ }
72
+ this.idleTimer = undefined;
65
73
  this.currentJobController.start();
66
74
  }
67
75
  catch (err) {
@@ -69,9 +77,10 @@ export class ProvingAgent {
69
77
  }
70
78
  };
71
79
  this.handleJobResult = async (jobId, type, err, result) => {
80
+ this.idleTimer = new Timer();
72
81
  if (err) {
73
82
  const retry = err.name === ProvingError.NAME ? err.retry : false;
74
- this.log.info(`Job id=${jobId} type=${ProvingRequestType[type]} failed err=${err.message} retry=${retry}`);
83
+ this.log.error(`Job id=${jobId} type=${ProvingRequestType[type]} failed err=${err.message} retry=${retry}`, err);
75
84
  return this.broker.reportProvingJobError(jobId, err.message, retry);
76
85
  }
77
86
  else if (result) {
@@ -80,6 +89,7 @@ export class ProvingAgent {
80
89
  return this.broker.reportProvingJobSuccess(jobId, outputUri);
81
90
  }
82
91
  };
92
+ this.instrumentation = new ProvingAgentInstrumentation(client);
83
93
  this.runningPromise = new RunningPromise(this.safeWork, this.pollIntervalMs);
84
94
  }
85
95
  setCircuitProver(circuitProver) {
@@ -89,6 +99,7 @@ export class ProvingAgent {
89
99
  return this.runningPromise?.isRunning() ?? false;
90
100
  }
91
101
  start() {
102
+ this.idleTimer = new Timer();
92
103
  this.runningPromise.start();
93
104
  }
94
105
  async stop() {
@@ -99,4 +110,4 @@ export class ProvingAgent {
99
110
  function truncateString(str, length = 64) {
100
111
  return str.length > length ? str.slice(0, length) + '...' : str;
101
112
  }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9wcm92aW5nX2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBTVosa0JBQWtCLEdBRW5CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9GOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFJdkI7SUFDRSxpQ0FBaUM7SUFDekIsTUFBMEI7SUFDbEMsZ0RBQWdEO0lBQ3hDLFVBQXNCO0lBQzlCLGlEQUFpRDtJQUN6QyxhQUFrQztJQUMxQyxvREFBb0Q7SUFDNUMsaUJBQTRDLEVBQUU7SUFDdEQsb0NBQW9DO0lBQzVCLGlCQUFpQixJQUFJLEVBQ3JCLE1BQU0saUJBQWlCLENBQUMsbUNBQW1DLENBQUM7UUFUNUQsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFFMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUV0QixrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFFbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdDO1FBRTlDLG1CQUFjLEdBQWQsY0FBYyxDQUFPO1FBQ3JCLFFBQUcsR0FBSCxHQUFHLENBQXlEO1FBc0I5RCxhQUFRLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDNUIsSUFBSSxDQUFDO2dCQUNILHdCQUF3QjtnQkFDeEIsbUVBQW1FO2dCQUNuRSxvQkFBb0I7Z0JBQ3BCLDRHQUE0RztnQkFDNUcsSUFBSSxRQUF1RCxDQUFDO2dCQUM1RCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsS0FBSywwQkFBMEIsQ0FBQyxPQUFPLEVB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
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9wcm92aW5nX2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBTVosa0JBQWtCLEdBRW5CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJaEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0Y7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQU12QjtJQUNFLGlDQUFpQztJQUN6QixNQUEwQjtJQUNsQyxnREFBZ0Q7SUFDeEMsVUFBc0I7SUFDOUIsaURBQWlEO0lBQ3pDLGFBQWtDO0lBQzFDLHVEQUF1RDtJQUN2RCxNQUF1QjtJQUN2QixvREFBb0Q7SUFDNUMsaUJBQTRDLEVBQUU7SUFDdEQsb0NBQW9DO0lBQzVCLGlCQUFpQixJQUFJLEVBQ3JCLE1BQU0sWUFBWSxDQUFDLDZCQUE2QixDQUFDO1FBWGpELFdBQU0sR0FBTixNQUFNLENBQW9CO1FBRTFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFFdEIsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBSWxDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQztRQUU5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBTztRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUE4QztRQXdCbkQsYUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQzVCLElBQUksQ0FBQztnQkFDSCx3QkFBd0I7Z0JBQ3hCLG1FQUFtRTtnQkFDbkUsb0JB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
@@ -0,0 +1,8 @@
1
+ import { type Timer } from '@aztec/foundation/timer';
2
+ import { type TelemetryClient } from '@aztec/telemetry-client';
3
+ export declare class ProvingAgentInstrumentation {
4
+ private idleTime;
5
+ constructor(client: TelemetryClient, name?: string);
6
+ recordIdleTime(msOrTimer: Timer | number): void;
7
+ }
8
+ //# sourceMappingURL=proving_agent_instrumentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proving_agent_instrumentation.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_agent_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAA2B,KAAK,eAAe,EAAa,MAAM,yBAAyB,CAAC;AAEnG,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAY;gBAEhB,MAAM,EAAE,eAAe,EAAE,IAAI,SAAiB;IAU1D,cAAc,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM;CAIzC"}
@@ -0,0 +1,16 @@
1
+ import { Metrics, ValueType } from '@aztec/telemetry-client';
2
+ export class ProvingAgentInstrumentation {
3
+ constructor(client, name = 'ProvingAgent') {
4
+ const meter = client.getMeter(name);
5
+ this.idleTime = meter.createHistogram(Metrics.PROVING_AGENT_IDLE, {
6
+ description: 'Records how long an agent was idle',
7
+ unit: 'ms',
8
+ valueType: ValueType.INT,
9
+ });
10
+ }
11
+ recordIdleTime(msOrTimer) {
12
+ const duration = typeof msOrTimer === 'number' ? msOrTimer : Math.floor(msOrTimer.ms());
13
+ this.idleTime.record(duration);
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19hZ2VudF9pbnN0cnVtZW50YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcHJvdmluZ19hZ2VudF9pbnN0cnVtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFrQixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5HLE1BQU0sT0FBTywyQkFBMkI7SUFHdEMsWUFBWSxNQUF1QixFQUFFLElBQUksR0FBRyxjQUFjO1FBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtZQUNoRSxXQUFXLEVBQUUsb0NBQW9DO1lBQ2pELElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsU0FBeUI7UUFDdEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGIn0=
@@ -1,9 +1,12 @@
1
1
  import { type ProofUri, type ProvingJob, type ProvingJobConsumer, type ProvingJobFilter, type ProvingJobId, type ProvingJobProducer, type ProvingJobSettledResult, type ProvingJobStatus } from '@aztec/circuit-types';
2
+ import { type TelemetryClient } from '@aztec/telemetry-client';
2
3
  import { type ProvingBrokerDatabase } from './proving_broker_database.js';
3
4
  type ProofRequestBrokerConfig = {
4
5
  timeoutIntervalMs?: number;
5
6
  jobTimeoutMs?: number;
6
7
  maxRetries?: number;
8
+ maxEpochsToKeepResultsFor?: number;
9
+ maxParallelCleanUps?: number;
7
10
  };
8
11
  /**
9
12
  * A broker that manages proof requests and distributes them to workers based on their priority.
@@ -15,19 +18,37 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
15
18
  private queues;
16
19
  private jobsCache;
17
20
  private resultsCache;
21
+ private enqueuedAt;
18
22
  private inProgress;
19
23
  private retries;
20
24
  private promises;
21
- private timeoutPromise;
22
- private timeSource;
25
+ private cleanupPromise;
26
+ private msTimeSource;
23
27
  private jobTimeoutMs;
24
28
  private maxRetries;
25
- constructor(database: ProvingBrokerDatabase, { jobTimeoutMs, timeoutIntervalMs, maxRetries }?: ProofRequestBrokerConfig, logger?: import("@aztec/foundation/log").Logger);
29
+ private instrumentation;
30
+ private maxParallelCleanUps;
31
+ /**
32
+ * The broker keeps track of the highest epoch its seen.
33
+ * This information is used for garbage collection: once it reaches the next epoch, it can start pruning the database of old state.
34
+ * This clean up pass is only done against _settled_ jobs. This pass will not cancel jobs that are in-progress or in-queue.
35
+ * It is a client responsibility to cancel jobs if they are no longer necessary.
36
+ * Example:
37
+ * proving epoch 11 - the broker will wipe all setlled jobs for epochs 9 and lower
38
+ * finished proving epoch 11 and got first job for epoch 12 -> the broker will wipe all setlled jobs for epochs 10 and lower
39
+ * reorged back to end of epoch 10 -> epoch 11 is skipped and epoch 12 starts -> the broker will wipe all setlled jobs for epochs 10 and lower
40
+ */
41
+ private epochHeight;
42
+ private maxEpochsToKeepResultsFor;
43
+ constructor(database: ProvingBrokerDatabase, client: TelemetryClient, { jobTimeoutMs, timeoutIntervalMs, maxRetries, maxEpochsToKeepResultsFor, maxParallelCleanUps, }?: ProofRequestBrokerConfig, logger?: import("@aztec/foundation/log").Logger);
44
+ private measureQueueDepth;
45
+ private countActiveJobs;
26
46
  start(): Promise<void>;
27
47
  stop(): Promise<void>;
28
48
  enqueueProvingJob(job: ProvingJob): Promise<void>;
29
49
  waitForJobToSettle(id: ProvingJobId): Promise<ProvingJobSettledResult>;
30
- removeAndCancelProvingJob(id: ProvingJobId): Promise<void>;
50
+ cancelProvingJob(id: ProvingJobId): Promise<void>;
51
+ cleanUpProvingJobState(id: ProvingJobId): Promise<void>;
31
52
  getProvingJobStatus(id: ProvingJobId): Promise<ProvingJobStatus>;
32
53
  getProvingJob(filter?: ProvingJobFilter): Promise<{
33
54
  job: ProvingJob;
@@ -39,8 +60,11 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
39
60
  time: number;
40
61
  } | undefined>;
41
62
  reportProvingJobSuccess(id: ProvingJobId, value: ProofUri): Promise<void>;
42
- private timeoutCheck;
63
+ private cleanupPass;
64
+ private cleanupStaleJobs;
65
+ private reEnqueueExpiredJobs;
43
66
  private enqueueJobInternal;
67
+ private isJobStale;
44
68
  }
45
69
  export {};
46
70
  //# sourceMappingURL=proving_broker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proving_broker.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAQ1E,KAAK,wBAAwB,GAAG;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,qBAAa,aAAc,YAAW,kBAAkB,EAAE,kBAAkB;IA2CxE,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,MAAM;IA5ChB,OAAO,CAAC,MAAM,CAgBZ;IAIF,OAAO,CAAC,SAAS,CAAuC;IAExD,OAAO,CAAC,YAAY,CAAoD;IAMxE,OAAO,CAAC,UAAU,CAA+C;IAGjE,OAAO,CAAC,OAAO,CAAmC;IAGlD,OAAO,CAAC,QAAQ,CAA0E;IAE1F,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;gBAGjB,QAAQ,EAAE,qBAAqB,EACvC,EAAE,YAAiB,EAAE,iBAAsB,EAAE,UAAc,EAAE,GAAE,wBAA6B,EACpF,MAAM,yCAA0D;IAQ7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIf,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD,kBAAkB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAQhE,yBAAyB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBhE,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkBjE,aAAa,CACjB,MAAM,GAAE,gBAAoC,GAC3C,OAAO,CAAC;QAAE,GAAG,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IA+BnD,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCxF,wBAAwB,CACtB,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC;QAAE,GAAG,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IA6CnD,uBAAuB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B/E,OAAO,CAAC,YAAY,CAiBlB;IAEF,OAAO,CAAC,kBAAkB;CAO3B"}
1
+ {"version":3,"file":"proving_broker.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker.ts"],"names":[],"mappings":"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"}