@aztec/pxe 0.0.1-commit.e2b2873ed → 0.0.1-commit.e304674f1

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 (216) hide show
  1. package/dest/block_synchronizer/block_synchronizer.d.ts +1 -1
  2. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  3. package/dest/block_synchronizer/block_synchronizer.js +6 -0
  4. package/dest/config/index.d.ts +2 -2
  5. package/dest/config/index.d.ts.map +1 -1
  6. package/dest/config/index.js +1 -1
  7. package/dest/config/package_info.js +1 -1
  8. package/dest/contract_function_simulator/contract_function_simulator.d.ts +14 -7
  9. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  10. package/dest/contract_function_simulator/contract_function_simulator.js +138 -45
  11. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
  12. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  13. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
  14. package/dest/contract_function_simulator/index.d.ts +2 -1
  15. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  16. package/dest/contract_function_simulator/index.js +1 -0
  17. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -5
  18. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -9
  20. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
  21. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  22. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -3
  23. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -6
  24. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +5 -10
  26. package/dest/contract_function_simulator/oracle/interfaces.d.ts +50 -45
  27. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  29. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  30. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +38 -0
  31. package/dest/contract_function_simulator/oracle/oracle.d.ts +64 -44
  32. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/oracle/oracle.js +187 -97
  34. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  35. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +23 -48
  36. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +50 -81
  38. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +66 -46
  39. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +190 -99
  41. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  42. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/pick_notes.js +9 -2
  44. package/dest/contract_logging.d.ts +27 -0
  45. package/dest/contract_logging.d.ts.map +1 -0
  46. package/dest/contract_logging.js +38 -0
  47. package/dest/contract_sync/contract_sync_service.d.ts +7 -5
  48. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  49. package/dest/contract_sync/contract_sync_service.js +45 -38
  50. package/dest/contract_sync/helpers.d.ts +2 -2
  51. package/dest/contract_sync/helpers.d.ts.map +1 -1
  52. package/dest/contract_sync/helpers.js +9 -4
  53. package/dest/debug/pxe_debug_utils.d.ts +4 -3
  54. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  55. package/dest/debug/pxe_debug_utils.js +4 -4
  56. package/dest/entrypoints/client/bundle/index.d.ts +3 -1
  57. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  58. package/dest/entrypoints/client/bundle/index.js +2 -0
  59. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  60. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  61. package/dest/entrypoints/client/bundle/utils.js +2 -2
  62. package/dest/entrypoints/client/lazy/index.d.ts +3 -1
  63. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  64. package/dest/entrypoints/client/lazy/index.js +2 -0
  65. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  66. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  67. package/dest/entrypoints/client/lazy/utils.js +2 -2
  68. package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
  69. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  70. package/dest/entrypoints/pxe_creation_options.js +3 -1
  71. package/dest/entrypoints/server/index.d.ts +2 -1
  72. package/dest/entrypoints/server/index.d.ts.map +1 -1
  73. package/dest/entrypoints/server/index.js +1 -0
  74. package/dest/entrypoints/server/utils.d.ts +2 -2
  75. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  76. package/dest/entrypoints/server/utils.js +2 -2
  77. package/dest/events/event_service.d.ts +3 -2
  78. package/dest/events/event_service.d.ts.map +1 -1
  79. package/dest/events/event_service.js +16 -4
  80. package/dest/logs/log_service.d.ts +6 -6
  81. package/dest/logs/log_service.d.ts.map +1 -1
  82. package/dest/logs/log_service.js +34 -32
  83. package/dest/messages/message_context_service.d.ts +17 -0
  84. package/dest/messages/message_context_service.d.ts.map +1 -0
  85. package/dest/messages/message_context_service.js +36 -0
  86. package/dest/notes/note_service.d.ts +4 -4
  87. package/dest/notes/note_service.d.ts.map +1 -1
  88. package/dest/notes/note_service.js +17 -7
  89. package/dest/notes_filter.d.ts +24 -0
  90. package/dest/notes_filter.d.ts.map +1 -0
  91. package/dest/notes_filter.js +4 -0
  92. package/dest/oracle_version.d.ts +2 -2
  93. package/dest/oracle_version.js +3 -3
  94. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  95. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  96. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  97. package/dest/private_kernel/hints/index.d.ts +1 -1
  98. package/dest/private_kernel/hints/index.js +1 -1
  99. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  100. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  101. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +129 -68
  102. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  103. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  104. package/dest/private_kernel/hints/test_utils.js +203 -0
  105. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  106. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  107. package/dest/private_kernel/private_kernel_execution_prover.js +19 -11
  108. package/dest/private_kernel/private_kernel_oracle.d.ts +6 -2
  109. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  110. package/dest/private_kernel/private_kernel_oracle.js +7 -3
  111. package/dest/pxe.d.ts +18 -14
  112. package/dest/pxe.d.ts.map +1 -1
  113. package/dest/pxe.js +74 -48
  114. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  115. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  116. package/dest/storage/capsule_store/capsule_service.js +50 -0
  117. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  118. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  119. package/dest/storage/capsule_store/capsule_store.js +33 -28
  120. package/dest/storage/capsule_store/index.d.ts +2 -1
  121. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  122. package/dest/storage/capsule_store/index.js +1 -0
  123. package/dest/storage/contract_store/contract_store.d.ts +42 -15
  124. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  125. package/dest/storage/contract_store/contract_store.js +140 -64
  126. package/dest/storage/metadata.d.ts +1 -1
  127. package/dest/storage/metadata.js +1 -1
  128. package/dest/storage/note_store/note_store.d.ts +3 -2
  129. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  130. package/dest/storage/note_store/note_store.js +2 -2
  131. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  132. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  133. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  134. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  135. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  136. package/dest/tagging/get_all_logs_by_tags.d.ts +1 -1
  137. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  138. package/dest/tagging/get_all_logs_by_tags.js +17 -3
  139. package/dest/tagging/index.d.ts +3 -3
  140. package/dest/tagging/index.d.ts.map +1 -1
  141. package/dest/tagging/index.js +1 -1
  142. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -5
  143. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  144. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +7 -7
  145. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  146. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +6 -7
  147. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  148. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +12 -11
  149. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -8
  150. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  151. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +13 -7
  152. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  153. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  154. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  155. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -7
  156. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  157. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +36 -24
  158. package/package.json +16 -16
  159. package/src/block_synchronizer/block_synchronizer.ts +6 -0
  160. package/src/config/index.ts +1 -1
  161. package/src/config/package_info.ts +1 -1
  162. package/src/contract_function_simulator/contract_function_simulator.ts +254 -65
  163. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  164. package/src/contract_function_simulator/index.ts +1 -0
  165. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +8 -8
  166. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
  167. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -9
  168. package/src/contract_function_simulator/oracle/interfaces.ts +63 -54
  169. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +98 -0
  170. package/src/contract_function_simulator/oracle/oracle.ts +223 -139
  171. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  172. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +58 -102
  173. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +320 -122
  174. package/src/contract_function_simulator/pick_notes.ts +9 -2
  175. package/src/contract_logging.ts +52 -0
  176. package/src/contract_sync/contract_sync_service.ts +79 -54
  177. package/src/contract_sync/helpers.ts +8 -3
  178. package/src/debug/pxe_debug_utils.ts +8 -7
  179. package/src/entrypoints/client/bundle/index.ts +2 -0
  180. package/src/entrypoints/client/bundle/utils.ts +2 -3
  181. package/src/entrypoints/client/lazy/index.ts +2 -0
  182. package/src/entrypoints/client/lazy/utils.ts +2 -3
  183. package/src/entrypoints/pxe_creation_options.ts +7 -0
  184. package/src/entrypoints/server/index.ts +1 -0
  185. package/src/entrypoints/server/utils.ts +2 -3
  186. package/src/events/event_service.ts +17 -4
  187. package/src/logs/log_service.ts +68 -51
  188. package/src/messages/message_context_service.ts +44 -0
  189. package/src/notes/note_service.ts +19 -8
  190. package/src/notes_filter.ts +24 -0
  191. package/src/oracle_version.ts +3 -3
  192. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  193. package/src/private_kernel/hints/index.ts +1 -1
  194. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
  195. package/src/private_kernel/hints/test_utils.ts +325 -0
  196. package/src/private_kernel/private_kernel_execution_prover.ts +19 -12
  197. package/src/private_kernel/private_kernel_oracle.ts +7 -7
  198. package/src/pxe.ts +104 -61
  199. package/src/storage/capsule_store/capsule_service.ts +90 -0
  200. package/src/storage/capsule_store/capsule_store.ts +34 -26
  201. package/src/storage/capsule_store/index.ts +1 -0
  202. package/src/storage/contract_store/contract_store.ts +170 -71
  203. package/src/storage/metadata.ts +1 -1
  204. package/src/storage/note_store/note_store.ts +4 -3
  205. package/src/storage/tagging_store/recipient_tagging_store.ts +9 -5
  206. package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
  207. package/src/tagging/get_all_logs_by_tags.ts +28 -4
  208. package/src/tagging/index.ts +2 -2
  209. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +7 -10
  210. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  211. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +10 -15
  212. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +23 -10
  213. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  214. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +27 -26
  215. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  216. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
package/dest/pxe.js CHANGED
@@ -13,12 +13,14 @@ import { BlockSynchronizer } from './block_synchronizer/index.js';
13
13
  import { BenchmarkedNodeFactory } from './contract_function_simulator/benchmarked_node.js';
14
14
  import { ContractFunctionSimulator, generateSimulatedProvingResult } from './contract_function_simulator/contract_function_simulator.js';
15
15
  import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
16
+ import { displayDebugLogs } from './contract_logging.js';
16
17
  import { ContractSyncService } from './contract_sync/contract_sync_service.js';
17
18
  import { readCurrentClassId } from './contract_sync/helpers.js';
18
19
  import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
19
20
  import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
20
21
  import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
21
22
  import { JobCoordinator } from './job_coordinator/job_coordinator.js';
23
+ import { MessageContextService } from './messages/message_context_service.js';
22
24
  import { PrivateKernelExecutionProver } from './private_kernel/private_kernel_execution_prover.js';
23
25
  import { PrivateKernelOracle } from './private_kernel/private_kernel_oracle.js';
24
26
  import { AddressStore } from './storage/address_store/address_store.js';
@@ -35,6 +37,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
35
37
  * manage private state of users.
36
38
  */ export class PXE {
37
39
  node;
40
+ db;
38
41
  blockStateSynchronizer;
39
42
  keyStore;
40
43
  contractStore;
@@ -47,6 +50,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
47
50
  addressStore;
48
51
  privateEventStore;
49
52
  contractSyncService;
53
+ messageContextService;
50
54
  simulator;
51
55
  proverEnabled;
52
56
  proofCreator;
@@ -55,8 +59,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
55
59
  jobQueue;
56
60
  jobCoordinator;
57
61
  debug;
58
- constructor(node, blockStateSynchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debug){
62
+ constructor(node, db, blockStateSynchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, messageContextService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debug){
59
63
  this.node = node;
64
+ this.db = db;
60
65
  this.blockStateSynchronizer = blockStateSynchronizer;
61
66
  this.keyStore = keyStore;
62
67
  this.contractStore = contractStore;
@@ -69,6 +74,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
69
74
  this.addressStore = addressStore;
70
75
  this.privateEventStore = privateEventStore;
71
76
  this.contractSyncService = contractSyncService;
77
+ this.messageContextService = messageContextService;
72
78
  this.simulator = simulator;
73
79
  this.proverEnabled = proverEnabled;
74
80
  this.proofCreator = proofCreator;
@@ -102,6 +108,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
102
108
  const keyStore = new KeyStore(store);
103
109
  const tipsStore = new L2TipsKVStore(store, 'pxe');
104
110
  const contractSyncService = new ContractSyncService(node, contractStore, noteStore, createLogger('pxe:contract_sync', bindings));
111
+ const messageContextService = new MessageContextService(node);
105
112
  const synchronizer = new BlockSynchronizer(node, store, anchorBlockStore, noteStore, privateEventStore, tipsStore, contractSyncService, config, bindings);
106
113
  const jobCoordinator = new JobCoordinator(store, bindings);
107
114
  jobCoordinator.registerStores([
@@ -114,8 +121,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
114
121
  ]);
115
122
  const debugUtils = new PXEDebugUtils(contractSyncService, noteStore, synchronizer, anchorBlockStore);
116
123
  const jobQueue = new SerialQueue();
117
- const pxe = new PXE(node, synchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debugUtils);
118
- debugUtils.setPXEHelpers(pxe.#putInJobQueue.bind(pxe), pxe.#getSimulatorForTx.bind(pxe), pxe.#simulateUtility.bind(pxe));
124
+ const pxe = new PXE(node, store, synchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, messageContextService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debugUtils);
125
+ debugUtils.setPXEHelpers(pxe.#putInJobQueue.bind(pxe), pxe.#getSimulatorForTx.bind(pxe), pxe.#executeUtility.bind(pxe));
119
126
  pxe.jobQueue.start();
120
127
  await pxe.#registerProtocolContracts();
121
128
  log.info(`Started PXE connected to chain ${info.l1ChainId} version ${info.rollupVersion}`);
@@ -136,7 +143,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
136
143
  capsuleStore: this.capsuleStore,
137
144
  privateEventStore: this.privateEventStore,
138
145
  simulator: this.simulator,
139
- contractSyncService: this.contractSyncService
146
+ contractSyncService: this.contractSyncService,
147
+ messageContextService: this.messageContextService
140
148
  });
141
149
  }
142
150
  #contextualizeError(err, ...context) {
@@ -180,8 +188,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
180
188
  async #registerProtocolContracts() {
181
189
  const registered = {};
182
190
  for (const name of protocolContractNames){
183
- const { address, contractClass, instance, artifact } = await this.protocolContractsProvider.getProtocolContractArtifact(name);
184
- await this.contractStore.addContractArtifact(contractClass.id, artifact);
191
+ const { address, instance, artifact } = await this.protocolContractsProvider.getProtocolContractArtifact(name);
192
+ await this.contractStore.addContractArtifact(artifact);
185
193
  await this.contractStore.addContractInstance(instance);
186
194
  registered[name] = address.toString();
187
195
  }
@@ -193,7 +201,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
193
201
  const { origin: contractAddress, functionSelector } = txRequest;
194
202
  try {
195
203
  const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
196
- await this.contractSyncService.ensureContractSynced(contractAddress, functionSelector, (privateSyncCall, execScopes)=>this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, scopes);
204
+ await this.contractSyncService.ensureContractSynced(contractAddress, functionSelector, (privateSyncCall, execScopes)=>this.#executeUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, scopes);
197
205
  const result = await contractFunctionSimulator.run(txRequest, {
198
206
  contractAddress,
199
207
  selector: functionSelector,
@@ -211,18 +219,22 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
211
219
  }
212
220
  }
213
221
  /**
214
- * Simulate a utility function call on the given contract.
222
+ * Execute a utility function call on the given contract.
215
223
  * @param contractFunctionSimulator - The simulator to use for the function call.
216
224
  * @param call - The function call to execute.
217
225
  * @param authWitnesses - Authentication witnesses required for the function call.
218
226
  * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
219
227
  * accounts if not specified.
220
228
  * @param jobId - The job ID for staged writes.
221
- * @returns The simulation result containing the outputs of the utility function.
222
- */ async #simulateUtility(contractFunctionSimulator, call, authWitnesses, scopes, jobId) {
229
+ * @returns The execution result containing the outputs of the utility function.
230
+ */ async #executeUtility(contractFunctionSimulator, call, authWitnesses, scopes, jobId) {
223
231
  try {
224
232
  const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
225
- return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes, jobId);
233
+ const { result, offchainEffects } = await contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes, jobId);
234
+ return {
235
+ result,
236
+ offchainEffects
237
+ };
226
238
  } catch (err) {
227
239
  if (err instanceof SimulationError) {
228
240
  await enrichSimulationError(err, this.contractStore, this.log);
@@ -278,7 +290,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
278
290
  * Returns the block header up to which the PXE has synced.
279
291
  * @returns The synced block header
280
292
  */ getSyncedBlockHeader() {
281
- return this.anchorBlockStore.getBlockHeader();
293
+ return this.#putInJobQueue(()=>{
294
+ return this.anchorBlockStore.getBlockHeader();
295
+ });
282
296
  }
283
297
  /**
284
298
  * Returns the contract instance for a given address, if it's registered in the PXE.
@@ -334,6 +348,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
334
348
  const wasAdded = await this.senderAddressBookStore.addSender(sender);
335
349
  if (wasAdded) {
336
350
  this.log.info(`Added sender:\n ${sender.toString()}`);
351
+ // Wipe the entire sync cache: the new sender's tagged logs could contain notes/events for any contract, so
352
+ // all contracts must re-sync to discover them.
353
+ this.contractSyncService.wipe();
337
354
  } else {
338
355
  this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
339
356
  }
@@ -371,8 +388,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
371
388
  *
372
389
  * @param artifact - The build artifact for the contract class.
373
390
  */ async registerContractClass(artifact) {
374
- const { id: contractClassId } = await getContractClassFromArtifact(artifact);
375
- await this.contractStore.addContractArtifact(contractClassId, artifact);
391
+ const contractClassId = await this.contractStore.addContractArtifact(artifact);
376
392
  this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
377
393
  }
378
394
  /**
@@ -388,15 +404,14 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
388
404
  if (artifact) {
389
405
  // If the user provides an artifact, validate it against the expected class id and register it
390
406
  const contractClass = await getContractClassFromArtifact(artifact);
391
- const contractClassId = contractClass.id;
392
- if (!contractClassId.equals(instance.currentContractClassId)) {
393
- throw new Error(`Artifact does not match expected class id (computed ${contractClassId} but instance refers to ${instance.currentContractClassId})`);
407
+ if (!contractClass.id.equals(instance.currentContractClassId)) {
408
+ throw new Error(`Artifact does not match expected class id (computed ${contractClass.id} but instance refers to ${instance.currentContractClassId})`);
394
409
  }
395
410
  const computedAddress = await computeContractAddressFromInstance(instance);
396
411
  if (!computedAddress.equals(instance.address)) {
397
412
  throw new Error('Added a contract in which the address does not match the contract instance.');
398
413
  }
399
- await this.contractStore.addContractArtifact(contractClass.id, artifact);
414
+ await this.contractStore.addContractArtifact(artifact, contractClass);
400
415
  const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
401
416
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
402
417
  } else {
@@ -432,11 +447,13 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
432
447
  if (!contractClass.id.equals(currentClassId)) {
433
448
  throw new Error('Could not update contract to a class different from the current one.');
434
449
  }
435
- await this.contractStore.addContractArtifact(contractClass.id, artifact);
436
450
  const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
437
451
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
438
452
  currentInstance.currentContractClassId = contractClass.id;
439
- await this.contractStore.addContractInstance(currentInstance);
453
+ await Promise.all([
454
+ this.contractStore.addContractArtifact(artifact, contractClass),
455
+ this.contractStore.addContractInstance(currentInstance)
456
+ ]);
440
457
  this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
441
458
  });
442
459
  }
@@ -497,16 +514,16 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
497
514
  // transaction before this one is included in a block from this PXE, and that transaction contains a log with
498
515
  // a tag derived from the same secret, we would reuse the tag and the transactions would be linked. Hence
499
516
  // storing the tags here prevents linkage of txs sent from the same PXE.
500
- const preTagsUsedInTheTx = privateExecutionResult.entrypoint.preTags;
501
- if (preTagsUsedInTheTx.length > 0) {
517
+ const taggingIndexRangesUsedInTheTx = privateExecutionResult.entrypoint.taggingIndexRanges;
518
+ if (taggingIndexRangesUsedInTheTx.length > 0) {
502
519
  // TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
503
520
  const txHash = (await txProvingResult.toTx()).txHash;
504
- await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash, jobId);
505
- this.log.debug(`Stored used pre-tags as sender for the tx`, {
506
- preTagsUsedInTheTx
521
+ await this.senderTaggingStore.storePendingIndexes(taggingIndexRangesUsedInTheTx, txHash, jobId);
522
+ this.log.debug(`Stored used tagging index ranges as sender for the tx`, {
523
+ taggingIndexRangesUsedInTheTx
507
524
  });
508
525
  } else {
509
- this.log.debug(`No pre-tags used in the tx`);
526
+ this.log.debug(`No tagging index ranges used in the tx`);
510
527
  }
511
528
  return txProvingResult;
512
529
  } catch (err) {
@@ -588,7 +605,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
588
605
  * Also throws if simulatePublic is true and public simulation reverts.
589
606
  *
590
607
  * TODO(#7456) Prevent msgSender being defined here for the first call
591
- */ simulateTx(txRequest, { simulatePublic, skipTxValidation = false, skipFeeEnforcement = false, overrides, scopes }) {
608
+ */ simulateTx(txRequest, { simulatePublic, skipTxValidation = false, skipFeeEnforcement = false, skipKernels = true, overrides, scopes }) {
592
609
  // We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
593
610
  // to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
594
611
  // delete the same read value, or reading values that another simulation is currently modifying).
@@ -607,23 +624,23 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
607
624
  const syncTimer = new Timer();
608
625
  await this.blockStateSynchronizer.sync();
609
626
  const syncTime = syncTimer.ms();
610
- const contractFunctionSimulator = this.#getSimulatorForTx(overrides);
611
- // Temporary: in case there are overrides, we have to skip the kernels or validations
612
- // will fail. Consider handing control to the user/wallet on whether they want to run them
613
- // or not.
614
627
  const overriddenContracts = overrides?.contracts ? new Set(Object.keys(overrides.contracts)) : undefined;
615
628
  const hasOverriddenContracts = overriddenContracts !== undefined && overriddenContracts.size > 0;
616
- const skipKernels = hasOverriddenContracts;
617
- // Set overridden contracts on the sync service so it knows to skip syncing them
629
+ if (hasOverriddenContracts && !skipKernels) {
630
+ throw new Error('Simulating with overridden contracts is not compatible with kernel execution. Please set skipKernels to true when simulating with overridden contracts.');
631
+ }
632
+ const contractFunctionSimulator = this.#getSimulatorForTx(overrides);
618
633
  if (hasOverriddenContracts) {
619
- this.contractSyncService.setOverriddenContracts(jobId, overriddenContracts);
634
+ // Overridden contracts don't have a sync function, so calling sync on them would fail.
635
+ // We exclude them so the sync service skips them entirely.
636
+ this.contractSyncService.setExcludedFromSync(jobId, overriddenContracts);
620
637
  }
621
638
  // Execution of private functions only; no proving, and no kernel logic.
622
639
  const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes, jobId);
623
640
  let publicInputs;
624
641
  let executionSteps = [];
625
642
  if (skipKernels) {
626
- ({ publicInputs, executionSteps } = await generateSimulatedProvingResult(privateExecutionResult, (addr, sel)=>this.contractStore.getDebugFunctionName(addr, sel)));
643
+ ({ publicInputs, executionSteps } = await generateSimulatedProvingResult(privateExecutionResult, (addr, sel)=>this.contractStore.getDebugFunctionName(addr, sel), this.node));
627
644
  } else {
628
645
  // Kernel logic, plus proving of all private functions and kernels.
629
646
  ({ publicInputs, executionSteps } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, {
@@ -640,6 +657,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
640
657
  const publicSimulationTimer = new Timer();
641
658
  publicOutput = await this.#simulatePublicCalls(simulatedTx, skipFeeEnforcement);
642
659
  publicSimulationTime = publicSimulationTimer.ms();
660
+ if (publicOutput?.debugLogs?.length) {
661
+ await displayDebugLogs(publicOutput.debugLogs, (addr)=>this.contractStore.getDebugContractName(addr));
662
+ }
643
663
  }
644
664
  let validationTime;
645
665
  if (!skipTxValidation) {
@@ -650,7 +670,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
650
670
  });
651
671
  validationTime = validationTimer.ms();
652
672
  if (validationResult.result === 'invalid') {
653
- throw new Error('The simulated transaction is unable to be added to state and is invalid.');
673
+ const reason = validationResult.reason.length > 0 ? ` Reason: ${validationResult.reason.join(', ')}` : '';
674
+ throw new Error(`The simulated transaction is unable to be added to state and is invalid.${reason}`);
654
675
  }
655
676
  }
656
677
  const txHash = simulatedTx.getTxHash();
@@ -683,17 +704,19 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
683
704
  nodeRPCCalls: simulatorStats.nodeRPCCalls
684
705
  });
685
706
  } catch (err) {
686
- throw this.#contextualizeError(err, inspect(txRequest), `simulatePublic=${simulatePublic}`, `skipTxValidation=${skipTxValidation}`, `scopes=${scopes?.map((s)=>s.toString()).join(', ') ?? 'undefined'}`);
707
+ throw this.#contextualizeError(err, inspect(txRequest), `simulatePublic=${simulatePublic}`, `skipTxValidation=${skipTxValidation}`, `scopes=${scopes.map((s)=>s.toString()).join(', ')}`);
687
708
  }
688
709
  });
689
710
  }
690
711
  /**
691
- * Simulates the execution of a contract utility function.
712
+ * Executes a contract utility function.
692
713
  * @param call - The function call containing the function details, arguments, and target contract address.
693
- */ simulateUtility(call, { authwits, scopes } = {}) {
694
- // We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
714
+ */ executeUtility(call, { authwits, scopes } = {
715
+ scopes: []
716
+ }) {
717
+ // We disable concurrent executions since those might execute oracles which read and write to the PXE stores (e.g.
695
718
  // to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
696
- // delete the same read value, or reading values that another simulation is currently modifying).
719
+ // delete the same read value, or reading values that another execution is currently modifying).
697
720
  return this.#putInJobQueue(async (jobId)=>{
698
721
  try {
699
722
  const totalTimer = new Timer();
@@ -703,8 +726,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
703
726
  const functionTimer = new Timer();
704
727
  const contractFunctionSimulator = this.#getSimulatorForTx();
705
728
  const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
706
- await this.contractSyncService.ensureContractSynced(call.to, call.selector, (privateSyncCall, execScopes)=>this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, scopes);
707
- const executionResult = await this.#simulateUtility(contractFunctionSimulator, call, authwits ?? [], scopes, jobId);
729
+ await this.contractSyncService.ensureContractSynced(call.to, call.selector, (privateSyncCall, execScopes)=>this.#executeUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, scopes);
730
+ const { result: executionResult, offchainEffects } = await this.#executeUtility(contractFunctionSimulator, call, authwits ?? [], scopes, jobId);
708
731
  const functionTime = functionTimer.ms();
709
732
  const totalTime = totalTimer.ms();
710
733
  const perFunction = [
@@ -722,6 +745,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
722
745
  const simulationStats = contractFunctionSimulator.getStats();
723
746
  return {
724
747
  result: executionResult,
748
+ offchainEffects,
749
+ anchorBlockTimestamp: anchorBlockHeader.globalVariables.timestamp,
725
750
  stats: {
726
751
  timings,
727
752
  nodeRPCCalls: simulationStats.nodeRPCCalls
@@ -730,7 +755,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
730
755
  } catch (err) {
731
756
  const { to, name, args } = call;
732
757
  const stringifiedArgs = args.map((arg)=>arg.toString()).join(', ');
733
- throw this.#contextualizeError(err, `simulateUtility ${to}:${name}(${stringifiedArgs})`, `scopes=${scopes?.map((s)=>s.toString()).join(', ') ?? 'undefined'}`);
758
+ throw this.#contextualizeError(err, `executeUtility ${to}:${name}(${stringifiedArgs})`, `scopes=${scopes.map((s)=>s.toString()).join(', ')}`);
734
759
  }
735
760
  });
736
761
  }
@@ -753,7 +778,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
753
778
  const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
754
779
  anchorBlockNumber = anchorBlockHeader.getBlockNumber();
755
780
  const contractFunctionSimulator = this.#getSimulatorForTx();
756
- await this.contractSyncService.ensureContractSynced(filter.contractAddress, null, async (privateSyncCall, execScopes)=>await this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, filter.scopes);
781
+ await this.contractSyncService.ensureContractSynced(filter.contractAddress, null, async (privateSyncCall, execScopes)=>await this.#executeUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, filter.scopes);
757
782
  });
758
783
  // anchorBlockNumber is set during the job and fixed to whatever it is after a block sync
759
784
  const sanitizedFilter = new PrivateEventFilterValidator(anchorBlockNumber).validate(filter);
@@ -761,8 +786,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
761
786
  return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
762
787
  }
763
788
  /**
764
- * Stops the PXE's job queue.
765
- */ stop() {
766
- return this.jobQueue.end();
789
+ * Stops the PXE's job queue and closes the backing store.
790
+ */ async stop() {
791
+ await this.jobQueue.end();
792
+ await this.db.close();
767
793
  }
768
794
  }
@@ -0,0 +1,21 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ import type { Capsule } from '@aztec/stdlib/tx';
4
+ import type { CapsuleStore } from './capsule_store.js';
5
+ /**
6
+ * Wraps a CapsuleStore with scope-based access control. Each operation asserts that the requested scope is in the
7
+ * allowed scopes list before delegating to the underlying store.
8
+ */
9
+ export declare class CapsuleService {
10
+ private readonly capsuleStore;
11
+ private readonly allowedScopes;
12
+ constructor(capsuleStore: CapsuleStore, allowedScopes: AztecAddress[]);
13
+ setCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[], jobId: string, scope: AztecAddress): void;
14
+ getCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress, transientCapsules?: Capsule[]): Promise<Fr[] | null>;
15
+ deleteCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress): void;
16
+ copyCapsule(contractAddress: AztecAddress, srcSlot: Fr, dstSlot: Fr, numEntries: number, jobId: string, scope: AztecAddress): Promise<void>;
17
+ appendToCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string, scope: AztecAddress): Promise<void>;
18
+ readCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, jobId: string, scope: AztecAddress): Promise<Fr[][]>;
19
+ setCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string, scope: AztecAddress): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fwc3VsZV9zZXJ2aWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmFnZS9jYXBzdWxlX3N0b3JlL2NhcHN1bGVfc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQ7OztHQUdHO0FBQ0gscUJBQWEsY0FBYztJQUV2QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVk7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhO0lBRmhDLFlBQ21CLFlBQVksRUFBRSxZQUFZLEVBQzFCLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFDNUM7SUFFSixVQUFVLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLFFBR3BHO0lBRUssVUFBVSxDQUNkLGVBQWUsRUFBRSxZQUFZLEVBQzdCLElBQUksRUFBRSxFQUFFLEVBQ1IsS0FBSyxFQUFFLE1BQU0sRUFDYixLQUFLLEVBQUUsWUFBWSxFQUNuQixpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUM1QixPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBWXRCO0lBRUQsYUFBYSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLFFBR3hGO0lBRUQsV0FBVyxDQUNULGVBQWUsRUFBRSxZQUFZLEVBQzdCLE9BQU8sRUFBRSxFQUFFLEVBQ1gsT0FBTyxFQUFFLEVBQUUsRUFDWCxVQUFVLEVBQUUsTUFBTSxFQUNsQixLQUFLLEVBQUUsTUFBTSxFQUNiLEtBQUssRUFBRSxZQUFZLEdBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHZjtJQUVELG9CQUFvQixDQUNsQixlQUFlLEVBQUUsWUFBWSxFQUM3QixRQUFRLEVBQUUsRUFBRSxFQUNaLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUNmLEtBQUssRUFBRSxNQUFNLEVBQ2IsS0FBSyxFQUFFLFlBQVksR0FDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUdmO0lBRUQsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUdqSDtJQUVELGVBQWUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxpQkFHL0c7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capsule_service.d.ts","sourceRoot":"","sources":["../../../src/storage/capsule_store/capsule_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;GAGG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAFhC,YACmB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,YAAY,EAAE,EAC5C;IAEJ,UAAU,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,QAGpG;IAEK,UAAU,CACd,eAAe,EAAE,YAAY,EAC7B,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,EACnB,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAC5B,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAYtB;IAED,aAAa,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,QAGxF;IAED,WAAW,CACT,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;IAED,oBAAoB,CAClB,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,EAAE,EACZ,OAAO,EAAE,EAAE,EAAE,EAAE,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;IAED,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAGjH;IAED,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,iBAG/G;CACF"}
@@ -0,0 +1,50 @@
1
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
2
+ /**
3
+ * Wraps a CapsuleStore with scope-based access control. Each operation asserts that the requested scope is in the
4
+ * allowed scopes list before delegating to the underlying store.
5
+ */ export class CapsuleService {
6
+ capsuleStore;
7
+ allowedScopes;
8
+ constructor(capsuleStore, allowedScopes){
9
+ this.capsuleStore = capsuleStore;
10
+ this.allowedScopes = allowedScopes;
11
+ }
12
+ setCapsule(contractAddress, slot, capsule, jobId, scope) {
13
+ assertAllowedScope(scope, this.allowedScopes);
14
+ this.capsuleStore.setCapsule(contractAddress, slot, capsule, jobId, scope);
15
+ }
16
+ async getCapsule(contractAddress, slot, jobId, scope, transientCapsules) {
17
+ assertAllowedScope(scope, this.allowedScopes);
18
+ // TODO(#12425): On the following line, the pertinent capsule gets overshadowed by the transient one. Tackle this.
19
+ const maybeTransientCapsule = transientCapsules?.find((c)=>c.contractAddress.equals(contractAddress) && c.storageSlot.equals(slot) && (c.scope ?? AztecAddress.ZERO).equals(scope))?.data;
20
+ return maybeTransientCapsule ?? await this.capsuleStore.getCapsule(contractAddress, slot, jobId, scope);
21
+ }
22
+ deleteCapsule(contractAddress, slot, jobId, scope) {
23
+ assertAllowedScope(scope, this.allowedScopes);
24
+ this.capsuleStore.deleteCapsule(contractAddress, slot, jobId, scope);
25
+ }
26
+ copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, jobId, scope) {
27
+ assertAllowedScope(scope, this.allowedScopes);
28
+ return this.capsuleStore.copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, jobId, scope);
29
+ }
30
+ appendToCapsuleArray(contractAddress, baseSlot, content, jobId, scope) {
31
+ assertAllowedScope(scope, this.allowedScopes);
32
+ return this.capsuleStore.appendToCapsuleArray(contractAddress, baseSlot, content, jobId, scope);
33
+ }
34
+ readCapsuleArray(contractAddress, baseSlot, jobId, scope) {
35
+ assertAllowedScope(scope, this.allowedScopes);
36
+ return this.capsuleStore.readCapsuleArray(contractAddress, baseSlot, jobId, scope);
37
+ }
38
+ setCapsuleArray(contractAddress, baseSlot, content, jobId, scope) {
39
+ assertAllowedScope(scope, this.allowedScopes);
40
+ return this.capsuleStore.setCapsuleArray(contractAddress, baseSlot, content, jobId, scope);
41
+ }
42
+ }
43
+ function assertAllowedScope(scope, allowedScopes) {
44
+ if (scope.equals(AztecAddress.ZERO)) {
45
+ return;
46
+ }
47
+ if (!allowedScopes.some((allowed)=>allowed.equals(scope))) {
48
+ throw new Error(`Scope ${scope.toString()} is not in the allowed scopes list: [${allowedScopes.map((s)=>s.toString()).join(', ')}]. See https://docs.aztec.network/errors/10`);
49
+ }
50
+ }
@@ -1,7 +1,7 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { type Logger } from '@aztec/foundation/log';
3
3
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
4
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
5
  import type { StagedStore } from '../../job_coordinator/job_coordinator.js';
6
6
  export declare class CapsuleStore implements StagedStore {
7
7
  #private;
@@ -31,20 +31,20 @@ export declare class CapsuleStore implements StagedStore {
31
31
  * to public contract storage in that it's indexed by the contract address and storage slot but instead of the global
32
32
  * network state it's backed by local PXE db.
33
33
  */
34
- storeCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[], jobId: string): void;
34
+ setCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[], jobId: string, scope: AztecAddress): void;
35
35
  /**
36
36
  * Returns data previously stored via `storeCapsule` in the per-contract non-volatile database.
37
37
  * @param contractAddress - The contract address under which the data is scoped.
38
38
  * @param slot - The slot in the database to read.
39
39
  * @returns The stored data or `null` if no data is stored under the slot.
40
40
  */
41
- loadCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string): Promise<Fr[] | null>;
41
+ getCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress): Promise<Fr[] | null>;
42
42
  /**
43
43
  * Deletes data in the per-contract non-volatile database. Does nothing if no data was present.
44
44
  * @param contractAddress - The contract address under which the data is scoped.
45
45
  * @param slot - The slot in the database to delete.
46
46
  */
47
- deleteCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string): void;
47
+ deleteCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress): void;
48
48
  /**
49
49
  * Copies a number of contiguous entries in the per-contract non-volatile database. This allows for efficient data
50
50
  * structures by avoiding repeated calls to `loadCapsule` and `storeCapsule`.
@@ -56,7 +56,7 @@ export declare class CapsuleStore implements StagedStore {
56
56
  * @param dstSlot - The first slot to copy to.
57
57
  * @param numEntries - The number of entries to copy.
58
58
  */
59
- copyCapsule(contractAddress: AztecAddress, srcSlot: Fr, dstSlot: Fr, numEntries: number, jobId: string): Promise<void>;
59
+ copyCapsule(contractAddress: AztecAddress, srcSlot: Fr, dstSlot: Fr, numEntries: number, jobId: string, scope: AztecAddress): Promise<void>;
60
60
  /**
61
61
  * Appends multiple capsules to a capsule array stored at the base slot.
62
62
  * The array length is stored at the base slot, and elements are stored in consecutive slots after it.
@@ -65,8 +65,8 @@ export declare class CapsuleStore implements StagedStore {
65
65
  * @param baseSlot - The slot where the array length is stored
66
66
  * @param content - Array of capsule data to append
67
67
  */
68
- appendToCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string): Promise<void>;
69
- readCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, jobId: string): Promise<Fr[][]>;
70
- setCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string): Promise<void>;
68
+ appendToCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string, scope: AztecAddress): Promise<void>;
69
+ readCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, jobId: string, scope: AztecAddress): Promise<Fr[][]>;
70
+ setCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string, scope: AztecAddress): Promise<void>;
71
71
  }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fwc3VsZV9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JhZ2UvY2Fwc3VsZV9zdG9yZS9jYXBzdWxlX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFNUUscUJBQWEsWUFBYSxZQUFXLFdBQVc7O0lBQzlDLFFBQVEsQ0FBQyxTQUFTLGFBQWE7SUFZL0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUVmLFlBQVksS0FBSyxFQUFFLGlCQUFpQixFQVFuQztJQStERDs7Ozs7O09BTUc7SUFDRyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBZXpDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRzFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILFlBQVksQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLFFBS2pGO0lBRUQ7Ozs7O09BS0c7SUFDRyxXQUFXLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQVc5RjtJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLFFBR25FO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILFdBQVcsQ0FDVCxlQUFlLEVBQUUsWUFBWSxFQUM3QixPQUFPLEVBQUUsRUFBRSxFQUNYLE9BQU8sRUFBRSxFQUFFLEVBQ1gsVUFBVSxFQUFFLE1BQU0sRUFDbEIsS0FBSyxFQUFFLE1BQU0sR0FDWixPQUFPLENBQUMsSUFBSSxDQUFDLENBMkJmO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILG9CQUFvQixDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FxQi9HO0lBRUQsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0EyQjVGO0lBRUQsZUFBZSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkEyQjFGO0NBQ0YifQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fwc3VsZV9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JhZ2UvY2Fwc3VsZV9zdG9yZS9jYXBzdWxlX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRTVFLHFCQUFhLFlBQWEsWUFBVyxXQUFXOztJQUM5QyxRQUFRLENBQUMsU0FBUyxhQUFhO0lBYS9CLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFZixZQUFZLEtBQUssRUFBRSxpQkFBaUIsRUFRbkM7SUErREQ7Ozs7OztPQU1HO0lBQ0csTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWV6QztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUcxQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxVQUFVLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLFFBS3BHO0lBRUQ7Ozs7O09BS0c7SUFDRyxVQUFVLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBV2xIO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxRQUd4RjtJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxXQUFXLENBQ1QsZUFBZSxFQUFFLFlBQVksRUFDN0IsT0FBTyxFQUFFLEVBQUUsRUFDWCxPQUFPLEVBQUUsRUFBRSxFQUNYLFVBQVUsRUFBRSxNQUFNLEVBQ2xCLEtBQUssRUFBRSxNQUFNLEVBQ2IsS0FBSyxFQUFFLFlBQVksR0FDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQTJCZjtJQUVEOzs7Ozs7O09BT0c7SUFDSCxvQkFBb0IsQ0FDbEIsZUFBZSxFQUFFLFlBQVksRUFDN0IsUUFBUSxFQUFFLEVBQUUsRUFDWixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFDZixLQUFLLEVBQUUsTUFBTSxFQUNiLEtBQUssRUFBRSxZQUFZLEdBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FxQmY7SUFFRCxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBMkJqSDtJQUVELGVBQWUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxpQkEyQi9HO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"capsule_store.d.ts","sourceRoot":"","sources":["../../../src/storage/capsule_store/capsule_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAE5E,qBAAa,YAAa,YAAW,WAAW;;IAC9C,QAAQ,CAAC,SAAS,aAAa;IAY/B,MAAM,EAAE,MAAM,CAAC;IAEf,YAAY,KAAK,EAAE,iBAAiB,EAQnC;IA+DD;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAezC;IAED;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1C;IAED;;;;;;;;;;OAUG;IACH,YAAY,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,QAKjF;IAED;;;;;OAKG;IACG,WAAW,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAW9F;IAED;;;;OAIG;IACH,aAAa,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,QAGnE;IAED;;;;;;;;;;OAUG;IACH,WAAW,CACT,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CA2Bf;IAED;;;;;;;OAOG;IACH,oBAAoB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/G;IAED,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CA2B5F;IAED,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,iBA2B1F;CACF"}
1
+ {"version":3,"file":"capsule_store.d.ts","sourceRoot":"","sources":["../../../src/storage/capsule_store/capsule_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAE5E,qBAAa,YAAa,YAAW,WAAW;;IAC9C,QAAQ,CAAC,SAAS,aAAa;IAa/B,MAAM,EAAE,MAAM,CAAC;IAEf,YAAY,KAAK,EAAE,iBAAiB,EAQnC;IA+DD;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAezC;IAED;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1C;IAED;;;;;;;;;;OAUG;IACH,UAAU,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,QAKpG;IAED;;;;;OAKG;IACG,UAAU,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAWlH;IAED;;;;OAIG;IACH,aAAa,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,QAGxF;IAED;;;;;;;;;;OAUG;IACH,WAAW,CACT,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CA2Bf;IAED;;;;;;;OAOG;IACH,oBAAoB,CAClB,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,EAAE,EACZ,OAAO,EAAE,EAAE,EAAE,EAAE,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAqBf;IAED,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CA2BjH;IAED,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,iBA2B/G;CACF"}