@aztec/pxe 3.0.0-nightly.20251216 → 3.0.0-nightly.20251218

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 (121) hide show
  1. package/dest/block_synchronizer/block_synchronizer.d.ts +39 -0
  2. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  3. package/dest/{synchronizer/synchronizer.js → block_synchronizer/block_synchronizer.js} +22 -17
  4. package/dest/block_synchronizer/index.d.ts +2 -0
  5. package/dest/block_synchronizer/index.d.ts.map +1 -0
  6. package/dest/block_synchronizer/index.js +1 -0
  7. package/dest/config/index.d.ts +4 -4
  8. package/dest/config/index.d.ts.map +1 -1
  9. package/dest/contract_function_simulator/contract_function_simulator.d.ts +6 -4
  10. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  11. package/dest/contract_function_simulator/contract_function_simulator.js +7 -6
  12. package/dest/contract_function_simulator/execution_data_provider.d.ts +6 -26
  13. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +1 -1
  14. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +1 -1
  15. package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
  16. package/dest/contract_function_simulator/oracle/interfaces.d.ts +2 -2
  17. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  18. package/dest/contract_function_simulator/oracle/oracle.d.ts +1 -1
  19. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/oracle/oracle.js +3 -3
  21. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -2
  22. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/oracle/private_execution.js +0 -1
  24. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +2 -3
  25. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +8 -4
  27. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +4 -3
  28. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  29. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +8 -7
  30. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +9 -20
  31. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/pxe_oracle_interface.js +41 -106
  33. package/dest/debug/pxe_debug_utils.d.ts +30 -0
  34. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  35. package/dest/debug/pxe_debug_utils.js +37 -0
  36. package/dest/events/private_event_filter_validator.d.ts +4 -4
  37. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  38. package/dest/events/private_event_filter_validator.js +4 -4
  39. package/dest/pxe.d.ts +19 -28
  40. package/dest/pxe.d.ts.map +1 -1
  41. package/dest/pxe.js +70 -86
  42. package/dest/storage/anchor_block_data_provider/anchor_block_data_provider.d.ts +9 -0
  43. package/dest/storage/anchor_block_data_provider/anchor_block_data_provider.d.ts.map +1 -0
  44. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_data_provider/anchor_block_data_provider.js} +2 -9
  45. package/dest/storage/anchor_block_data_provider/index.d.ts +2 -0
  46. package/dest/storage/anchor_block_data_provider/index.d.ts.map +1 -0
  47. package/dest/storage/anchor_block_data_provider/index.js +1 -0
  48. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +3 -2
  49. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +1 -1
  50. package/dest/storage/contract_data_provider/contract_data_provider.js +21 -1
  51. package/dest/storage/index.d.ts +2 -2
  52. package/dest/storage/index.d.ts.map +1 -1
  53. package/dest/storage/index.js +1 -1
  54. package/dest/storage/tagging_data_provider/index.d.ts +3 -2
  55. package/dest/storage/tagging_data_provider/index.d.ts.map +1 -1
  56. package/dest/storage/tagging_data_provider/index.js +2 -1
  57. package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts +31 -0
  58. package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts.map +1 -0
  59. package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.js +65 -0
  60. package/dest/storage/tagging_data_provider/sender_tagging_data_provider.d.ts +67 -0
  61. package/dest/storage/tagging_data_provider/sender_tagging_data_provider.d.ts.map +1 -0
  62. package/dest/storage/tagging_data_provider/sender_tagging_data_provider.js +196 -0
  63. package/dest/tagging/constants.d.ts +1 -1
  64. package/dest/tagging/constants.d.ts.map +1 -1
  65. package/dest/tagging/constants.js +1 -0
  66. package/dest/tagging/sync/sync_sender_tagging_indexes.d.ts +21 -0
  67. package/dest/tagging/sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  68. package/dest/tagging/sync/sync_sender_tagging_indexes.js +89 -0
  69. package/dest/tagging/sync/utils/get_status_change_of_pending.d.ts +11 -0
  70. package/dest/tagging/sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  71. package/dest/tagging/sync/utils/get_status_change_of_pending.js +32 -0
  72. package/dest/tagging/sync/utils/load_and_store_new_tagging_indexes.d.ts +18 -0
  73. package/dest/tagging/sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  74. package/dest/tagging/sync/utils/load_and_store_new_tagging_indexes.js +57 -0
  75. package/dest/tagging/utils.d.ts +2 -2
  76. package/dest/tagging/utils.d.ts.map +1 -1
  77. package/dest/tagging/utils.js +3 -2
  78. package/package.json +16 -16
  79. package/src/{synchronizer/synchronizer.ts → block_synchronizer/block_synchronizer.ts} +21 -17
  80. package/src/block_synchronizer/index.ts +1 -0
  81. package/src/config/index.ts +3 -3
  82. package/src/contract_function_simulator/contract_function_simulator.ts +21 -5
  83. package/src/contract_function_simulator/execution_data_provider.ts +7 -28
  84. package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
  85. package/src/contract_function_simulator/oracle/interfaces.ts +1 -1
  86. package/src/contract_function_simulator/oracle/oracle.ts +3 -3
  87. package/src/contract_function_simulator/oracle/private_execution.ts +1 -3
  88. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +11 -5
  89. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +6 -6
  90. package/src/contract_function_simulator/pxe_oracle_interface.ts +41 -114
  91. package/src/debug/pxe_debug_utils.ts +47 -0
  92. package/src/events/private_event_filter_validator.ts +3 -3
  93. package/src/pxe.ts +74 -96
  94. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_data_provider/anchor_block_data_provider.ts} +2 -12
  95. package/src/storage/anchor_block_data_provider/index.ts +1 -0
  96. package/src/storage/contract_data_provider/contract_data_provider.ts +27 -0
  97. package/src/storage/index.ts +1 -1
  98. package/src/storage/tagging_data_provider/index.ts +2 -1
  99. package/src/storage/tagging_data_provider/recipient_tagging_data_provider.ts +86 -0
  100. package/src/storage/tagging_data_provider/sender_tagging_data_provider.ts +244 -0
  101. package/src/tagging/constants.ts +1 -0
  102. package/src/tagging/sync/sync_sender_tagging_indexes.ts +112 -0
  103. package/src/tagging/sync/utils/get_status_change_of_pending.ts +44 -0
  104. package/src/tagging/sync/utils/load_and_store_new_tagging_indexes.ts +74 -0
  105. package/src/tagging/utils.ts +3 -2
  106. package/dest/storage/sync_data_provider/index.d.ts +0 -2
  107. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  108. package/dest/storage/sync_data_provider/index.js +0 -1
  109. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -11
  110. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  111. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  112. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  113. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  114. package/dest/synchronizer/index.d.ts +0 -2
  115. package/dest/synchronizer/index.d.ts.map +0 -1
  116. package/dest/synchronizer/index.js +0 -1
  117. package/dest/synchronizer/synchronizer.d.ts +0 -36
  118. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  119. package/src/storage/sync_data_provider/index.ts +0 -1
  120. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  121. package/src/synchronizer/index.ts +0 -1
@@ -1,4 +1,3 @@
1
- import { timesParallel } from '@aztec/foundation/collection';
2
1
  import { createLogger } from '@aztec/foundation/log';
3
2
  import { computeUniqueNoteHash, siloNoteHash, siloNullifier, siloPrivateLog } from '@aztec/stdlib/hash';
4
3
  import { MAX_RPC_LEN } from '@aztec/stdlib/interfaces/client';
@@ -23,19 +22,25 @@ import { NoteValidationRequest } from './noir-structs/note_validation_request.js
23
22
  contractDataProvider;
24
23
  noteDataProvider;
25
24
  capsuleDataProvider;
26
- syncDataProvider;
27
- taggingDataProvider;
25
+ anchorBlockDataProvider;
26
+ senderTaggingDataProvider;
27
+ recipientTaggingDataProvider;
28
28
  addressDataProvider;
29
29
  privateEventDataProvider;
30
30
  log;
31
- constructor(aztecNode, keyStore, contractDataProvider, noteDataProvider, capsuleDataProvider, syncDataProvider, taggingDataProvider, addressDataProvider, privateEventDataProvider, log = createLogger('pxe:pxe_oracle_interface')){
31
+ // Note: The Aztec node and senderDataProvider are exposed publicly since PXEOracleInterface will be deprecated soon
32
+ // (issue #17776). When refactoring tagging, it made sense to align with this future change by moving the sender
33
+ // tagging index sync functionality elsewhere. This required exposing these two properties since there is currently
34
+ // no alternative way to access them in the PrivateExecutionOracle.
35
+ constructor(aztecNode, keyStore, contractDataProvider, noteDataProvider, capsuleDataProvider, anchorBlockDataProvider, senderTaggingDataProvider, recipientTaggingDataProvider, addressDataProvider, privateEventDataProvider, log = createLogger('pxe:pxe_oracle_interface')){
32
36
  this.aztecNode = aztecNode;
33
37
  this.keyStore = keyStore;
34
38
  this.contractDataProvider = contractDataProvider;
35
39
  this.noteDataProvider = noteDataProvider;
36
40
  this.capsuleDataProvider = capsuleDataProvider;
37
- this.syncDataProvider = syncDataProvider;
38
- this.taggingDataProvider = taggingDataProvider;
41
+ this.anchorBlockDataProvider = anchorBlockDataProvider;
42
+ this.senderTaggingDataProvider = senderTaggingDataProvider;
43
+ this.recipientTaggingDataProvider = recipientTaggingDataProvider;
39
44
  this.addressDataProvider = addressDataProvider;
40
45
  this.privateEventDataProvider = privateEventDataProvider;
41
46
  this.log = log;
@@ -133,43 +138,40 @@ import { NoteValidationRequest } from './noir-structs/note_validation_request.js
133
138
  }
134
139
  }
135
140
  async getNullifierMembershipWitnessAtLatestBlock(nullifier) {
136
- const blockNumber = (await this.getAnchorBlockHeader()).globalVariables.blockNumber;
141
+ const blockNumber = (await this.anchorBlockDataProvider.getBlockHeader()).getBlockNumber();
137
142
  return this.getNullifierMembershipWitness(blockNumber, nullifier);
138
143
  }
139
144
  getNullifierMembershipWitness(blockNumber, nullifier) {
140
145
  return this.aztecNode.getNullifierMembershipWitness(blockNumber, nullifier);
141
146
  }
142
147
  async getLowNullifierMembershipWitness(blockNumber, nullifier) {
143
- const header = await this.getAnchorBlockHeader();
144
- if (blockNumber !== 'latest' && blockNumber > header.globalVariables.blockNumber) {
145
- throw new Error(`Block number ${blockNumber} is higher than current block ${header.globalVariables.blockNumber}`);
148
+ const anchorBlockNumber = (await this.anchorBlockDataProvider.getBlockHeader()).getBlockNumber();
149
+ if (blockNumber !== 'latest' && blockNumber > anchorBlockNumber) {
150
+ throw new Error(`Block number ${blockNumber} is higher than current block ${anchorBlockNumber}`);
146
151
  }
147
152
  return this.aztecNode.getLowNullifierMembershipWitness(blockNumber, nullifier);
148
153
  }
149
154
  async getBlock(blockNumber) {
150
- const header = await this.getAnchorBlockHeader();
151
- if (blockNumber !== 'latest' && blockNumber > header.globalVariables.blockNumber) {
152
- throw new Error(`Block number ${blockNumber} is higher than current block ${header.globalVariables.blockNumber}`);
155
+ const anchorBlockNumber = (await this.anchorBlockDataProvider.getBlockHeader()).getBlockNumber();
156
+ if (blockNumber !== 'latest' && blockNumber > anchorBlockNumber) {
157
+ throw new Error(`Block number ${blockNumber} is higher than current block ${anchorBlockNumber}`);
153
158
  }
154
159
  return await this.aztecNode.getBlock(blockNumber);
155
160
  }
156
161
  async getPublicDataWitness(blockNumber, leafSlot) {
157
- const header = await this.getAnchorBlockHeader();
158
- if (blockNumber !== 'latest' && blockNumber > header.globalVariables.blockNumber) {
159
- throw new Error(`Block number ${blockNumber} is higher than current block ${header.globalVariables.blockNumber}`);
162
+ const anchorBlockNumber = (await this.anchorBlockDataProvider.getBlockHeader()).getBlockNumber();
163
+ if (blockNumber !== 'latest' && blockNumber > anchorBlockNumber) {
164
+ throw new Error(`Block number ${blockNumber} is higher than current block ${anchorBlockNumber}`);
160
165
  }
161
166
  return await this.aztecNode.getPublicDataWitness(blockNumber, leafSlot);
162
167
  }
163
168
  async getPublicStorageAt(blockNumber, contract, slot) {
164
- const header = await this.getAnchorBlockHeader();
165
- if (blockNumber !== 'latest' && blockNumber > header.globalVariables.blockNumber) {
166
- throw new Error(`Block number ${blockNumber} is higher than current block ${header.globalVariables.blockNumber}`);
169
+ const anchorBlockNumber = (await this.anchorBlockDataProvider.getBlockHeader()).getBlockNumber();
170
+ if (blockNumber !== 'latest' && blockNumber > anchorBlockNumber) {
171
+ throw new Error(`Block number ${blockNumber} is higher than current block ${anchorBlockNumber}`);
167
172
  }
168
173
  return await this.aztecNode.getPublicStorageAt(blockNumber, contract, slot);
169
174
  }
170
- getAnchorBlockHeader() {
171
- return this.syncDataProvider.getBlockHeader();
172
- }
173
175
  assertCompatibleOracleVersion(version) {
174
176
  if (version !== ORACLE_VERSION) {
175
177
  throw new Error(`Incompatible oracle version. Expected version ${ORACLE_VERSION}, got ${version}.`);
@@ -184,10 +186,7 @@ import { NoteValidationRequest } from './noir-structs/note_validation_request.js
184
186
  * finally the index specified tag. We will then query the node with this tag for each address in the address book.
185
187
  * @returns The full list of the users contact addresses.
186
188
  */ getSenders() {
187
- return this.taggingDataProvider.getSenderAddresses();
188
- }
189
- getLastUsedIndexAsSender(secret) {
190
- return this.taggingDataProvider.getLastUsedIndexesAsSender(secret);
189
+ return this.recipientTaggingDataProvider.getSenderAddresses();
191
190
  }
192
191
  async calculateDirectionalAppTaggingSecret(contractAddress, sender, recipient) {
193
192
  const senderCompleteAddress = await this.getCompleteAddress(sender);
@@ -204,21 +203,21 @@ import { NoteValidationRequest } from './noir-structs/note_validation_request.js
204
203
  * @param recipient - The address receiving the notes
205
204
  * @returns A list of directional app tagging secrets along with the last used tagging indexes. If the corresponding
206
205
  * secret was never used, the index is undefined.
207
- * TODO(benesjan): The naming here is broken as the function name does not reflect the return type. Fix when associating
208
- * indexes with tx hash.
206
+ * TODO(#17775): The naming here is broken as the function name does not reflect the return type. Make sure this gets
207
+ * fixed when implementing the linked issue.
209
208
  */ async #getLastUsedTaggingIndexesForSenders(contractAddress, recipient) {
210
209
  const recipientCompleteAddress = await this.getCompleteAddress(recipient);
211
210
  const recipientIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(recipient);
212
211
  // We implicitly add all PXE accounts as senders, this helps us decrypt tags on notes that we send to ourselves
213
212
  // (recipient = us, sender = us)
214
213
  const senders = [
215
- ...await this.taggingDataProvider.getSenderAddresses(),
214
+ ...await this.recipientTaggingDataProvider.getSenderAddresses(),
216
215
  ...await this.keyStore.getAccounts()
217
216
  ].filter((address, index, self)=>index === self.findIndex((otherAddress)=>otherAddress.equals(address)));
218
217
  const secrets = await Promise.all(senders.map((contact)=>{
219
218
  return DirectionalAppTaggingSecret.compute(recipientCompleteAddress, recipientIvsk, contact, contractAddress, recipient);
220
219
  }));
221
- const indexes = await this.taggingDataProvider.getLastUsedIndexesAsRecipient(secrets);
220
+ const indexes = await this.recipientTaggingDataProvider.getLastUsedIndexes(secrets);
222
221
  if (indexes.length !== secrets.length) {
223
222
  throw new Error('Indexes and directional app tagging secrets have different lengths');
224
223
  }
@@ -227,79 +226,14 @@ import { NoteValidationRequest } from './noir-structs/note_validation_request.js
227
226
  index: indexes[i]
228
227
  }));
229
228
  }
230
- async syncTaggedLogsAsSender(secret, contractAddress) {
231
- const lastUsedIndex = await this.taggingDataProvider.getLastUsedIndexesAsSender(secret);
232
- // If lastUsedIndex is undefined, we've never used this secret, so start from 0
233
- // Otherwise, start from one past the last used index
234
- const startIndex = lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
235
- // This algorithm works such that:
236
- // 1. If we find minimum consecutive empty logs in a window of logs we set the index to the index of the last log
237
- // we found and quit.
238
- // 2. If we don't find minimum consecutive empty logs in a window of logs we slide the window to latest log index
239
- // and repeat the process.
240
- const MIN_CONSECUTIVE_EMPTY_LOGS = 10;
241
- const WINDOW_SIZE = MIN_CONSECUTIVE_EMPTY_LOGS * 2;
242
- let [numConsecutiveEmptyLogs, currentIndex] = [
243
- 0,
244
- startIndex
245
- ];
246
- let lastFoundLogIndex = undefined;
247
- do {
248
- // We compute the tags for the current window of indexes
249
- const currentTags = await timesParallel(WINDOW_SIZE, async (i)=>{
250
- return SiloedTag.compute(await Tag.compute({
251
- secret,
252
- index: currentIndex + i
253
- }), contractAddress);
254
- });
255
- // We fetch the logs for the tags
256
- // TODO: The following conversion is unfortunate and we should most likely just type the #getPrivateLogsByTags
257
- // to accept SiloedTag[] instead of Fr[]. That would result in a large change so I didn't do it yet.
258
- const tagsAsFr = currentTags.map((tag)=>tag.value);
259
- const possibleLogs = await this.#getPrivateLogsByTags(tagsAsFr);
260
- // We find the index of the last log in the window that is not empty
261
- const indexOfLastLogWithinArray = possibleLogs.findLastIndex((possibleLog)=>possibleLog.length !== 0);
262
- if (indexOfLastLogWithinArray === -1) {
263
- break;
264
- }
265
- // We've found logs so we update the last found log index
266
- lastFoundLogIndex = (lastFoundLogIndex ?? 0) + indexOfLastLogWithinArray;
267
- // We move the current index to that of the log right after the last found log
268
- currentIndex = lastFoundLogIndex + 1;
269
- // We compute the number of consecutive empty logs we found and repeat the process if we haven't found enough.
270
- numConsecutiveEmptyLogs = WINDOW_SIZE - indexOfLastLogWithinArray - 1;
271
- }while (numConsecutiveEmptyLogs < MIN_CONSECUTIVE_EMPTY_LOGS)
272
- const contractName = await this.contractDataProvider.getDebugContractName(contractAddress);
273
- if (lastFoundLogIndex !== undefined) {
274
- // Last found index is defined meaning we have actually found logs so we update the last used index
275
- await this.taggingDataProvider.setLastUsedIndexesAsSender([
276
- {
277
- secret,
278
- index: lastFoundLogIndex
279
- }
280
- ]);
281
- this.log.debug(`Syncing logs for secret ${secret.toString()} at contract ${contractName}(${contractAddress})`, {
282
- index: currentIndex,
283
- contractName,
284
- contractAddress
285
- });
286
- } else {
287
- this.log.debug(`No new logs found for secret ${secret.toString()} at contract ${contractName}(${contractAddress})`);
288
- }
289
- }
290
- /**
291
- * Synchronizes the private logs tagged with scoped addresses and all the senders in the address book. Stores the found
292
- * logs in CapsuleArray ready for a later retrieval in Aztec.nr.
293
- * @param contractAddress - The address of the contract that the logs are tagged for.
294
- * @param pendingTaggedLogArrayBaseSlot - The base slot of the pending tagged logs capsule array in which
295
- * found logs will be stored.
296
- * @param scopes - The scoped addresses to sync logs for. If not provided, all accounts in the address book will be
297
- * synced.
298
- */ async syncTaggedLogs(contractAddress, pendingTaggedLogArrayBaseSlot, scopes) {
229
+ // TODO(#17775): Replace this implementation of this function with one implementing an approach similar
230
+ // to syncSenderTaggingIndexes. Not done yet due to re-prioritization to devex and this doesn't directly affect
231
+ // devex.
232
+ async syncTaggedLogs(contractAddress, pendingTaggedLogArrayBaseSlot, scopes) {
299
233
  this.log.verbose('Searching for tagged logs', {
300
234
  contract: contractAddress
301
235
  });
302
- const maxBlockNumber = await this.syncDataProvider.getBlockNumber();
236
+ const maxBlockNumber = (await this.anchorBlockDataProvider.getBlockHeader()).getBlockNumber();
303
237
  // Ideally this algorithm would be implemented in noir, exposing its building blocks as oracles.
304
238
  // However it is impossible at the moment due to the language not supporting nested slices.
305
239
  // This nesting is necessary because for a given set of tags we don't
@@ -363,7 +297,7 @@ import { NoteValidationRequest } from './noir-structs/note_validation_request.js
363
297
  const filteredLogsByBlockNumber = logsByTag.filter((l)=>l.blockNumber <= maxBlockNumber);
364
298
  // We store the logs in capsules (to later be obtained in Noir)
365
299
  await this.#storePendingTaggedLogs(contractAddress, pendingTaggedLogArrayBaseSlot, recipient, filteredLogsByBlockNumber);
366
- // We retrieve the pre tag corresponding to the log as I need that to evaluate whether
300
+ // We retrieve the pre-tag corresponding to the log as I need that to evaluate whether
367
301
  // a new largest index have been found.
368
302
  const preTagCorrespondingToLog = preTagsForTheWholeWindow[logIndex];
369
303
  const initialIndex = initialIndexesMap[preTagCorrespondingToLog.secret.toString()];
@@ -400,7 +334,7 @@ import { NoteValidationRequest } from './noir-structs/note_validation_request.js
400
334
  // At this point we have processed all the logs for the recipient so we store the last used indexes in the db.
401
335
  // newLargestIndexMapToStore contains "next" indexes to look for (one past the last found), so subtract 1 to get
402
336
  // last used.
403
- await this.taggingDataProvider.setLastUsedIndexesAsRecipient(Object.entries(newLargestIndexMapToStore).map(([directionalAppTaggingSecret, index])=>({
337
+ await this.recipientTaggingDataProvider.setLastUsedIndexes(Object.entries(newLargestIndexMapToStore).map(([directionalAppTaggingSecret, index])=>({
404
338
  secret: DirectionalAppTaggingSecret.fromString(directionalAppTaggingSecret),
405
339
  index: index - 1
406
340
  })));
@@ -453,7 +387,7 @@ import { NoteValidationRequest } from './noir-structs/note_validation_request.js
453
387
  // number which *should* be recent enough to be available, even for non-archive nodes.
454
388
  // Also note that the note should never be ahead of the synced block here since `fetchTaggedLogs` only processes
455
389
  // logs up to the synced block making this only an additional safety check.
456
- const syncedBlockNumber = await this.syncDataProvider.getBlockNumber();
390
+ const syncedBlockNumber = (await this.anchorBlockDataProvider.getBlockHeader()).getBlockNumber();
457
391
  // By computing siloed and unique note hashes ourselves we prevent contracts from interfering with the note storage
458
392
  // of other contracts, which would constitute a security breach.
459
393
  const uniqueNoteHash = await computeUniqueNoteHash(noteNonce, await siloNoteHash(contractAddress, noteHash));
@@ -542,11 +476,12 @@ import { NoteValidationRequest } from './noir-structs/note_validation_request.js
542
476
  // (and thus we're less concerned about being ahead of the synced block), we use the synced block number to
543
477
  // maintain consistent behavior in the PXE. Additionally, events should never be ahead of the synced block here
544
478
  // since `fetchTaggedLogs` only processes logs up to the synced block.
545
- const [syncedBlockNumber, siloedEventCommitment, txEffect] = await Promise.all([
546
- this.syncDataProvider.getBlockNumber(),
479
+ const [syncedBlockHeader, siloedEventCommitment, txEffect] = await Promise.all([
480
+ this.anchorBlockDataProvider.getBlockHeader(),
547
481
  siloNullifier(contractAddress, eventCommitment),
548
482
  this.aztecNode.getTxEffect(txHash)
549
483
  ]);
484
+ const syncedBlockNumber = syncedBlockHeader.getBlockNumber();
550
485
  if (!txEffect) {
551
486
  throw new Error(`Could not find tx effect for tx hash ${txHash}`);
552
487
  }
@@ -632,7 +567,7 @@ import { NoteValidationRequest } from './noir-structs/note_validation_request.js
632
567
  this.log.verbose('Searching for nullifiers of known notes', {
633
568
  contract: contractAddress
634
569
  });
635
- const syncedBlockNumber = await this.syncDataProvider.getBlockNumber();
570
+ const syncedBlockNumber = (await this.anchorBlockDataProvider.getBlockHeader()).getBlockNumber();
636
571
  const contractNotes = await this.noteDataProvider.getNotes({
637
572
  contractAddress
638
573
  });
@@ -0,0 +1,30 @@
1
+ import type { NoteDao, NotesFilter } from '@aztec/stdlib/note';
2
+ import type { PXE } from '../pxe.js';
3
+ import type { ContractDataProvider, NoteDataProvider } from '../storage/index.js';
4
+ /**
5
+ * Methods provided by this class might help debugging but must not be used in production.
6
+ * No backwards compatibility or API stability should be expected. Use at your own risk.
7
+ */
8
+ export declare class PXEDebugUtils {
9
+ #private;
10
+ private contractDataProvider;
11
+ private noteDataProvider;
12
+ constructor(contractDataProvider: ContractDataProvider, noteDataProvider: NoteDataProvider);
13
+ /**
14
+ * Not injected through constructor since they're are co-dependant.
15
+ */
16
+ setPXE(pxe: PXE): void;
17
+ /**
18
+ * A debugging utility to get notes based on the provided filter.
19
+ *
20
+ * Note that this should not be used in production code because the structure of notes is considered to be
21
+ * an implementation detail of contracts. This is only meant to be used for debugging purposes. If you need to obtain
22
+ * note-related information in production code, please implement a custom utility function on your contract and call
23
+ * that function instead (e.g. `get_balance(owner: AztecAddress) -> u128` utility function on a Token contract).
24
+ *
25
+ * @param filter - The filter to apply to the notes.
26
+ * @returns The requested notes.
27
+ */
28
+ getNotes(filter: NotesFilter): Promise<NoteDao[]>;
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2RlYnVnX3V0aWxzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVidWcvcHhlX2RlYnVnX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvRCxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRjs7O0dBR0c7QUFDSCxxQkFBYSxhQUFhOztJQUl0QixPQUFPLENBQUMsb0JBQW9CO0lBQzVCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFGMUIsWUFDVSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFDMUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ3hDO0lBRUo7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFFckI7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ1UsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBVTdEO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pxe_debug_utils.d.ts","sourceRoot":"","sources":["../../src/debug/pxe_debug_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAElF;;;GAGG;AACH,qBAAa,aAAa;;IAItB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,gBAAgB;IAF1B,YACU,oBAAoB,EAAE,oBAAoB,EAC1C,gBAAgB,EAAE,gBAAgB,EACxC;IAEJ;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,GAAG,QAErB;IAED;;;;;;;;;;OAUG;IACU,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAU7D;CACF"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Methods provided by this class might help debugging but must not be used in production.
3
+ * No backwards compatibility or API stability should be expected. Use at your own risk.
4
+ */ export class PXEDebugUtils {
5
+ contractDataProvider;
6
+ noteDataProvider;
7
+ #pxe;
8
+ constructor(contractDataProvider, noteDataProvider){
9
+ this.contractDataProvider = contractDataProvider;
10
+ this.noteDataProvider = noteDataProvider;
11
+ this.#pxe = undefined;
12
+ }
13
+ /**
14
+ * Not injected through constructor since they're are co-dependant.
15
+ */ setPXE(pxe) {
16
+ this.#pxe = pxe;
17
+ }
18
+ /**
19
+ * A debugging utility to get notes based on the provided filter.
20
+ *
21
+ * Note that this should not be used in production code because the structure of notes is considered to be
22
+ * an implementation detail of contracts. This is only meant to be used for debugging purposes. If you need to obtain
23
+ * note-related information in production code, please implement a custom utility function on your contract and call
24
+ * that function instead (e.g. `get_balance(owner: AztecAddress) -> u128` utility function on a Token contract).
25
+ *
26
+ * @param filter - The filter to apply to the notes.
27
+ * @returns The requested notes.
28
+ */ async getNotes(filter) {
29
+ if (!this.#pxe) {
30
+ throw new Error('Cannot getNotes because no PXE is set');
31
+ }
32
+ // We need to manually trigger private state sync to have a guarantee that all the notes are available.
33
+ const call = await this.contractDataProvider.getFunctionCall('sync_private_state', [], filter.contractAddress);
34
+ await this.#pxe.simulateUtility(call);
35
+ return this.noteDataProvider.getNotes(filter);
36
+ }
37
+ }
@@ -1,8 +1,8 @@
1
1
  import type { PrivateEventFilter } from '@aztec/aztec.js/wallet';
2
- import type { PrivateEventDataProviderFilter, SyncDataProvider } from '../storage/index.js';
2
+ import type { AnchorBlockDataProvider, PrivateEventDataProviderFilter } from '../storage/index.js';
3
3
  export declare class PrivateEventFilterValidator {
4
- private syncDataProvider;
5
- constructor(syncDataProvider: SyncDataProvider);
4
+ private anchorBlockDataProvider;
5
+ constructor(anchorBlockDataProvider: AnchorBlockDataProvider);
6
6
  validate(filter: PrivateEventFilter): Promise<PrivateEventDataProviderFilter>;
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9ldmVudF9maWx0ZXJfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL3ByaXZhdGVfZXZlbnRfZmlsdGVyX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSWpFLE9BQU8sS0FBSyxFQUFFLDhCQUE4QixFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFNUYscUJBQWEsMkJBQTJCO0lBQzFCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFBcEMsWUFBb0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUk7SUFFcEQsUUFBUSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FvQ2xGO0NBQ0YifQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9ldmVudF9maWx0ZXJfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL3ByaXZhdGVfZXZlbnRfZmlsdGVyX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSWpFLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLDhCQUE4QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbkcscUJBQWEsMkJBQTJCO0lBQzFCLE9BQU8sQ0FBQyx1QkFBdUI7SUFBM0MsWUFBb0IsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUk7SUFFbEUsUUFBUSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FvQ2xGO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"private_event_filter_validator.d.ts","sourceRoot":"","sources":["../../src/events/private_event_filter_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,OAAO,KAAK,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5F,qBAAa,2BAA2B;IAC1B,OAAO,CAAC,gBAAgB;IAApC,YAAoB,gBAAgB,EAAE,gBAAgB,EAAI;IAEpD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAoClF;CACF"}
1
+ {"version":3,"file":"private_event_filter_validator.d.ts","sourceRoot":"","sources":["../../src/events/private_event_filter_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAEnG,qBAAa,2BAA2B;IAC1B,OAAO,CAAC,uBAAuB;IAA3C,YAAoB,uBAAuB,EAAE,uBAAuB,EAAI;IAElE,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAoClF;CACF"}
@@ -1,9 +1,9 @@
1
1
  import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
2
2
  import { BlockNumber } from '@aztec/foundation/branded-types';
3
3
  export class PrivateEventFilterValidator {
4
- syncDataProvider;
5
- constructor(syncDataProvider){
6
- this.syncDataProvider = syncDataProvider;
4
+ anchorBlockDataProvider;
5
+ constructor(anchorBlockDataProvider){
6
+ this.anchorBlockDataProvider = anchorBlockDataProvider;
7
7
  }
8
8
  async validate(filter) {
9
9
  let { fromBlock, toBlock } = filter;
@@ -12,7 +12,7 @@ export class PrivateEventFilterValidator {
12
12
  // We then default to [INITIAL_L2_BLOCK_NUM, latestKnownBlock + 1), ie: by default return events from
13
13
  // the first block to the latest known block.
14
14
  if (!fromBlock || !toBlock) {
15
- const lastKnownBlock = await this.syncDataProvider.getBlockNumber();
15
+ const lastKnownBlock = (await this.anchorBlockDataProvider.getBlockHeader()).getBlockNumber();
16
16
  fromBlock = fromBlock ?? BlockNumber(INITIAL_L2_BLOCK_NUM);
17
17
  toBlock = toBlock ?? BlockNumber(lastKnownBlock + 1);
18
18
  }
package/dest/pxe.d.ts CHANGED
@@ -9,10 +9,9 @@ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
9
9
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
10
10
  import { CompleteAddress, type ContractClassWithId, type ContractInstanceWithAddress, type PartialAddress } from '@aztec/stdlib/contract';
11
11
  import type { AztecNode, PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
12
- import type { NotesFilter } from '@aztec/stdlib/note';
13
- import { NoteDao } from '@aztec/stdlib/note';
14
12
  import { type InTx, SimulationOverrides, TxExecutionRequest, TxProfileResult, TxProvingResult, TxSimulationResult, UtilitySimulationResult } from '@aztec/stdlib/tx';
15
13
  import type { PXEConfig } from './config/index.js';
14
+ import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
16
15
  export type PackedPrivateEvent = InTx & {
17
16
  packedEvent: Fr[];
18
17
  eventSelector: EventSelector;
@@ -24,13 +23,14 @@ export type PackedPrivateEvent = InTx & {
24
23
  export declare class PXE {
25
24
  #private;
26
25
  private node;
27
- private synchronizer;
26
+ private blockStateSynchronizer;
28
27
  private keyStore;
29
28
  private contractDataProvider;
30
29
  private noteDataProvider;
31
30
  private capsuleDataProvider;
32
- private syncDataProvider;
33
- private taggingDataProvider;
31
+ private anchorBlockDataProvider;
32
+ private senderTaggingDataProvider;
33
+ private recipientTaggingDataProvider;
34
34
  private addressDataProvider;
35
35
  private privateEventDataProvider;
36
36
  private simulator;
@@ -39,6 +39,7 @@ export declare class PXE {
39
39
  private protocolContractsProvider;
40
40
  private log;
41
41
  private jobQueue;
42
+ debug: PXEDebugUtils;
42
43
  private constructor();
43
44
  /**
44
45
  * Creates an instance of a PXE by instantiating all the necessary data providers and services.
@@ -96,24 +97,26 @@ export declare class PXE {
96
97
  */
97
98
  registerAccount(secretKey: Fr, partialAddress: PartialAddress): Promise<CompleteAddress>;
98
99
  /**
99
- * Registers a user contact in PXE.
100
+ * Registers a sender in this PXE.
100
101
  *
101
- * Once a new contact is registered, the PXE will be able to receive notes tagged from this contact.
102
- * Will do nothing if the account is already registered.
102
+ * After registering a new sender, the PXE will sync private logs that are tagged with this sender's address.
103
+ * Will do nothing if the address is already registered.
103
104
  *
104
- * @param address - Address of the user to add to the address book
105
- * @returns The address address of the account.
105
+ * @param sender - Address of the sender to register.
106
+ * @returns The address of the sender.
107
+ * TODO: It's strange that we return the address here and I (benesjan) think we should drop the return value.
106
108
  */
107
- registerSender(address: AztecAddress): Promise<AztecAddress>;
109
+ registerSender(sender: AztecAddress): Promise<AztecAddress>;
108
110
  /**
109
- * Retrieves the addresses stored as senders on this PXE.
110
- * @returns An array of the senders on this PXE.
111
+ * Retrieves senders registered in this PXE.
112
+ * @returns Senders registered in this PXE.
111
113
  */
112
114
  getSenders(): Promise<AztecAddress[]>;
113
115
  /**
114
- * Removes a sender in the address book.
116
+ * Removes a sender registered in this PXE.
117
+ * @param sender - The address of the sender to remove.
115
118
  */
116
- removeSender(address: AztecAddress): Promise<void>;
119
+ removeSender(sender: AztecAddress): Promise<void>;
117
120
  /**
118
121
  * Retrieves the user accounts registered on this PXE.
119
122
  * @returns An array of the accounts registered on this PXE.
@@ -152,18 +155,6 @@ export declare class PXE {
152
155
  * @returns An array of contracts addresses registered on this PXE.
153
156
  */
154
157
  getContracts(): Promise<AztecAddress[]>;
155
- /**
156
- * A debugging utility to get notes based on the provided filter.
157
- *
158
- * Note that this should not be used in production code because the structure of notes is considered to be
159
- * an implementation detail of contracts. This is only meant to be used for debugging purposes. If you need to obtain
160
- * note-related information in production code, please implement a custom utility function on your contract and call
161
- * that function instead (e.g. `get_balance(owner: AztecAddress) -> u128` utility function on a Token contract).
162
- *
163
- * @param filter - The filter to apply to the notes.
164
- * @returns The requested notes.
165
- */
166
- getNotes(filter: NotesFilter): Promise<NoteDao[]>;
167
158
  /**
168
159
  * Proves the private portion of a simulated transaction, ready to send to the network
169
160
  * (where validators prove the public portion).
@@ -237,4 +228,4 @@ export declare class PXE {
237
228
  */
238
229
  stop(): Promise<void>;
239
230
  }
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUlsRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxLQUFLLHlCQUF5QixFQUF5QixNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLGFBQWEsRUFDYixZQUFZLEVBS2IsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUssMkJBQTJCLEVBQ2hDLEtBQUssY0FBYyxFQUdwQixNQUFNLHdCQUF3QixDQUFDO0FBR2hDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTXRGLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBRUwsS0FBSyxJQUFJLEVBS1QsbUJBQW1CLEVBR25CLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsZUFBZSxFQUNmLGtCQUFrQixFQUNsQix1QkFBdUIs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
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUlsRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxLQUFLLHlCQUF5QixFQUF5QixNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLGFBQWEsRUFDYixZQUFZLEVBR2IsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUssMkJBQTJCLEVBQ2hDLEtBQUssY0FBYyxFQUdwQixNQUFNLHdCQUF3QixDQUFDO0FBR2hDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTXRGLE9BQU8sRUFFTCxLQUFLLElBQUksRUFLVCxtQkFBbUIsRUFHbkIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN4QixNQUFNLGtCQUFrQixDQUFDO0FBSzFCLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBU25ELE9BQU8sRUFBRSxhQUFh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
package/dest/pxe.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pxe.d.ts","sourceRoot":"","sources":["../src/pxe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pxe.d.ts","sourceRoot":"","sources":["../src/pxe.ts"],"names":[],"mappings":"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"}