@aztec/ethereum 0.0.1-commit.b655e406 → 0.0.1-commit.d1f2d6c

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 (204) hide show
  1. package/dest/account.d.ts +1 -1
  2. package/dest/chain.d.ts +1 -1
  3. package/dest/client.d.ts +1 -1
  4. package/dest/client.js +6 -2
  5. package/dest/config.d.ts +22 -68
  6. package/dest/config.d.ts.map +1 -1
  7. package/dest/config.js +57 -378
  8. package/dest/constants.d.ts +1 -1
  9. package/dest/contracts/empire_base.d.ts +7 -5
  10. package/dest/contracts/empire_base.d.ts.map +1 -1
  11. package/dest/contracts/empire_base.js +1 -1
  12. package/dest/contracts/empire_slashing_proposer.d.ts +6 -4
  13. package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -1
  14. package/dest/contracts/empire_slashing_proposer.js +17 -2
  15. package/dest/contracts/errors.d.ts +1 -1
  16. package/dest/contracts/errors.d.ts.map +1 -1
  17. package/dest/contracts/fee_asset_handler.d.ts +6 -5
  18. package/dest/contracts/fee_asset_handler.d.ts.map +1 -1
  19. package/dest/contracts/fee_asset_handler.js +9 -9
  20. package/dest/contracts/fee_juice.d.ts +1 -1
  21. package/dest/contracts/fee_juice.d.ts.map +1 -1
  22. package/dest/contracts/governance.d.ts +18 -16
  23. package/dest/contracts/governance.d.ts.map +1 -1
  24. package/dest/contracts/governance.js +9 -1
  25. package/dest/contracts/governance_proposer.d.ts +6 -4
  26. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  27. package/dest/contracts/governance_proposer.js +399 -10
  28. package/dest/contracts/gse.d.ts +1 -1
  29. package/dest/contracts/gse.d.ts.map +1 -1
  30. package/dest/contracts/inbox.d.ts +24 -3
  31. package/dest/contracts/inbox.d.ts.map +1 -1
  32. package/dest/contracts/inbox.js +36 -1
  33. package/dest/contracts/index.d.ts +3 -1
  34. package/dest/contracts/index.d.ts.map +1 -1
  35. package/dest/contracts/index.js +2 -0
  36. package/dest/contracts/log.d.ts +13 -0
  37. package/dest/contracts/log.d.ts.map +1 -0
  38. package/dest/contracts/log.js +1 -0
  39. package/dest/contracts/multicall.d.ts +2 -2
  40. package/dest/contracts/multicall.d.ts.map +1 -1
  41. package/dest/contracts/outbox.d.ts +41 -0
  42. package/dest/contracts/outbox.d.ts.map +1 -0
  43. package/dest/contracts/outbox.js +86 -0
  44. package/dest/contracts/registry.d.ts +1 -1
  45. package/dest/contracts/registry.d.ts.map +1 -1
  46. package/dest/contracts/rollup.d.ts +194 -123
  47. package/dest/contracts/rollup.d.ts.map +1 -1
  48. package/dest/contracts/rollup.js +746 -184
  49. package/dest/contracts/slasher_contract.d.ts +1 -1
  50. package/dest/contracts/slasher_contract.d.ts.map +1 -1
  51. package/dest/contracts/tally_slashing_proposer.d.ts +9 -7
  52. package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -1
  53. package/dest/contracts/tally_slashing_proposer.js +4 -4
  54. package/dest/contracts/utils.d.ts +1 -1
  55. package/dest/deploy_aztec_l1_contracts.d.ts +260 -0
  56. package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -0
  57. package/dest/deploy_aztec_l1_contracts.js +398 -0
  58. package/dest/deploy_l1_contract.d.ts +68 -0
  59. package/dest/deploy_l1_contract.d.ts.map +1 -0
  60. package/dest/deploy_l1_contract.js +312 -0
  61. package/dest/eth-signer/eth-signer.d.ts +1 -1
  62. package/dest/eth-signer/index.d.ts +1 -1
  63. package/dest/forwarder_proxy.d.ts +32 -0
  64. package/dest/forwarder_proxy.d.ts.map +1 -0
  65. package/dest/forwarder_proxy.js +93 -0
  66. package/dest/generated/l1-contracts-defaults.d.ts +30 -0
  67. package/dest/generated/l1-contracts-defaults.d.ts.map +1 -0
  68. package/dest/generated/l1-contracts-defaults.js +30 -0
  69. package/dest/l1_artifacts.d.ts +6597 -2046
  70. package/dest/l1_artifacts.d.ts.map +1 -1
  71. package/dest/l1_contract_addresses.d.ts +3 -3
  72. package/dest/l1_contract_addresses.d.ts.map +1 -1
  73. package/dest/l1_contract_addresses.js +3 -3
  74. package/dest/l1_reader.d.ts +3 -1
  75. package/dest/l1_reader.d.ts.map +1 -1
  76. package/dest/l1_reader.js +6 -0
  77. package/dest/l1_tx_utils/config.d.ts +5 -5
  78. package/dest/l1_tx_utils/config.d.ts.map +1 -1
  79. package/dest/l1_tx_utils/config.js +30 -7
  80. package/dest/l1_tx_utils/constants.d.ts +7 -1
  81. package/dest/l1_tx_utils/constants.d.ts.map +1 -1
  82. package/dest/l1_tx_utils/constants.js +25 -0
  83. package/dest/l1_tx_utils/factory.d.ts +1 -1
  84. package/dest/l1_tx_utils/fee-strategies/index.d.ts +10 -0
  85. package/dest/l1_tx_utils/fee-strategies/index.d.ts.map +1 -0
  86. package/dest/l1_tx_utils/fee-strategies/index.js +12 -0
  87. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts +8 -0
  88. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts.map +1 -0
  89. package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +129 -0
  90. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts +23 -0
  91. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts.map +1 -0
  92. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +191 -0
  93. package/dest/l1_tx_utils/fee-strategies/types.d.ts +51 -0
  94. package/dest/l1_tx_utils/fee-strategies/types.d.ts.map +1 -0
  95. package/dest/l1_tx_utils/fee-strategies/types.js +3 -0
  96. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
  97. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
  98. package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +48 -0
  99. package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
  100. package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
  101. package/dest/l1_tx_utils/index-blobs.js +2 -0
  102. package/dest/l1_tx_utils/index.d.ts +3 -1
  103. package/dest/l1_tx_utils/index.d.ts.map +1 -1
  104. package/dest/l1_tx_utils/index.js +2 -0
  105. package/dest/l1_tx_utils/interfaces.d.ts +2 -2
  106. package/dest/l1_tx_utils/interfaces.d.ts.map +1 -1
  107. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +233 -0
  108. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -0
  109. package/dest/l1_tx_utils/l1_fee_analyzer.js +506 -0
  110. package/dest/l1_tx_utils/l1_tx_utils.d.ts +1 -2
  111. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
  112. package/dest/l1_tx_utils/l1_tx_utils.js +17 -4
  113. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +1 -1
  114. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +1 -1
  115. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +19 -30
  116. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -1
  117. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +54 -162
  118. package/dest/l1_tx_utils/signer.d.ts +1 -1
  119. package/dest/l1_tx_utils/types.d.ts +1 -1
  120. package/dest/l1_tx_utils/types.d.ts.map +1 -1
  121. package/dest/l1_tx_utils/utils.d.ts +1 -1
  122. package/dest/l1_types.d.ts +1 -1
  123. package/dest/publisher_manager.d.ts +1 -1
  124. package/dest/publisher_manager.d.ts.map +1 -1
  125. package/dest/queries.d.ts +2 -2
  126. package/dest/queries.d.ts.map +1 -1
  127. package/dest/queries.js +16 -6
  128. package/dest/test/chain_monitor.d.ts +27 -24
  129. package/dest/test/chain_monitor.d.ts.map +1 -1
  130. package/dest/test/chain_monitor.js +33 -36
  131. package/dest/test/delayed_tx_utils.d.ts +1 -1
  132. package/dest/test/delayed_tx_utils.d.ts.map +1 -1
  133. package/dest/test/eth_cheat_codes.d.ts +11 -3
  134. package/dest/test/eth_cheat_codes.d.ts.map +1 -1
  135. package/dest/test/eth_cheat_codes.js +11 -3
  136. package/dest/test/eth_cheat_codes_with_state.d.ts +1 -1
  137. package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
  138. package/dest/test/index.d.ts +1 -1
  139. package/dest/test/rollup_cheat_codes.d.ts +15 -13
  140. package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
  141. package/dest/test/rollup_cheat_codes.js +54 -39
  142. package/dest/test/start_anvil.d.ts +4 -1
  143. package/dest/test/start_anvil.d.ts.map +1 -1
  144. package/dest/test/start_anvil.js +2 -1
  145. package/dest/test/tx_delayer.d.ts +1 -1
  146. package/dest/test/tx_delayer.d.ts.map +1 -1
  147. package/dest/test/tx_delayer.js +4 -3
  148. package/dest/test/upgrade_utils.d.ts +1 -1
  149. package/dest/types.d.ts +57 -2
  150. package/dest/types.d.ts.map +1 -1
  151. package/dest/utils.d.ts +15 -3
  152. package/dest/utils.d.ts.map +1 -1
  153. package/dest/utils.js +18 -0
  154. package/dest/zkPassportVerifierAddress.d.ts +1 -1
  155. package/package.json +34 -14
  156. package/src/client.ts +2 -2
  157. package/src/config.ts +71 -458
  158. package/src/contracts/README.md +157 -0
  159. package/src/contracts/empire_base.ts +6 -5
  160. package/src/contracts/empire_slashing_proposer.ts +16 -5
  161. package/src/contracts/fee_asset_handler.ts +8 -7
  162. package/src/contracts/governance.ts +8 -1
  163. package/src/contracts/governance_proposer.ts +16 -5
  164. package/src/contracts/inbox.ts +55 -3
  165. package/src/contracts/index.ts +2 -0
  166. package/src/contracts/log.ts +13 -0
  167. package/src/contracts/outbox.ts +98 -0
  168. package/src/contracts/rollup.ts +417 -160
  169. package/src/contracts/tally_slashing_proposer.ts +11 -8
  170. package/src/deploy_aztec_l1_contracts.ts +619 -0
  171. package/src/deploy_l1_contract.ts +362 -0
  172. package/src/forwarder_proxy.ts +108 -0
  173. package/src/generated/l1-contracts-defaults.ts +32 -0
  174. package/src/l1_contract_addresses.ts +22 -20
  175. package/src/l1_reader.ts +8 -0
  176. package/src/l1_tx_utils/config.ts +32 -11
  177. package/src/l1_tx_utils/constants.ts +11 -0
  178. package/src/l1_tx_utils/fee-strategies/index.ts +22 -0
  179. package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +163 -0
  180. package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +245 -0
  181. package/src/l1_tx_utils/fee-strategies/types.ts +56 -0
  182. package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +119 -0
  183. package/src/l1_tx_utils/index-blobs.ts +2 -0
  184. package/src/l1_tx_utils/index.ts +2 -0
  185. package/src/l1_tx_utils/interfaces.ts +1 -1
  186. package/src/l1_tx_utils/l1_fee_analyzer.ts +803 -0
  187. package/src/l1_tx_utils/l1_tx_utils.ts +24 -4
  188. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +67 -207
  189. package/src/queries.ts +17 -6
  190. package/src/test/chain_monitor.ts +51 -49
  191. package/src/test/eth_cheat_codes.ts +9 -3
  192. package/src/test/rollup_cheat_codes.ts +54 -43
  193. package/src/test/start_anvil.ts +4 -0
  194. package/src/test/tx_delayer.ts +5 -3
  195. package/src/types.ts +62 -0
  196. package/src/utils.ts +30 -1
  197. package/dest/deploy_l1_contracts.d.ts +0 -226
  198. package/dest/deploy_l1_contracts.d.ts.map +0 -1
  199. package/dest/deploy_l1_contracts.js +0 -1473
  200. package/dest/index.d.ts +0 -18
  201. package/dest/index.d.ts.map +0 -1
  202. package/dest/index.js +0 -17
  203. package/src/deploy_l1_contracts.ts +0 -1849
  204. package/src/index.ts +0 -17
@@ -0,0 +1,41 @@
1
+ import type { EpochNumber } from '@aztec/foundation/branded-types';
2
+ import { EthAddress } from '@aztec/foundation/eth-address';
3
+ import { OutboxAbi } from '@aztec/l1-artifacts/OutboxAbi';
4
+ import { type GetContractReturnType, type Hex } from 'viem';
5
+ import type { DeployAztecL1ContractsReturnType } from '../deploy_aztec_l1_contracts.js';
6
+ import type { L1ReaderConfig } from '../l1_reader.js';
7
+ import { type ViemClient } from '../types.js';
8
+ export type ViemL1Actor = {
9
+ actor: Hex;
10
+ chainId: bigint;
11
+ };
12
+ export type ViemL2Actor = {
13
+ actor: Hex;
14
+ version: bigint;
15
+ };
16
+ export type ViemL2ToL1Msg = {
17
+ sender: ViemL2Actor;
18
+ recipient: ViemL1Actor;
19
+ content: Hex;
20
+ };
21
+ export declare class OutboxContract {
22
+ readonly client: ViemClient;
23
+ private readonly outbox;
24
+ static getFromL1ContractsValues(deployL1ContractsValues: DeployAztecL1ContractsReturnType): OutboxContract;
25
+ static getFromConfig(config: L1ReaderConfig): OutboxContract;
26
+ static getEpochRootStorageSlot(epoch: EpochNumber): bigint;
27
+ constructor(client: ViemClient, address: Hex | EthAddress);
28
+ get address(): `0x${string}`;
29
+ getContract(): GetContractReturnType<typeof OutboxAbi, ViemClient>;
30
+ hasMessageBeenConsumedAtEpoch(epoch: EpochNumber, leafId: bigint): Promise<boolean>;
31
+ getRootData(epoch: EpochNumber): Promise<`0x${string}`>;
32
+ consume(message: ViemL2ToL1Msg, epoch: EpochNumber, leafIndex: bigint, path: Hex[]): Promise<`0x${string}`>;
33
+ getMessageConsumedEvents(l1BlockHash: Hex): Promise<{
34
+ epoch: bigint;
35
+ root: Hex;
36
+ messageHash: Hex;
37
+ leafId: bigint;
38
+ }[]>;
39
+ private assertWallet;
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0Ym94LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL291dGJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTFELE9BQU8sRUFBRSxLQUFLLHFCQUFxQixFQUFFLEtBQUssR0FBRyxFQUE0RCxNQUFNLE1BQU0sQ0FBQztBQUd0SCxPQUFPLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hGLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBaUMsS0FBSyxVQUFVLEVBQW9CLE1BQU0sYUFBYSxDQUFDO0FBRS9GLE1BQU0sTUFBTSxXQUFXLEdBQUc7SUFDeEIsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUNYLE9BQU8sRUFBRSxNQUFNLENBQUM7Q0FDakIsQ0FBQztBQUVGLE1BQU0sTUFBTSxXQUFXLEdBQUc7SUFDeEIsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUNYLE9BQU8sRUFBRSxNQUFNLENBQUM7Q0FDakIsQ0FBQztBQUVGLE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsTUFBTSxFQUFFLFdBQVcsQ0FBQztJQUNwQixTQUFTLEVBQUUsV0FBVyxDQUFDO0lBQ3ZCLE9BQU8sRUFBRSxHQUFHLENBQUM7Q0FDZCxDQUFDO0FBRUYscUJBQWEsY0FBYzthQXNCUCxNQUFNLEVBQUUsVUFBVTtJQXJCcEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQXNEO0lBRTdFLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsRUFBRSxnQ0FBZ0Msa0JBTXhGO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsY0FBYyxrQkFJMUM7SUFFRCxNQUFNLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFdBQVcsVUFFaEQ7SUFFRCxZQUNrQixNQUFNLEVBQUUsVUFBVSxFQUNsQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFVBQVUsRUFNMUI7SUFFRCxJQUFXLE9BQU8sa0JBRWpCO0lBRU0sV0FBVyxJQUFJLHFCQUFxQixDQUFDLE9BQU8sU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUV4RTtJQUVNLDZCQUE2QixDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBRXRFO0lBRU0sV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLDBCQUVwQztJQUVNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLDBCQUd4RjtJQUVZLHdCQUF3QixDQUNuQyxXQUFXLEVBQUUsR0FBRyxHQUNmLE9BQU8sQ0FBQztRQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7UUFBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztRQUFDLE1BQU0sRUFBRSxNQUFNLENBQUE7S0FBRSxFQUFFLENBQUMsQ0FRM0U7SUFFRCxPQUFPLENBQUMsWUFBWTtDQU1yQiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../src/contracts/outbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,GAAG,EAA4D,MAAM,MAAM,CAAC;AAGtH,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAiC,KAAK,UAAU,EAAoB,MAAM,aAAa,CAAC;AAE/F,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,qBAAa,cAAc;aAsBP,MAAM,EAAE,UAAU;IArBpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsD;IAE7E,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,gCAAgC,kBAMxF;IAED,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,kBAI1C;IAED,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,WAAW,UAEhD;IAED,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAM1B;IAED,IAAW,OAAO,kBAEjB;IAEM,WAAW,IAAI,qBAAqB,CAAC,OAAO,SAAS,EAAE,UAAU,CAAC,CAExE;IAEM,6BAA6B,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,oBAEtE;IAEM,WAAW,CAAC,KAAK,EAAE,WAAW,0BAEpC;IAEM,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,0BAGxF;IAEY,wBAAwB,CACnC,WAAW,EAAE,GAAG,GACf,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAQ3E;IAED,OAAO,CAAC,YAAY;CAMrB"}
@@ -0,0 +1,86 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { OutboxAbi } from '@aztec/l1-artifacts/OutboxAbi';
3
+ import { encodeAbiParameters, getContract, hexToBigInt, keccak256 } from 'viem';
4
+ import { getPublicClient } from '../client.js';
5
+ import { isExtendedClient } from '../types.js';
6
+ export class OutboxContract {
7
+ client;
8
+ outbox;
9
+ static getFromL1ContractsValues(deployL1ContractsValues) {
10
+ const { l1Client, l1ContractAddresses: { outboxAddress } } = deployL1ContractsValues;
11
+ return new OutboxContract(l1Client, outboxAddress.toString());
12
+ }
13
+ static getFromConfig(config) {
14
+ const client = getPublicClient(config);
15
+ const address = config.l1Contracts.outboxAddress.toString();
16
+ return new OutboxContract(client, address);
17
+ }
18
+ static getEpochRootStorageSlot(epoch) {
19
+ return hexToBigInt(keccak256(encodeAbiParameters([
20
+ {
21
+ type: 'uint256'
22
+ },
23
+ {
24
+ type: 'uint256'
25
+ }
26
+ ], [
27
+ BigInt(epoch),
28
+ 0n
29
+ ])));
30
+ }
31
+ constructor(client, address){
32
+ this.client = client;
33
+ if (address instanceof EthAddress) {
34
+ address = address.toString();
35
+ }
36
+ this.outbox = getContract({
37
+ address,
38
+ abi: OutboxAbi,
39
+ client
40
+ });
41
+ }
42
+ get address() {
43
+ return this.outbox.address;
44
+ }
45
+ getContract() {
46
+ return this.outbox;
47
+ }
48
+ hasMessageBeenConsumedAtEpoch(epoch, leafId) {
49
+ return this.outbox.read.hasMessageBeenConsumedAtEpoch([
50
+ BigInt(epoch),
51
+ leafId
52
+ ]);
53
+ }
54
+ getRootData(epoch) {
55
+ return this.outbox.read.getRootData([
56
+ BigInt(epoch)
57
+ ]);
58
+ }
59
+ consume(message, epoch, leafIndex, path) {
60
+ const wallet = this.assertWallet();
61
+ return wallet.write.consume([
62
+ message,
63
+ BigInt(epoch),
64
+ leafIndex,
65
+ path
66
+ ]);
67
+ }
68
+ async getMessageConsumedEvents(l1BlockHash) {
69
+ const events = await this.outbox.getEvents.MessageConsumed({}, {
70
+ blockHash: l1BlockHash,
71
+ strict: true
72
+ });
73
+ return events.map((event)=>({
74
+ epoch: event.args.epoch,
75
+ root: event.args.root,
76
+ messageHash: event.args.messageHash,
77
+ leafId: event.args.leafId
78
+ }));
79
+ }
80
+ assertWallet() {
81
+ if (!isExtendedClient(this.client)) {
82
+ throw new Error('Wallet client is required for this operation');
83
+ }
84
+ return this.outbox;
85
+ }
86
+ }
@@ -26,4 +26,4 @@ export declare class RegistryContract {
26
26
  getRollupVersions(): Promise<bigint[]>;
27
27
  getRewardDistributor(): Promise<EthAddress>;
28
28
  }
29
- //# sourceMappingURL=registry.d.ts.map
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSzNELE9BQU8sRUFBOEIsS0FBSyxHQUFHLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUMscUJBQWEsZ0JBQWdCO2FBT1QsTUFBTSxFQUFFLFVBQVU7SUFON0IsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUUzQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBK0M7SUFDbkUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQXdEO0lBRWpGLFlBQ2tCLE1BQU0sRUFBRSxVQUFVLEVBQ2xDLE9BQU8sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQU8xQjtJQUVZLFFBQVEsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRTNDO0lBRUQ7Ozs7T0FJRztJQUNVLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLFdBQVcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBc0J6RjtJQUVEOzs7T0FHRztJQUNVLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FFdEQ7SUFFWSxzQkFBc0IsSUFBSSxPQUFPLENBQzVDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQyxDQUM3RSxDQVFBO0lBRUQsT0FBb0IsZ0JBQWdCLENBQ2xDLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLGVBQWUsRUFBRSxHQUFHLEdBQUcsVUFBVSxFQUNqQyxhQUFhLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQzNDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQXVCOUI7SUFFWSxtQkFBbUIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBR2xEO0lBRVksaUJBQWlCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBU2xEO0lBRVksb0JBQW9CLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUV2RDtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/contracts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,EAA8B,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,qBAAa,gBAAgB;aAOT,MAAM,EAAE,UAAU;IAN7B,OAAO,EAAE,UAAU,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwD;gBAG/D,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU;IASd,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAI5C;;;;OAIG;IACU,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAwB1F;;;OAGG;IACU,mBAAmB,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,sBAAsB,IAAI,OAAO,CAC5C,IAAI,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,mBAAmB,CAAC,CAC7E;WAUmB,gBAAgB,CAClC,MAAM,EAAE,UAAU,EAClB,eAAe,EAAE,GAAG,GAAG,UAAU,EACjC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAC3C,OAAO,CAAC,mBAAmB,CAAC;IAyBlB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKtC,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAWtC,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC;CAGzD"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/contracts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,EAA8B,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,qBAAa,gBAAgB;aAOT,MAAM,EAAE,UAAU;IAN7B,OAAO,EAAE,UAAU,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwD;IAEjF,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAO1B;IAEY,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CAE3C;IAED;;;;OAIG;IACU,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAsBzF;IAED;;;OAGG;IACU,mBAAmB,IAAI,OAAO,CAAC,UAAU,CAAC,CAEtD;IAEY,sBAAsB,IAAI,OAAO,CAC5C,IAAI,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,mBAAmB,CAAC,CAC7E,CAQA;IAED,OAAoB,gBAAgB,CAClC,MAAM,EAAE,UAAU,EAClB,eAAe,EAAE,GAAG,GAAG,UAAU,EACjC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAC3C,OAAO,CAAC,mBAAmB,CAAC,CAuB9B;IAEY,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlD;IAEY,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CASlD;IAEY,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,CAEvD;CACF"}
@@ -1,13 +1,17 @@
1
+ import { CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { Buffer32 } from '@aztec/foundation/buffer';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
1
4
  import { EthAddress } from '@aztec/foundation/eth-address';
2
5
  import type { ViemSignature } from '@aztec/foundation/eth-signature';
3
6
  import { RollupAbi } from '@aztec/l1-artifacts/RollupAbi';
4
7
  import { type Account, type GetContractReturnType, type Hex, type StateOverride, type WatchContractEventReturnType } from 'viem';
5
- import type { DeployL1ContractsReturnType } from '../deploy_l1_contracts.js';
8
+ import type { DeployAztecL1ContractsReturnType } from '../deploy_aztec_l1_contracts.js';
6
9
  import type { L1ContractAddresses } from '../l1_contract_addresses.js';
7
10
  import type { L1ReaderConfig } from '../l1_reader.js';
8
11
  import type { L1TxRequest, L1TxUtils } from '../l1_tx_utils/index.js';
9
12
  import type { ViemClient } from '../types.js';
10
13
  import { EmpireSlashingProposerContract } from './empire_slashing_proposer.js';
14
+ import type { L1EventLog } from './log.js';
11
15
  import { SlasherContract } from './slasher_contract.js';
12
16
  import { TallySlashingProposerContract } from './tally_slashing_proposer.js';
13
17
  export type ViemCommitteeAttestation = {
@@ -22,11 +26,15 @@ export type L1RollupContractAddresses = Pick<L1ContractAddresses, 'rollupAddress
22
26
  export type EpochProofPublicInputArgs = {
23
27
  previousArchive: `0x${string}`;
24
28
  endArchive: `0x${string}`;
29
+ outHash: `0x${string}`;
25
30
  proverId: `0x${string}`;
26
31
  };
27
32
  export type ViemHeader = {
28
33
  lastArchiveRoot: `0x${string}`;
29
- contentCommitment: ViemContentCommitment;
34
+ blockHeadersHash: `0x${string}`;
35
+ blobsHash: `0x${string}`;
36
+ inHash: `0x${string}`;
37
+ outHash: `0x${string}`;
30
38
  slotNumber: bigint;
31
39
  timestamp: bigint;
32
40
  coinbase: `0x${string}`;
@@ -34,63 +42,147 @@ export type ViemHeader = {
34
42
  gasFees: ViemGasFees;
35
43
  totalManaUsed: bigint;
36
44
  };
37
- export type ViemContentCommitment = {
38
- blobsHash: `0x${string}`;
39
- inHash: `0x${string}`;
40
- outHash: `0x${string}`;
41
- };
42
45
  export type ViemGasFees = {
43
46
  feePerDaGas: bigint;
44
47
  feePerL2Gas: bigint;
45
48
  };
46
- export type ViemStateReference = {
47
- l1ToL2MessageTree: ViemAppendOnlyTreeSnapshot;
48
- partialStateReference: ViemPartialStateReference;
49
- };
50
- export type ViemPartialStateReference = {
51
- noteHashTree: ViemAppendOnlyTreeSnapshot;
52
- nullifierTree: ViemAppendOnlyTreeSnapshot;
53
- publicDataTree: ViemAppendOnlyTreeSnapshot;
54
- };
55
- export type ViemAppendOnlyTreeSnapshot = {
56
- root: `0x${string}`;
57
- nextAvailableLeafIndex: number;
58
- };
59
49
  export declare enum SlashingProposerType {
60
50
  None = 0,
61
51
  Tally = 1,
62
52
  Empire = 2
63
53
  }
54
+ /**
55
+ * Status of a validator/attester in the staking system.
56
+ * Matches the Status enum in StakingLib.sol
57
+ */
58
+ export declare enum AttesterStatus {
59
+ NONE = 0,
60
+ VALIDATING = 1,
61
+ ZOMBIE = 2,
62
+ EXITING = 3
63
+ }
64
+ /**
65
+ * Fee header data for a checkpoint
66
+ */
67
+ export type FeeHeader = {
68
+ excessMana: bigint;
69
+ manaUsed: bigint;
70
+ ethPerFeeAsset: bigint;
71
+ congestionCost: bigint;
72
+ proverCost: bigint;
73
+ };
74
+ /**
75
+ * Checkpoint log data returned from the rollup contract
76
+ */
77
+ export type CheckpointLog = {
78
+ archive: Fr;
79
+ headerHash: Buffer32;
80
+ blobCommitmentsHash: Buffer32;
81
+ attestationsHash: Buffer32;
82
+ payloadDigest: Buffer32;
83
+ slotNumber: SlotNumber;
84
+ feeHeader: FeeHeader;
85
+ };
86
+ /**
87
+ * L1 fee data (base fee and blob fee)
88
+ */
89
+ export type L1FeeData = {
90
+ baseFee: bigint;
91
+ blobFee: bigint;
92
+ };
93
+ /**
94
+ * Reward configuration for the rollup
95
+ */
96
+ export type RewardConfig = {
97
+ rewardDistributor: EthAddress;
98
+ sequencerBps: bigint;
99
+ booster: EthAddress;
100
+ checkpointReward: bigint;
101
+ };
102
+ /**
103
+ * Exit information for a validator
104
+ */
105
+ export type Exit = {
106
+ withdrawalId: bigint;
107
+ amount: bigint;
108
+ exitableAt: bigint;
109
+ recipientOrWithdrawer: EthAddress;
110
+ isRecipient: boolean;
111
+ exists: boolean;
112
+ };
113
+ /**
114
+ * Attester configuration including public key and withdrawer
115
+ */
116
+ export type AttesterConfig = {
117
+ publicKey: {
118
+ x: bigint;
119
+ y: bigint;
120
+ };
121
+ withdrawer: EthAddress;
122
+ };
123
+ /**
124
+ * Complete view of an attester's state
125
+ */
126
+ export type AttesterView = {
127
+ status: AttesterStatus;
128
+ effectiveBalance: bigint;
129
+ exit: Exit;
130
+ config: AttesterConfig;
131
+ };
132
+ /**
133
+ * Return for a status call
134
+ */
135
+ export type RollupStatusResponse = {
136
+ provenCheckpointNumber: CheckpointNumber;
137
+ provenArchive: Fr;
138
+ pendingCheckpointNumber: CheckpointNumber;
139
+ pendingArchive: Fr;
140
+ archiveOfMyCheckpoint: Fr;
141
+ };
142
+ /** Arguments for the CheckpointProposed event. */
143
+ export type CheckpointProposedArgs = {
144
+ checkpointNumber: CheckpointNumber;
145
+ archive: Fr;
146
+ versionedBlobHashes: Buffer[];
147
+ /** Hash of attestations. Undefined for older events (backwards compatibility). */
148
+ attestationsHash?: Buffer32;
149
+ /** Digest of the payload. Undefined for older events (backwards compatibility). */
150
+ payloadDigest?: Buffer32;
151
+ };
152
+ /** Log type for CheckpointProposed events. */
153
+ export type CheckpointProposedLog = L1EventLog<CheckpointProposedArgs>;
64
154
  export declare class RollupContract {
65
155
  readonly client: ViemClient;
66
156
  private readonly rollup;
67
157
  private static cachedStfStorageSlot;
158
+ private cachedEscapeHatch?;
68
159
  static get checkBlobStorageSlot(): bigint;
69
160
  static get stfStorageSlot(): Hex;
70
- static getFromL1ContractsValues(deployL1ContractsValues: DeployL1ContractsReturnType): RollupContract;
161
+ static getFromL1ContractsValues(deployL1ContractsValues: DeployAztecL1ContractsReturnType): RollupContract;
71
162
  static getFromConfig(config: L1ReaderConfig): RollupContract;
72
163
  constructor(client: ViemClient, address: Hex | EthAddress);
73
- getGSE(): Promise<`0x${string}`>;
164
+ getGSE(): Promise<EthAddress>;
74
165
  get address(): `0x${string}`;
75
166
  getContract(): GetContractReturnType<typeof RollupAbi, ViemClient>;
76
167
  getSlashingProposer(): Promise<EmpireSlashingProposerContract | TallySlashingProposerContract | undefined>;
77
168
  getL1StartBlock(): Promise<bigint>;
78
169
  getL1GenesisTime(): Promise<bigint>;
79
- getProofSubmissionEpochs(): Promise<bigint>;
80
- getEpochDuration(): Promise<bigint>;
81
- getSlotDuration(): Promise<bigint>;
82
- getTargetCommitteeSize(): Promise<bigint>;
170
+ getProofSubmissionEpochs(): Promise<number>;
171
+ getEpochDuration(): Promise<number>;
172
+ getSlotDuration(): Promise<number>;
173
+ getTargetCommitteeSize(): Promise<number>;
83
174
  getEjectionThreshold(): Promise<bigint>;
84
175
  getLocalEjectionThreshold(): Promise<bigint>;
85
- getLagInEpochs(): Promise<bigint>;
176
+ getLagInEpochsForValidatorSet(): Promise<number>;
177
+ getLagInEpochsForRandao(): Promise<number>;
86
178
  getActivationThreshold(): Promise<bigint>;
87
- getExitDelay(): Promise<bigint>;
179
+ getExitDelay(): Promise<number>;
88
180
  getManaTarget(): Promise<bigint>;
89
181
  getProvingCostPerMana(): Promise<bigint>;
90
182
  getProvingCostPerManaInFeeAsset(): Promise<bigint>;
91
183
  getManaLimit(): Promise<bigint>;
92
184
  getVersion(): Promise<bigint>;
93
- getGenesisArchiveTreeRoot(): Promise<`0x${string}`>;
185
+ getGenesisArchiveTreeRoot(): Promise<Fr>;
94
186
  /**
95
187
  * Returns rollup constants used for epoch queries.
96
188
  * Return type is `L1RollupConstants` which is defined in stdlib,
@@ -103,59 +195,58 @@ export declare class RollupContract {
103
195
  epochDuration: number;
104
196
  proofSubmissionEpochs: number;
105
197
  }>;
106
- getSlasherAddress(): Promise<`0x${string}`>;
198
+ getSlasherAddress(): Promise<EthAddress>;
199
+ /**
200
+ * Returns the configured escape hatch contract address, or zero if disabled.
201
+ */
202
+ getEscapeHatchAddress(): Promise<EthAddress>;
203
+ private getEscapeHatchContract;
204
+ /**
205
+ * Returns whether the escape hatch is open for the given epoch.
206
+ * If escape hatch is not configured, returns false.
207
+ *
208
+ * This function is intentionally defensive: any failure to query the escape hatch
209
+ * (RPC issues, transient errors, etc.) is treated as "closed" to avoid callers
210
+ * needing to sprinkle try/catch everywhere.
211
+ */
212
+ isEscapeHatchOpen(epoch: EpochNumber): Promise<boolean>;
107
213
  /**
108
214
  * Returns a SlasherContract instance for interacting with the slasher contract.
109
215
  */
110
216
  getSlasherContract(): Promise<SlasherContract | undefined>;
111
- getOwner(): Promise<`0x${string}`>;
112
- getActiveAttesterCount(): Promise<bigint>;
217
+ getOwner(): Promise<EthAddress>;
218
+ getActiveAttesterCount(): Promise<number>;
113
219
  getSlashingProposerAddress(): Promise<EthAddress>;
114
- getBlockReward(): Promise<bigint>;
115
- getBlockNumber(): Promise<bigint>;
116
- getProvenBlockNumber(): Promise<bigint>;
117
- getSlotNumber(): Promise<bigint>;
118
- getL1FeesAt(timestamp: bigint): Promise<{
119
- baseFee: bigint;
120
- blobFee: bigint;
121
- }>;
122
- getFeeAssetPerEth(): Promise<bigint>;
123
- getCommitteeAt(timestamp: bigint): Promise<readonly `0x${string}`[] | undefined>;
124
- getSampleSeedAt(timestamp: bigint): Promise<bigint>;
125
- getCurrentSampleSeed(): Promise<bigint>;
126
- getCurrentEpoch(): Promise<bigint>;
127
- getCurrentEpochCommittee(): Promise<readonly `0x${string}`[] | undefined>;
128
- getCurrentProposer(): Promise<`0x${string}`>;
129
- getProposerAt(timestamp: bigint): Promise<`0x${string}`>;
130
- getBlock(blockNumber: bigint | number): Promise<{
131
- archive: `0x${string}`;
132
- headerHash: `0x${string}`;
133
- blobCommitmentsHash: `0x${string}`;
134
- attestationsHash: `0x${string}`;
135
- payloadDigest: `0x${string}`;
136
- slotNumber: bigint;
137
- feeHeader: {
138
- excessMana: bigint;
139
- manaUsed: bigint;
140
- feeAssetPriceNumerator: bigint;
141
- congestionCost: bigint;
142
- proverCost: bigint;
143
- };
144
- }>;
220
+ getCheckpointReward(): Promise<bigint>;
221
+ getCheckpointNumber(): Promise<CheckpointNumber>;
222
+ getProvenCheckpointNumber(): Promise<CheckpointNumber>;
223
+ getSlotNumber(): Promise<SlotNumber>;
224
+ getL1FeesAt(timestamp: bigint): Promise<L1FeeData>;
225
+ getEthPerFeeAsset(): Promise<bigint>;
226
+ getCommitteeAt(timestamp: bigint): Promise<EthAddress[] | undefined>;
227
+ getSampleSeedAt(timestamp: bigint): Promise<Buffer32>;
228
+ getCurrentSampleSeed(): Promise<Buffer32>;
229
+ getCurrentEpoch(): Promise<EpochNumber>;
230
+ getCurrentEpochCommittee(): Promise<EthAddress[] | undefined>;
231
+ getCurrentProposer(): Promise<EthAddress>;
232
+ getProposerAt(timestamp: bigint): Promise<EthAddress>;
233
+ getCheckpoint(checkpointNumber: CheckpointNumber): Promise<CheckpointLog>;
234
+ /** Returns the pending checkpoint from the rollup contract */
235
+ getPendingCheckpoint(): Promise<CheckpointLog>;
145
236
  getTips(): Promise<{
146
- pendingBlockNumber: bigint;
147
- provenBlockNumber: bigint;
237
+ pending: CheckpointNumber;
238
+ proven: CheckpointNumber;
148
239
  }>;
149
- getTimestampForSlot(slot: bigint): Promise<bigint>;
150
- getEntryQueueLength(): Promise<bigint>;
151
- getAvailableValidatorFlushes(): Promise<bigint>;
152
- getNextFlushableEpoch(): Promise<bigint>;
153
- getCurrentEpochNumber(): Promise<bigint>;
154
- getEpochNumberForBlock(blockNumber: bigint): Promise<bigint>;
240
+ getTimestampForSlot(slot: SlotNumber): Promise<bigint>;
241
+ getEntryQueueLength(): Promise<number>;
242
+ getAvailableValidatorFlushes(): Promise<number>;
243
+ getNextFlushableEpoch(): Promise<EpochNumber>;
244
+ getCurrentEpochNumber(): Promise<EpochNumber>;
245
+ getEpochNumberForCheckpoint(checkpointNumber: CheckpointNumber): Promise<EpochNumber>;
155
246
  getRollupAddresses(): Promise<L1RollupContractAddresses>;
156
247
  getFeeJuicePortal(): Promise<EthAddress>;
157
- getEpochNumberForSlotNumber(slotNumber: bigint): Promise<bigint>;
158
- getEpochProofPublicInputs(args: readonly [bigint, bigint, EpochProofPublicInputArgs, readonly `0x${string}`[], `0x${string}`]): Promise<readonly `0x${string}`[]>;
248
+ getEpochNumberForSlotNumber(slotNumber: SlotNumber): Promise<EpochNumber>;
249
+ getEpochProofPublicInputs(args: readonly [bigint, bigint, EpochProofPublicInputArgs, readonly `0x${string}`[], `0x${string}`]): Promise<Fr[]>;
159
250
  validateHeader(args: readonly [
160
251
  ViemHeader,
161
252
  ViemCommitteeAttestations,
@@ -174,70 +265,48 @@ export declare class RollupContract {
174
265
  * @dev Throws if unable to propose
175
266
  *
176
267
  * @param archive - The archive that we expect to be current state
177
- * @return [slot, blockNumber] - If you can propose, the L2 slot number and L2 block number of the next Ethereum block,
268
+ * @return [slot, checkpointNumber, timeOfNextL1Slot] - If you can propose, the L2 slot number, checkpoint number and
269
+ * timestamp of the next L1 block
178
270
  * @throws otherwise
179
271
  */
180
- canProposeAtNextEthBlock(archive: Buffer, account: `0x${string}` | Account, slotDuration: bigint | number, opts?: {
181
- forcePendingBlockNumber?: number;
272
+ canProposeAtNextEthBlock(archive: Buffer, account: `0x${string}` | Account, slotDuration: number, opts?: {
273
+ forcePendingCheckpointNumber?: CheckpointNumber;
182
274
  }): Promise<{
183
- slot: bigint;
184
- blockNumber: bigint;
275
+ slot: SlotNumber;
276
+ checkpointNumber: CheckpointNumber;
185
277
  timeOfNextL1Slot: bigint;
186
278
  }>;
187
279
  /**
188
- * Returns a state override that sets the pending block number to the specified value. Useful for simulations.
189
- * Requires querying the current state of the contract to get the current proven block number, as they are both
280
+ * Returns a state override that sets the pending checkpoint number to the specified value. Useful for simulations.
281
+ * Requires querying the current state of the contract to get the current proven checkpoint number, as they are both
190
282
  * stored in the same slot. If the argument is undefined, it returns an empty override.
191
283
  */
192
- makePendingBlockNumberOverride(forcePendingBlockNumber: number | undefined): Promise<StateOverride>;
284
+ makePendingCheckpointNumberOverride(forcePendingCheckpointNumber: CheckpointNumber | undefined): Promise<StateOverride>;
193
285
  /** Creates a request to Rollup#invalidateBadAttestation to be simulated or sent */
194
- buildInvalidateBadAttestationRequest(blockNumber: number, attestationsAndSigners: ViemCommitteeAttestations, committee: EthAddress[], invalidIndex: number): L1TxRequest;
286
+ buildInvalidateBadAttestationRequest(checkpointNumber: CheckpointNumber, attestationsAndSigners: ViemCommitteeAttestations, committee: EthAddress[], invalidIndex: number): L1TxRequest;
195
287
  /** Creates a request to Rollup#invalidateInsufficientAttestations to be simulated or sent */
196
- buildInvalidateInsufficientAttestationsRequest(blockNumber: number, attestationsAndSigners: ViemCommitteeAttestations, committee: EthAddress[]): L1TxRequest;
288
+ buildInvalidateInsufficientAttestationsRequest(checkpointNumber: CheckpointNumber, attestationsAndSigners: ViemCommitteeAttestations, committee: EthAddress[]): L1TxRequest;
197
289
  /** Calls getHasSubmitted directly. Returns whether the given prover has submitted a proof with the given length for the given epoch. */
198
- getHasSubmittedProof(epochNumber: number, numberOfBlocksInEpoch: number, prover: Hex | EthAddress): Promise<boolean>;
199
- getManaBaseFeeAt(timestamp: bigint, inFeeAsset: boolean): Promise<bigint>;
200
- getSlotAt(timestamp: bigint): Promise<bigint>;
201
- status(blockNumber: bigint, options?: {
290
+ getHasSubmittedProof(epochNumber: EpochNumber, numberOfCheckpointsInEpoch: number, prover: Hex | EthAddress): Promise<boolean>;
291
+ getManaMinFeeAt(timestamp: bigint, inFeeAsset: boolean): Promise<bigint>;
292
+ getSlotAt(timestamp: bigint): Promise<SlotNumber>;
293
+ status(checkpointNumber: CheckpointNumber, options?: {
202
294
  blockNumber?: bigint;
203
- }): Promise<readonly [bigint, `0x${string}`, bigint, `0x${string}`, `0x${string}`, bigint]>;
295
+ }): Promise<RollupStatusResponse>;
204
296
  canPruneAtTime(timestamp: bigint, options?: {
205
297
  blockNumber?: bigint;
206
298
  }): Promise<boolean>;
207
- archive(): Promise<`0x${string}`>;
208
- archiveAt(blockNumber: bigint): Promise<`0x${string}`>;
299
+ archive(): Promise<Fr>;
300
+ archiveAt(checkpointNumber: CheckpointNumber): Promise<Fr>;
209
301
  getSequencerRewards(address: Hex | EthAddress): Promise<bigint>;
210
302
  getSpecificProverRewardsForEpoch(epoch: bigint, prover: Hex | EthAddress): Promise<bigint>;
211
- getAttesters(): Promise<`0x${string}`[]>;
212
- getAttesterView(address: Hex | EthAddress): Promise<{
213
- status: number;
214
- effectiveBalance: bigint;
215
- exit: {
216
- withdrawalId: bigint;
217
- amount: bigint;
218
- exitableAt: bigint;
219
- recipientOrWithdrawer: `0x${string}`;
220
- isRecipient: boolean;
221
- exists: boolean;
222
- };
223
- config: {
224
- publicKey: {
225
- x: bigint;
226
- y: bigint;
227
- };
228
- withdrawer: `0x${string}`;
229
- };
230
- }>;
231
- getStatus(address: Hex | EthAddress): Promise<number>;
232
- getBlobCommitmentsHash(blockNumber: bigint): Promise<`0x${string}`>;
233
- getCurrentBlobCommitmentsHash(): Promise<`0x${string}`>;
234
- getStakingAsset(): Promise<`0x${string}`>;
235
- getRewardConfig(): Promise<{
236
- rewardDistributor: `0x${string}`;
237
- sequencerBps: number;
238
- booster: `0x${string}`;
239
- blockReward: bigint;
240
- }>;
303
+ getAttesters(): Promise<EthAddress[]>;
304
+ getAttesterView(address: Hex | EthAddress): Promise<AttesterView>;
305
+ getStatus(address: Hex | EthAddress): Promise<AttesterStatus>;
306
+ getBlobCommitmentsHash(checkpointNumber: CheckpointNumber): Promise<Buffer32>;
307
+ getCurrentBlobCommitmentsHash(): Promise<Buffer32>;
308
+ getStakingAsset(): Promise<EthAddress>;
309
+ getRewardConfig(): Promise<RewardConfig>;
241
310
  setupEpoch(l1TxUtils: L1TxUtils): Promise<{
242
311
  receipt: import("viem").TransactionReceipt;
243
312
  state: import("../l1_tx_utils/types.js").L1TxState;
@@ -250,8 +319,8 @@ export declare class RollupContract {
250
319
  oldSlasher: `0x${string}`;
251
320
  newSlasher: `0x${string}`;
252
321
  }) => unknown): WatchContractEventReturnType;
253
- listenToBlockInvalidated(callback: (args: {
254
- blockNumber: bigint;
322
+ listenToCheckpointInvalidated(callback: (args: {
323
+ checkpointNumber: CheckpointNumber;
255
324
  }) => unknown): WatchContractEventReturnType;
256
325
  getSlashEvents(l1BlockHash: Hex): Promise<{
257
326
  amount: bigint;
@@ -261,5 +330,7 @@ export declare class RollupContract {
261
330
  amount: bigint;
262
331
  attester: EthAddress;
263
332
  }) => unknown): WatchContractEventReturnType;
333
+ /** Fetches CheckpointProposed events within the given block range. */
334
+ getCheckpointProposedEvents(fromBlock: bigint, toBlock: bigint): Promise<CheckpointProposedLog[]>;
264
335
  }
265
- //# sourceMappingURL=rollup.d.ts.map
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL3JvbGx1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUkxRCxPQUFPLEVBQ0wsS0FBSyxPQUFPLEVBQ1osS0FBSyxxQkFBcUIsRUFDMUIsS0FBSyxHQUFHLEVBQ1IsS0FBSyxhQUFhLEVBQ2xCLEtBQUssNEJBQTRCLEVBS2xDLE1BQU0sTUFBTSxDQUFDO0FBR2QsT0FBTyxLQUFLLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RixPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFL0UsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztB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