@aztec/archiver 0.0.1-commit.96bb3f7 → 0.0.1-commit.9d2bcf6d

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 (191) hide show
  1. package/README.md +156 -22
  2. package/dest/archiver.d.ts +136 -0
  3. package/dest/archiver.d.ts.map +1 -0
  4. package/dest/archiver.js +781 -0
  5. package/dest/{archiver/config.d.ts → config.d.ts} +9 -1
  6. package/dest/config.d.ts.map +1 -0
  7. package/dest/{archiver/config.js → config.js} +9 -0
  8. package/dest/errors.d.ts +41 -0
  9. package/dest/errors.d.ts.map +1 -0
  10. package/dest/{archiver/errors.js → errors.js} +8 -0
  11. package/dest/factory.d.ts +9 -7
  12. package/dest/factory.d.ts.map +1 -1
  13. package/dest/factory.js +89 -11
  14. package/dest/index.d.ts +10 -4
  15. package/dest/index.d.ts.map +1 -1
  16. package/dest/index.js +8 -3
  17. package/dest/interfaces.d.ts +9 -0
  18. package/dest/interfaces.d.ts.map +1 -0
  19. package/dest/interfaces.js +3 -0
  20. package/dest/{archiver/l1 → l1}/bin/retrieve-calldata.d.ts +1 -1
  21. package/dest/l1/bin/retrieve-calldata.d.ts.map +1 -0
  22. package/dest/{archiver/l1 → l1}/bin/retrieve-calldata.js +2 -2
  23. package/dest/{archiver/l1 → l1}/calldata_retriever.d.ts +2 -2
  24. package/dest/l1/calldata_retriever.d.ts.map +1 -0
  25. package/dest/l1/data_retrieval.d.ts +88 -0
  26. package/dest/l1/data_retrieval.d.ts.map +1 -0
  27. package/dest/{archiver/l1 → l1}/data_retrieval.js +36 -55
  28. package/dest/{archiver/l1 → l1}/debug_tx.d.ts +1 -1
  29. package/dest/l1/debug_tx.d.ts.map +1 -0
  30. package/dest/{archiver/l1 → l1}/spire_proposer.d.ts +1 -1
  31. package/dest/l1/spire_proposer.d.ts.map +1 -0
  32. package/dest/{archiver/l1 → l1}/trace_tx.d.ts +1 -1
  33. package/dest/l1/trace_tx.d.ts.map +1 -0
  34. package/dest/l1/types.d.ts +12 -0
  35. package/dest/l1/types.d.ts.map +1 -0
  36. package/dest/{archiver/l1 → l1}/validate_trace.d.ts +6 -3
  37. package/dest/l1/validate_trace.d.ts.map +1 -0
  38. package/dest/{archiver/l1 → l1}/validate_trace.js +13 -9
  39. package/dest/modules/data_source_base.d.ts +84 -0
  40. package/dest/modules/data_source_base.d.ts.map +1 -0
  41. package/dest/modules/data_source_base.js +260 -0
  42. package/dest/modules/data_store_updater.d.ts +73 -0
  43. package/dest/modules/data_store_updater.d.ts.map +1 -0
  44. package/dest/modules/data_store_updater.js +302 -0
  45. package/dest/modules/instrumentation.d.ts +37 -0
  46. package/dest/modules/instrumentation.d.ts.map +1 -0
  47. package/dest/{archiver → modules}/instrumentation.js +17 -10
  48. package/dest/modules/l1_synchronizer.d.ts +75 -0
  49. package/dest/modules/l1_synchronizer.d.ts.map +1 -0
  50. package/dest/modules/l1_synchronizer.js +1112 -0
  51. package/dest/{archiver → modules}/validation.d.ts +1 -1
  52. package/dest/modules/validation.d.ts.map +1 -0
  53. package/dest/{archiver → modules}/validation.js +6 -0
  54. package/dest/store/block_store.d.ts +192 -0
  55. package/dest/store/block_store.d.ts.map +1 -0
  56. package/dest/{archiver/kv_archiver_store → store}/block_store.js +142 -47
  57. package/dest/store/contract_class_store.d.ts +18 -0
  58. package/dest/store/contract_class_store.d.ts.map +1 -0
  59. package/dest/{archiver/kv_archiver_store → store}/contract_class_store.js +12 -8
  60. package/dest/store/contract_instance_store.d.ts +24 -0
  61. package/dest/store/contract_instance_store.d.ts.map +1 -0
  62. package/dest/{archiver/kv_archiver_store → store}/contract_instance_store.js +1 -1
  63. package/dest/store/kv_archiver_store.d.ts +340 -0
  64. package/dest/store/kv_archiver_store.d.ts.map +1 -0
  65. package/dest/store/kv_archiver_store.js +446 -0
  66. package/dest/store/log_store.d.ts +54 -0
  67. package/dest/store/log_store.d.ts.map +1 -0
  68. package/dest/{archiver/kv_archiver_store → store}/log_store.js +91 -56
  69. package/dest/{archiver/kv_archiver_store → store}/message_store.d.ts +1 -1
  70. package/dest/store/message_store.d.ts.map +1 -0
  71. package/dest/{archiver/structs → structs}/data_retrieval.d.ts +1 -1
  72. package/dest/structs/data_retrieval.d.ts.map +1 -0
  73. package/dest/structs/inbox_message.d.ts +15 -0
  74. package/dest/structs/inbox_message.d.ts.map +1 -0
  75. package/dest/{archiver/structs → structs}/published.d.ts +1 -1
  76. package/dest/structs/published.d.ts.map +1 -0
  77. package/dest/test/fake_l1_state.d.ts +190 -0
  78. package/dest/test/fake_l1_state.d.ts.map +1 -0
  79. package/dest/test/fake_l1_state.js +383 -0
  80. package/dest/test/index.d.ts +2 -1
  81. package/dest/test/index.d.ts.map +1 -1
  82. package/dest/test/index.js +4 -1
  83. package/dest/test/mock_archiver.d.ts +2 -2
  84. package/dest/test/mock_archiver.d.ts.map +1 -1
  85. package/dest/test/mock_archiver.js +1 -2
  86. package/dest/test/mock_l2_block_source.d.ts +20 -17
  87. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  88. package/dest/test/mock_l2_block_source.js +108 -48
  89. package/dest/test/mock_structs.d.ts +78 -3
  90. package/dest/test/mock_structs.d.ts.map +1 -1
  91. package/dest/test/mock_structs.js +140 -7
  92. package/dest/test/noop_l1_archiver.d.ts +23 -0
  93. package/dest/test/noop_l1_archiver.d.ts.map +1 -0
  94. package/dest/test/noop_l1_archiver.js +68 -0
  95. package/package.json +16 -17
  96. package/src/archiver.ts +543 -0
  97. package/src/{archiver/config.ts → config.ts} +11 -0
  98. package/src/{archiver/errors.ts → errors.ts} +12 -0
  99. package/src/factory.ts +125 -11
  100. package/src/index.ts +10 -3
  101. package/src/interfaces.ts +9 -0
  102. package/src/{archiver/l1 → l1}/bin/retrieve-calldata.ts +7 -2
  103. package/src/{archiver/l1 → l1}/calldata_retriever.ts +1 -1
  104. package/src/{archiver/l1 → l1}/data_retrieval.ts +57 -74
  105. package/src/{archiver/l1 → l1}/validate_trace.ts +24 -6
  106. package/src/modules/data_source_base.ts +367 -0
  107. package/src/modules/data_store_updater.ts +423 -0
  108. package/src/{archiver → modules}/instrumentation.ts +17 -12
  109. package/src/modules/l1_synchronizer.ts +930 -0
  110. package/src/{archiver → modules}/validation.ts +5 -0
  111. package/src/{archiver/kv_archiver_store → store}/block_store.ts +179 -63
  112. package/src/{archiver/kv_archiver_store → store}/contract_class_store.ts +12 -8
  113. package/src/{archiver/kv_archiver_store → store}/contract_instance_store.ts +1 -1
  114. package/src/{archiver/kv_archiver_store → store}/kv_archiver_store.ts +234 -37
  115. package/src/{archiver/kv_archiver_store → store}/log_store.ts +149 -90
  116. package/src/test/fake_l1_state.ts +599 -0
  117. package/src/test/index.ts +4 -0
  118. package/src/test/mock_archiver.ts +2 -2
  119. package/src/test/mock_l2_block_source.ts +114 -66
  120. package/src/test/mock_structs.ts +269 -8
  121. package/src/test/noop_l1_archiver.ts +109 -0
  122. package/dest/archiver/archiver.d.ts +0 -307
  123. package/dest/archiver/archiver.d.ts.map +0 -1
  124. package/dest/archiver/archiver.js +0 -2102
  125. package/dest/archiver/archiver_store.d.ts +0 -315
  126. package/dest/archiver/archiver_store.d.ts.map +0 -1
  127. package/dest/archiver/archiver_store.js +0 -4
  128. package/dest/archiver/archiver_store_test_suite.d.ts +0 -8
  129. package/dest/archiver/archiver_store_test_suite.d.ts.map +0 -1
  130. package/dest/archiver/archiver_store_test_suite.js +0 -2770
  131. package/dest/archiver/config.d.ts.map +0 -1
  132. package/dest/archiver/errors.d.ts +0 -36
  133. package/dest/archiver/errors.d.ts.map +0 -1
  134. package/dest/archiver/index.d.ts +0 -7
  135. package/dest/archiver/index.d.ts.map +0 -1
  136. package/dest/archiver/index.js +0 -4
  137. package/dest/archiver/instrumentation.d.ts +0 -37
  138. package/dest/archiver/instrumentation.d.ts.map +0 -1
  139. package/dest/archiver/kv_archiver_store/block_store.d.ts +0 -164
  140. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +0 -1
  141. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +0 -18
  142. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +0 -1
  143. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +0 -24
  144. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +0 -1
  145. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +0 -159
  146. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +0 -1
  147. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +0 -316
  148. package/dest/archiver/kv_archiver_store/log_store.d.ts +0 -45
  149. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +0 -1
  150. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +0 -1
  151. package/dest/archiver/l1/bin/retrieve-calldata.d.ts.map +0 -1
  152. package/dest/archiver/l1/calldata_retriever.d.ts.map +0 -1
  153. package/dest/archiver/l1/data_retrieval.d.ts +0 -90
  154. package/dest/archiver/l1/data_retrieval.d.ts.map +0 -1
  155. package/dest/archiver/l1/debug_tx.d.ts.map +0 -1
  156. package/dest/archiver/l1/spire_proposer.d.ts.map +0 -1
  157. package/dest/archiver/l1/trace_tx.d.ts.map +0 -1
  158. package/dest/archiver/l1/types.d.ts +0 -12
  159. package/dest/archiver/l1/types.d.ts.map +0 -1
  160. package/dest/archiver/l1/validate_trace.d.ts.map +0 -1
  161. package/dest/archiver/structs/data_retrieval.d.ts.map +0 -1
  162. package/dest/archiver/structs/inbox_message.d.ts +0 -15
  163. package/dest/archiver/structs/inbox_message.d.ts.map +0 -1
  164. package/dest/archiver/structs/published.d.ts.map +0 -1
  165. package/dest/archiver/validation.d.ts.map +0 -1
  166. package/dest/rpc/index.d.ts +0 -9
  167. package/dest/rpc/index.d.ts.map +0 -1
  168. package/dest/rpc/index.js +0 -15
  169. package/src/archiver/archiver.ts +0 -2265
  170. package/src/archiver/archiver_store.ts +0 -380
  171. package/src/archiver/archiver_store_test_suite.ts +0 -2842
  172. package/src/archiver/index.ts +0 -6
  173. package/src/rpc/index.ts +0 -16
  174. /package/dest/{archiver/l1 → l1}/calldata_retriever.js +0 -0
  175. /package/dest/{archiver/l1 → l1}/debug_tx.js +0 -0
  176. /package/dest/{archiver/l1 → l1}/spire_proposer.js +0 -0
  177. /package/dest/{archiver/l1 → l1}/trace_tx.js +0 -0
  178. /package/dest/{archiver/l1 → l1}/types.js +0 -0
  179. /package/dest/{archiver/kv_archiver_store → store}/message_store.js +0 -0
  180. /package/dest/{archiver/structs → structs}/data_retrieval.js +0 -0
  181. /package/dest/{archiver/structs → structs}/inbox_message.js +0 -0
  182. /package/dest/{archiver/structs → structs}/published.js +0 -0
  183. /package/src/{archiver/l1 → l1}/README.md +0 -0
  184. /package/src/{archiver/l1 → l1}/debug_tx.ts +0 -0
  185. /package/src/{archiver/l1 → l1}/spire_proposer.ts +0 -0
  186. /package/src/{archiver/l1 → l1}/trace_tx.ts +0 -0
  187. /package/src/{archiver/l1 → l1}/types.ts +0 -0
  188. /package/src/{archiver/kv_archiver_store → store}/message_store.ts +0 -0
  189. /package/src/{archiver/structs → structs}/data_retrieval.ts +0 -0
  190. /package/src/{archiver/structs → structs}/inbox_message.ts +0 -0
  191. /package/src/{archiver/structs → structs}/published.ts +0 -0
@@ -0,0 +1,383 @@
1
+ import { getBlobsPerL1Block, getPrefixedEthBlobCommitments } from '@aztec/blob-lib';
2
+ import { MULTI_CALL_3_ADDRESS } from '@aztec/ethereum/contracts';
3
+ import { CheckpointNumber } from '@aztec/foundation/branded-types';
4
+ import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
5
+ import { createLogger } from '@aztec/foundation/log';
6
+ import { RollupAbi } from '@aztec/l1-artifacts';
7
+ import { CommitteeAttestation, CommitteeAttestationsAndSigners } from '@aztec/stdlib/block';
8
+ import { getSlotAtTimestamp } from '@aztec/stdlib/epoch-helpers';
9
+ import { InboxLeaf } from '@aztec/stdlib/messaging';
10
+ import { makeAndSignCommitteeAttestationsAndSigners, makeCheckpointAttestationFromCheckpoint, mockCheckpointAndMessages } from '@aztec/stdlib/testing';
11
+ import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
12
+ import { mock } from 'jest-mock-extended';
13
+ import { encodeFunctionData, multicall3Abi, toHex } from 'viem';
14
+ import { updateRollingHash } from '../structs/inbox_message.js';
15
+ /**
16
+ * Stateful fake for L1 data used by the archiver.
17
+ *
18
+ * This class simulates the L1 blockchain state that the archiver reads from:
19
+ * - RollupContract: status(), archiveAt(), getVersion(), getTargetCommitteeSize(), CheckpointProposed events
20
+ * - InboxContract: getState(), MessageSent events
21
+ * - PublicClient: getBlockNumber(), getBlock(), getTransaction()
22
+ * - BlobClient: getBlobSidecar()
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const fake = new FakeL1State(config);
27
+ *
28
+ * // Add checkpoint (creates messages automatically)
29
+ * const { checkpoint, messages } = await fake.addCheckpoint(CheckpointNumber(1), { l1BlockNumber: 101n });
30
+ * fake.setL1BlockNumber(105n);
31
+ *
32
+ * // Status auto-updated
33
+ * expect(fake.getRollupStatus().pendingCheckpointNumber).toEqual(CheckpointNumber(1));
34
+ * ```
35
+ */ export class FakeL1State {
36
+ config;
37
+ log;
38
+ l1BlockNumber;
39
+ checkpoints;
40
+ messages;
41
+ messagesRollingHash;
42
+ lastArchive;
43
+ provenCheckpointNumber;
44
+ targetCommitteeSize;
45
+ version;
46
+ // Computed from checkpoints based on L1 block visibility
47
+ pendingCheckpointNumber;
48
+ constructor(config){
49
+ this.config = config;
50
+ this.log = createLogger('archiver:test:fake-l1');
51
+ this.checkpoints = [];
52
+ this.messages = [];
53
+ this.messagesRollingHash = Buffer16.ZERO;
54
+ this.provenCheckpointNumber = CheckpointNumber(0);
55
+ this.targetCommitteeSize = 0;
56
+ this.version = 1n;
57
+ this.pendingCheckpointNumber = CheckpointNumber(0);
58
+ this.l1BlockNumber = config.l1StartBlock;
59
+ this.lastArchive = new AppendOnlyTreeSnapshot(config.genesisArchiveRoot, 1);
60
+ }
61
+ /**
62
+ * Adds messages for a checkpoint. Returns the message leaves.
63
+ * Auto-updates rolling hash.
64
+ *
65
+ * Note: For most use cases, use `addCheckpoint` which creates both checkpoint and messages.
66
+ * Use this method only when you need to add messages without creating a checkpoint (e.g., for reorg tests).
67
+ */ addMessages(checkpointNumber, l1BlockNumber, messageLeaves) {
68
+ messageLeaves.forEach((leaf, i)=>{
69
+ const index = InboxLeaf.smallestIndexForCheckpoint(checkpointNumber) + BigInt(i);
70
+ this.messagesRollingHash = updateRollingHash(this.messagesRollingHash, leaf);
71
+ this.messages.push({
72
+ l1BlockNumber,
73
+ checkpointNumber,
74
+ index,
75
+ leaf,
76
+ rollingHash: this.messagesRollingHash
77
+ });
78
+ });
79
+ }
80
+ /**
81
+ * Creates blocks for a checkpoint without adding them to L1 state.
82
+ * Useful for creating blocks to pass to addBlock() for testing provisional block handling.
83
+ * Returns the blocks directly.
84
+ */ async makeBlocks(checkpointNumber, options) {
85
+ return (await this.makeCheckpointAndMessages(checkpointNumber, options)).checkpoint.blocks;
86
+ }
87
+ /**
88
+ * Creates and adds a checkpoint with its L1-to-L2 messages.
89
+ * Returns both the checkpoint and the message leaves.
90
+ * Auto-chains from lastArchive, auto-updates pending status if L1 block >= checkpoint's L1 block.
91
+ */ async addCheckpoint(checkpointNumber, options) {
92
+ this.log.warn(`Adding checkpoint ${checkpointNumber}`);
93
+ const { l1BlockNumber, signers = [], messagesL1BlockNumber = l1BlockNumber - 3n } = options;
94
+ // Create the checkpoint using the stdlib helper
95
+ const { checkpoint, messages, lastArchive } = await this.makeCheckpointAndMessages(checkpointNumber, {
96
+ ...options,
97
+ numL1ToL2Messages: options.numL1ToL2Messages ?? 3
98
+ });
99
+ // Store the messages internally so they match the checkpoint's inHash
100
+ this.addMessages(checkpointNumber, messagesL1BlockNumber, messages);
101
+ // Create the transaction and blobs
102
+ const tx = this.makeRollupTx(checkpoint, signers);
103
+ const blobHashes = this.makeVersionedBlobHashes(checkpoint);
104
+ const blobs = this.makeBlobsFromCheckpoint(checkpoint);
105
+ // Store the checkpoint data
106
+ this.checkpoints.push({
107
+ checkpointNumber,
108
+ checkpoint,
109
+ l1BlockNumber,
110
+ tx,
111
+ blobHashes,
112
+ blobs,
113
+ signers
114
+ });
115
+ // Update last archive for auto-chaining
116
+ this.lastArchive = lastArchive ?? checkpoint.blocks.at(-1).archive;
117
+ // Auto-update pending checkpoint number
118
+ this.updatePendingCheckpointNumber();
119
+ return {
120
+ checkpoint,
121
+ messages
122
+ };
123
+ }
124
+ /** Creates a checkpoint and messages without adding them to L1 state. */ makeCheckpointAndMessages(checkpointNumber, options) {
125
+ const { numBlocks = 1, txsPerBlock = 4, maxEffects, slotNumber, previousArchive = this.lastArchive, timestamp, l1BlockNumber, numL1ToL2Messages = 0, blocks } = options;
126
+ return mockCheckpointAndMessages(checkpointNumber, {
127
+ startBlockNumber: this.getNextBlockNumber(checkpointNumber),
128
+ numBlocks,
129
+ blocks,
130
+ numTxsPerBlock: txsPerBlock,
131
+ numL1ToL2Messages,
132
+ previousArchive,
133
+ slotNumber: slotNumber ?? (l1BlockNumber !== undefined ? this.getL2SlotAtL1Block(l1BlockNumber) : undefined),
134
+ timestamp: timestamp ?? (l1BlockNumber !== undefined ? this.getTimestampAtL1Block(l1BlockNumber) : undefined),
135
+ ...maxEffects !== undefined ? {
136
+ maxEffects
137
+ } : {}
138
+ });
139
+ }
140
+ /** Returns the L2 slot at the given L1 block (assuming all L1 blocks are mined) */ getL2SlotAtL1Block(l1BlockNumber) {
141
+ const timestamp = this.getTimestampAtL1Block(l1BlockNumber);
142
+ return getSlotAtTimestamp(timestamp, this.config);
143
+ }
144
+ /** Returns the timestamp at the given L1 block (assuming all L1 blocks are mined) */ getTimestampAtL1Block(l1BlockNumber) {
145
+ const { l1GenesisTime, l1StartBlock, ethereumSlotDuration } = this.config;
146
+ return l1GenesisTime + (l1BlockNumber - l1StartBlock) * BigInt(ethereumSlotDuration);
147
+ }
148
+ /**
149
+ * Sets the current L1 block number.
150
+ * Auto-updates pending checkpoint number based on visible checkpoints.
151
+ */ setL1BlockNumber(blockNumber) {
152
+ this.l1BlockNumber = blockNumber;
153
+ this.updatePendingCheckpointNumber();
154
+ }
155
+ /** Marks a checkpoint as proven. Updates provenCheckpointNumber. */ markCheckpointAsProven(checkpointNumber) {
156
+ this.provenCheckpointNumber = checkpointNumber;
157
+ }
158
+ /** Sets the target committee size for attestation validation. */ setTargetCommitteeSize(size) {
159
+ this.targetCommitteeSize = size;
160
+ }
161
+ /**
162
+ * Removes all entries for a checkpoint number (simulates L1 reorg or prune).
163
+ * Note: Does NOT remove messages for this checkpoint (use numL1ToL2Messages: 0 when re-adding).
164
+ * Auto-updates pending status.
165
+ */ removeCheckpoint(checkpointNumber) {
166
+ this.checkpoints = this.checkpoints.filter((cpData)=>cpData.checkpointNumber !== checkpointNumber);
167
+ this.updatePendingCheckpointNumber();
168
+ }
169
+ /**
170
+ * Removes messages after a given total index (simulates L1 reorg).
171
+ * Auto-updates rolling hash.
172
+ */ removeMessagesAfter(totalIndex) {
173
+ this.messages = this.messages.slice(0, totalIndex);
174
+ // Recalculate rolling hash
175
+ this.messagesRollingHash = this.messages.reduce((hash, msg)=>updateRollingHash(hash, msg.leaf), Buffer16.ZERO);
176
+ }
177
+ /**
178
+ * Simulates a pruned checkpoint by marking all entries with this number as pruned.
179
+ * The event will still be returned, but archiveAt() will return the previous checkpoint's archive
180
+ * (or genesis if no previous checkpoint), causing a mismatch that the archiver will detect.
181
+ */ markCheckpointAsPruned(checkpointNumber) {
182
+ for (const cpData of this.checkpoints){
183
+ if (cpData.checkpointNumber === checkpointNumber) {
184
+ cpData.pruned = true;
185
+ }
186
+ }
187
+ this.updatePendingCheckpointNumber();
188
+ }
189
+ /**
190
+ * Moves messages at a given L1 block to a new L1 block.
191
+ * Useful for simulating partial message visibility (messages at higher L1 blocks won't be fetched).
192
+ */ moveMessagesToL1Block(fromL1Block, toL1Block) {
193
+ this.messages.forEach((msg)=>{
194
+ if (msg.l1BlockNumber === fromL1Block) {
195
+ msg.l1BlockNumber = toL1Block;
196
+ }
197
+ });
198
+ }
199
+ /**
200
+ * Moves a specific message (by index in the messages array) to a new L1 block.
201
+ */ moveMessageAtIndexToL1Block(index, toL1Block) {
202
+ if (this.messages[index]) {
203
+ this.messages[index].l1BlockNumber = toL1Block;
204
+ }
205
+ }
206
+ /** Gets current rollup status. */ getRollupStatus() {
207
+ return {
208
+ provenCheckpointNumber: this.provenCheckpointNumber,
209
+ pendingCheckpointNumber: this.pendingCheckpointNumber,
210
+ provenArchive: this.getArchiveAt(this.provenCheckpointNumber),
211
+ pendingArchive: this.getArchiveAt(this.pendingCheckpointNumber)
212
+ };
213
+ }
214
+ /** Gets the last archive (for manual chaining if needed). */ getLastArchive() {
215
+ return this.lastArchive;
216
+ }
217
+ /** Gets the latest checkpoint entry by number (returns the last added one). */ getCheckpoint(checkpointNumber) {
218
+ return this.checkpoints.findLast((cpData)=>cpData.checkpointNumber === checkpointNumber)?.checkpoint;
219
+ }
220
+ /** Gets messages for a checkpoint. */ getMessages(checkpointNumber) {
221
+ return this.messages.filter((m)=>m.checkpointNumber === checkpointNumber).map((m)=>m.leaf);
222
+ }
223
+ /** Gets the blobs for a checkpoint. */ getCheckpointBlobs(checkpointNumber) {
224
+ return this.checkpoints.findLast((cpData)=>cpData.checkpointNumber === checkpointNumber)?.blobs ?? [];
225
+ }
226
+ /** Creates mock RollupContract that reads from this fake state. */ createMockRollupContract(_publicClient) {
227
+ const mockRollup = mock();
228
+ mockRollup.getVersion.mockImplementation(()=>Promise.resolve(this.version));
229
+ mockRollup.getTargetCommitteeSize.mockImplementation(()=>Promise.resolve(this.targetCommitteeSize));
230
+ mockRollup.archiveAt.mockImplementation((cpNum)=>Promise.resolve(this.getArchiveAt(cpNum)));
231
+ mockRollup.status.mockImplementation((localCheckpointNum)=>{
232
+ const status = this.getRollupStatus();
233
+ return Promise.resolve({
234
+ provenCheckpointNumber: status.provenCheckpointNumber,
235
+ provenArchive: status.provenArchive,
236
+ pendingCheckpointNumber: status.pendingCheckpointNumber,
237
+ pendingArchive: status.pendingArchive,
238
+ archiveOfMyCheckpoint: this.getArchiveAt(localCheckpointNum)
239
+ });
240
+ });
241
+ // Mock the wrapper method for fetching checkpoint events
242
+ mockRollup.getCheckpointProposedEvents.mockImplementation((fromBlock, toBlock)=>Promise.resolve(this.getCheckpointProposedLogs(fromBlock, toBlock)));
243
+ Object.defineProperty(mockRollup, 'address', {
244
+ get: ()=>this.config.rollupAddress.toString()
245
+ });
246
+ return mockRollup;
247
+ }
248
+ /** Creates mock InboxContract that reads from this fake state. */ createMockInboxContract(_publicClient) {
249
+ const mockInbox = mock();
250
+ mockInbox.getState.mockImplementation(()=>Promise.resolve({
251
+ messagesRollingHash: this.messagesRollingHash,
252
+ totalMessagesInserted: BigInt(this.messages.length),
253
+ treeInProgress: 0n
254
+ }));
255
+ // Mock the wrapper methods for fetching message events
256
+ mockInbox.getMessageSentEvents.mockImplementation((fromBlock, toBlock)=>Promise.resolve(this.getMessageSentLogs(fromBlock, toBlock)));
257
+ mockInbox.getMessageSentEventByHash.mockImplementation((hash, fromBlock, toBlock)=>Promise.resolve(this.getMessageSentLogs(fromBlock, toBlock, hash)));
258
+ return mockInbox;
259
+ }
260
+ /** Creates mock PublicClient that reads from this fake state. */ createMockPublicClient() {
261
+ const publicClient = mock();
262
+ publicClient.getChainId.mockResolvedValue(1);
263
+ publicClient.getBlockNumber.mockImplementation(()=>Promise.resolve(this.l1BlockNumber));
264
+ // Use async function pattern that existing test uses for getBlock
265
+ publicClient.getBlock.mockImplementation(async (args = {})=>{
266
+ const blockNum = args.blockNumber ?? await publicClient.getBlockNumber();
267
+ return {
268
+ number: blockNum,
269
+ timestamp: BigInt(blockNum) * BigInt(this.config.ethereumSlotDuration) + this.config.l1GenesisTime,
270
+ hash: Buffer32.fromBigInt(blockNum).toString()
271
+ };
272
+ });
273
+ // Use the same pattern as existing test for getTransaction
274
+ publicClient.getTransaction.mockImplementation((args)=>Promise.resolve(args.hash ? this.checkpoints.find((cpData)=>cpData.tx.hash === args.hash)?.tx : undefined));
275
+ return publicClient;
276
+ }
277
+ /** Creates mock BlobClient that reads from this fake state. */ createMockBlobClient() {
278
+ const blobClient = mock();
279
+ // The blockId is the transaction's blockHash, which we set to the checkpoint's archive root
280
+ blobClient.getBlobSidecar.mockImplementation((blockId)=>Promise.resolve(this.checkpoints.find((cpData)=>cpData.checkpoint.archive.root.toString() === blockId)?.blobs ?? []));
281
+ blobClient.testSources.mockResolvedValue(undefined);
282
+ return blobClient;
283
+ }
284
+ updatePendingCheckpointNumber() {
285
+ this.pendingCheckpointNumber = this.checkpoints.filter((cpData)=>cpData.l1BlockNumber <= this.l1BlockNumber && !cpData.pruned).reduce((max, cpData)=>cpData.checkpointNumber > max ? cpData.checkpointNumber : max, CheckpointNumber(0));
286
+ }
287
+ getArchiveAt(checkpointNumber) {
288
+ if (checkpointNumber === 0) {
289
+ return this.config.genesisArchiveRoot;
290
+ }
291
+ // Find the latest non-pruned entry for this checkpoint number
292
+ const entries = this.checkpoints.filter((cpData)=>cpData.checkpointNumber === checkpointNumber);
293
+ const latestEntry = entries.at(-1);
294
+ if (!latestEntry || latestEntry.pruned) {
295
+ // For pruned or missing checkpoints, return the previous non-pruned checkpoint's archive
296
+ return this.getArchiveAt(CheckpointNumber(checkpointNumber - 1));
297
+ }
298
+ return latestEntry.checkpoint.archive.root;
299
+ }
300
+ getNextBlockNumber(checkpointNumber) {
301
+ const lastBlockNumber = this.checkpoints.filter((cpData)=>cpData.checkpointNumber < checkpointNumber).flatMap((cpData)=>cpData.checkpoint.blocks.map((b)=>b.number)).reduce((max, num)=>Math.max(max, num), 0);
302
+ return lastBlockNumber + 1;
303
+ }
304
+ getCheckpointProposedLogs(fromBlock, toBlock) {
305
+ return this.checkpoints.filter((cpData)=>cpData.l1BlockNumber >= fromBlock && cpData.l1BlockNumber <= toBlock).map((cpData)=>({
306
+ l1BlockNumber: cpData.l1BlockNumber,
307
+ l1BlockHash: Buffer32.fromBigInt(cpData.l1BlockNumber),
308
+ l1TransactionHash: cpData.tx.hash,
309
+ args: {
310
+ checkpointNumber: cpData.checkpointNumber,
311
+ archive: cpData.checkpoint.archive.root,
312
+ versionedBlobHashes: cpData.blobHashes.map((h)=>Buffer.from(h.slice(2), 'hex')),
313
+ // These are intentionally undefined to skip hash validation in the archiver
314
+ // (validation is skipped when these fields are falsy)
315
+ payloadDigest: undefined,
316
+ attestationsHash: undefined
317
+ }
318
+ }));
319
+ }
320
+ getMessageSentLogs(fromBlock, toBlock, hashFilter) {
321
+ return this.messages.filter((msg)=>(!hashFilter || msg.leaf.toString() === hashFilter) && (!fromBlock || msg.l1BlockNumber >= fromBlock) && (!toBlock || msg.l1BlockNumber <= toBlock)).map((msg)=>({
322
+ l1BlockNumber: msg.l1BlockNumber,
323
+ l1BlockHash: Buffer32.fromBigInt(msg.l1BlockNumber),
324
+ l1TransactionHash: `0x${msg.l1BlockNumber.toString(16)}`,
325
+ args: {
326
+ checkpointNumber: msg.checkpointNumber,
327
+ index: msg.index,
328
+ leaf: msg.leaf,
329
+ rollingHash: msg.rollingHash
330
+ }
331
+ }));
332
+ }
333
+ makeRollupTx(checkpoint, signers) {
334
+ const attestations = signers.map((signer)=>makeCheckpointAttestationFromCheckpoint(checkpoint, signer)).map((attestation)=>CommitteeAttestation.fromSignature(attestation.signature)).map((committeeAttestation)=>committeeAttestation.toViem());
335
+ const header = checkpoint.header.toViem();
336
+ const blobInput = getPrefixedEthBlobCommitments(getBlobsPerL1Block(checkpoint.toBlobFields()));
337
+ const archive = toHex(checkpoint.archive.root.toBuffer());
338
+ const attestationsAndSigners = new CommitteeAttestationsAndSigners(attestations.map((attestation)=>CommitteeAttestation.fromViem(attestation)));
339
+ const attestationsAndSignersSignature = makeAndSignCommitteeAttestationsAndSigners(attestationsAndSigners, signers[0]);
340
+ const rollupInput = encodeFunctionData({
341
+ abi: RollupAbi,
342
+ functionName: 'propose',
343
+ args: [
344
+ {
345
+ header,
346
+ archive,
347
+ oracleInput: {
348
+ feeAssetPriceModifier: 0n
349
+ }
350
+ },
351
+ attestationsAndSigners.getPackedAttestations(),
352
+ attestationsAndSigners.getSigners().map((signer)=>signer.toString()),
353
+ attestationsAndSignersSignature.toViemSignature(),
354
+ blobInput
355
+ ]
356
+ });
357
+ const multiCallInput = encodeFunctionData({
358
+ abi: multicall3Abi,
359
+ functionName: 'aggregate3',
360
+ args: [
361
+ [
362
+ {
363
+ target: this.config.rollupAddress.toString(),
364
+ callData: rollupInput,
365
+ allowFailure: false
366
+ }
367
+ ]
368
+ ]
369
+ });
370
+ return {
371
+ input: multiCallInput,
372
+ hash: archive,
373
+ blockHash: archive,
374
+ to: MULTI_CALL_3_ADDRESS
375
+ };
376
+ }
377
+ makeVersionedBlobHashes(checkpoint) {
378
+ return getBlobsPerL1Block(checkpoint.toBlobFields()).map((b)=>`0x${b.getEthVersionedBlobHash().toString('hex')}`);
379
+ }
380
+ makeBlobsFromCheckpoint(checkpoint) {
381
+ return getBlobsPerL1Block(checkpoint.toBlobFields());
382
+ }
383
+ }
@@ -1,4 +1,5 @@
1
+ export * from './mock_structs.js';
1
2
  export * from './mock_l2_block_source.js';
2
3
  export * from './mock_l1_to_l2_message_source.js';
3
4
  export * from './mock_archiver.js';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG9CQUFvQixDQUFDIn0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsb0JBQW9CLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oBAAoB,CAAC"}
@@ -1,3 +1,6 @@
1
+ export * from './mock_structs.js';
1
2
  export * from './mock_l2_block_source.js';
2
3
  export * from './mock_l1_to_l2_message_source.js';
3
- export * from './mock_archiver.js';
4
+ export * from './mock_archiver.js'; // NOTE: noop_l1_archiver.js is intentionally NOT exported here because it imports
5
+ // jest-mock-extended, which depends on @jest/globals and can only run inside Jest.
6
+ // Import it directly: import { NoopL1Archiver } from '@aztec/archiver/test/noop-l1';
@@ -1,6 +1,6 @@
1
1
  import type { CheckpointNumber } from '@aztec/foundation/branded-types';
2
2
  import type { Fr } from '@aztec/foundation/curves/bn254';
3
- import { type L2BlockSource } from '@aztec/stdlib/block';
3
+ import type { L2BlockSource } from '@aztec/stdlib/block';
4
4
  import type { Checkpoint } from '@aztec/stdlib/checkpoint';
5
5
  import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
6
6
  import { MockL2BlockSource } from './mock_l2_block_source.js';
@@ -28,4 +28,4 @@ export declare class MockPrefilledArchiver extends MockArchiver {
28
28
  }[]): void;
29
29
  createBlocks(numBlocks: number): Promise<void>;
30
30
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19hcmNoaXZlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvbW9ja19hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBVyxLQUFLLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQ7O0dBRUc7QUFDSCxxQkFBYSxZQUFhLFNBQVEsaUJBQWtCLFlBQVcsYUFBYSxFQUFFLG1CQUFtQjtJQUMvRixPQUFPLENBQUMsYUFBYSxDQUFrQztJQUVoRCxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBRXRFO0lBRUQsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBRW5FO0lBRUQscUJBQXFCLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUVyRTtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSxxQkFBc0IsU0FBUSxZQUFZO0lBQ3JELE9BQU8sQ0FBQyxTQUFTLENBQW9CO0lBRXJDLFlBQVksU0FBUyxFQUFFO1FBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztRQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQTtLQUFFLEVBQUUsRUFHbEU7SUFFTSxZQUFZLENBQUMsU0FBUyxFQUFFO1FBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztRQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQTtLQUFFLEVBQUUsUUFRMUU7SUFFZSxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0saUJBWTdDO0NBQ0YifQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19hcmNoaXZlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvbW9ja19hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQ7O0dBRUc7QUFDSCxxQkFBYSxZQUFhLFNBQVEsaUJBQWtCLFlBQVcsYUFBYSxFQUFFLG1CQUFtQjtJQUMvRixPQUFPLENBQUMsYUFBYSxDQUFrQztJQUVoRCxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBRXRFO0lBRUQsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBRW5FO0lBRUQscUJBQXFCLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUVyRTtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSxxQkFBc0IsU0FBUSxZQUFZO0lBQ3JELE9BQU8sQ0FBQyxTQUFTLENBQW9CO0lBRXJDLFlBQVksU0FBUyxFQUFFO1FBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztRQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQTtLQUFFLEVBQUUsRUFHbEU7SUFFTSxZQUFZLENBQUMsU0FBUyxFQUFFO1FBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztRQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQTtLQUFFLEVBQUUsUUFRMUU7SUFFZSxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0saUJBWTdDO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"mock_archiver.d.ts","sourceRoot":"","sources":["../../src/test/mock_archiver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAW,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;GAEG;AACH,qBAAa,YAAa,SAAQ,iBAAkB,YAAW,aAAa,EAAE,mBAAmB;IAC/F,OAAO,CAAC,aAAa,CAAkC;IAEhD,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,QAEtE;IAED,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAEnE;IAED,qBAAqB,CAAC,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAErE;CACF;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,SAAS,CAAoB;IAErC,YAAY,SAAS,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,EAAE,EAAE,CAAA;KAAE,EAAE,EAGlE;IAEM,YAAY,CAAC,SAAS,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,EAAE,EAAE,CAAA;KAAE,EAAE,QAQ1E;IAEe,YAAY,CAAC,SAAS,EAAE,MAAM,iBAY7C;CACF"}
1
+ {"version":3,"file":"mock_archiver.d.ts","sourceRoot":"","sources":["../../src/test/mock_archiver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;GAEG;AACH,qBAAa,YAAa,SAAQ,iBAAkB,YAAW,aAAa,EAAE,mBAAmB;IAC/F,OAAO,CAAC,aAAa,CAAkC;IAEhD,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,QAEtE;IAED,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAEnE;IAED,qBAAqB,CAAC,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAErE;CACF;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,SAAS,CAAoB;IAErC,YAAY,SAAS,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,EAAE,EAAE,CAAA;KAAE,EAAE,EAGlE;IAEM,YAAY,CAAC,SAAS,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,EAAE,EAAE,CAAA;KAAE,EAAE,QAQ1E;IAEe,YAAY,CAAC,SAAS,EAAE,MAAM,iBAY7C;CACF"}
@@ -1,4 +1,3 @@
1
- import { L2Block } from '@aztec/stdlib/block';
2
1
  import { MockL1ToL2MessageSource } from './mock_l1_to_l2_message_source.js';
3
2
  import { MockL2BlockSource } from './mock_l2_block_source.js';
4
3
  /**
@@ -39,7 +38,7 @@ import { MockL2BlockSource } from './mock_l2_block_source.js';
39
38
  }
40
39
  const fromBlock = this.l2Blocks.length;
41
40
  // TODO: Add L2 blocks and checkpoints separately once archiver has the apis for that.
42
- this.addBlocks(this.prefilled.slice(fromBlock, fromBlock + numBlocks).map((c)=>L2Block.fromCheckpoint(c)));
41
+ this.addProposedBlocks(this.prefilled.slice(fromBlock, fromBlock + numBlocks).flatMap((c)=>c.blocks));
43
42
  return Promise.resolve();
44
43
  }
45
44
  }
@@ -3,8 +3,8 @@ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { EthAddress } from '@aztec/foundation/eth-address';
4
4
  import type { FunctionSelector } from '@aztec/stdlib/abi';
5
5
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
- import { CheckpointedL2Block, L2Block, L2BlockHash, L2BlockNew, type L2BlockSource, type L2Tips, PublishedL2Block, type ValidateCheckpointResult } from '@aztec/stdlib/block';
7
- import { type Checkpoint } from '@aztec/stdlib/checkpoint';
6
+ import { BlockHash, CheckpointedL2Block, L2Block, type L2BlockSource, type L2Tips, type ValidateCheckpointResult } from '@aztec/stdlib/block';
7
+ import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
8
8
  import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
9
9
  import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
10
10
  import { type BlockHeader, TxHash, TxReceipt } from '@aztec/stdlib/tx';
@@ -19,7 +19,7 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
19
19
  private checkpointedBlockNumber;
20
20
  private log;
21
21
  createBlocks(numBlocks: number): Promise<void>;
22
- addBlocks(blocks: L2Block[]): void;
22
+ addProposedBlocks(blocks: L2Block[]): void;
23
23
  removeBlocks(numBlocks: number): void;
24
24
  setProvenBlockNumber(provenBlockNumber: number): void;
25
25
  setFinalizedBlockNumber(finalizedBlockNumber: number): void;
@@ -40,39 +40,42 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
40
40
  */
41
41
  getBlockNumber(): Promise<BlockNumber>;
42
42
  getProvenBlockNumber(): Promise<BlockNumber>;
43
+ getCheckpointedL2BlockNumber(): Promise<BlockNumber>;
44
+ getFinalizedL2BlockNumber(): Promise<BlockNumber>;
43
45
  getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined>;
44
- getCheckpointedBlocks(from: BlockNumber, limit: number, _proven?: boolean): Promise<CheckpointedL2Block[]>;
46
+ getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<CheckpointedL2Block[]>;
45
47
  /**
46
48
  * Gets an l2 block.
47
49
  * @param number - The block number to return (inclusive).
48
50
  * @returns The requested L2 block.
49
51
  */
50
- getBlock(number: number): Promise<L2Block>;
52
+ getBlock(number: number): Promise<L2Block | undefined>;
51
53
  /**
52
54
  * Gets an L2 block (new format).
53
55
  * @param number - The block number to return.
54
56
  * @returns The requested L2 block.
55
57
  */
56
- getL2BlockNew(number: BlockNumber): Promise<L2BlockNew | undefined>;
58
+ getL2Block(number: BlockNumber): Promise<L2Block | undefined>;
57
59
  /**
58
60
  * Gets up to `limit` amount of L2 blocks starting from `from`.
59
61
  * @param from - Number of the first block to return (inclusive).
60
62
  * @param limit - The maximum number of blocks to return.
61
63
  * @returns The requested mocked L2 blocks.
62
64
  */
63
- getBlocks(from: number, limit: number, proven?: boolean): Promise<L2Block[]>;
64
- getPublishedCheckpoints(from: CheckpointNumber, limit: number): Promise<import("@aztec/stdlib/checkpoint").PublishedCheckpoint[]>;
65
+ getBlocks(from: number, limit: number): Promise<L2Block[]>;
66
+ getCheckpoints(from: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
65
67
  getCheckpointByArchive(archive: Fr): Promise<Checkpoint | undefined>;
66
- getPublishedBlocks(from: number, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
67
- getL2BlocksNew(from: BlockNumber, limit: number, proven?: boolean): Promise<L2BlockNew[]>;
68
- getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
69
- getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
70
- getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
68
+ getCheckpointedBlockByHash(blockHash: BlockHash): Promise<CheckpointedL2Block | undefined>;
69
+ getCheckpointedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
70
+ getL2BlockByHash(blockHash: BlockHash): Promise<L2Block | undefined>;
71
+ getL2BlockByArchive(archive: Fr): Promise<L2Block | undefined>;
72
+ getBlockHeaderByHash(blockHash: BlockHash): Promise<BlockHeader | undefined>;
71
73
  getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
72
74
  getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined>;
73
75
  getCheckpointsForEpoch(epochNumber: EpochNumber): Promise<Checkpoint[]>;
74
- getBlocksForEpoch(epochNumber: EpochNumber): Promise<L2Block[]>;
75
- getBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
76
+ getCheckpointedBlocksForEpoch(epochNumber: EpochNumber): Promise<CheckpointedL2Block[]>;
77
+ getBlocksForSlot(slotNumber: SlotNumber): Promise<L2Block[]>;
78
+ getCheckpointedBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
76
79
  /**
77
80
  * Gets a tx effect.
78
81
  * @param txHash - The hash of the tx corresponding to the tx effect.
@@ -81,7 +84,7 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
81
84
  getTxEffect(txHash: TxHash): Promise<{
82
85
  data: import("@aztec/stdlib/tx").TxEffect;
83
86
  l2BlockNumber: BlockNumber;
84
- l2BlockHash: L2BlockHash;
87
+ l2BlockHash: BlockHash;
85
88
  txIndexInBlock: number;
86
89
  } | undefined>;
87
90
  /**
@@ -119,4 +122,4 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
119
122
  isPendingChainInvalid(): Promise<boolean>;
120
123
  getPendingChainValidationStatus(): Promise<ValidateCheckpointResult>;
121
124
  }
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDJfYmxvY2tfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxXQUFXLEVBQ1gsVUFBVSxFQUNWLEtBQUssYUFBYSxFQUNsQixLQUFLLE1BQU0sRUFDWCxnQkFBZ0IsRUFDaEIsS0FBSyx3QkFBd0IsRUFDOUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7QUFDNUUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuSCxPQUFPLEVBQTBCLEtBQUssaUJBQWlCLEVBQXdCLE1BQU0sNkJBQTZCLENBQUM7QUFDbkgsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRDs7R0FFRztBQUNILHFCQUFhLGlCQUFrQixZQUFXLGFBQWEsRUFBRSxrQkFBa0I7SUFDekUsU0FBUyxDQUFDLFFBQVEs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
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDJfYmxvY2tfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsU0FBUyxFQUNULG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsS0FBSyxhQUFhLEVBQ2xCLEtBQUssTUFBTSxFQUNYLEtBQUssd0JBQXdCLEVBQzlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RixPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ILE9BQU8sRUFBMEIsS0FBSyxpQkFBaUIsRUFBd0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNwRyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRDs7R0FFRztBQUNILHFCQUFhLGlCQUFrQixZQUFXLGFBQWEsRUFBRSxrQkFBa0I7SUFDekUsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBTTtJQUVuQyxPQUFPLENBQUMsaUJBQWlCLENBQWE7SUFDdEMsT0FBTyxDQUFDLG9CQUFvQixDQUFhO0lBQ3pDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBYTtJQUU1QyxPQUFPLENBQUMsR0FBRyxDQUFpRDtJQUUvQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0saUJBUTFDO0lBRU0saUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUd6QztJQUVNLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxRQUdwQztJQUVNLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLE1BQU0sUUFFcEQ7SUFFTSx1QkFBdUIsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLFFBSzFEO0lBRU0sMEJBQTBCLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxRQUVoRTtJQUVEOzs7T0FHRztJQUNILGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FFdEM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0IsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRXhDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYyx5QkFFcEI7SUFFTSxvQkFBb0IseUJBRTFCO0lBRU0sNEJBQTRCLHlCQUVsQztJQUVNLHlCQUF5Qix5QkFFL0I7SUFFTSxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsQ0FlekY7SUFFWSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0Fhbkc7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FHNUQ7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLE1BQU0sRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FHbkU7SUFFRDs7Ozs7T0FLRztJQUNJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBRWhFO0lBRU0sY0FBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxrQ0FlMUQ7SUFFWSxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBVWhGO0lBRVksMEJBQTBCLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLENBYXRHO0lBRU0sNkJBQTZCLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLENBYTFGO0lBRVksZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQVFoRjtJQUVNLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FHcEU7SUFFWSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBUXhGO0lBRU0sdUJBQXVCLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUc1RTtJQUVELGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUUxRTtJQUVELHNCQUFzQixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBZ0J0RTtJQUVELDZCQUE2QixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FpQnRGO0lBRUQsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FHM0Q7SUFFSyxtQ0FBbUMsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUcxRjtJQUVEOzs7O09BSUc7SUFDVSxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU07Ozs7O21CQWN0QztJQUVEOzs7O09BSUc7SUFDVSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBa0IvRTtJQUVLLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBeUNqQztJQUVELGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FFdkM7SUFFRCxlQUFlLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUVyQztJQUVELGVBQWUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFM0Q7SUFFRCxjQUFjLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBRTNDO0lBRUQsZ0JBQWdCLElBQUksT0FBTyxDQUFDO1FBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUFBO0tBQUUsQ0FBQyxDQUV0RDtJQUVELGNBQWMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRWhDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHNUI7SUFFRDs7O09BR0c7SUFDSSxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUczQjtJQUVELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxDQUVsRTtJQUVELHFCQUFxQixDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FFdEQ7SUFFRCxXQUFXLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixHQUFHLFNBQVMsQ0FBQyxDQUV6RztJQUVELG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUVuQztJQUVELG9CQUFvQixDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRXJHO0lBRUQsa0NBQWtDLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFdkU7SUFFRCxhQUFhLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUU3QjtJQUVELHFCQUFxQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFeEM7SUFFRCwrQkFBK0IsSUFBSSxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FFbkU7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"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"}