@aztec/archiver 4.0.0-nightly.20260112 → 4.0.0-nightly.20260114

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 (68) hide show
  1. package/README.md +139 -22
  2. package/dest/archiver/archive_source_base.d.ts +75 -0
  3. package/dest/archiver/archive_source_base.d.ts.map +1 -0
  4. package/dest/archiver/archive_source_base.js +202 -0
  5. package/dest/archiver/archiver.d.ts +32 -168
  6. package/dest/archiver/archiver.d.ts.map +1 -1
  7. package/dest/archiver/archiver.js +123 -613
  8. package/dest/archiver/archiver_store_updates.d.ts +38 -0
  9. package/dest/archiver/archiver_store_updates.d.ts.map +1 -0
  10. package/dest/archiver/archiver_store_updates.js +212 -0
  11. package/dest/archiver/config.js +2 -2
  12. package/dest/archiver/index.d.ts +3 -2
  13. package/dest/archiver/index.d.ts.map +1 -1
  14. package/dest/archiver/index.js +2 -0
  15. package/dest/archiver/kv_archiver_store/block_store.d.ts +12 -5
  16. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
  17. package/dest/archiver/kv_archiver_store/block_store.js +23 -4
  18. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +1 -1
  19. package/dest/archiver/kv_archiver_store/contract_class_store.js +1 -1
  20. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +1 -1
  21. package/dest/archiver/kv_archiver_store/contract_instance_store.js +1 -1
  22. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +173 -12
  23. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
  24. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +159 -48
  25. package/dest/archiver/l1/calldata_retriever.d.ts +2 -2
  26. package/dest/archiver/l1/calldata_retriever.d.ts.map +1 -1
  27. package/dest/archiver/l1/calldata_retriever.js +2 -2
  28. package/dest/archiver/l1/data_retrieval.d.ts +9 -11
  29. package/dest/archiver/l1/data_retrieval.d.ts.map +1 -1
  30. package/dest/archiver/l1/data_retrieval.js +32 -51
  31. package/dest/archiver/l1/validate_trace.js +1 -1
  32. package/dest/archiver/test/fake_l1_state.d.ts +173 -0
  33. package/dest/archiver/test/fake_l1_state.d.ts.map +1 -0
  34. package/dest/archiver/test/fake_l1_state.js +364 -0
  35. package/dest/archiver/validation.d.ts +4 -4
  36. package/dest/archiver/validation.d.ts.map +1 -1
  37. package/dest/archiver/validation.js +1 -1
  38. package/dest/test/mock_l1_to_l2_message_source.d.ts +2 -2
  39. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
  40. package/dest/test/mock_l1_to_l2_message_source.js +12 -3
  41. package/dest/test/mock_l2_block_source.d.ts +8 -4
  42. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  43. package/dest/test/mock_l2_block_source.js +65 -19
  44. package/package.json +13 -13
  45. package/src/archiver/archive_source_base.ts +339 -0
  46. package/src/archiver/archiver.ts +166 -815
  47. package/src/archiver/archiver_store_updates.ts +321 -0
  48. package/src/archiver/config.ts +2 -2
  49. package/src/archiver/index.ts +2 -1
  50. package/src/archiver/kv_archiver_store/block_store.ts +36 -8
  51. package/src/archiver/kv_archiver_store/contract_class_store.ts +1 -1
  52. package/src/archiver/kv_archiver_store/contract_instance_store.ts +1 -1
  53. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +177 -11
  54. package/src/archiver/l1/calldata_retriever.ts +2 -2
  55. package/src/archiver/l1/data_retrieval.ts +51 -68
  56. package/src/archiver/l1/validate_trace.ts +1 -1
  57. package/src/archiver/test/fake_l1_state.ts +561 -0
  58. package/src/archiver/validation.ts +6 -6
  59. package/src/test/mock_l1_to_l2_message_source.ts +10 -4
  60. package/src/test/mock_l2_block_source.ts +76 -18
  61. package/dest/archiver/archiver_store.d.ts +0 -308
  62. package/dest/archiver/archiver_store.d.ts.map +0 -1
  63. package/dest/archiver/archiver_store.js +0 -4
  64. package/dest/archiver/archiver_store_test_suite.d.ts +0 -8
  65. package/dest/archiver/archiver_store_test_suite.d.ts.map +0 -1
  66. package/dest/archiver/archiver_store_test_suite.js +0 -2770
  67. package/src/archiver/archiver_store.ts +0 -372
  68. package/src/archiver/archiver_store_test_suite.ts +0 -2843
@@ -1,7 +1,6 @@
1
1
  import { BlobDeserializationError, SpongeBlob, decodeCheckpointBlobDataFromBlobs, encodeBlockBlobData } from '@aztec/blob-lib';
2
2
  import { asyncPool } from '@aztec/foundation/async-pool';
3
3
  import { CheckpointNumber } from '@aztec/foundation/branded-types';
4
- import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
5
4
  import { Fr } from '@aztec/foundation/curves/bn254';
6
5
  import { EthAddress } from '@aztec/foundation/eth-address';
7
6
  import { createLogger } from '@aztec/foundation/log';
@@ -78,7 +77,7 @@ export async function retrievedToPublishedCheckpoint({ checkpointNumber, archive
78
77
  }
79
78
  /**
80
79
  * Fetches new checkpoints.
81
- * @param rollup - The rollup contract instance.
80
+ * @param rollup - The rollup contract wrapper.
82
81
  * @param publicClient - The viem public client to use for transaction retrieval.
83
82
  * @param debugClient - The viem debug client to use for trace/debug RPC methods (optional).
84
83
  * @param blobClient - The blob client client for fetching blob data.
@@ -96,37 +95,34 @@ export async function retrievedToPublishedCheckpoint({ checkpointNumber, archive
96
95
  if (searchStartBlock > searchEndBlock) {
97
96
  break;
98
97
  }
99
- const checkpointProposedLogs = (await rollup.getEvents.CheckpointProposed({}, {
100
- fromBlock: searchStartBlock,
101
- toBlock: searchEndBlock
102
- })).filter((log)=>log.blockNumber >= searchStartBlock && log.blockNumber <= searchEndBlock);
98
+ const checkpointProposedLogs = await rollup.getCheckpointProposedEvents(searchStartBlock, searchEndBlock);
103
99
  if (checkpointProposedLogs.length === 0) {
104
100
  break;
105
101
  }
106
102
  const lastLog = checkpointProposedLogs.at(-1);
107
- logger.debug(`Got ${checkpointProposedLogs.length} processed logs for checkpoints ${checkpointProposedLogs[0].args.checkpointNumber}-${lastLog.args.checkpointNumber} between L1 blocks ${searchStartBlock}-${searchEndBlock}`);
103
+ logger.debug(`Got ${checkpointProposedLogs.length} processed logs for checkpoints ${checkpointProposedLogs[0].args.checkpointNumber}-${lastLog.args.checkpointNumber} between L1 blocks ${searchStartBlock}-${searchEndBlock}`);
108
104
  if (rollupConstants === undefined) {
109
105
  const [chainId, version, targetCommitteeSize] = await Promise.all([
110
106
  publicClient.getChainId(),
111
- rollup.read.getVersion(),
112
- rollup.read.getTargetCommitteeSize()
107
+ rollup.getVersion(),
108
+ rollup.getTargetCommitteeSize()
113
109
  ]);
114
110
  rollupConstants = {
115
111
  chainId: new Fr(chainId),
116
112
  version: new Fr(version),
117
- targetCommitteeSize: Number(targetCommitteeSize)
113
+ targetCommitteeSize
118
114
  };
119
115
  }
120
116
  const newCheckpoints = await processCheckpointProposedLogs(rollup, publicClient, debugClient, blobClient, checkpointProposedLogs, rollupConstants, contractAddresses, instrumentation, logger, isHistoricalSync);
121
117
  retrievedCheckpoints.push(...newCheckpoints);
122
- searchStartBlock = lastLog.blockNumber + 1n;
118
+ searchStartBlock = lastLog.l1BlockNumber + 1n;
123
119
  }while (searchStartBlock <= searchEndBlock)
124
120
  // The asyncPool from processCheckpointProposedLogs will not necessarily return the checkpoints in order, so we sort them before returning.
125
121
  return retrievedCheckpoints.sort((a, b)=>Number(a.l1.blockNumber - b.l1.blockNumber));
126
122
  }
127
123
  /**
128
124
  * Processes newly received CheckpointProposed logs.
129
- * @param rollup - The rollup contract instance.
125
+ * @param rollup - The rollup contract wrapper.
130
126
  * @param publicClient - The viem public client to use for transaction retrieval.
131
127
  * @param debugClient - The viem debug client to use for trace/debug RPC methods (optional).
132
128
  * @param blobClient - The blob client client for fetching blob data.
@@ -144,22 +140,20 @@ export async function retrievedToPublishedCheckpoint({ checkpointNumber, archive
144
140
  rollupAddress: EthAddress.fromString(rollup.address)
145
141
  });
146
142
  await asyncPool(10, logs, async (log)=>{
147
- const checkpointNumber = CheckpointNumber.fromBigInt(log.args.checkpointNumber);
143
+ const checkpointNumber = log.args.checkpointNumber;
148
144
  const archive = log.args.archive;
149
- const archiveFromChain = await rollup.read.archiveAt([
150
- BigInt(checkpointNumber)
151
- ]);
152
- const blobHashes = log.args.versionedBlobHashes.map((blobHash)=>Buffer.from(blobHash.slice(2), 'hex'));
145
+ const archiveFromChain = await rollup.archiveAt(checkpointNumber);
146
+ const blobHashes = log.args.versionedBlobHashes;
153
147
  // The value from the event and contract will match only if the checkpoint is in the chain.
154
- if (archive === archiveFromChain) {
148
+ if (archive.equals(archiveFromChain)) {
155
149
  // Build expected hashes object (fields may be undefined for backwards compatibility with older events)
156
150
  const expectedHashes = {
157
- attestationsHash: log.args.attestationsHash,
158
- payloadDigest: log.args.payloadDigest
151
+ attestationsHash: log.args.attestationsHash?.toString(),
152
+ payloadDigest: log.args.payloadDigest?.toString()
159
153
  };
160
- const checkpoint = await calldataRetriever.getCheckpointFromRollupTx(log.transactionHash, blobHashes, checkpointNumber, expectedHashes);
154
+ const checkpoint = await calldataRetriever.getCheckpointFromRollupTx(log.l1TransactionHash, blobHashes, checkpointNumber, expectedHashes);
161
155
  const checkpointBlobData = await getCheckpointBlobDataFromBlobs(blobClient, checkpoint.blockHash, blobHashes, checkpointNumber, logger, isHistoricalSync);
162
- const l1 = new L1PublishedData(log.blockNumber, await getL1BlockTime(publicClient, log.blockNumber), log.blockHash);
156
+ const l1 = new L1PublishedData(log.l1BlockNumber, await getL1BlockTime(publicClient, log.l1BlockNumber), log.l1BlockHash.toString());
163
157
  retrievedCheckpoints.push({
164
158
  ...checkpoint,
165
159
  checkpointBlobData,
@@ -167,16 +161,16 @@ export async function retrievedToPublishedCheckpoint({ checkpointNumber, archive
167
161
  chainId,
168
162
  version
169
163
  });
170
- logger.trace(`Retrieved checkpoint ${checkpointNumber} from L1 tx ${log.transactionHash}`, {
171
- l1BlockNumber: log.blockNumber,
164
+ logger.trace(`Retrieved checkpoint ${checkpointNumber} from L1 tx ${log.l1TransactionHash}`, {
165
+ l1BlockNumber: log.l1BlockNumber,
172
166
  checkpointNumber,
173
167
  archive: archive.toString(),
174
168
  attestations: checkpoint.attestations
175
169
  });
176
170
  } else {
177
171
  logger.warn(`Ignoring checkpoint ${checkpointNumber} due to archive root mismatch`, {
178
- actual: archive,
179
- expected: archiveFromChain
172
+ actual: archive.toString(),
173
+ expected: archiveFromChain.toString()
180
174
  });
181
175
  }
182
176
  });
@@ -212,50 +206,37 @@ export async function getCheckpointBlobDataFromBlobs(blobClient, blockHash, blob
212
206
  return checkpointBlobData;
213
207
  }
214
208
  /** Given an L1 to L2 message, retrieves its corresponding event from the Inbox within a specific block range. */ export async function retrieveL1ToL2Message(inbox, leaf, fromBlock, toBlock) {
215
- const logs = await inbox.getEvents.MessageSent({
216
- hash: leaf.toString()
217
- }, {
218
- fromBlock,
219
- toBlock
220
- });
209
+ const logs = await inbox.getMessageSentEventByHash(leaf.toString(), fromBlock, toBlock);
221
210
  const messages = mapLogsInboxMessage(logs);
222
211
  return messages.length > 0 ? messages[0] : undefined;
223
212
  }
224
213
  /**
225
214
  * Fetch L1 to L2 messages.
226
- * @param publicClient - The viem public client to use for transaction retrieval.
227
- * @param inboxAddress - The address of the inbox contract to fetch messages from.
228
- * @param blockUntilSynced - If true, blocks until the archiver has fully synced.
215
+ * @param inbox - The inbox contract wrapper.
229
216
  * @param searchStartBlock - The block number to use for starting the search.
230
217
  * @param searchEndBlock - The highest block number that we should search up to.
231
218
  * @returns An array of InboxLeaf and next eth block to search from.
232
219
  */ export async function retrieveL1ToL2Messages(inbox, searchStartBlock, searchEndBlock) {
233
220
  const retrievedL1ToL2Messages = [];
234
221
  while(searchStartBlock <= searchEndBlock){
235
- const messageSentLogs = (await inbox.getEvents.MessageSent({}, {
236
- fromBlock: searchStartBlock,
237
- toBlock: searchEndBlock
238
- })).filter((log)=>log.blockNumber >= searchStartBlock && log.blockNumber <= searchEndBlock);
222
+ const messageSentLogs = await inbox.getMessageSentEvents(searchStartBlock, searchEndBlock);
239
223
  if (messageSentLogs.length === 0) {
240
224
  break;
241
225
  }
242
226
  retrievedL1ToL2Messages.push(...mapLogsInboxMessage(messageSentLogs));
243
- searchStartBlock = messageSentLogs.at(-1).blockNumber + 1n;
227
+ searchStartBlock = messageSentLogs.at(-1).l1BlockNumber + 1n;
244
228
  }
245
229
  return retrievedL1ToL2Messages;
246
230
  }
247
231
  function mapLogsInboxMessage(logs) {
248
- return logs.map((log)=>{
249
- const { index, hash, checkpointNumber, rollingHash } = log.args;
250
- return {
251
- index: index,
252
- leaf: Fr.fromHexString(hash),
253
- l1BlockNumber: log.blockNumber,
254
- l1BlockHash: Buffer32.fromString(log.blockHash),
255
- checkpointNumber: CheckpointNumber.fromBigInt(checkpointNumber),
256
- rollingHash: Buffer16.fromString(rollingHash)
257
- };
258
- });
232
+ return logs.map((log)=>({
233
+ index: log.args.index,
234
+ leaf: log.args.leaf,
235
+ l1BlockNumber: log.l1BlockNumber,
236
+ l1BlockHash: log.l1BlockHash,
237
+ checkpointNumber: log.args.checkpointNumber,
238
+ rollingHash: log.args.rollingHash
239
+ }));
259
240
  }
260
241
  /** Retrieves L2ProofVerified events from the rollup contract. */ export async function retrieveL2ProofVerifiedEvents(publicClient, rollupAddress, searchStartBlock, searchEndBlock) {
261
242
  const logs = await publicClient.getLogs({
@@ -113,7 +113,7 @@ function hasTxs(block) {
113
113
  * @param ethereumAllowNoDebugHosts - If false, throws an error when no trace methods are available
114
114
  * @throws Error if ethereumAllowNoDebugHosts is false and no trace methods are available
115
115
  */ export async function validateAndLogTraceAvailability(client, ethereumAllowNoDebugHosts) {
116
- logger.info('Validating trace/debug method availability...');
116
+ logger.debug('Validating trace/debug method availability...');
117
117
  const availability = await validateTraceAvailability(client);
118
118
  // Check if we have support for old blocks (either debug or trace)
119
119
  const hasOldBlockSupport = availability.debugTraceOld || availability.traceTransactionOld;
@@ -0,0 +1,173 @@
1
+ import type { BlobClientInterface } from '@aztec/blob-client/client';
2
+ import { type Blob } from '@aztec/blob-lib';
3
+ import type { InboxContract, RollupContract } from '@aztec/ethereum/contracts';
4
+ import type { ViemPublicClient } from '@aztec/ethereum/types';
5
+ import { CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
6
+ import { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
7
+ import { Fr } from '@aztec/foundation/curves/bn254';
8
+ import { EthAddress } from '@aztec/foundation/eth-address';
9
+ import { Checkpoint } from '@aztec/stdlib/checkpoint';
10
+ import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
11
+ import { type MockProxy } from 'jest-mock-extended';
12
+ /** Configuration for the fake L1 state. */
13
+ export type FakeL1StateConfig = {
14
+ /** Genesis archive root. */
15
+ genesisArchiveRoot: Fr;
16
+ /** L1 start block number. */
17
+ l1StartBlock: bigint;
18
+ /** L1 genesis time in seconds. */
19
+ l1GenesisTime: bigint;
20
+ /** Ethereum slot duration in seconds. */
21
+ ethereumSlotDuration: number;
22
+ /** Rollup address for mock contracts. */
23
+ rollupAddress: EthAddress;
24
+ /** Inbox address for mock contracts. */
25
+ inboxAddress: EthAddress;
26
+ };
27
+ /** Options for adding a checkpoint. */
28
+ type AddCheckpointOptions = {
29
+ /** L1 block number where checkpoint was proposed. */
30
+ l1BlockNumber: bigint;
31
+ /** Number of L2 blocks in the checkpoint. Default: 1 */
32
+ numBlocks?: number;
33
+ /** Number of transactions per block. Default: 4 */
34
+ txsPerBlock?: number;
35
+ /** Max number of effects per tx (for generating large blobs). Default: undefined */
36
+ maxEffects?: number;
37
+ /** Signers for attestations. Default: none */
38
+ signers?: Secp256k1Signer[];
39
+ /** Override slot number. */
40
+ slotNumber?: SlotNumber;
41
+ /** Override previous archive. */
42
+ previousArchive?: AppendOnlyTreeSnapshot;
43
+ /** Timestamp for the checkpoint. */
44
+ timestamp?: bigint;
45
+ /** Number of L1-to-L2 messages. Default: 3 */
46
+ numL1ToL2Messages?: number;
47
+ /** L1 block number where messages were sent. Default: l1BlockNumber - 3 */
48
+ messagesL1BlockNumber?: bigint;
49
+ };
50
+ /** Result from adding a checkpoint. */
51
+ type AddCheckpointResult = {
52
+ /** The checkpoint that was created. */
53
+ checkpoint: Checkpoint;
54
+ /** The L1-to-L2 messages for this checkpoint. */
55
+ messages: Fr[];
56
+ };
57
+ /**
58
+ * Stateful fake for L1 data used by the archiver.
59
+ *
60
+ * This class simulates the L1 blockchain state that the archiver reads from:
61
+ * - RollupContract: status(), archiveAt(), getVersion(), getTargetCommitteeSize(), CheckpointProposed events
62
+ * - InboxContract: getState(), MessageSent events
63
+ * - PublicClient: getBlockNumber(), getBlock(), getTransaction()
64
+ * - BlobClient: getBlobSidecar()
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const fake = new FakeL1State(config);
69
+ *
70
+ * // Add checkpoint (creates messages automatically)
71
+ * const { checkpoint, messages } = await fake.addCheckpoint(CheckpointNumber(1), { l1BlockNumber: 101n });
72
+ * fake.setL1BlockNumber(105n);
73
+ *
74
+ * // Status auto-updated
75
+ * expect(fake.getRollupStatus().pendingCheckpointNumber).toEqual(CheckpointNumber(1));
76
+ * ```
77
+ */
78
+ export declare class FakeL1State {
79
+ private readonly config;
80
+ private readonly log;
81
+ private l1BlockNumber;
82
+ private checkpoints;
83
+ private messages;
84
+ private messagesRollingHash;
85
+ private lastArchive;
86
+ private provenCheckpointNumber;
87
+ private targetCommitteeSize;
88
+ private version;
89
+ private pendingCheckpointNumber;
90
+ constructor(config: FakeL1StateConfig);
91
+ /**
92
+ * Adds messages for a checkpoint. Returns the message leaves.
93
+ * Auto-updates rolling hash.
94
+ *
95
+ * Note: For most use cases, use `addCheckpoint` which creates both checkpoint and messages.
96
+ * Use this method only when you need to add messages without creating a checkpoint (e.g., for reorg tests).
97
+ */
98
+ addMessages(checkpointNumber: CheckpointNumber, l1BlockNumber: bigint, messageLeaves: Fr[]): void;
99
+ /**
100
+ * Creates and adds a checkpoint with its L1-to-L2 messages.
101
+ * Returns both the checkpoint and the message leaves.
102
+ * Auto-chains from lastArchive, auto-updates pending status if L1 block >= checkpoint's L1 block.
103
+ */
104
+ addCheckpoint(checkpointNumber: CheckpointNumber, options: AddCheckpointOptions): Promise<AddCheckpointResult>;
105
+ /**
106
+ * Sets the current L1 block number.
107
+ * Auto-updates pending checkpoint number based on visible checkpoints.
108
+ */
109
+ setL1BlockNumber(blockNumber: bigint): void;
110
+ /** Marks a checkpoint as proven. Updates provenCheckpointNumber. */
111
+ markCheckpointAsProven(checkpointNumber: CheckpointNumber): void;
112
+ /** Sets the target committee size for attestation validation. */
113
+ setTargetCommitteeSize(size: number): void;
114
+ /**
115
+ * Removes all entries for a checkpoint number (simulates L1 reorg or prune).
116
+ * Note: Does NOT remove messages for this checkpoint (use numL1ToL2Messages: 0 when re-adding).
117
+ * Auto-updates pending status.
118
+ */
119
+ removeCheckpoint(checkpointNumber: CheckpointNumber): void;
120
+ /**
121
+ * Removes messages after a given total index (simulates L1 reorg).
122
+ * Auto-updates rolling hash.
123
+ */
124
+ removeMessagesAfter(totalIndex: number): void;
125
+ /**
126
+ * Simulates a pruned checkpoint by marking all entries with this number as pruned.
127
+ * The event will still be returned, but archiveAt() will return the previous checkpoint's archive
128
+ * (or genesis if no previous checkpoint), causing a mismatch that the archiver will detect.
129
+ */
130
+ markCheckpointAsPruned(checkpointNumber: CheckpointNumber): void;
131
+ /**
132
+ * Moves messages at a given L1 block to a new L1 block.
133
+ * Useful for simulating partial message visibility (messages at higher L1 blocks won't be fetched).
134
+ */
135
+ moveMessagesToL1Block(fromL1Block: bigint, toL1Block: bigint): void;
136
+ /**
137
+ * Moves a specific message (by index in the messages array) to a new L1 block.
138
+ */
139
+ moveMessageAtIndexToL1Block(index: number, toL1Block: bigint): void;
140
+ /** Gets current rollup status. */
141
+ getRollupStatus(): {
142
+ provenCheckpointNumber: CheckpointNumber;
143
+ pendingCheckpointNumber: CheckpointNumber;
144
+ provenArchive: Fr;
145
+ pendingArchive: Fr;
146
+ };
147
+ /** Gets the last archive (for manual chaining if needed). */
148
+ getLastArchive(): AppendOnlyTreeSnapshot;
149
+ /** Gets the latest checkpoint entry by number (returns the last added one). */
150
+ getCheckpoint(checkpointNumber: CheckpointNumber): Checkpoint | undefined;
151
+ /** Gets messages for a checkpoint. */
152
+ getMessages(checkpointNumber: CheckpointNumber): Fr[];
153
+ /** Gets the blobs for a checkpoint. */
154
+ getCheckpointBlobs(checkpointNumber: CheckpointNumber): Blob[];
155
+ /** Creates mock RollupContract that reads from this fake state. */
156
+ createMockRollupContract(_publicClient: MockProxy<ViemPublicClient>): MockProxy<RollupContract>;
157
+ /** Creates mock InboxContract that reads from this fake state. */
158
+ createMockInboxContract(_publicClient: MockProxy<ViemPublicClient>): MockProxy<InboxContract>;
159
+ /** Creates mock PublicClient that reads from this fake state. */
160
+ createMockPublicClient(): MockProxy<ViemPublicClient>;
161
+ /** Creates mock BlobClient that reads from this fake state. */
162
+ createMockBlobClient(): MockProxy<BlobClientInterface>;
163
+ private updatePendingCheckpointNumber;
164
+ private getArchiveAt;
165
+ private getNextBlockNumber;
166
+ private getCheckpointProposedLogs;
167
+ private getMessageSentLogs;
168
+ private makeRollupTx;
169
+ private makeVersionedBlobHashes;
170
+ private makeBlobsFromCheckpoint;
171
+ }
172
+ export {};
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZV9sMV9zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FyY2hpdmVyL3Rlc3QvZmFrZV9sMV9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBcUQsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRixPQUFPLEtBQUssRUFBeUIsYUFBYSxFQUFrQixjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV0SCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBT3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdELE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBUSxNQUFNLG9CQUFvQixDQUFDO0FBSzFELDJDQUEyQztBQUMzQyxNQUFNLE1BQU0saUJBQWlCLEdBQUc7SUFDOUIsNEJBQTRCO0lBQzVCLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztJQUN2Qiw2QkFBNkI7SUFDN0IsWUFBWSxFQUFFLE1BQU0sQ0FBQztJQUNyQixrQ0FBa0M7SUFDbEMsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUN0Qix5Q0FBeUM7SUFDekMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBQzdCLHlDQUF5QztJQUN6QyxhQUFhLEVBQUUsVUFB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake_l1_state.d.ts","sourceRoot":"","sources":["../../../src/archiver/test/fake_l1_state.ts"],"names":[],"mappings":"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"}