@aztec/sequencer-client 0.47.0 → 0.48.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 (78) hide show
  1. package/dest/client/sequencer-client.d.ts +2 -2
  2. package/dest/client/sequencer-client.d.ts.map +1 -1
  3. package/dest/client/sequencer-client.js +2 -2
  4. package/dest/config.d.ts +6 -2
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +96 -29
  7. package/dest/global_variable_builder/global_builder.d.ts +14 -8
  8. package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
  9. package/dest/global_variable_builder/global_builder.js +10 -16
  10. package/dest/global_variable_builder/index.d.ts +2 -3
  11. package/dest/global_variable_builder/index.d.ts.map +1 -1
  12. package/dest/global_variable_builder/index.js +1 -1
  13. package/dest/global_variable_builder/viem-reader.d.ts +5 -4
  14. package/dest/global_variable_builder/viem-reader.d.ts.map +1 -1
  15. package/dest/global_variable_builder/viem-reader.js +11 -8
  16. package/dest/index.d.ts +2 -0
  17. package/dest/index.d.ts.map +1 -1
  18. package/dest/index.js +3 -1
  19. package/dest/publisher/config.d.ts +7 -15
  20. package/dest/publisher/config.d.ts.map +1 -1
  21. package/dest/publisher/config.js +38 -11
  22. package/dest/publisher/index.d.ts +3 -2
  23. package/dest/publisher/index.d.ts.map +1 -1
  24. package/dest/publisher/index.js +4 -4
  25. package/dest/publisher/l1-publisher-metrics.d.ts +17 -0
  26. package/dest/publisher/l1-publisher-metrics.d.ts.map +1 -0
  27. package/dest/publisher/l1-publisher-metrics.js +75 -0
  28. package/dest/publisher/l1-publisher.d.ts +34 -6
  29. package/dest/publisher/l1-publisher.d.ts.map +1 -1
  30. package/dest/publisher/l1-publisher.js +45 -37
  31. package/dest/publisher/viem-tx-sender.d.ts +9 -2
  32. package/dest/publisher/viem-tx-sender.d.ts.map +1 -1
  33. package/dest/publisher/viem-tx-sender.js +86 -17
  34. package/dest/receiver.d.ts +2 -8
  35. package/dest/receiver.d.ts.map +1 -1
  36. package/dest/sequencer/metrics.d.ts +17 -0
  37. package/dest/sequencer/metrics.d.ts.map +1 -0
  38. package/dest/sequencer/metrics.js +56 -0
  39. package/dest/sequencer/sequencer.d.ts +11 -5
  40. package/dest/sequencer/sequencer.d.ts.map +1 -1
  41. package/dest/sequencer/sequencer.js +104 -34
  42. package/dest/tx_validator/data_validator.d.ts +6 -0
  43. package/dest/tx_validator/data_validator.d.ts.map +1 -0
  44. package/dest/tx_validator/data_validator.js +47 -0
  45. package/dest/tx_validator/gas_validator.d.ts +1 -1
  46. package/dest/tx_validator/gas_validator.d.ts.map +1 -1
  47. package/dest/tx_validator/gas_validator.js +12 -12
  48. package/dest/tx_validator/phases_validator.d.ts +2 -3
  49. package/dest/tx_validator/phases_validator.d.ts.map +1 -1
  50. package/dest/tx_validator/phases_validator.js +4 -4
  51. package/dest/tx_validator/test_utils.d.ts.map +1 -1
  52. package/dest/tx_validator/test_utils.js +10 -4
  53. package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -1
  54. package/dest/tx_validator/tx_validator_factory.js +4 -3
  55. package/package.json +15 -15
  56. package/src/client/sequencer-client.ts +3 -3
  57. package/src/config.ts +111 -50
  58. package/src/global_variable_builder/global_builder.ts +35 -25
  59. package/src/global_variable_builder/index.ts +3 -3
  60. package/src/global_variable_builder/viem-reader.ts +14 -11
  61. package/src/index.ts +2 -0
  62. package/src/publisher/config.ts +43 -31
  63. package/src/publisher/index.ts +5 -3
  64. package/src/publisher/l1-publisher-metrics.ts +108 -0
  65. package/src/publisher/l1-publisher.ts +79 -44
  66. package/src/publisher/viem-tx-sender.ts +90 -15
  67. package/src/receiver.ts +3 -8
  68. package/src/sequencer/metrics.ts +86 -0
  69. package/src/sequencer/sequencer.ts +144 -45
  70. package/src/tx_validator/data_validator.ts +61 -0
  71. package/src/tx_validator/gas_validator.ts +11 -9
  72. package/src/tx_validator/phases_validator.ts +13 -5
  73. package/src/tx_validator/test_utils.ts +10 -3
  74. package/src/tx_validator/tx_validator_factory.ts +4 -2
  75. package/dest/global_variable_builder/config.d.ts +0 -19
  76. package/dest/global_variable_builder/config.d.ts.map +0 -1
  77. package/dest/global_variable_builder/config.js +0 -2
  78. package/src/global_variable_builder/config.ts +0 -20
@@ -1,5 +1,5 @@
1
1
  import { type L1ToL2MessageSource, type L2BlockSource } from '@aztec/circuit-types';
2
- import { type BlockProver } from '@aztec/circuit-types/interfaces';
2
+ import { type ProverClient } from '@aztec/circuit-types/interfaces';
3
3
  import { type P2P } from '@aztec/p2p';
4
4
  import { type SimulationProvider } from '@aztec/simulator';
5
5
  import { type TelemetryClient } from '@aztec/telemetry-client';
@@ -25,7 +25,7 @@ export declare class SequencerClient {
25
25
  * @param simulationProvider - An instance of a simulation provider
26
26
  * @returns A new running instance.
27
27
  */
28
- static new(config: SequencerClientConfig, p2pClient: P2P, worldStateSynchronizer: WorldStateSynchronizer, contractDataSource: ContractDataSource, l2BlockSource: L2BlockSource, l1ToL2MessageSource: L1ToL2MessageSource, prover: BlockProver, simulationProvider: SimulationProvider, telemetryClient: TelemetryClient): Promise<SequencerClient>;
28
+ static new(config: SequencerClientConfig, p2pClient: P2P, worldStateSynchronizer: WorldStateSynchronizer, contractDataSource: ContractDataSource, l2BlockSource: L2BlockSource, l1ToL2MessageSource: L1ToL2MessageSource, prover: ProverClient, simulationProvider: SimulationProvider, telemetryClient: TelemetryClient): Promise<SequencerClient>;
29
29
  /**
30
30
  * Updates sequencer config.
31
31
  * @param config - New parameters.
@@ -1 +1 @@
1
- {"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxE;;GAEG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAExC;;;;;;;;;;;OAWG;WACiB,GAAG,CACrB,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,GAAG,EACd,sBAAsB,EAAE,sBAAsB,EAC9C,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,WAAW,EACnB,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe;IA+BlC;;;OAGG;IACI,qBAAqB,CAAC,MAAM,EAAE,eAAe;IAIpD;;OAEG;IACU,IAAI;IAIjB;;OAEG;IACI,OAAO;IAId,IAAI,QAAQ,yCAEX;IAED,IAAI,YAAY,2CAEf;CACF"}
1
+ {"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxE;;GAEG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAExC;;;;;;;;;;;OAWG;WACiB,GAAG,CACrB,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,GAAG,EACd,sBAAsB,EAAE,sBAAsB,EAC9C,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,YAAY,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe;IA+BlC;;;OAGG;IACI,qBAAqB,CAAC,MAAM,EAAE,eAAe;IAIpD;;OAEG;IACU,IAAI;IAIjB;;OAEG;IACI,OAAO;IAId,IAAI,QAAQ,yCAEX;IAED,IAAI,YAAY,2CAEf;CACF"}
@@ -23,7 +23,7 @@ export class SequencerClient {
23
23
  * @returns A new running instance.
24
24
  */
25
25
  static async new(config, p2pClient, worldStateSynchronizer, contractDataSource, l2BlockSource, l1ToL2MessageSource, prover, simulationProvider, telemetryClient) {
26
- const publisher = getL1Publisher(config);
26
+ const publisher = getL1Publisher(config, telemetryClient);
27
27
  const globalsBuilder = getGlobalVariableBuilder(config);
28
28
  const merkleTreeDb = worldStateSynchronizer.getLatest();
29
29
  const publicProcessorFactory = new PublicProcessorFactory(merkleTreeDb, contractDataSource, simulationProvider, telemetryClient);
@@ -57,4 +57,4 @@ export class SequencerClient {
57
57
  return this.sequencer.feeRecipient;
58
58
  }
59
59
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvc2VxdWVuY2VyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0sa0JBQWtCLENBQUM7QUFNbkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFN0U7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQUcsQ0FBQztJQUU1Qzs7Ozs7Ozs7Ozs7T0FXRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNyQixNQUE2QixFQUM3QixTQUFjLEVBQ2Qsc0JBQThDLEVBQzlDLGtCQUFzQyxFQUN0QyxhQUE0QixFQUM1QixtQkFBd0MsRUFDeEMsTUFBbUIsRUFDbkIsa0JBQXNDLEVBQ3RDLGVBQWdDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxNQUFNLFlBQVksR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUV4RCxNQUFNLHNCQUFzQixHQUFHLElBQUksc0JBQXNCLENBQ3ZELFlBQVksRUFDWixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGVBQWUsQ0FDaEIsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUM3QixTQUFTLEVBQ1QsY0FBYyxFQUNkLFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsTUFBTSxFQUNOLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLElBQUksa0JBQWtCLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQzlFLGVBQWUsRUFDZixNQUFNLENBQ1AsQ0FBQztRQUVGLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHFCQUFxQixDQUFDLE1BQXVCO1FBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ3JDLENBQUM7Q0FDRiJ9
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvc2VxdWVuY2VyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0sa0JBQWtCLENBQUM7QUFNbkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFN0U7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQUcsQ0FBQztJQUU1Qzs7Ozs7Ozs7Ozs7T0FXRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNyQixNQUE2QixFQUM3QixTQUFjLEVBQ2Qsc0JBQThDLEVBQzlDLGtCQUFzQyxFQUN0QyxhQUE0QixFQUM1QixtQkFBd0MsRUFDeEMsTUFBb0IsRUFDcEIsa0JBQXNDLEVBQ3RDLGVBQWdDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDMUQsTUFBTSxjQUFjLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEQsTUFBTSxZQUFZLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFeEQsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLHNCQUFzQixDQUN2RCxZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixlQUFlLENBQ2hCLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FDN0IsU0FBUyxFQUNULGNBQWMsRUFDZCxTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixJQUFJLGtCQUFrQixDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUM5RSxlQUFlLEVBQ2YsTUFBTSxDQUNQLENBQUM7UUFFRixNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxxQkFBcUIsQ0FBQyxNQUF1QjtRQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztJQUNyQyxDQUFDO0NBQ0YifQ==
package/dest/config.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { type AllowedElement } from '@aztec/circuit-types';
2
- import { type GlobalReaderConfig } from './global_variable_builder/index.js';
2
+ import { type L1ReaderConfig } from '@aztec/ethereum';
3
+ import { type ConfigMappingsType } from '@aztec/foundation/config';
3
4
  import { type PublisherConfig, type TxSenderConfig } from './publisher/config.js';
4
5
  import { type SequencerConfig } from './sequencer/config.js';
5
6
  /** Chain configuration. */
@@ -12,7 +13,10 @@ type ChainConfig = {
12
13
  /**
13
14
  * Configuration settings for the SequencerClient.
14
15
  */
15
- export type SequencerClientConfig = PublisherConfig & TxSenderConfig & SequencerConfig & GlobalReaderConfig & ChainConfig;
16
+ export type SequencerClientConfig = PublisherConfig & TxSenderConfig & SequencerConfig & L1ReaderConfig & ChainConfig;
17
+ export declare const sequencerConfigMappings: ConfigMappingsType<SequencerConfig>;
18
+ export declare const chainConfigMappings: ConfigMappingsType<ChainConfig>;
19
+ export declare const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientConfig>;
16
20
  /**
17
21
  * Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
18
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAS3D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAA4B,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,2BAA2B;AAC3B,KAAK,WAAW,GAAG;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,cAAc,GACd,eAAe,GACf,kBAAkB,GAClB,WAAW,CAAC;AAEd;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAyCxD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAqCvE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,2BAA2B;AAC3B,KAAK,WAAW,GAAG;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,GAAG,WAAW,CAAC;AAEtH,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CA2EvE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,WAAW,CAO/D,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAAC,qBAAqB,CAMnF,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAExD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAqCvE"}
package/dest/config.js CHANGED
@@ -1,39 +1,106 @@
1
1
  import { AztecAddress, Fr, FunctionSelector, getContractClassFromArtifact } from '@aztec/circuits.js';
2
- import { getL1ContractAddressesFromEnv } from '@aztec/ethereum';
2
+ import { l1ReaderConfigMappings } from '@aztec/ethereum';
3
+ import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, } from '@aztec/foundation/config';
3
4
  import { EthAddress } from '@aztec/foundation/eth-address';
4
5
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
5
6
  import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
6
7
  import { AuthRegistryAddress } from '@aztec/protocol-contracts/auth-registry';
7
- import { GasTokenAddress } from '@aztec/protocol-contracts/gas-token';
8
- import { getTxSenderConfigFromEnv } from './publisher/config.js';
8
+ import { FeeJuiceAddress } from '@aztec/protocol-contracts/fee-juice';
9
+ import { getPublisherConfigMappings, getTxSenderConfigMappings, } from './publisher/config.js';
10
+ export const sequencerConfigMappings = {
11
+ transactionPollingIntervalMS: {
12
+ env: 'SEQ_TX_POLLING_INTERVAL_MS',
13
+ description: 'The number of ms to wait between polling for pending txs.',
14
+ ...numberConfigHelper(1000),
15
+ },
16
+ maxTxsPerBlock: {
17
+ env: 'SEQ_MAX_TX_PER_BLOCK',
18
+ description: 'The maximum number of txs to include in a block.',
19
+ ...numberConfigHelper(32),
20
+ },
21
+ minTxsPerBlock: {
22
+ env: 'SEQ_MIN_TX_PER_BLOCK',
23
+ description: 'The minimum number of txs to include in a block.',
24
+ ...numberConfigHelper(1),
25
+ },
26
+ minSecondsBetweenBlocks: {
27
+ env: 'SEQ_MIN_SECONDS_BETWEEN_BLOCKS',
28
+ description: 'The minimum number of seconds in-between consecutive blocks.',
29
+ ...numberConfigHelper(0),
30
+ },
31
+ maxSecondsBetweenBlocks: {
32
+ env: 'SEQ_MAX_SECONDS_BETWEEN_BLOCKS',
33
+ description: 'The maximum number of seconds in-between consecutive blocks. Sequencer will produce a block with less than minTxsPerBlock once this threshold is reached.',
34
+ ...numberConfigHelper(0),
35
+ },
36
+ coinbase: {
37
+ env: 'COINBASE',
38
+ parseEnv: (val) => EthAddress.fromString(val),
39
+ description: 'Recipient of block reward.',
40
+ },
41
+ feeRecipient: {
42
+ env: 'FEE_RECIPIENT',
43
+ parseEnv: (val) => AztecAddress.fromString(val),
44
+ description: 'Address to receive fees.',
45
+ },
46
+ acvmWorkingDirectory: {
47
+ env: 'ACVM_WORKING_DIRECTORY',
48
+ description: 'The working directory to use for simulation/proving',
49
+ },
50
+ acvmBinaryPath: {
51
+ env: 'ACVM_BINARY_PATH',
52
+ description: 'The path to the ACVM binary',
53
+ },
54
+ allowedInSetup: {
55
+ env: 'SEQ_ALLOWED_SETUP_FN',
56
+ parseEnv: (val) => parseSequencerAllowList(val),
57
+ defaultValue: getDefaultAllowedSetupFunctions(),
58
+ description: 'The list of functions calls allowed to run in setup',
59
+ printDefault: () => 'AuthRegistry, FeeJuice.increase_public_balance, Token.increase_public_balance, FPC.prepare_fee',
60
+ },
61
+ allowedInTeardown: {
62
+ env: 'SEQ_ALLOWED_TEARDOWN_FN',
63
+ parseEnv: (val) => parseSequencerAllowList(val),
64
+ defaultValue: getDefaultAllowedTeardownFunctions(),
65
+ description: 'The list of functions calls allowed to run teardown',
66
+ printDefault: () => 'FPC.pay_refund, FPC.pay_refund_with_shielded_rebate',
67
+ },
68
+ maxBlockSizeInBytes: {
69
+ env: 'SEQ_MAX_BLOCK_SIZE_IN_BYTES',
70
+ description: 'Max block size',
71
+ ...numberConfigHelper(1024 * 1024),
72
+ },
73
+ enforceFees: {
74
+ env: 'ENFORCE_FEES',
75
+ description: 'Whether to require every tx to have a fee payer',
76
+ ...booleanConfigHelper(),
77
+ },
78
+ sequencerSkipSubmitProofs: {
79
+ env: 'SEQ_SKIP_SUBMIT_PROOFS',
80
+ description: 'Temporary flag to skip submitting proofs, so a prover-node takes care of it.',
81
+ ...booleanConfigHelper(),
82
+ },
83
+ };
84
+ export const chainConfigMappings = {
85
+ l1ChainId: l1ReaderConfigMappings.l1ChainId,
86
+ version: {
87
+ env: 'VERSION',
88
+ description: 'The version of the rollup.',
89
+ ...numberConfigHelper(1),
90
+ },
91
+ };
92
+ export const sequencerClientConfigMappings = {
93
+ ...sequencerConfigMappings,
94
+ ...getTxSenderConfigMappings('SEQ'),
95
+ ...getPublisherConfigMappings('SEQ'),
96
+ ...l1ReaderConfigMappings,
97
+ ...chainConfigMappings,
98
+ };
9
99
  /**
10
100
  * Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
11
101
  */
12
102
  export function getConfigEnvVars() {
13
- const { VERSION, SEQ_PUBLISH_RETRY_INTERVAL_MS, SEQ_TX_POLLING_INTERVAL_MS, SEQ_MAX_TX_PER_BLOCK, SEQ_MIN_TX_PER_BLOCK, SEQ_ALLOWED_SETUP_FN, SEQ_ALLOWED_TEARDOWN_FN, SEQ_MAX_BLOCK_SIZE_IN_BYTES, SEQ_SKIP_SUBMIT_PROOFS, COINBASE, FEE_RECIPIENT, ACVM_WORKING_DIRECTORY, ACVM_BINARY_PATH, ENFORCE_FEES = '', } = process.env;
14
- return {
15
- enforceFees: ['1', 'true'].includes(ENFORCE_FEES),
16
- version: VERSION ? +VERSION : 1, // 1 is our default version
17
- l1PublishRetryIntervalMS: SEQ_PUBLISH_RETRY_INTERVAL_MS ? +SEQ_PUBLISH_RETRY_INTERVAL_MS : 1000,
18
- transactionPollingIntervalMS: SEQ_TX_POLLING_INTERVAL_MS ? +SEQ_TX_POLLING_INTERVAL_MS : 1000,
19
- maxBlockSizeInBytes: SEQ_MAX_BLOCK_SIZE_IN_BYTES ? +SEQ_MAX_BLOCK_SIZE_IN_BYTES : undefined,
20
- l1Contracts: getL1ContractAddressesFromEnv(),
21
- maxTxsPerBlock: SEQ_MAX_TX_PER_BLOCK ? +SEQ_MAX_TX_PER_BLOCK : 32,
22
- minTxsPerBlock: SEQ_MIN_TX_PER_BLOCK ? +SEQ_MIN_TX_PER_BLOCK : 1,
23
- sequencerSkipSubmitProofs: ['1', 'true'].includes(SEQ_SKIP_SUBMIT_PROOFS ?? ''),
24
- // TODO: undefined should not be allowed for the following 2 values in PROD
25
- coinbase: COINBASE ? EthAddress.fromString(COINBASE) : undefined,
26
- feeRecipient: FEE_RECIPIENT ? AztecAddress.fromString(FEE_RECIPIENT) : undefined,
27
- acvmWorkingDirectory: ACVM_WORKING_DIRECTORY ? ACVM_WORKING_DIRECTORY : undefined,
28
- acvmBinaryPath: ACVM_BINARY_PATH ? ACVM_BINARY_PATH : undefined,
29
- allowedInSetup: SEQ_ALLOWED_SETUP_FN
30
- ? parseSequencerAllowList(SEQ_ALLOWED_SETUP_FN)
31
- : getDefaultAllowedSetupFunctions(),
32
- allowedInTeardown: SEQ_ALLOWED_TEARDOWN_FN
33
- ? parseSequencerAllowList(SEQ_ALLOWED_TEARDOWN_FN)
34
- : getDefaultAllowedTeardownFunctions(),
35
- ...getTxSenderConfigFromEnv('SEQ'),
36
- };
103
+ return getConfigFromMappings(sequencerClientConfigMappings);
37
104
  }
38
105
  /**
39
106
  * Parses a string to a list of allowed elements.
@@ -91,7 +158,7 @@ function getDefaultAllowedSetupFunctions() {
91
158
  },
92
159
  // needed for claiming on the same tx as a spend
93
160
  {
94
- address: GasTokenAddress,
161
+ address: FeeJuiceAddress,
95
162
  selector: FunctionSelector.fromSignature('_increase_public_balance((Field),Field)'),
96
163
  },
97
164
  // needed for private transfers via FPC
@@ -117,4 +184,4 @@ function getDefaultAllowedTeardownFunctions() {
117
184
  },
118
185
  ];
119
186
  }
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBR3RFLE9BQU8sRUFBNkMsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW9CNUc7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE1BQU0sRUFDSixPQUFPLEVBQ1AsNkJBQTZCLEVBQzdCLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLHNCQUFzQixFQUN0QixRQUFRLEVBQ1IsYUFBYSxFQUNiLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsWUFBWSxHQUFHLEVBQUUsR0FDbEIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBRWhCLE9BQU87UUFDTCxXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNqRCxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLDJCQUEyQjtR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
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RHLE9BQU8sRUFBdUIsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RSxPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixrQkFBa0IsR0FDbkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RSxPQUFPLEVBR0wsMEJBQTBCLEVBQzFCLHlCQUF5QixHQUMxQixNQUFNLHVCQUF1QixDQUFDO0FBZ0IvQixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBd0M7SUFDMUUsNEJBQTRCLEVBQUU7UUFDNUIsR0FBRyxFQUFFLDRCQUE0QjtRQUNqQyxXQUFXLEVBQUUsMkRBQTJEO1FBQ3hFLEdBQUcsa0JBQWtCLENBQUMsSUFBSyxDQUFDO0tBQzdCO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsR0FBRyxFQUFFLHNCQUFzQjtRQUMzQixXQUFXLEVBQUUsa0RBQWtEO1FBQy9ELEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDO0tBQzFCO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsR0FBRyxFQUFFLHNCQUFzQjtRQUMzQixXQUFXLEVBQUUsa0RBQWtEO1FBQy9ELEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxD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
@@ -4,11 +4,6 @@ import { Fr } from '@aztec/foundation/fields';
4
4
  * Reads values from L1 state that is used for the global values.
5
5
  */
6
6
  export interface L1GlobalReader {
7
- /**
8
- * Fetches the last timestamp that a block was processed by the contract.
9
- * @returns The last timestamp that a block was processed by the contract.
10
- */
11
- getLastTimestamp(): Promise<bigint>;
12
7
  /**
13
8
  * Fetches the version of the rollup contract.
14
9
  * @returns The version of the rollup contract.
@@ -25,10 +20,21 @@ export interface L1GlobalReader {
25
20
  */
26
21
  getL1CurrentTime(): Promise<bigint>;
27
22
  /**
28
- * Gets the last time L2 was warped as tracked by the rollup contract.
29
- * @returns The warped time.
23
+ * Gets the current slot.
24
+ * @returns The current slot.
25
+ */
26
+ getCurrentSlot(): Promise<bigint>;
27
+ /**
28
+ * Get the slot for a specific timestamp.
29
+ * @param timestamp - The timestamp to get the slot for.
30
+ */
31
+ getSlotAt(timestamp: readonly [bigint]): Promise<bigint>;
32
+ /**
33
+ * Gets the timestamp for a slot
34
+ * @param slot - The slot to get the timestamp for.
35
+ * @returns The timestamp for the slot.
30
36
  */
31
- getLastWarpedBlockTs(): Promise<bigint>;
37
+ getTimestampForSlot(slot: readonly [bigint]): Promise<bigint>;
32
38
  }
33
39
  /**
34
40
  * Builds global variables from L1 state.
@@ -1 +1 @@
1
- {"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAW,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC;;;OAGG;IACH,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,oBAAoB,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACnH;AAED;;;GAGG;AACH,qBAAa,+BAAgC,YAAW,qBAAqB;IAE/D,OAAO,CAAC,QAAQ,CAAC,MAAM;IADnC,OAAO,CAAC,GAAG,CAA4E;gBAC1D,MAAM,EAAE,cAAc;IAEnD;;;;;;OAMG;IACU,oBAAoB,CAC/B,WAAW,EAAE,EAAE,EACf,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,eAAe,CAAC;CA+B5B"}
1
+ {"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,UAAU,EAEf,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzD;;;;OAIG;IACH,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,oBAAoB,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACnH;AAED;;;GAGG;AACH,qBAAa,+BAAgC,YAAW,qBAAqB;IAE/D,OAAO,CAAC,QAAQ,CAAC,MAAM;IADnC,OAAO,CAAC,GAAG,CAA4E;gBAC1D,MAAM,EAAE,cAAc;IAEnD;;;;;;OAMG;IACU,oBAAoB,CAC/B,WAAW,EAAE,EAAE,EACf,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,eAAe,CAAC;CA2B5B"}
@@ -1,4 +1,4 @@
1
- import { GasFees, GlobalVariables } from '@aztec/circuits.js';
1
+ import { ETHEREUM_SLOT_DURATION, GasFees, GlobalVariables, } from '@aztec/circuits.js';
2
2
  import { Fr } from '@aztec/foundation/fields';
3
3
  import { createDebugLogger } from '@aztec/foundation/log';
4
4
  /**
@@ -18,24 +18,18 @@ export class SimpleTestGlobalVariableBuilder {
18
18
  * @returns The global variables for the given block number.
19
19
  */
20
20
  async buildGlobalVariables(blockNumber, coinbase, feeRecipient) {
21
- let lastTimestamp = new Fr(await this.reader.getLastTimestamp());
21
+ // Not just the current slot, the slot of the next block.
22
+ const ts = (await this.reader.getL1CurrentTime()) + BigInt(ETHEREUM_SLOT_DURATION);
23
+ const slot = await this.reader.getSlotAt([ts]);
24
+ const timestamp = await this.reader.getTimestampForSlot([slot]);
25
+ const slotFr = new Fr(slot);
26
+ const timestampFr = new Fr(timestamp);
22
27
  const version = new Fr(await this.reader.getVersion());
23
28
  const chainId = new Fr(await this.reader.getChainId());
24
- // TODO(rahul) - fix #1614. By using the cheatcode warp to modify L2 time,
25
- // txs in the next rollup would have same time as the txs in the current rollup (i.e. the rollup that was warped).
26
- // So, for now you check if L2 time was warped and if so, serve warpedTime + 1 to txs in the new rollup.
27
- // Check if L2 time was warped in the last rollup by checking if current L1 time is same as the warpedTime (stored on the rollup contract).
28
- // more details at https://github.com/AztecProtocol/aztec-packages/issues/1614
29
- const currTimestamp = await this.reader.getL1CurrentTime();
30
- const rollupWarpTime = await this.reader.getLastWarpedBlockTs();
31
- const isLastBlockWarped = rollupWarpTime === currTimestamp;
32
- if (isLastBlockWarped) {
33
- lastTimestamp = new Fr(lastTimestamp.value + 1n);
34
- }
35
29
  const gasFees = GasFees.default();
36
- const globalVariables = new GlobalVariables(chainId, version, blockNumber, lastTimestamp, coinbase, feeRecipient, gasFees);
30
+ const globalVariables = new GlobalVariables(chainId, version, blockNumber, slotFr, timestampFr, coinbase, feeRecipient, gasFees);
37
31
  this.log.debug(`Built global variables for block ${blockNumber}`, globalVariables.toJSON());
38
- return new GlobalVariables(chainId, version, blockNumber, lastTimestamp, coinbase, feeRecipient, gasFees);
32
+ return globalVariables;
39
33
  }
40
34
  }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX2J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIvZ2xvYmFsX2J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBaUQxRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sK0JBQStCO0lBRTFDLFlBQTZCLE1BQXNCO1FBQXRCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBRDNDLFFBQUcsR0FBRyxpQkFBaUIsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFdkQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLG9CQUFvQixDQUMvQixXQUFlLEVBQ2YsUUFBb0IsRUFDcEIsWUFBMEI7UUFFMUIsSUFBSSxhQUFhLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUNqRSxNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN2RCxNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUV2RCwwRUFBMEU7UUFDMUUsa0hBQWtIO1FBQ2xILHdHQUF3RztRQUN4RywySUFBMkk7UUFDM0ksOEVBQThFO1FBRTlFLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNELE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2hFLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxLQUFLLGFBQWEsQ0FBQztRQUMzRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdEIsYUFBYSxHQUFHLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FDekMsT0FBTyxFQUNQLE9BQU8sRUFDUCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFFBQVEsRUFDUixZQUFZLEVBQ1osT0FBTyxDQUNSLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsV0FBVyxFQUFFLEVBQUUsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDNUYsT0FBTyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RyxDQUFDO0NBQ0YifQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX2J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIvZ2xvYmFsX2J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHNCQUFzQixFQUV0QixPQUFPLEVBQ1AsZUFBZSxHQUNoQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXlEMUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLCtCQUErQjtJQUUxQyxZQUE2QixNQUFzQjtRQUF0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUQzQyxRQUFHLEdBQUcsaUJBQWlCLENBQUMscURBQXFELENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRXZEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxvQkFBb0IsQ0FDL0IsV0FBZSxFQUNmLFFBQW9CLEVBQ3BCLFlBQTBCO1FBRTFCLHlEQUF5RDtRQUN6RCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFbkYsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0QyxNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN2RCxNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUV2RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQ3pDLE9BQU8sRUFDUCxPQUFPLEVBQ1AsV0FBVyxFQUNYLE1BQU0sRUFDTixXQUFXLEVBQ1gsUUFBUSxFQUNSLFlBQVksRUFDWixPQUFPLENBQ1IsQ0FBQztRQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxXQUFXLEVBQUUsRUFBRSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM1RixPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0NBQ0YifQ==
@@ -1,12 +1,11 @@
1
- import { type GlobalReaderConfig } from './config.js';
1
+ import { type L1ReaderConfig } from '@aztec/ethereum';
2
2
  import { type GlobalVariableBuilder } from './global_builder.js';
3
3
  export { SimpleTestGlobalVariableBuilder as SimpleGlobalVariableBuilder } from './global_builder.js';
4
- export { GlobalReaderConfig } from './config.js';
5
4
  export { GlobalVariableBuilder } from './global_builder.js';
6
5
  /**
7
6
  * Returns a new instance of the global variable builder.
8
7
  * @param config - Configuration to initialize the builder.
9
8
  * @returns A new instance of the global variable builder.
10
9
  */
11
- export declare function getGlobalVariableBuilder(config: GlobalReaderConfig): GlobalVariableBuilder;
10
+ export declare function getGlobalVariableBuilder(config: L1ReaderConfig): GlobalVariableBuilder;
12
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,qBAAqB,EAAmC,MAAM,qBAAqB,CAAC;AAGlG,OAAO,EAAE,+BAA+B,IAAI,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,qBAAqB,CAE1F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,KAAK,qBAAqB,EAAmC,MAAM,qBAAqB,CAAC;AAGlG,OAAO,EAAE,+BAA+B,IAAI,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,qBAAqB,CAEtF"}
@@ -9,4 +9,4 @@ export { SimpleTestGlobalVariableBuilder as SimpleGlobalVariableBuilder } from '
9
9
  export function getGlobalVariableBuilder(config) {
10
10
  return new SimpleTestGlobalVariableBuilder(new ViemReader(config));
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUE4QiwrQkFBK0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsK0JBQStCLElBQUksMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUlyRzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLE1BQTBCO0lBQ2pFLE9BQU8sSUFBSSwrQkFBK0IsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUMifQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUE4QiwrQkFBK0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsK0JBQStCLElBQUksMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLE1BQXNCO0lBQzdELE9BQU8sSUFBSSwrQkFBK0IsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUMifQ==
@@ -1,4 +1,4 @@
1
- import { type GlobalReaderConfig } from './config.js';
1
+ import { type L1ReaderConfig } from '@aztec/ethereum';
2
2
  import { type L1GlobalReader } from './global_builder.js';
3
3
  /**
4
4
  * Reads values from L1 state using viem.
@@ -6,11 +6,12 @@ import { type L1GlobalReader } from './global_builder.js';
6
6
  export declare class ViemReader implements L1GlobalReader {
7
7
  private rollupContract;
8
8
  private publicClient;
9
- constructor(config: GlobalReaderConfig);
10
- getLastTimestamp(): Promise<bigint>;
9
+ constructor(config: L1ReaderConfig);
11
10
  getVersion(): Promise<bigint>;
12
11
  getChainId(): Promise<bigint>;
13
12
  getL1CurrentTime(): Promise<bigint>;
14
- getLastWarpedBlockTs(): Promise<bigint>;
13
+ getCurrentSlot(): Promise<bigint>;
14
+ getSlotAt(timestamp: readonly [bigint]): Promise<bigint>;
15
+ getTimestampForSlot(slot: readonly [bigint]): Promise<bigint>;
15
16
  }
16
17
  //# sourceMappingURL=viem-reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"viem-reader.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/viem-reader.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C,OAAO,CAAC,cAAc,CAAqF;IAC3G,OAAO,CAAC,YAAY,CAA4C;gBAEpD,MAAM,EAAE,kBAAkB;IAiBzB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;CAGrD"}
1
+ {"version":3,"file":"viem-reader.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/viem-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,iBAAiB,CAAC;AAc3E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C,OAAO,CAAC,cAAc,CAAqF;IAC3G,OAAO,CAAC,YAAY,CAA4C;gBAEpD,MAAM,EAAE,cAAc;IAiBrB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxD,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAG3E"}
@@ -6,8 +6,8 @@ import { createPublicClient, getAddress, getContract, http, } from 'viem';
6
6
  */
7
7
  export class ViemReader {
8
8
  constructor(config) {
9
- const { rpcUrl, l1ChainId: chainId, l1Contracts } = config;
10
- const chain = createEthereumChain(rpcUrl, chainId);
9
+ const { l1RpcUrl, l1ChainId: chainId, l1Contracts } = config;
10
+ const chain = createEthereumChain(l1RpcUrl, chainId);
11
11
  this.publicClient = createPublicClient({
12
12
  chain: chain.chainInfo,
13
13
  transport: http(chain.rpcUrl),
@@ -18,9 +18,6 @@ export class ViemReader {
18
18
  client: this.publicClient,
19
19
  });
20
20
  }
21
- async getLastTimestamp() {
22
- return BigInt(await this.rollupContract.read.lastBlockTs());
23
- }
24
21
  async getVersion() {
25
22
  return BigInt(await this.rollupContract.read.VERSION());
26
23
  }
@@ -30,8 +27,14 @@ export class ViemReader {
30
27
  async getL1CurrentTime() {
31
28
  return await Promise.resolve((await this.publicClient.getBlock()).timestamp);
32
29
  }
33
- async getLastWarpedBlockTs() {
34
- return BigInt(await this.rollupContract.read.lastWarpedBlockTs());
30
+ async getCurrentSlot() {
31
+ return BigInt(await this.rollupContract.read.getCurrentSlot());
32
+ }
33
+ async getSlotAt(timestamp) {
34
+ return BigInt(await this.rollupContract.read.getSlotAt(timestamp));
35
+ }
36
+ async getTimestampForSlot(slot) {
37
+ return BigInt(await this.rollupContract.read.getTimestampForSlot(slot));
35
38
  }
36
39
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmllbS1yZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIvdmllbS1yZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFJTCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFdBQVcsRUFDWCxJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFNZDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBSXJCLFlBQVksTUFBMEI7UUFDcEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUUzRCxNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztZQUNyQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDdEIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1NBQzlCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO1lBQ2hDLE9BQU8sRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6RCxHQUFHLEVBQUUsU0FBUztZQUNkLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQjtRQUMzQixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVU7UUFDckIsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0I7UUFDM0IsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQjtRQUMvQixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0YifQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmllbS1yZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIvdmllbS1yZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBSUwsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixXQUFXLEVBQ1gsSUFBSSxHQUNMLE1BQU0sTUFBTSxDQUFDO0FBS2Q7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUlyQixZQUFZLE1BQXNCO1FBQ2hDLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFN0QsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxZQUFZLEdBQUcsa0JBQWtCLENBQUM7WUFDckMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQ3RCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUM5QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztZQUNoQyxPQUFPLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekQsR0FBRyxFQUFFLFNBQVM7WUFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVU7UUFDckIsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0I7UUFDM0IsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWM7UUFDekIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQTRCO1FBQ2pELE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUF1QjtRQUN0RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGIn0=
package/dest/index.d.ts CHANGED
@@ -2,5 +2,7 @@ export * from './client/index.js';
2
2
  export * from './config.js';
3
3
  export * from './publisher/index.js';
4
4
  export * from './sequencer/index.js';
5
+ export * from './tx_validator/aggregate_tx_validator.js';
6
+ export * from './tx_validator/data_validator.js';
5
7
  export * from './global_variable_builder/index.js';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AAGjD,cAAc,oCAAoC,CAAC"}
package/dest/index.js CHANGED
@@ -2,6 +2,8 @@ export * from './client/index.js';
2
2
  export * from './config.js';
3
3
  export * from './publisher/index.js';
4
4
  export * from './sequencer/index.js';
5
+ export * from './tx_validator/aggregate_tx_validator.js';
6
+ export * from './tx_validator/data_validator.js';
5
7
  // Used by the node to simulate public parts of transactions. Should these be moved to a shared library?
6
8
  export * from './global_variable_builder/index.js';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsd0dBQXdHO0FBQ3hHLGNBQWMsb0NBQW9DLENBQUMifQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELHdHQUF3RztBQUN4RyxjQUFjLG9DQUFvQyxDQUFDIn0=
@@ -1,29 +1,18 @@
1
- import { type L1ContractAddresses } from '@aztec/ethereum';
1
+ import { type L1ReaderConfig } from '@aztec/ethereum';
2
+ import { type ConfigMappingsType } from '@aztec/foundation/config';
2
3
  /**
3
4
  * The configuration of the rollup transaction publisher.
4
5
  */
5
- export interface TxSenderConfig {
6
+ export type TxSenderConfig = L1ReaderConfig & {
6
7
  /**
7
8
  * The private key to be used by the publisher.
8
9
  */
9
10
  publisherPrivateKey: `0x${string}`;
10
- /**
11
- * The RPC Url of the ethereum host.
12
- */
13
- rpcUrl: string;
14
- /**
15
- * The chain ID of the ethereum host.
16
- */
17
- l1ChainId: number;
18
11
  /**
19
12
  * The number of confirmations required.
20
13
  */
21
14
  requiredConfirmations: number;
22
- /**
23
- * The deployed l1 contract addresses
24
- */
25
- l1Contracts: L1ContractAddresses;
26
- }
15
+ };
27
16
  /**
28
17
  * Configuration of the L1Publisher.
29
18
  */
@@ -33,5 +22,8 @@ export interface PublisherConfig {
33
22
  */
34
23
  l1PublishRetryIntervalMS: number;
35
24
  }
25
+ export declare const getTxSenderConfigMappings: (scope: 'PROVER' | 'SEQ') => ConfigMappingsType<Omit<TxSenderConfig, 'l1Contracts'>>;
36
26
  export declare function getTxSenderConfigFromEnv(scope: 'PROVER' | 'SEQ'): Omit<TxSenderConfig, 'l1Contracts'>;
27
+ export declare const getPublisherConfigMappings: (scope: 'PROVER' | 'SEQ') => ConfigMappingsType<PublisherConfig>;
28
+ export declare function getPublisherConfigFromEnv(scope: 'PROVER' | 'SEQ'): PublisherConfig;
37
29
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAY,MAAM,iBAAiB,CAAC;AAIrE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,mBAAmB,EAAE,KAAK,MAAM,EAAE,CAAC;IAEnC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAcrG"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAY,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,KAAK,kBAAkB,EAAyB,MAAM,0BAA0B,CAAC;AAE1F;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C;;OAEG;IACH,mBAAmB,EAAE,KAAK,MAAM,EAAE,CAAC;IAEnC;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,eAAO,MAAM,yBAAyB,EAAE,CACtC,KAAK,EAAE,QAAQ,GAAG,KAAK,KACpB,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAuBzD,CAAC;AAEH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAErG;AAED,eAAO,MAAM,0BAA0B,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,KAAK,kBAAkB,CAAC,eAAe,CAOtG,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,eAAe,CAElF"}
@@ -1,14 +1,41 @@
1
1
  import { NULL_KEY } from '@aztec/ethereum';
2
+ import { getConfigFromMappings } from '@aztec/foundation/config';
3
+ export const getTxSenderConfigMappings = (scope) => ({
4
+ l1RpcUrl: {
5
+ env: 'ETHEREUM_HOST',
6
+ description: 'The RPC Url of the ethereum host.',
7
+ },
8
+ l1ChainId: {
9
+ env: 'L1_CHAIN_ID',
10
+ parseEnv: (val) => +val,
11
+ defaultValue: 31337,
12
+ description: 'The chain ID of the ethereum host.',
13
+ },
14
+ publisherPrivateKey: {
15
+ env: `${scope}_PUBLISHER_PRIVATE_KEY`,
16
+ description: 'The private key to be used by the publisher.',
17
+ parseEnv: (val) => (val ? `0x${val.replace('0x', '')}` : NULL_KEY),
18
+ defaultValue: NULL_KEY,
19
+ },
20
+ requiredConfirmations: {
21
+ env: `${scope}_REQUIRED_CONFIRMATIONS`,
22
+ parseEnv: (val) => +val,
23
+ defaultValue: 1,
24
+ description: 'The number of confirmations required.',
25
+ },
26
+ });
2
27
  export function getTxSenderConfigFromEnv(scope) {
3
- const { ETHEREUM_HOST, L1_CHAIN_ID } = process.env;
4
- const PUBLISHER_PRIVATE_KEY = process.env[`${scope}_PUBLISHER_PRIVATE_KEY`];
5
- const REQUIRED_CONFIRMATIONS = process.env[`${scope}_REQUIRED_CONFIRMATIONS`];
6
- const publisherPrivateKey = PUBLISHER_PRIVATE_KEY ? `0x${PUBLISHER_PRIVATE_KEY.replace('0x', '')}` : NULL_KEY;
7
- return {
8
- rpcUrl: ETHEREUM_HOST ? ETHEREUM_HOST : '',
9
- requiredConfirmations: REQUIRED_CONFIRMATIONS ? +REQUIRED_CONFIRMATIONS : 1,
10
- publisherPrivateKey,
11
- l1ChainId: L1_CHAIN_ID ? +L1_CHAIN_ID : 31337,
12
- };
28
+ return getConfigFromMappings(getTxSenderConfigMappings(scope));
13
29
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0QixRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQTRDckUsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQXVCO0lBQzlELE1BQU0sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUVuRCxNQUFNLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLHdCQUF3QixDQUFDLENBQUM7SUFDNUUsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyx5QkFBeUIsQ0FBQyxDQUFDO0lBRTlFLE1BQU0sbUJBQW1CLEdBQVEscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEtBQUsscUJBQXFCLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFbkgsT0FBTztRQUNMLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMxQyxxQkFBcUIsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxtQkFBbUI7UUFDbkIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUs7S0FDOUMsQ0FBQztBQUNKLENBQUMifQ==
30
+ export const getPublisherConfigMappings = scope => ({
31
+ l1PublishRetryIntervalMS: {
32
+ env: `${scope}_PUBLISH_RETRY_INTERVAL_MS`,
33
+ parseEnv: (val) => +val,
34
+ defaultValue: 1000,
35
+ description: 'The interval to wait between publish retries.',
36
+ },
37
+ });
38
+ export function getPublisherConfigFromEnv(scope) {
39
+ return getConfigFromMappings(getPublisherConfigMappings(scope));
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQTJCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUEyQjFGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUV5QixDQUFDLEtBQXVCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0YsUUFBUSxFQUFFO1FBQ1IsR0FBRyxFQUFFLGVBQWU7UUFDcEIsV0FBVyxFQUFFLG1DQUFtQztLQUNqRDtJQUNELFNBQVMsRUFBRTtRQUNULEdBQUcsRUFBRSxhQUFhO1FBQ2xCLFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHO1FBQy9CLFlBQVksRUFBRSxLQUFLO1FBQ25CLFdBQVcsRUFBRSxvQ0FBb0M7S0FDbEQ7SUFDRCxtQkFBbUIsRUFBRTtRQUNuQixHQUFHLEVBQUUsR0FBRyxLQUFLLHdCQUF3QjtRQUNyQyxXQUFXLEVBQUUsOENBQThDO1FBQzNELFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQzFFLFlBQVksRUFBRSxRQUFRO0tBQ3ZCO0lBQ0QscUJBQXFCLEVBQUU7UUFDckIsR0FBRyxFQUFFLEdBQUcsS0FBSyx5QkFBeUI7UUFDdEMsUUFBUSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUc7UUFDL0IsWUFBWSxFQUFFLENBQUM7UUFDZixXQUFXLEVBQUUsdUNBQXVDO0tBQ3JEO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQXVCO0lBQzlELE9BQU8scUJBQXFCLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwSCx3QkFBd0IsRUFBRTtRQUN4QixHQUFHLEVBQUUsR0FBRyxLQUFLLDRCQUE0QjtRQUN6QyxRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRztRQUMvQixZQUFZLEVBQUUsSUFBSTtRQUNsQixXQUFXLEVBQUUsK0NBQStDO0tBQzdEO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEtBQXVCO0lBQy9ELE9BQU8scUJBQXFCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDIn0=
@@ -1,10 +1,11 @@
1
+ import { type TelemetryClient } from '@aztec/telemetry-client';
1
2
  import { type PublisherConfig, type TxSenderConfig } from './config.js';
2
3
  import { L1Publisher } from './l1-publisher.js';
3
4
  export { L1Publisher } from './l1-publisher.js';
4
- export { PublisherConfig, TxSenderConfig, getTxSenderConfigFromEnv } from './config.js';
5
+ export * from './config.js';
5
6
  /**
6
7
  * Returns a new instance of the L1Publisher.
7
8
  * @param config - Configuration to initialize the new instance.
8
9
  */
9
- export declare function getL1Publisher(config: PublisherConfig & TxSenderConfig): L1Publisher;
10
+ export declare function getL1Publisher(config: PublisherConfig & TxSenderConfig, client: TelemetryClient): L1Publisher;
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/publisher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAExF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,GAAG,WAAW,CAEpF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/publisher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,cAAc,aAAa,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,WAAW,CAE7G"}