@aztec/ethereum 0.72.1 → 0.73.0

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 (72) hide show
  1. package/dest/{ethereum_chain.d.ts → chain.d.ts} +1 -1
  2. package/dest/chain.d.ts.map +1 -0
  3. package/dest/{ethereum_chain.js → chain.js} +1 -1
  4. package/dest/client.d.ts +16 -0
  5. package/dest/client.d.ts.map +1 -0
  6. package/dest/client.js +35 -0
  7. package/dest/contracts/forwarder.d.ts +23 -0
  8. package/dest/contracts/forwarder.d.ts.map +1 -0
  9. package/dest/contracts/forwarder.js +66 -0
  10. package/dest/contracts/governance.d.ts +14 -0
  11. package/dest/contracts/governance.d.ts.map +1 -0
  12. package/dest/contracts/governance.js +31 -0
  13. package/dest/contracts/governance_proposer.d.ts +13 -0
  14. package/dest/contracts/governance_proposer.d.ts.map +1 -0
  15. package/dest/contracts/governance_proposer.js +40 -0
  16. package/dest/contracts/index.d.ts +4 -0
  17. package/dest/contracts/index.d.ts.map +1 -1
  18. package/dest/contracts/index.js +5 -1
  19. package/dest/contracts/rollup.d.ts +94 -5
  20. package/dest/contracts/rollup.d.ts.map +1 -1
  21. package/dest/contracts/rollup.js +177 -16
  22. package/dest/contracts/slashing_proposer.d.ts +11 -0
  23. package/dest/contracts/slashing_proposer.d.ts.map +1 -0
  24. package/dest/contracts/slashing_proposer.js +19 -0
  25. package/dest/deploy_l1_contracts.d.ts +985 -974
  26. package/dest/deploy_l1_contracts.d.ts.map +1 -1
  27. package/dest/deploy_l1_contracts.js +44 -22
  28. package/dest/index.d.ts +4 -1
  29. package/dest/index.d.ts.map +1 -1
  30. package/dest/index.js +5 -2
  31. package/dest/l1_reader.d.ts.map +1 -1
  32. package/dest/l1_reader.js +2 -3
  33. package/dest/l1_tx_utils.d.ts +78 -17
  34. package/dest/l1_tx_utils.d.ts.map +1 -1
  35. package/dest/l1_tx_utils.js +182 -20
  36. package/dest/l1_tx_utils_with_blobs.d.ts +12 -0
  37. package/dest/l1_tx_utils_with_blobs.d.ts.map +1 -0
  38. package/dest/l1_tx_utils_with_blobs.js +61 -0
  39. package/dest/queries.d.ts +15 -0
  40. package/dest/queries.d.ts.map +1 -0
  41. package/dest/queries.js +48 -0
  42. package/dest/test/delayed_tx_utils.d.ts +8 -0
  43. package/dest/test/delayed_tx_utils.d.ts.map +1 -0
  44. package/dest/test/delayed_tx_utils.js +21 -0
  45. package/dest/test/index.d.ts +2 -1
  46. package/dest/test/index.d.ts.map +1 -1
  47. package/dest/test/index.js +3 -2
  48. package/dest/types.d.ts +3 -1
  49. package/dest/types.d.ts.map +1 -1
  50. package/dest/utils.d.ts +1 -0
  51. package/dest/utils.d.ts.map +1 -1
  52. package/dest/utils.js +16 -1
  53. package/package.json +7 -4
  54. package/src/client.ts +56 -0
  55. package/src/contracts/forwarder.ts +113 -0
  56. package/src/contracts/governance.ts +50 -0
  57. package/src/contracts/governance_proposer.ts +41 -0
  58. package/src/contracts/index.ts +4 -0
  59. package/src/contracts/rollup.ts +264 -16
  60. package/src/contracts/slashing_proposer.ts +31 -0
  61. package/src/deploy_l1_contracts.ts +68 -26
  62. package/src/index.ts +4 -1
  63. package/src/l1_reader.ts +1 -2
  64. package/src/l1_tx_utils.ts +254 -34
  65. package/src/l1_tx_utils_with_blobs.ts +86 -0
  66. package/src/queries.ts +77 -0
  67. package/src/test/delayed_tx_utils.ts +24 -0
  68. package/src/test/index.ts +2 -1
  69. package/src/types.ts +4 -0
  70. package/src/utils.ts +15 -0
  71. package/dest/ethereum_chain.d.ts.map +0 -1
  72. /package/src/{ethereum_chain.ts → chain.ts} +0 -0
@@ -22,4 +22,4 @@ export declare function createEthereumChain(rpcUrl: string, _chainId: number | s
22
22
  * Helper function to determine if a chain id is an instance of Anvil
23
23
  */
24
24
  export declare function isAnvilTestChain(_chainId: number | string): boolean;
25
- //# sourceMappingURL=ethereum_chain.d.ts.map
25
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,MAAM,CAAC;AAKlC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CA+B5F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CASnE"}
@@ -53,4 +53,4 @@ export function isAnvilTestChain(_chainId) {
53
53
  const testChains = [foundry.id, AZTEC_TEST_CHAIN_ID];
54
54
  return testChains.includes(chainId);
55
55
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoZXJldW1fY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXRoZXJldW1fY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWlCckQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsUUFBeUI7SUFDM0UsSUFBSSxPQUFlLENBQUM7SUFDcEIsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxFQUFFLEVBQUUsT0FBTztnQkFDWCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksRUFBRSxPQUFPO29CQUNiLE1BQU0sRUFBRSxLQUFLO2lCQUNkO2FBQ0Y7WUFDRCxNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTztZQUNMLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUF5QjtJQUN4RCxJQUFJLE9BQWUsQ0FBQztJQUNwQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDckIsQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDIn0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWlCckQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsUUFBeUI7SUFDM0UsSUFBSSxPQUFlLENBQUM7SUFDcEIsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxFQUFFLEVBQUUsT0FBTztnQkFDWCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksRUFBRSxPQUFPO29CQUNiLE1BQU0sRUFBRSxLQUFLO2lCQUNkO2FBQ0Y7WUFDRCxNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTztZQUNMLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUF5QjtJQUN4RCxJQUFJLE9BQWUsQ0FBQztJQUNwQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDckIsQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDIn0=
@@ -0,0 +1,16 @@
1
+ import { type Logger } from '@aztec/foundation/log';
2
+ import { type ViemPublicClient } from './types.js';
3
+ type Config = {
4
+ /** The RPC Url of the ethereum host. */
5
+ l1RpcUrl: string;
6
+ /** The chain ID of the ethereum host. */
7
+ l1ChainId: number;
8
+ /** The polling interval viem uses in ms */
9
+ viemPollingIntervalMS?: number;
10
+ };
11
+ /** Returns a viem public client given the L1 config. */
12
+ export declare function getPublicClient(config: Config): ViemPublicClient;
13
+ /** Returns a viem public client after waiting for the L1 RPC node to become available. */
14
+ export declare function waitForPublicClient(config: Config, logger?: Logger): Promise<ViemPublicClient>;
15
+ export {};
16
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAMpD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,KAAK,MAAM,GAAG;IACZ,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAIF,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAOhE;AAED,0FAA0F;AAC1F,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAIpG"}
package/dest/client.js ADDED
@@ -0,0 +1,35 @@
1
+ import { retryUntil } from '@aztec/foundation/retry';
2
+ import { createPublicClient, http } from 'viem';
3
+ import { createEthereumChain } from './chain.js';
4
+ // TODO: Use these methods to abstract the creation of viem clients.
5
+ /** Returns a viem public client given the L1 config. */
6
+ export function getPublicClient(config) {
7
+ const chain = createEthereumChain(config.l1RpcUrl, config.l1ChainId);
8
+ return createPublicClient({
9
+ chain: chain.chainInfo,
10
+ transport: http(chain.rpcUrl),
11
+ pollingInterval: config.viemPollingIntervalMS,
12
+ });
13
+ }
14
+ /** Returns a viem public client after waiting for the L1 RPC node to become available. */
15
+ export async function waitForPublicClient(config, logger) {
16
+ const client = getPublicClient(config);
17
+ await waitForRpc(client, config, logger);
18
+ return client;
19
+ }
20
+ async function waitForRpc(client, config, logger) {
21
+ const l1ChainId = await retryUntil(async () => {
22
+ let chainId = 0;
23
+ try {
24
+ chainId = await client.getChainId();
25
+ }
26
+ catch (err) {
27
+ logger?.warn(`Failed to connect to Ethereum node at ${config.l1RpcUrl}. Retrying...`);
28
+ }
29
+ return chainId;
30
+ }, `L1 RPC url at ${config.l1RpcUrl}`, 600, 1);
31
+ if (l1ChainId !== config.l1ChainId) {
32
+ throw new Error(`Ethereum node at ${config.l1RpcUrl} has chain ID ${l1ChainId} but expected ${config.l1ChainId}`);
33
+ }
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFZakQsb0VBQW9FO0FBRXBFLHdEQUF3RDtBQUN4RCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQWM7SUFDNUMsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckUsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDdEIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzdCLGVBQWUsRUFBRSxNQUFNLENBQUMscUJBQXFCO0tBQzlDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCwwRkFBMEY7QUFDMUYsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsTUFBZTtJQUN2RSxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxNQUF3QixFQUFFLE1BQWMsRUFBRSxNQUFlO0lBQ2pGLE1BQU0sU0FBUyxHQUFHLE1BQU0sVUFBVSxDQUNoQyxLQUFLLElBQUksRUFBRTtRQUNULElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUM7WUFDSCxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLHlDQUF5QyxNQUFNLENBQUMsUUFBUSxlQUFlLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxFQUNELGlCQUFpQixNQUFNLENBQUMsUUFBUSxFQUFFLEVBQ2xDLEdBQUcsRUFDSCxDQUFDLENBQ0YsQ0FBQztJQUVGLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixNQUFNLENBQUMsUUFBUSxpQkFBaUIsU0FBUyxpQkFBaUIsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDcEgsQ0FBQztBQUNILENBQUMifQ==
@@ -0,0 +1,23 @@
1
+ import { type Logger } from '@aztec/foundation/log';
2
+ import { type Account, type Chain, type Hex, type HttpTransport, type PublicClient, type WalletClient } from 'viem';
3
+ import { type L1Clients } from '../deploy_l1_contracts.js';
4
+ import { type L1BlobInputs, type L1GasConfig, type L1TxRequest, type L1TxUtils } from '../l1_tx_utils.js';
5
+ export declare class ForwarderContract {
6
+ readonly client: L1Clients['publicClient'];
7
+ private readonly forwarder;
8
+ constructor(client: L1Clients['publicClient'], address: Hex);
9
+ static create(owner: Hex, walletClient: WalletClient<HttpTransport, Chain, Account>, publicClient: PublicClient<HttpTransport, Chain>, logger: Logger): Promise<ForwarderContract>;
10
+ getAddress(): `0x${string}`;
11
+ forward(requests: L1TxRequest[], l1TxUtils: L1TxUtils, gasConfig: L1GasConfig | undefined, blobConfig: L1BlobInputs | undefined): Promise<{
12
+ receipt: import("viem").TransactionReceipt;
13
+ gasPrice: import("../l1_tx_utils.js").GasPrice;
14
+ stats: import("../l1_tx_utils.js").TransactionStats | undefined;
15
+ errorMsg?: undefined;
16
+ } | {
17
+ receipt: import("viem").TransactionReceipt;
18
+ gasPrice: import("../l1_tx_utils.js").GasPrice;
19
+ errorMsg: string | undefined;
20
+ stats?: undefined;
21
+ }>;
22
+ }
23
+ //# sourceMappingURL=forwarder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forwarder.d.ts","sourceRoot":"","sources":["../../src/contracts/forwarder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EAGlB,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE1G,qBAAa,iBAAiB;aAGA,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC;IAF7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiF;gBAE/E,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG;WAI9D,MAAM,CACjB,KAAK,EAAE,GAAG,EACV,YAAY,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,EACzD,YAAY,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,EAChD,MAAM,EAAE,MAAM;IAwBT,UAAU;IAIJ,OAAO,CAClB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,UAAU,EAAE,YAAY,GAAG,SAAS;;;;;;;;;;;CAmDvC"}
@@ -0,0 +1,66 @@
1
+ import { ForwarderAbi, ForwarderBytecode } from '@aztec/l1-artifacts';
2
+ import { encodeFunctionData, getContract, } from 'viem';
3
+ import { deployL1Contract } from '../deploy_l1_contracts.js';
4
+ export class ForwarderContract {
5
+ constructor(client, address) {
6
+ this.client = client;
7
+ this.forwarder = getContract({ address, abi: ForwarderAbi, client });
8
+ }
9
+ static async create(owner, walletClient, publicClient, logger) {
10
+ logger.info('Deploying forwarder contract');
11
+ const { address, txHash } = await deployL1Contract(walletClient, publicClient, ForwarderAbi, ForwarderBytecode, [owner], owner, undefined, logger);
12
+ if (txHash) {
13
+ await publicClient.waitForTransactionReceipt({ hash: txHash });
14
+ }
15
+ logger.info(`Forwarder contract deployed at ${address} with owner ${owner}`);
16
+ return new ForwarderContract(publicClient, address.toString());
17
+ }
18
+ getAddress() {
19
+ return this.forwarder.address;
20
+ }
21
+ async forward(requests, l1TxUtils, gasConfig, blobConfig) {
22
+ requests = requests.filter(request => request.to !== null);
23
+ const toArgs = requests.map(request => request.to);
24
+ const dataArgs = requests.map(request => request.data);
25
+ const data = encodeFunctionData({
26
+ abi: ForwarderAbi,
27
+ functionName: 'forward',
28
+ args: [toArgs, dataArgs],
29
+ });
30
+ const { receipt, gasPrice } = await l1TxUtils.sendAndMonitorTransaction({
31
+ to: this.forwarder.address,
32
+ data,
33
+ }, gasConfig, blobConfig);
34
+ if (receipt.status === 'success') {
35
+ const stats = await l1TxUtils.getTransactionStats(receipt.transactionHash);
36
+ return { receipt, gasPrice, stats };
37
+ }
38
+ else {
39
+ const args = {
40
+ args: [toArgs, dataArgs],
41
+ functionName: 'forward',
42
+ abi: ForwarderAbi,
43
+ address: this.forwarder.address,
44
+ };
45
+ let errorMsg;
46
+ if (blobConfig) {
47
+ const maxFeePerBlobGas = blobConfig.maxFeePerBlobGas ?? gasPrice.maxFeePerBlobGas;
48
+ if (maxFeePerBlobGas === undefined) {
49
+ errorMsg = 'maxFeePerBlobGas is required to get the error message';
50
+ }
51
+ else {
52
+ errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(data, args, {
53
+ blobs: blobConfig.blobs,
54
+ kzg: blobConfig.kzg,
55
+ maxFeePerBlobGas,
56
+ });
57
+ }
58
+ }
59
+ else {
60
+ errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(data, args);
61
+ }
62
+ return { receipt, gasPrice, errorMsg };
63
+ }
64
+ }
65
+ }
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9mb3J3YXJkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFRTCxrQkFBa0IsRUFDbEIsV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzdFLE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBNEIsTUFBaUMsRUFBRSxPQUFZO1FBQS9DLFdBQU0sR0FBTixNQUFNLENBQTJCO1FBQzNELElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2pCLEtBQVUsRUFDVixZQUF5RCxFQUN6RCxZQUFnRCxFQUNoRCxNQUFjO1FBRWQsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsQ0FDaEQsWUFBWSxFQUNaLFlBQVksRUFDWixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLENBQUMsS0FBSyxDQUFDLEVBQ1AsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLENBQ1AsQ0FBQztRQUVGLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxPQUFPLGVBQWUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUU3RSxP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
@@ -0,0 +1,14 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { type Chain, type Hex, type HttpTransport, type PublicClient } from 'viem';
3
+ import { type L1ContractAddresses } from '../l1_contract_addresses.js';
4
+ import { GovernanceProposerContract } from './governance_proposer.js';
5
+ export type L1GovernanceContractAddresses = Pick<L1ContractAddresses, 'governanceAddress' | 'rollupAddress' | 'registryAddress' | 'governanceProposerAddress'>;
6
+ export declare class GovernanceContract {
7
+ readonly client: PublicClient<HttpTransport, Chain>;
8
+ private readonly governance;
9
+ constructor(client: PublicClient<HttpTransport, Chain>, address: Hex);
10
+ get address(): EthAddress;
11
+ getProposer(): Promise<GovernanceProposerContract>;
12
+ getGovernanceAddresses(): Promise<L1GovernanceContractAddresses>;
13
+ }
14
+ //# sourceMappingURL=governance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/contracts/governance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,mBAAmB,EACnB,mBAAmB,GAAG,eAAe,GAAG,iBAAiB,GAAG,2BAA2B,CACxF,CAAC;AAEF,qBAAa,kBAAkB;aAGD,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;IAFtE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkF;gBAEjF,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG;IAIpF,IAAW,OAAO,eAEjB;IAEY,WAAW;IAKX,sBAAsB,IAAI,OAAO,CAAC,6BAA6B,CAAC;CAa9E"}
@@ -0,0 +1,31 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { GovernanceAbi } from '@aztec/l1-artifacts';
3
+ import { getContract, } from 'viem';
4
+ import { GovernanceProposerContract } from './governance_proposer.js';
5
+ export class GovernanceContract {
6
+ constructor(client, address) {
7
+ this.client = client;
8
+ this.governance = getContract({ address, abi: GovernanceAbi, client });
9
+ }
10
+ get address() {
11
+ return EthAddress.fromString(this.governance.address);
12
+ }
13
+ async getProposer() {
14
+ const governanceProposerAddress = EthAddress.fromString(await this.governance.read.governanceProposer());
15
+ return new GovernanceProposerContract(this.client, governanceProposerAddress.toString());
16
+ }
17
+ async getGovernanceAddresses() {
18
+ const governanceProposer = await this.getProposer();
19
+ const [rollupAddress, registryAddress] = await Promise.all([
20
+ governanceProposer.getRollupAddress(),
21
+ governanceProposer.getRegistryAddress(),
22
+ ]);
23
+ return {
24
+ governanceAddress: this.address,
25
+ rollupAddress,
26
+ registryAddress,
27
+ governanceProposerAddress: governanceProposer.address,
28
+ };
29
+ }
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvZ292ZXJuYW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFNTCxXQUFXLEdBQ1osTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU90RSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQTRCLE1BQTBDLEVBQUUsT0FBWTtRQUF4RCxXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUNwRSxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSx5QkFBeUIsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pHLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0I7UUFDakMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRCxNQUFNLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN6RCxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRTtTQUN4QyxDQUFDLENBQUM7UUFDSCxPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDL0IsYUFBYTtZQUNiLGVBQWU7WUFDZix5QkFBeUIsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1NBQ3RELENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,13 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { type Chain, type Hex, type HttpTransport, type PublicClient } from 'viem';
3
+ export declare class GovernanceProposerContract {
4
+ readonly client: PublicClient<HttpTransport, Chain>;
5
+ private readonly proposer;
6
+ constructor(client: PublicClient<HttpTransport, Chain>, address: Hex);
7
+ get address(): EthAddress;
8
+ getRollupAddress(): Promise<EthAddress>;
9
+ getRegistryAddress(): Promise<EthAddress>;
10
+ getQuorumSize(): Promise<bigint>;
11
+ getRoundSize(): Promise<bigint>;
12
+ }
13
+ //# sourceMappingURL=governance_proposer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/governance_proposer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AAEd,qBAAa,0BAA0B;aAGT,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;IAFtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0F;gBAEvF,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG;IAIpF,IAAW,OAAO,eAEjB;IAEY,gBAAgB;IAKhB,kBAAkB;IAIxB,aAAa;IAIb,YAAY;CAGpB"}
@@ -0,0 +1,40 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { memoize } from '@aztec/foundation/decorators';
3
+ import { EthAddress } from '@aztec/foundation/eth-address';
4
+ import { GovernanceProposerAbi } from '@aztec/l1-artifacts';
5
+ import { getContract, } from 'viem';
6
+ let GovernanceProposerContract = (() => {
7
+ var _a;
8
+ let _instanceExtraInitializers = [];
9
+ let _getRegistryAddress_decorators;
10
+ return _a = class GovernanceProposerContract {
11
+ constructor(client, address) {
12
+ this.client = (__runInitializers(this, _instanceExtraInitializers), client);
13
+ this.proposer = getContract({ address, abi: GovernanceProposerAbi, client });
14
+ }
15
+ get address() {
16
+ return EthAddress.fromString(this.proposer.address);
17
+ }
18
+ async getRollupAddress() {
19
+ return EthAddress.fromString(await this.proposer.read.getInstance());
20
+ }
21
+ async getRegistryAddress() {
22
+ return EthAddress.fromString(await this.proposer.read.REGISTRY());
23
+ }
24
+ getQuorumSize() {
25
+ return this.proposer.read.N();
26
+ }
27
+ getRoundSize() {
28
+ return this.proposer.read.M();
29
+ }
30
+ },
31
+ (() => {
32
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
33
+ _getRegistryAddress_decorators = [memoize];
34
+ __esDecorate(_a, null, _getRegistryAddress_decorators, { kind: "method", name: "getRegistryAddress", static: false, private: false, access: { has: obj => "getRegistryAddress" in obj, get: obj => obj.getRegistryAddress }, metadata: _metadata }, null, _instanceExtraInitializers);
35
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
36
+ })(),
37
+ _a;
38
+ })();
39
+ export { GovernanceProposerContract };
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZV9wcm9wb3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvZ292ZXJuYW5jZV9wcm9wb3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RCxPQUFPLEVBTUwsV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDO0lBRUQsMEJBQTBCOzs7O3NCQUExQiwwQkFBMEI7WUFHckMsWUFBNEIsTUFBMEMsRUFBRSxPQUFZO2dCQUF4RCxXQUFNLElBSHZCLG1EQUEwQixFQUdULE1BQU0sRUFBb0M7Z0JBQ3BFLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLENBQUM7WUFFRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFFTSxLQUFLLENBQUMsZ0JBQWdCO2dCQUMzQixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7WUFHTSxLQUFLLENBQUMsa0JBQWtCO2dCQUM3QixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFFTSxhQUFhO2dCQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFFTSxZQUFZO2dCQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLENBQUM7Ozs7OENBWEEsT0FBTztZQUNSLHVNQUFhLGtCQUFrQiw2REFFOUI7Ozs7O1NBbEJVLDBCQUEwQiJ9
@@ -1,2 +1,6 @@
1
+ export * from './forwarder.js';
1
2
  export * from './rollup.js';
3
+ export * from './governance.js';
4
+ export * from './governance_proposer.js';
5
+ export * from './slashing_proposer.js';
2
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC"}
@@ -1,2 +1,6 @@
1
+ export * from './forwarder.js';
1
2
  export * from './rollup.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDIn0=
3
+ export * from './governance.js';
4
+ export * from './governance_proposer.js';
5
+ export * from './slashing_proposer.js';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUMifQ==
@@ -1,14 +1,36 @@
1
- import { AztecAddress } from '@aztec/foundation/aztec-address';
2
- import { type Chain, type Hex, type HttpTransport, type PublicClient } from 'viem';
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import { EthAddress } from '@aztec/foundation/eth-address';
4
+ import type { ViemSignature } from '@aztec/foundation/eth-signature';
5
+ import { type Account, type Chain, type Hex, type HttpTransport, type PublicClient } from 'viem';
3
6
  import { type DeployL1Contracts } from '../deploy_l1_contracts.js';
7
+ import { type L1ContractAddresses } from '../l1_contract_addresses.js';
4
8
  import { type L1ReaderConfig } from '../l1_reader.js';
9
+ import { SlashingProposerContract } from './slashing_proposer.js';
10
+ export type L1RollupContractAddresses = Pick<L1ContractAddresses, 'rollupAddress' | 'inboxAddress' | 'outboxAddress' | 'feeJuicePortalAddress' | 'feeJuiceAddress' | 'stakingAssetAddress' | 'rewardDistributorAddress'>;
11
+ export type EpochProofQuoteViemArgs = {
12
+ epochToProve: bigint;
13
+ validUntilSlot: bigint;
14
+ bondAmount: bigint;
15
+ prover: `0x${string}`;
16
+ basisPointFee: number;
17
+ };
5
18
  export declare class RollupContract {
6
19
  readonly client: PublicClient<HttpTransport, Chain>;
7
20
  private readonly rollup;
21
+ static getFromL1ContractsValues(deployL1ContractsValues: DeployL1Contracts): RollupContract;
22
+ static getFromConfig(config: L1ReaderConfig): RollupContract;
8
23
  constructor(client: PublicClient<HttpTransport, Chain>, address: Hex);
9
- get address(): AztecAddress;
24
+ get address(): `0x${string}`;
25
+ getSlashingProposer(): Promise<SlashingProposerContract>;
10
26
  getL1StartBlock(): Promise<bigint>;
11
27
  getL1GenesisTime(): Promise<bigint>;
28
+ getClaimDurationInL2Slots(): Promise<bigint>;
29
+ getEpochDuration(): Promise<bigint>;
30
+ getSlotDuration(): Promise<bigint>;
31
+ getTargetCommitteeSize(): Promise<bigint>;
32
+ getMinimumStake(): Promise<bigint>;
33
+ getSlashingProposerAddress(): Promise<EthAddress>;
12
34
  getBlockNumber(): Promise<bigint>;
13
35
  getProvenBlockNumber(): Promise<bigint>;
14
36
  getSlotNumber(): Promise<bigint>;
@@ -17,8 +39,75 @@ export declare class RollupContract {
17
39
  getCurrentSampleSeed(): Promise<bigint>;
18
40
  getCurrentEpochCommittee(): Promise<readonly `0x${string}`[]>;
19
41
  getCurrentProposer(): Promise<`0x${string}`>;
42
+ getProposerAt(timestamp: bigint): Promise<`0x${string}`>;
43
+ getBlock(blockNumber: bigint): Promise<{
44
+ feeHeader: {
45
+ excessMana: bigint;
46
+ feeAssetPriceNumerator: bigint;
47
+ manaUsed: bigint;
48
+ provingCostPerManaNumerator: bigint;
49
+ congestionCost: bigint;
50
+ };
51
+ archive: `0x${string}`;
52
+ blockHash: `0x${string}`;
53
+ slotNumber: bigint;
54
+ }>;
55
+ getProofCommitmentEscrow(): Promise<`0x${string}`>;
56
+ getTips(): Promise<{
57
+ pendingBlockNumber: bigint;
58
+ provenBlockNumber: bigint;
59
+ }>;
20
60
  getEpochNumber(blockNumber?: bigint): Promise<bigint>;
21
- static getFromL1ContractsValues(deployL1ContractsValues: DeployL1Contracts): RollupContract;
22
- static getFromConfig(config: L1ReaderConfig): RollupContract;
61
+ getRollupAddresses(): Promise<L1RollupContractAddresses>;
62
+ getEpochNumberForSlotNumber(slotNumber: bigint): Promise<bigint>;
63
+ getEpochProofPublicInputs(args: readonly [
64
+ bigint,
65
+ readonly [
66
+ `0x${string}`,
67
+ `0x${string}`,
68
+ `0x${string}`,
69
+ `0x${string}`,
70
+ `0x${string}`,
71
+ `0x${string}`,
72
+ `0x${string}`
73
+ ],
74
+ readonly `0x${string}`[],
75
+ `0x${string}`,
76
+ `0x${string}`
77
+ ]): Promise<readonly `0x${string}`[]>;
78
+ getProofClaim(): Promise<{
79
+ epochToProve: bigint;
80
+ basisPointFee: bigint;
81
+ bondAmount: bigint;
82
+ bondProvider: EthAddress;
83
+ proposerClaimant: EthAddress;
84
+ } | undefined>;
85
+ getClaimableEpoch(): Promise<bigint | undefined>;
86
+ getEpochToProve(): Promise<bigint | undefined>;
87
+ validateProofQuote(quote: {
88
+ quote: EpochProofQuoteViemArgs;
89
+ signature: ViemSignature;
90
+ }, account: `0x${string}` | Account, slotDuration: bigint | number): Promise<void>;
91
+ validateHeader(args: readonly [
92
+ `0x${string}`,
93
+ ViemSignature[],
94
+ `0x${string}`,
95
+ bigint,
96
+ `0x${string}`,
97
+ {
98
+ ignoreDA: boolean;
99
+ ignoreSignatures: boolean;
100
+ }
101
+ ], account: `0x${string}` | Account): Promise<void>;
102
+ /**
103
+ * @notice Calls `canProposeAtTime` with the time of the next Ethereum block and the sender address
104
+ *
105
+ * @dev Throws if unable to propose
106
+ *
107
+ * @param archive - The archive that we expect to be current state
108
+ * @return [slot, blockNumber] - If you can propose, the L2 slot number and L2 block number of the next Ethereum block,
109
+ * @throws otherwise
110
+ */
111
+ canProposeAtNextEthBlock(archive: Buffer, account: `0x${string}` | Account, slotDuration: bigint | number): Promise<[bigint, bigint]>;
23
112
  }
24
113
  //# sourceMappingURL=rollup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/contracts/rollup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAI/D,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EAIlB,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,qBAAa,cAAc;aAGG,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;IAFtE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8E;gBAEzE,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG;IAIpF,IAAW,OAAO,iBAEjB;IAGD,eAAe;IAKf,gBAAgB;IAIhB,cAAc;IAId,oBAAoB;IAIpB,aAAa;IAIb,cAAc,CAAC,SAAS,EAAE,MAAM;IAIhC,eAAe,CAAC,SAAS,EAAE,MAAM;IAIjC,oBAAoB;IAIpB,wBAAwB;IAIxB,kBAAkB;IAIZ,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM;IAKzC,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,iBAAiB;IAQ1E,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc;CAQ5C"}
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/contracts/rollup.ts"],"names":[],"mappings":"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"}