@aztec/archiver 0.0.1-commit.4d79d1f2d → 0.0.1-commit.4d9804df

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 (132) hide show
  1. package/README.md +19 -11
  2. package/dest/archiver.d.ts +76 -18
  3. package/dest/archiver.d.ts.map +1 -1
  4. package/dest/archiver.js +330 -162
  5. package/dest/config.d.ts +7 -3
  6. package/dest/config.d.ts.map +1 -1
  7. package/dest/config.js +38 -14
  8. package/dest/errors.d.ts +55 -9
  9. package/dest/errors.d.ts.map +1 -1
  10. package/dest/errors.js +81 -14
  11. package/dest/factory.d.ts +13 -9
  12. package/dest/factory.d.ts.map +1 -1
  13. package/dest/factory.js +56 -39
  14. package/dest/index.d.ts +12 -3
  15. package/dest/index.d.ts.map +1 -1
  16. package/dest/index.js +11 -2
  17. package/dest/l1/bin/retrieve-calldata.js +32 -28
  18. package/dest/l1/calldata_retriever.d.ts +81 -50
  19. package/dest/l1/calldata_retriever.d.ts.map +1 -1
  20. package/dest/l1/calldata_retriever.js +202 -260
  21. package/dest/l1/data_retrieval.d.ts +32 -18
  22. package/dest/l1/data_retrieval.d.ts.map +1 -1
  23. package/dest/l1/data_retrieval.js +42 -47
  24. package/dest/l1/spire_proposer.d.ts +5 -5
  25. package/dest/l1/spire_proposer.d.ts.map +1 -1
  26. package/dest/l1/spire_proposer.js +9 -17
  27. package/dest/l1/trace_tx.d.ts +12 -66
  28. package/dest/l1/trace_tx.d.ts.map +1 -1
  29. package/dest/l1/validate_historical_logs.d.ts +23 -0
  30. package/dest/l1/validate_historical_logs.d.ts.map +1 -0
  31. package/dest/l1/validate_historical_logs.js +108 -0
  32. package/dest/modules/contract_data_source_adapter.d.ts +25 -0
  33. package/dest/modules/contract_data_source_adapter.d.ts.map +1 -0
  34. package/dest/modules/contract_data_source_adapter.js +32 -0
  35. package/dest/modules/data_source_base.d.ts +74 -46
  36. package/dest/modules/data_source_base.d.ts.map +1 -1
  37. package/dest/modules/data_source_base.js +252 -190
  38. package/dest/modules/data_store_updater.d.ts +49 -17
  39. package/dest/modules/data_store_updater.d.ts.map +1 -1
  40. package/dest/modules/data_store_updater.js +213 -122
  41. package/dest/modules/instrumentation.d.ts +29 -3
  42. package/dest/modules/instrumentation.d.ts.map +1 -1
  43. package/dest/modules/instrumentation.js +67 -11
  44. package/dest/modules/l1_synchronizer.d.ts +16 -14
  45. package/dest/modules/l1_synchronizer.d.ts.map +1 -1
  46. package/dest/modules/l1_synchronizer.js +488 -219
  47. package/dest/modules/outbox_trees_resolver.d.ts +62 -0
  48. package/dest/modules/outbox_trees_resolver.d.ts.map +1 -0
  49. package/dest/modules/outbox_trees_resolver.js +162 -0
  50. package/dest/modules/validation.d.ts +30 -7
  51. package/dest/modules/validation.d.ts.map +1 -1
  52. package/dest/modules/validation.js +35 -17
  53. package/dest/store/block_store.d.ts +185 -74
  54. package/dest/store/block_store.d.ts.map +1 -1
  55. package/dest/store/block_store.js +760 -275
  56. package/dest/store/contract_class_store.d.ts +17 -4
  57. package/dest/store/contract_class_store.d.ts.map +1 -1
  58. package/dest/store/contract_class_store.js +42 -68
  59. package/dest/store/contract_instance_store.d.ts +28 -1
  60. package/dest/store/contract_instance_store.d.ts.map +1 -1
  61. package/dest/store/contract_instance_store.js +54 -2
  62. package/dest/store/data_stores.d.ts +68 -0
  63. package/dest/store/data_stores.d.ts.map +1 -0
  64. package/dest/store/data_stores.js +54 -0
  65. package/dest/store/function_names_cache.d.ts +17 -0
  66. package/dest/store/function_names_cache.d.ts.map +1 -0
  67. package/dest/store/function_names_cache.js +30 -0
  68. package/dest/store/l2_tips_cache.d.ts +25 -0
  69. package/dest/store/l2_tips_cache.d.ts.map +1 -0
  70. package/dest/store/l2_tips_cache.js +26 -0
  71. package/dest/store/log_store.d.ts +42 -37
  72. package/dest/store/log_store.d.ts.map +1 -1
  73. package/dest/store/log_store.js +262 -408
  74. package/dest/store/log_store_codec.d.ts +78 -0
  75. package/dest/store/log_store_codec.d.ts.map +1 -0
  76. package/dest/store/log_store_codec.js +110 -0
  77. package/dest/store/message_store.d.ts +11 -1
  78. package/dest/store/message_store.d.ts.map +1 -1
  79. package/dest/store/message_store.js +51 -9
  80. package/dest/test/fake_l1_state.d.ts +25 -1
  81. package/dest/test/fake_l1_state.d.ts.map +1 -1
  82. package/dest/test/fake_l1_state.js +166 -32
  83. package/dest/test/mock_archiver.d.ts +1 -1
  84. package/dest/test/mock_archiver.d.ts.map +1 -1
  85. package/dest/test/mock_archiver.js +3 -2
  86. package/dest/test/mock_l2_block_source.d.ts +61 -47
  87. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  88. package/dest/test/mock_l2_block_source.js +306 -211
  89. package/dest/test/mock_structs.d.ts +4 -1
  90. package/dest/test/mock_structs.d.ts.map +1 -1
  91. package/dest/test/mock_structs.js +15 -3
  92. package/dest/test/noop_l1_archiver.d.ts +17 -6
  93. package/dest/test/noop_l1_archiver.d.ts.map +1 -1
  94. package/dest/test/noop_l1_archiver.js +31 -11
  95. package/package.json +14 -14
  96. package/src/archiver.ts +427 -185
  97. package/src/config.ts +43 -13
  98. package/src/errors.ts +122 -21
  99. package/src/factory.ts +70 -29
  100. package/src/index.ts +19 -2
  101. package/src/l1/README.md +25 -68
  102. package/src/l1/bin/retrieve-calldata.ts +40 -27
  103. package/src/l1/calldata_retriever.ts +267 -379
  104. package/src/l1/data_retrieval.ts +66 -70
  105. package/src/l1/spire_proposer.ts +7 -15
  106. package/src/l1/validate_historical_logs.ts +140 -0
  107. package/src/modules/contract_data_source_adapter.ts +46 -0
  108. package/src/modules/data_source_base.ts +337 -238
  109. package/src/modules/data_store_updater.ts +250 -154
  110. package/src/modules/instrumentation.ts +71 -11
  111. package/src/modules/l1_synchronizer.ts +659 -269
  112. package/src/modules/outbox_trees_resolver.ts +199 -0
  113. package/src/modules/validation.ts +80 -23
  114. package/src/store/block_store.ts +932 -347
  115. package/src/store/contract_class_store.ts +49 -103
  116. package/src/store/contract_instance_store.ts +68 -5
  117. package/src/store/data_stores.ts +104 -0
  118. package/src/store/function_names_cache.ts +37 -0
  119. package/src/store/l2_tips_cache.ts +35 -0
  120. package/src/store/log_store.ts +302 -559
  121. package/src/store/log_store_codec.ts +143 -0
  122. package/src/store/message_store.ts +60 -10
  123. package/src/structs/inbox_message.ts +1 -1
  124. package/src/test/fake_l1_state.ts +213 -42
  125. package/src/test/mock_archiver.ts +3 -2
  126. package/src/test/mock_l2_block_source.ts +378 -233
  127. package/src/test/mock_structs.ts +25 -8
  128. package/src/test/noop_l1_archiver.ts +61 -12
  129. package/dest/store/kv_archiver_store.d.ts +0 -340
  130. package/dest/store/kv_archiver_store.d.ts.map +0 -1
  131. package/dest/store/kv_archiver_store.js +0 -446
  132. package/src/store/kv_archiver_store.ts +0 -639
@@ -2,59 +2,100 @@ import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/bra
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
4
4
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
5
- import { BlockHash, CheckpointedL2Block, L2Block, type ValidateCheckpointResult } from '@aztec/stdlib/block';
6
- import { L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
7
- import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
8
- import { CheckpointHeader } from '@aztec/stdlib/rollup';
9
- import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
10
- import { BlockHeader, type IndexedTxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
11
- export { TxReceipt, type TxEffect, type TxHash } from '@aztec/stdlib/tx';
12
- export type CheckpointData = {
5
+ import { type BlockData, BlockHash, CommitteeAttestation, L2Block, type L2Tips, type ValidateCheckpointResult } from '@aztec/stdlib/block';
6
+ import { type CheckpointData, type CommonCheckpointData, L1PublishedData, type ProposedCheckpointData, type ProposedCheckpointInput, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
7
+ import { type IndexedTxEffect, TxHash } from '@aztec/stdlib/tx';
8
+ export type { TxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
9
+ /** Reason a checkpoint was rejected during sync. */
10
+ export type RejectedCheckpointReason = 'invalid-attestations' | 'descends-from-invalid-attestations';
11
+ /**
12
+ * A checkpoint observed on L1 that the archiver decided not to ingest, recorded so that
13
+ * any descendant that builds on top of it can also be skipped (rather than throwing
14
+ * `InitialCheckpointNumberNotSequentialError` and looping). An entry is dropped via
15
+ * {@link BlockStore.removeRejectedCheckpointByArchiveRoot} once a checkpoint with the same
16
+ * archive root is later ingested as valid (e.g. it gathered enough attestations), which
17
+ * re-enables its descendants.
18
+ */
19
+ export type RejectedCheckpoint = {
20
+ /** Checkpoint number this entry represents. */
13
21
  checkpointNumber: CheckpointNumber;
14
- header: CheckpointHeader;
15
- archive: AppendOnlyTreeSnapshot;
16
- startBlock: number;
17
- numBlocks: number;
22
+ /** Archive root produced by this rejected checkpoint (matched against descendants' `lastArchiveRoot`). */
23
+ archiveRoot: Fr;
24
+ /** `lastArchiveRoot` from this checkpoint's header (the ancestor it built on). */
25
+ parentArchiveRoot: Fr;
26
+ /** Slot number of the rejected checkpoint. */
27
+ slotNumber: SlotNumber;
28
+ /** L1 publication data for the rejected checkpoint (block number, hash, timestamp). */
18
29
  l1: L1PublishedData;
19
- attestations: Buffer[];
30
+ /** Why the entry was recorded. */
31
+ reason: RejectedCheckpointReason;
20
32
  };
21
33
  export type RemoveCheckpointsResult = {
22
34
  blocksRemoved: L2Block[] | undefined;
23
35
  };
36
+ /**
37
+ * Single-block lookup with the chain-tip `tag` variant of {@link BlockQuery} already resolved
38
+ * to a concrete block number. The `tag` branch is unrepresentable here so storage code does
39
+ * not need to handle it at runtime.
40
+ */
41
+ export type ResolvedBlockQuery = {
42
+ number: BlockNumber;
43
+ } | {
44
+ hash: BlockHash;
45
+ } | {
46
+ archive: Fr;
47
+ };
48
+ /**
49
+ * Range lookup with the `epoch` variant of {@link BlocksQuery} already resolved to a
50
+ * `{ from, limit }` pair. Storage code never needs to map epoch numbers to block ranges.
51
+ */
52
+ export type ResolvedBlocksQuery = {
53
+ from: BlockNumber;
54
+ limit: number;
55
+ onlyCheckpointed?: boolean;
56
+ };
24
57
  /**
25
58
  * LMDB-based block storage for the archiver.
26
59
  */
27
60
  export declare class BlockStore {
28
61
  #private;
29
62
  private db;
30
- private l1Constants;
31
- constructor(db: AztecAsyncKVStore, l1Constants: Pick<L1RollupConstants, 'epochDuration'>);
63
+ constructor(db: AztecAsyncKVStore);
32
64
  /**
33
- * Computes the finalized block number based on the proven block number.
34
- * A block is considered finalized when it's 2 epochs behind the proven block.
35
- * TODO(#13569): Compute proper finalized block number based on L1 finalized block.
36
- * TODO(palla/mbps): Even the provisional computation is wrong, since it should subtract checkpoints, not blocks
65
+ * Returns the finalized L2 block number. An L2 block is finalized when it was proven
66
+ * in an L1 block that has itself been finalized on Ethereum.
37
67
  * @returns The finalized block number.
38
68
  */
39
69
  getFinalizedL2BlockNumber(): Promise<BlockNumber>;
40
70
  /**
41
- * Append new proposed blocks to the store's list. All blocks must be for the 'current' checkpoint.
42
- * These are uncheckpointed blocks that have been proposed by the sequencer but not yet included in a checkpoint on L1.
71
+ * Append a new proposed block to the store.
72
+ * This is an uncheckpointed block that has been proposed by the sequencer but not yet included in a checkpoint on L1.
43
73
  * For checkpointed blocks (already published to L1), use addCheckpoints() instead.
44
- * @param blocks - The proposed L2 blocks to be added to the store.
74
+ * @param block - The proposed L2 block to be added to the store.
45
75
  * @returns True if the operation is successful.
46
76
  */
47
- addProposedBlocks(blocks: L2Block[], opts?: {
77
+ addProposedBlock(block: L2Block, opts?: {
48
78
  force?: boolean;
49
79
  }): Promise<boolean>;
50
80
  /**
51
- * Append new cheskpoints to the store's list.
81
+ * Append new checkpoints to the store's list.
82
+ * Checkpoints at the start of the batch that are already stored (e.g. re-included by an L1 reorg)
83
+ * are accepted if their archive root matches: their L1 metadata is updated but they are not
84
+ * re-inserted, and they are excluded from the returned array.
52
85
  * @param checkpoints - The L2 checkpoints to be added to the store.
53
- * @returns True if the operation is successful.
86
+ * @returns The checkpoints that were actually inserted (excluding already-stored ones).
54
87
  */
55
88
  addCheckpoints(checkpoints: PublishedCheckpoint[], opts?: {
56
89
  force?: boolean;
57
- }): Promise<boolean>;
90
+ }): Promise<PublishedCheckpoint[]>;
91
+ private skipOrUpdateAlreadyStoredCheckpoints;
92
+ private getPreviousCheckpointBlock;
93
+ /**
94
+ * Validates that blocks are sequential, have correct indexes, and chain via archive roots.
95
+ * This is the same validation used for both confirmed checkpoints (addCheckpoints) and
96
+ * proposed checkpoints (addProposedCheckpoint).
97
+ */
98
+ private validateCheckpointBlocks;
58
99
  private addBlockToDatabase;
59
100
  private deleteBlock;
60
101
  /**
@@ -65,6 +106,21 @@ export declare class BlockStore {
65
106
  removeCheckpointsAfter(checkpointNumber: CheckpointNumber): Promise<RemoveCheckpointsResult>;
66
107
  getCheckpointData(checkpointNumber: CheckpointNumber): Promise<CheckpointData | undefined>;
67
108
  getRangeOfCheckpoints(from: CheckpointNumber, limit: number): Promise<CheckpointData[]>;
109
+ /**
110
+ * Returns up to `limit` checkpoints anchored at `fromSlot`, ordered nearest-first, walking the slot index.
111
+ * With `reverse`, takes the checkpoints at or before `fromSlot` (descending by slot); otherwise the
112
+ * checkpoints at or after it (ascending). `limit: 1, reverse: true` yields the latest checkpoint at or
113
+ * before the slot in a single range scan.
114
+ */
115
+ getCheckpointsBySlot(fromSlot: SlotNumber, limit: number, reverse: boolean): Promise<CheckpointData[]>;
116
+ /** Returns checkpoint data for all checkpoints whose slot falls within the given range (inclusive). */
117
+ getCheckpointDataForSlotRange(startSlot: SlotNumber, endSlot: SlotNumber): Promise<CheckpointData[]>;
118
+ /**
119
+ * Returns the checkpoint numbers for all checkpoints whose slot falls within the given range (inclusive).
120
+ * Lighter than {@link getCheckpointDataForSlotRange} when callers only need to identify which
121
+ * checkpoints fall in the range and will fetch full data for at most a few of them.
122
+ */
123
+ getCheckpointNumbersForSlotRange(startSlot: SlotNumber, endSlot: SlotNumber): Promise<CheckpointNumber[]>;
68
124
  private checkpointDataFromCheckpointStorage;
69
125
  getBlocksForCheckpoint(checkpointNumber: CheckpointNumber): Promise<L2Block[] | undefined>;
70
126
  /**
@@ -82,63 +138,72 @@ export declare class BlockStore {
82
138
  */
83
139
  removeBlocksAfter(blockNumber: BlockNumber): Promise<L2Block[]>;
84
140
  getProvenBlockNumber(): Promise<BlockNumber>;
85
- getLatestBlockNumber(): Promise<BlockNumber>;
86
141
  getLatestCheckpointNumber(): Promise<CheckpointNumber>;
87
- getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined>;
142
+ hasProposedCheckpoint(): Promise<boolean>;
143
+ /** Deletes all pending proposed checkpoints from storage. */
144
+ deleteProposedCheckpoints(): Promise<void>;
88
145
  /**
89
- * Gets up to `limit` amount of Checkpointed L2 blocks starting from `from`.
90
- * @param start - Number of the first block to return (inclusive).
91
- * @param limit - The number of blocks to return.
92
- * @returns The requested L2 blocks
146
+ * Promotes a specific pending checkpoint to a confirmed checkpoint entry.
147
+ * This persists the checkpoint to the store, removes only that pending entry, and updates the L1 sync point.
148
+ * Remaining pending entries (e.g. N+1, N+2) are left intact — they chain off the just-promoted one.
149
+ * @param checkpointNumber - The checkpoint number to promote.
150
+ * @param l1 - L1 published data for the checkpoint.
151
+ * @param attestations - Committee attestations.
152
+ * @param expectedArchiveRoot - Archive root guard against races.
93
153
  */
94
- getCheckpointedBlocks(start: BlockNumber, limit: number): AsyncIterableIterator<CheckpointedL2Block>;
95
- getCheckpointedBlockByHash(blockHash: BlockHash): Promise<CheckpointedL2Block | undefined>;
96
- getCheckpointedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
154
+ promoteProposedToCheckpointed(checkpointNumber: CheckpointNumber, l1: L1PublishedData, attestations: CommitteeAttestation[], expectedArchiveRoot: Fr): Promise<void>;
97
155
  /**
98
- * Gets up to `limit` amount of L2 blocks starting from `from`.
99
- * @param start - Number of the first block to return (inclusive).
100
- * @param limit - The number of blocks to return.
101
- * @returns The requested L2 blocks
156
+ * Returns the latest pending checkpoint (highest-numbered entry), or undefined if none.
157
+ * No fallback to confirmed.
102
158
  */
103
- getBlocks(start: BlockNumber, limit: number): AsyncIterableIterator<L2Block>;
159
+ getLastProposedCheckpoint(): Promise<ProposedCheckpointData | undefined>;
160
+ /** Returns the pending checkpoint for a specific checkpoint number, or undefined if not found. */
161
+ getProposedCheckpointByNumber(n: CheckpointNumber): Promise<ProposedCheckpointData | undefined>;
104
162
  /**
105
- * Gets an L2 block.
106
- * @param blockNumber - The number of the block to return.
107
- * @returns The requested L2 block.
163
+ * Returns the pending checkpoint whose header slot matches the given slot, or undefined if not found.
164
+ * Iterates `#proposedCheckpoints` rather than reading an index because the map carries 0–1 entries
165
+ * in normal operation (bounded by the proposer pipelining window). Returns the first match.
108
166
  */
109
- getBlock(blockNumber: BlockNumber): Promise<L2Block | undefined>;
167
+ getProposedCheckpointBySlot(slot: SlotNumber): Promise<ProposedCheckpointData | undefined>;
110
168
  /**
111
- * Gets an L2 block by its hash.
112
- * @param blockHash - The hash of the block to return.
113
- * @returns The requested L2 block.
169
+ * Evicts all pending checkpoints with checkpoint number >= fromNumber.
170
+ * Used for divergent-mined-checkpoint cleanup: when L1 mines checkpoint N with a different archive,
171
+ * all pending >= N must be evicted since they chain off the now-invalid pending N.
114
172
  */
115
- getBlockByHash(blockHash: BlockHash): Promise<L2Block | undefined>;
173
+ evictProposedCheckpointsFrom(fromNumber: CheckpointNumber): Promise<void>;
116
174
  /**
117
- * Gets an L2 block by its archive root.
118
- * @param archive - The archive root of the block to return.
119
- * @returns The requested L2 block.
175
+ * Gets the checkpoint at the proposed tip:
176
+ * - latest pending checkpoint if any exist
177
+ * - fallsback to latest confirmed checkpoint otherwise
120
178
  */
121
- getBlockByArchive(archive: Fr): Promise<L2Block | undefined>;
179
+ getLastCheckpoint(): Promise<CommonCheckpointData | undefined>;
180
+ private convertToProposedCheckpointData;
122
181
  /**
123
- * Gets a block header by its hash.
124
- * @param blockHash - The hash of the block to return.
125
- * @returns The requested block header.
182
+ * Attempts to get the proposedCheckpoint's number, if there is not one, then fallback to the latest confirmed checkpoint number.
183
+ * @returns CheckpointNumber
126
184
  */
127
- getBlockHeaderByHash(blockHash: BlockHash): Promise<BlockHeader | undefined>;
185
+ getProposedCheckpointNumber(): Promise<CheckpointNumber>;
128
186
  /**
129
- * Gets a block header by its archive root.
130
- * @param archive - The archive root of the block to return.
131
- * @returns The requested block header.
187
+ * Attempts to get the proposedCheckpoint's block number, if there is not one, then fallback to the checkpointed block number
188
+ * @returns BlockNumber
132
189
  */
133
- getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
134
- /**
135
- * Gets the headers for a sequence of L2 blocks.
136
- * @param start - Number of the first block to return (inclusive).
137
- * @param limit - The number of blocks to return.
138
- * @returns The requested L2 block headers
139
- */
140
- getBlockHeaders(start: BlockNumber, limit: number): AsyncIterableIterator<BlockHeader>;
190
+ getProposedCheckpointL2BlockNumber(): Promise<BlockNumber>;
191
+ /** Returns the checkpoint number that contains the given slot (or undefined if not found). */
192
+ getCheckpointNumberBySlot(slot: SlotNumber): Promise<CheckpointNumber | undefined>;
193
+ /** Gets a single L2 block matching the given resolved query. */
194
+ getBlock(query: ResolvedBlockQuery): Promise<L2Block | undefined>;
195
+ /** Gets a collection of L2 blocks for a resolved range. */
196
+ getBlocks(query: ResolvedBlocksQuery): Promise<L2Block[]>;
197
+ /** Gets single block metadata matching the given resolved query. */
198
+ getBlockData(query: ResolvedBlockQuery): Promise<BlockData | undefined>;
199
+ /** Gets a collection of block metadata entries for a resolved range. */
200
+ getBlocksData(query: ResolvedBlocksQuery): Promise<BlockData[]>;
201
+ private iterateBlocks;
202
+ private iterateBlocksData;
141
203
  private getBlockStorages;
204
+ /** Resolves a ResolvedBlockQuery discriminant to a block number, or undefined if not found. */
205
+ getBlockNumber(query: ResolvedBlockQuery): Promise<BlockNumber | undefined>;
206
+ private getBlockDataFromBlockStorage;
142
207
  private getBlockFromBlockStorage;
143
208
  /**
144
209
  * Gets a tx effect.
@@ -146,18 +211,26 @@ export declare class BlockStore {
146
211
  * @returns The requested tx effect with block info (or undefined if not found).
147
212
  */
148
213
  getTxEffect(txHash: TxHash): Promise<IndexedTxEffect | undefined>;
149
- /**
150
- * Gets a receipt of a settled tx.
151
- * @param txHash - The hash of a tx we try to get the receipt for.
152
- * @returns The requested tx receipt (or undefined if not found).
153
- */
154
- getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
155
214
  /**
156
215
  * Looks up which block included the requested tx effect.
157
216
  * @param txHash - The txHash of the tx.
158
217
  * @returns The block number and index of the tx.
159
218
  */
160
219
  getTxLocation(txHash: TxHash): Promise<[blockNumber: number, txIndex: number] | undefined>;
220
+ /**
221
+ * Batched, partial deserializer that fetches `noteHashes` and `nullifiers` (all of them) for the given
222
+ * txs. For each input txHash, returns a `[noteHashes, nullifiers]` tuple. Returns `[[], []]` for any
223
+ * unknown txHash. Preserves input order. Used by the log read path when `includeEffects` is set to
224
+ * attach effect data on demand without paying for a full {@link TxEffect} deserialization.
225
+ *
226
+ * The on-disk `IndexedTxEffect` layout starts with a fixed-length header
227
+ * (`blockHash(32) + l2BlockNumber(4) + txIndexInBlock(4) + slotNumber(4) + revertCode(1) + txHash(32) +
228
+ * transactionFee(32)` = 109 bytes), followed by `noteHashes` and `nullifiers` (both u8-length-prefixed `Fr`
229
+ * vectors). We
230
+ * skip the header, then read the two vectors, and stop — the large tail (`l2ToL1Msgs`,
231
+ * `publicDataWrites`, `privateLogs`, `publicLogs`, `contractClassLogs`) is never touched.
232
+ */
233
+ getNoteHashesAndNullifiers(txHashes: TxHash[]): Promise<[Fr[], Fr[]][]>;
161
234
  /**
162
235
  * Looks up which block deployed a particular contract.
163
236
  * @param contractAddress - The address of the contract to look up.
@@ -170,14 +243,40 @@ export declare class BlockStore {
170
243
  */
171
244
  getCheckpointedL2BlockNumber(): Promise<BlockNumber>;
172
245
  getLatestL2BlockNumber(): Promise<BlockNumber>;
246
+ /**
247
+ * Resolves all four L2 chain tips (proposed, checkpointed, proven, finalized) in a single
248
+ * read-only transaction so the snapshot is internally consistent. Each underlying record is
249
+ * read at most once: latest block and latest confirmed checkpoint are loaded directly (no
250
+ * separate "find the number, then look up data" hop), the proven/finalized checkpoint
251
+ * singletons are read once and their storage entries are reused if they coincide with the
252
+ * latest checkpoint, and per-tip block hashes are deduped when two tips land on the same block
253
+ * (e.g. finalized == proven).
254
+ *
255
+ * The result is guaranteed to satisfy `finalized <= proven <= checkpointed <= proposed` (by
256
+ * block number). Genesis is represented by `(INITIAL_L2_BLOCK_NUM - 1)` and the supplied
257
+ * `genesisBlockHash`, paired with the synthetic genesis checkpoint id.
258
+ *
259
+ * @param genesisBlockHash - Block hash to report for the synthetic pre-initial block (used when
260
+ * a tip is still at genesis).
261
+ */
262
+ getL2TipsData(genesisBlockHash: BlockHash): Promise<L2Tips>;
173
263
  /**
174
264
  * Gets the most recent L1 block processed.
175
265
  * @returns The L1 block that published the latest L2 block
176
266
  */
177
267
  getSynchedL1BlockNumber(): Promise<bigint | undefined>;
178
268
  setSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<boolean>;
269
+ /**
270
+ * Adds a proposed checkpoint to the pending queue.
271
+ * Accepts proposed.checkpointNumber === latestTip + 1, where latestTip is the highest of
272
+ * confirmed and the highest pending checkpoint number.
273
+ * Computes archive and checkpointOutHash from the stored blocks.
274
+ */
275
+ addProposedCheckpoint(proposed: ProposedCheckpointInput): Promise<void>;
179
276
  getProvenCheckpointNumber(): Promise<CheckpointNumber>;
180
277
  setProvenCheckpointNumber(checkpointNumber: CheckpointNumber): Promise<boolean>;
278
+ getFinalizedCheckpointNumber(): Promise<CheckpointNumber>;
279
+ setFinalizedCheckpointNumber(checkpointNumber: CheckpointNumber): Promise<boolean>;
181
280
  /**
182
281
  * Gets the pending chain validation status.
183
282
  * @returns The validation status or undefined if not set.
@@ -188,5 +287,17 @@ export declare class BlockStore {
188
287
  * @param status - The validation status to store.
189
288
  */
190
289
  setPendingChainValidationStatus(status: ValidateCheckpointResult | undefined): Promise<void>;
290
+ /** Records a rejected-checkpoint entry, keyed by its own archive root. */
291
+ addRejectedCheckpoint(entry: RejectedCheckpoint): Promise<void>;
292
+ /** Returns the rejected-checkpoint entry with the given archive root, or undefined if not present. */
293
+ getRejectedCheckpointByArchiveRoot(archiveRoot: Fr): Promise<RejectedCheckpoint | undefined>;
294
+ /** Returns the rejected-checkpoint entry recorded for the given checkpoint number, or undefined if none. */
295
+ getRejectedCheckpointByNumber(checkpointNumber: CheckpointNumber): Promise<RejectedCheckpoint | undefined>;
296
+ /** Returns the highest checkpoint number recorded across all rejected entries, or `INITIAL_CHECKPOINT_NUMBER - 1` if none. */
297
+ getLatestRejectedCheckpointNumber(): Promise<CheckpointNumber>;
298
+ /** Removes a rejected-checkpoint entry by its archive root (used when an entry no longer matches L1). */
299
+ removeRejectedCheckpointByArchiveRoot(archiveRoot: Fr): Promise<void>;
300
+ private advanceSynchedL1BlockNumber;
301
+ private rejectedCheckpointFromStorage;
191
302
  }
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZS9ibG9ja19zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUF5QixVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuSCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNcEQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQTZDLE1BQU0saUJBQWlCLENBQUM7QUFDcEcsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUNMLFNBQVMsRUFFVCxtQkFBbUIsRUFFbkIsT0FBTyxFQUNQLEtBQUssd0JBQXdCLEVBRzlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hGLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxLQUFLLGVBQWUsRUFFcEIsTUFBTSxFQUNOLFNBQVMsRUFJVixNQUFNLGtCQUFrQixDQUFDO0FBZTFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxRQUFRLEVBQUUsS0FBSyxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQXNCekUsTUFBTSxNQUFNLGNBQWMsR0FBRztJQUMzQixnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUNuQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7SUFDekIsT0FBTyxFQUFFLHNCQUFzQixDQUFDO0lBQ2hDLFVBQVUsRUFBRSxNQUFNLENBQUM7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
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZS9ibG9ja19zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUF5QixVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuSCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNcEQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQTZDLE1BQU0saUJBQWlCLENBQUM7QUFDcEcsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUNMLEtBQUssU0FBUyxFQUNkLFNBQVMsRUFFVCxvQkFBb0IsRUFFcEIsT0FBTyxFQUVQLEtBQUssTUFBTSxFQUNYLEtBQUssd0JBQXdCLEVBRzlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUVMLEtBQUssY0FBYyxFQUNuQixLQUFLLG9CQUFvQixFQUN6QixlQUFlLEVBQ2YsS0FBSyxzQkFBc0IsRUFDM0IsS0FBSyx1QkFBdUIsRUFDNUIsbUJBQW1CLEVBQ3BCLE1BQU0sMEJBQTBCLENBQUM7QUFHbEMsT0FBTyxFQUVMLEtBQUssZUFBZSxFQUVwQixNQUFNLEVBR1AsTUFBTSxrQkFBa0IsQ0FBQztBQW1CMUIsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFZcEUsb0RBQW9EO0FBQ3BELE1BQU0sTUFBTSx3QkFBd0IsR0FBRyxzQkFBc0IsR0FBRyxvQ0FBb0MsQ0FBQztBQUVyRzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLCtDQUErQztJQUMvQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUNuQywwR0FBMEc7SUFDMUcsV0FBVyxFQUFFLEVBQUUsQ0FBQztJQUNoQixrRkFBa0Y7SUFDbEYsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO0lBQ3RCLDhDQUE4QztJQUM5QyxVQUFVLEVBQUUsVUFBVSxDQUFDO0lBQ3ZCLHVGQUF1RjtJQUN2RixFQUFFLEVBQUUsZUFBZSxDQUFDO0lBQ3BCLGtDQUFrQztJQUNsQyxNQUFNLEVBQUUsd0JBQXdCLENBQUM7Q0FDbEMsQ0FBQztBQWlDRixNQUFNLE1BQU0sdUJBQXVCLEdBQUc7SUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFBO0NBQUUsQ0FBQztBQUUvRTs7OztHQUlHO0FBQ0gsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQTtDQUFFLEdBQUc7SUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFBO0NBQUUsR0FBRztJQUFFLE9BQU8sRUFBRSxFQUFFLENBQUE7Q0FBRSxDQUFDO0FBRWpHOzs7R0FHRztBQUNILE1BQU0sTUFBTSxtQkFBbUIsR0FBRztJQUFFLElBQUksRUFBRSxXQUFXLENBQUM7SUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO0lBQUMsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLENBQUE7Q0FBRSxDQUFDO0FBRW5HOztHQUVHO0FBQ0gscUJBQWEsVUFBVTs7SUFnRFQsT0FBTyxDQUFDLEVBQUU7SUFBdEIsWUFBb0IsRUFBRSxFQUFFLGlCQUFpQixFQWdCeEM7SUFFRDs7OztPQUlHO0lBQ0cseUJBQXlCLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQVV0RDtJQUVEOzs7Ozs7T0FNRztJQUNHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxHQUFFO1FBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFBO0tBQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBbUV2RjtJQUVEOzs7Ozs7O09BT0c7SUFDRyxjQUFjLENBQ2xCLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxFQUNsQyxJQUFJLEdBQUU7UUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUE7S0FBTyxHQUM3QixPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQWdGaEM7WUFNYSxvQ0FBb0M7WUE2Q3BDLDBCQUEwQjtJQXVCeEM7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyx3QkFBd0I7WUFpQ2xCLGtCQUFrQjtZQThCbEIsV0FBVztJQWdCekI7Ozs7T0FJRztJQUNHLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQStDakc7SUFFSyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxDQU0vRjtJQUVLLHFCQUFxQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQVU1RjtJQUVEOzs7OztPQUtHO0lBQ0csb0JBQW9CLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBWTNHO0lBRUQsdUdBQXVHO0lBQ2pHLDZCQUE2QixDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FZekc7SUFFRDs7OztPQUlHO0lBQ0csZ0NBQWdDLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBUzlHO0lBRUQsT0FBTyxDQUFDLG1DQUFtQztJQWNyQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBZS9GO0lBRUQ7Ozs7O09BS0c7SUFDRyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQWlCakU7SUFFRDs7Ozs7T0FLRztJQUNHLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBdUJwRTtJQUVLLG9CQUFvQixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FXakQ7SUFFSyx5QkFBeUIsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FNM0Q7SUFFSyxxQkFBcUIsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBRzlDO0lBRUQsNkRBQTZEO0lBQ3ZELHlCQUF5QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FJL0M7SUFFRDs7Ozs7Ozs7T0FRRztJQUNHLDZCQUE2QixDQUNqQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsRUFBRSxFQUFFLGVBQWUsRUFDbkIsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEVBQ3BDLG1CQUFtQixFQUFFLEVBQUUsR0FDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQTBDZjtJQUVEOzs7T0FHRztJQUNHLHlCQUF5QixJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsR0FBRyxTQUFTLENBQUMsQ0FPN0U7SUFFRCxrR0FBa0c7SUFDNUYsNkJBQTZCLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsR0FBRyxTQUFTLENBQUMsQ0FHcEc7SUFFRDs7OztPQUlHO0lBQ0csMkJBQTJCLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxDQUFDLENBUS9GO0lBRUQ7Ozs7T0FJRztJQUNHLDRCQUE0QixDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBVTlFO0lBRUQ7Ozs7T0FJRztJQUNHLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsQ0FNbkU7SUFFRCxPQUFPLENBQUMsK0JBQStCO0lBYXZDOzs7T0FHRztJQUNHLDJCQUEyQixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQU03RDtJQUVEOzs7T0FHRztJQUNHLGtDQUFrQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FNL0Q7SUFFRCw4RkFBOEY7SUFDeEYseUJBQXlCLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLENBR3ZGO0lBRUQsZ0VBQWdFO0lBQzFELFFBQVEsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FVdEU7SUFFRCwyREFBMkQ7SUFDM0QsU0FBUyxDQUFDLEtBQUssRUFBRSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FFeEQ7SUFFRCxvRUFBb0U7SUFDOUQsWUFBWSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQVU1RTtJQUVELHdFQUF3RTtJQUN4RSxhQUFhLENBQUMsS0FBSyxFQUFFLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUU5RDtZQUdjLGFBQWE7WUFjYixpQkFBaUI7WUFVakIsZ0JBQWdCO0lBYS9CLCtGQUErRjtJQUN6RixjQUFjLENBQUMsS0FBSyxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBZWhGO0lBRUQsT0FBTyxDQUFDLDRCQUE0QjtZQVV0Qix3QkFBd0I7SUFzQ3RDOzs7O09BSUc7SUFDRyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxDQU10RTtJQUVEOzs7O09BSUc7SUFDVSxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FXdEc7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSwwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBZ0I3RTtJQUVEOzs7O09BSUc7SUFDSCxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUU1RztJQUVEOzs7T0FHRztJQUNHLDRCQUE0QixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FPekQ7SUFFSyxzQkFBc0IsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBR25EO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0csYUFBYSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBdUloRTtJQUVEOzs7T0FHRztJQUNILHVCQUF1QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRXJEO0lBRUQsdUJBQXVCLENBQUMsYUFBYSxFQUFFLE1BQU0sb0JBRTVDO0lBRUQ7Ozs7O09BS0c7SUFDRyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsdUJBQXVCLGlCQXNDNUQ7SUFFSyx5QkFBeUIsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FVM0Q7SUFFSyx5QkFBeUIsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0Isb0JBR2pFO0lBRUssNEJBQTRCLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBVTlEO0lBRUQsNEJBQTRCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLG9CQUU5RDtJQWNEOzs7T0FHRztJQUNHLCtCQUErQixJQUFJLE9BQU8sQ0FBQyx3QkFBd0IsR0FBRyxTQUFTLENBQUMsQ0FNckY7SUFFRDs7O09BR0c7SUFDRywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FPakc7SUFFRCwwRUFBMEU7SUFDcEUscUJBQXFCLENBQUMsS0FBSyxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FZcEU7SUFFRCxzR0FBc0c7SUFDaEcsa0NBQWtDLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDLENBR2pHO0lBRUQsNEdBQTRHO0lBQ3RHLDZCQUE2QixDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUMsQ0FPL0c7SUFFRCw4SEFBOEg7SUFDeEgsaUNBQWlDLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBR25FO0lBRUQseUdBQXlHO0lBQ25HLHFDQUFxQyxDQUFDLFdBQVcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVkxRTtZQVFhLDJCQUEyQjtJQU96QyxPQUFPLENBQUMsNkJBQTZCO0NBVXRDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../src/store/block_store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../src/store/block_store.ts"],"names":[],"mappings":"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"}