@aztec/ethereum 0.0.1-commit.f2ce05ee → 0.0.1-commit.f5a9928

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 (181) hide show
  1. package/dest/client.d.ts +27 -3
  2. package/dest/client.d.ts.map +1 -1
  3. package/dest/client.js +63 -8
  4. package/dest/config.d.ts +17 -6
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +38 -10
  7. package/dest/contracts/chain_state_override.d.ts +78 -0
  8. package/dest/contracts/chain_state_override.d.ts.map +1 -0
  9. package/dest/contracts/chain_state_override.js +137 -0
  10. package/dest/contracts/fee_asset_price_oracle.d.ts +105 -0
  11. package/dest/contracts/fee_asset_price_oracle.d.ts.map +1 -0
  12. package/dest/contracts/fee_asset_price_oracle.js +656 -0
  13. package/dest/contracts/governance.d.ts +135 -35
  14. package/dest/contracts/governance.d.ts.map +1 -1
  15. package/dest/contracts/governance.js +229 -18
  16. package/dest/contracts/governance_proposer.d.ts +33 -2
  17. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  18. package/dest/contracts/governance_proposer.js +54 -6
  19. package/dest/contracts/gse.d.ts +4 -2
  20. package/dest/contracts/gse.d.ts.map +1 -1
  21. package/dest/contracts/gse.js +2 -2
  22. package/dest/contracts/inbox.d.ts +3 -3
  23. package/dest/contracts/inbox.d.ts.map +1 -1
  24. package/dest/contracts/inbox.js +12 -7
  25. package/dest/contracts/index.d.ts +4 -3
  26. package/dest/contracts/index.d.ts.map +1 -1
  27. package/dest/contracts/index.js +3 -2
  28. package/dest/contracts/multicall.d.ts +127 -12
  29. package/dest/contracts/multicall.d.ts.map +1 -1
  30. package/dest/contracts/multicall.js +201 -94
  31. package/dest/contracts/outbox.d.ts +27 -4
  32. package/dest/contracts/outbox.d.ts.map +1 -1
  33. package/dest/contracts/outbox.js +34 -7
  34. package/dest/contracts/registry.d.ts +3 -1
  35. package/dest/contracts/registry.d.ts.map +1 -1
  36. package/dest/contracts/registry.js +30 -1
  37. package/dest/contracts/rollup.d.ts +5437 -34
  38. package/dest/contracts/rollup.d.ts.map +1 -1
  39. package/dest/contracts/rollup.js +448 -104
  40. package/dest/contracts/slashing_proposer.d.ts +171 -0
  41. package/dest/contracts/slashing_proposer.d.ts.map +1 -0
  42. package/dest/contracts/slashing_proposer.js +753 -0
  43. package/dest/contracts/watch_event.d.ts +36 -0
  44. package/dest/contracts/watch_event.d.ts.map +1 -0
  45. package/dest/contracts/watch_event.js +66 -0
  46. package/dest/deploy_aztec_l1_contracts.d.ts +5 -9
  47. package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -1
  48. package/dest/deploy_aztec_l1_contracts.js +48 -27
  49. package/dest/deploy_l1_contract.js +3 -3
  50. package/dest/foundry_binary.d.ts +13 -0
  51. package/dest/foundry_binary.d.ts.map +1 -0
  52. package/dest/foundry_binary.js +52 -0
  53. package/dest/generated/l1-contracts-defaults.d.ts +3 -3
  54. package/dest/generated/l1-contracts-defaults.js +3 -3
  55. package/dest/l1_artifacts.d.ts +15524 -15847
  56. package/dest/l1_artifacts.d.ts.map +1 -1
  57. package/dest/l1_artifacts.js +9 -24
  58. package/dest/l1_contract_addresses.d.ts +61 -65
  59. package/dest/l1_contract_addresses.d.ts.map +1 -1
  60. package/dest/l1_contract_addresses.js +101 -82
  61. package/dest/l1_reader.d.ts +5 -5
  62. package/dest/l1_reader.d.ts.map +1 -1
  63. package/dest/l1_reader.js +9 -7
  64. package/dest/l1_tx_utils/config.d.ts +7 -1
  65. package/dest/l1_tx_utils/config.d.ts.map +1 -1
  66. package/dest/l1_tx_utils/config.js +17 -4
  67. package/dest/l1_tx_utils/factory.d.ts +18 -10
  68. package/dest/l1_tx_utils/factory.d.ts.map +1 -1
  69. package/dest/l1_tx_utils/factory.js +17 -7
  70. package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +1 -1
  71. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +1 -1
  72. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +15 -15
  73. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -1
  74. package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +9 -15
  75. package/dest/l1_tx_utils/index-blobs.d.ts +3 -3
  76. package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -1
  77. package/dest/l1_tx_utils/index-blobs.js +2 -2
  78. package/dest/l1_tx_utils/index.d.ts +2 -1
  79. package/dest/l1_tx_utils/index.d.ts.map +1 -1
  80. package/dest/l1_tx_utils/index.js +1 -0
  81. package/dest/l1_tx_utils/l1_tx_utils.d.ts +26 -7
  82. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
  83. package/dest/l1_tx_utils/l1_tx_utils.js +156 -79
  84. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +1 -1
  85. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -1
  86. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +57 -23
  87. package/dest/l1_tx_utils/tx_delayer.d.ts +58 -0
  88. package/dest/l1_tx_utils/tx_delayer.d.ts.map +1 -0
  89. package/dest/{test → l1_tx_utils}/tx_delayer.js +67 -37
  90. package/dest/publisher_manager.d.ts +34 -8
  91. package/dest/publisher_manager.d.ts.map +1 -1
  92. package/dest/publisher_manager.js +119 -8
  93. package/dest/queries.d.ts +13 -2
  94. package/dest/queries.d.ts.map +1 -1
  95. package/dest/queries.js +62 -3
  96. package/dest/test/blob_kzg_warmup.d.ts +19 -0
  97. package/dest/test/blob_kzg_warmup.d.ts.map +1 -0
  98. package/dest/test/blob_kzg_warmup.js +64 -0
  99. package/dest/test/chain_monitor.d.ts +55 -4
  100. package/dest/test/chain_monitor.d.ts.map +1 -1
  101. package/dest/test/chain_monitor.js +104 -3
  102. package/dest/test/eth_cheat_codes.d.ts +31 -6
  103. package/dest/test/eth_cheat_codes.d.ts.map +1 -1
  104. package/dest/test/eth_cheat_codes.js +67 -44
  105. package/dest/test/index.d.ts +2 -3
  106. package/dest/test/index.d.ts.map +1 -1
  107. package/dest/test/index.js +1 -2
  108. package/dest/test/recording_rpc_server.d.ts +18 -0
  109. package/dest/test/recording_rpc_server.d.ts.map +1 -0
  110. package/dest/test/recording_rpc_server.js +68 -0
  111. package/dest/test/rollup_cheat_codes.d.ts +60 -3
  112. package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
  113. package/dest/test/rollup_cheat_codes.js +86 -7
  114. package/dest/test/start_anvil.d.ts +23 -3
  115. package/dest/test/start_anvil.d.ts.map +1 -1
  116. package/dest/test/start_anvil.js +182 -32
  117. package/dest/test/upgrade_utils.js +2 -2
  118. package/dest/utils.d.ts +9 -2
  119. package/dest/utils.d.ts.map +1 -1
  120. package/dest/utils.js +59 -24
  121. package/package.json +6 -8
  122. package/src/client.ts +72 -2
  123. package/src/config.ts +58 -14
  124. package/src/contracts/chain_state_override.ts +200 -0
  125. package/src/contracts/fee_asset_price_oracle.ts +285 -0
  126. package/src/contracts/governance.ts +313 -13
  127. package/src/contracts/governance_proposer.ts +58 -9
  128. package/src/contracts/gse.ts +7 -2
  129. package/src/contracts/inbox.ts +13 -5
  130. package/src/contracts/index.ts +3 -2
  131. package/src/contracts/multicall.ts +243 -105
  132. package/src/contracts/outbox.ts +42 -8
  133. package/src/contracts/registry.ts +31 -1
  134. package/src/contracts/rollup.ts +507 -109
  135. package/src/contracts/{tally_slashing_proposer.ts → slashing_proposer.ts} +119 -45
  136. package/src/contracts/watch_event.ts +110 -0
  137. package/src/deploy_aztec_l1_contracts.ts +75 -39
  138. package/src/deploy_l1_contract.ts +3 -3
  139. package/src/foundry_binary.ts +57 -0
  140. package/src/generated/l1-contracts-defaults.ts +3 -3
  141. package/src/l1_artifacts.ts +12 -35
  142. package/src/l1_contract_addresses.ts +120 -94
  143. package/src/l1_reader.ts +17 -10
  144. package/src/l1_tx_utils/config.ts +23 -3
  145. package/src/l1_tx_utils/factory.ts +31 -31
  146. package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +1 -1
  147. package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +1 -1
  148. package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +43 -54
  149. package/src/l1_tx_utils/index-blobs.ts +2 -2
  150. package/src/l1_tx_utils/index.ts +1 -0
  151. package/src/l1_tx_utils/l1_tx_utils.ts +149 -64
  152. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +57 -17
  153. package/src/{test → l1_tx_utils}/tx_delayer.ts +93 -56
  154. package/src/publisher_manager.ts +143 -12
  155. package/src/queries.ts +70 -4
  156. package/src/test/blob_kzg_warmup.ts +65 -0
  157. package/src/test/chain_monitor.ts +148 -3
  158. package/src/test/eth_cheat_codes.ts +63 -47
  159. package/src/test/index.ts +1 -2
  160. package/src/test/recording_rpc_server.ts +69 -0
  161. package/src/test/rollup_cheat_codes.ts +115 -6
  162. package/src/test/start_anvil.ts +212 -32
  163. package/src/test/upgrade_utils.ts +2 -2
  164. package/src/utils.ts +56 -29
  165. package/dest/contracts/empire_slashing_proposer.d.ts +0 -67
  166. package/dest/contracts/empire_slashing_proposer.d.ts.map +0 -1
  167. package/dest/contracts/empire_slashing_proposer.js +0 -207
  168. package/dest/contracts/tally_slashing_proposer.d.ts +0 -140
  169. package/dest/contracts/tally_slashing_proposer.d.ts.map +0 -1
  170. package/dest/contracts/tally_slashing_proposer.js +0 -320
  171. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +0 -26
  172. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +0 -1
  173. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.js +0 -26
  174. package/dest/test/delayed_tx_utils.d.ts +0 -13
  175. package/dest/test/delayed_tx_utils.d.ts.map +0 -1
  176. package/dest/test/delayed_tx_utils.js +0 -28
  177. package/dest/test/tx_delayer.d.ts +0 -36
  178. package/dest/test/tx_delayer.d.ts.map +0 -1
  179. package/src/contracts/empire_slashing_proposer.ts +0 -259
  180. package/src/l1_tx_utils/l1_tx_utils_with_blobs.ts +0 -77
  181. package/src/test/delayed_tx_utils.ts +0 -52
@@ -12,49 +12,149 @@ export declare enum ProposalState {
12
12
  Executable = 3,
13
13
  Rejected = 4,
14
14
  Executed = 5,
15
- Dropped = 6,
16
- Expired = 7
15
+ Droppable = 6,
16
+ Dropped = 7,
17
+ Expired = 8
17
18
  }
19
+ /**
20
+ * Outcome of {@link ReadOnlyGovernanceContract.getPayloadProposalStatus} for a queried payload.
21
+ * - `'live'`: a proposal referencing the payload is still progressing (Pending/Active/Queued/
22
+ * Executable) or is `Droppable`, so signalling for it again is redundant or premature.
23
+ * - `'executed'`: no live proposal references the payload, but one was already executed within the
24
+ * bounded lookback (or a prior sweep observed the execution and memoized it).
25
+ * - `'none'`: no live or executed proposal references the payload within the bounded lookback.
26
+ */
27
+ export type PayloadProposalStatus = 'live' | 'executed' | 'none';
28
+ /** Vote tallies on a single proposal. Both fields are mutated by `Governance.vote`. */
29
+ export interface Ballot {
30
+ yea: bigint;
31
+ nay: bigint;
32
+ }
33
+ /**
34
+ * Snapshot of the timing/quorum parameters that govern a single proposal's lifecycle. Each proposal
35
+ * stores its own copy at creation time (see `_propose` in Governance.sol), so this snapshot is
36
+ * immutable for the lifetime of the proposal even if the global `Configuration` changes later.
37
+ */
38
+ export interface ProposalConfiguration {
39
+ votingDelay: bigint;
40
+ votingDuration: bigint;
41
+ executionDelay: bigint;
42
+ gracePeriod: bigint;
43
+ quorum: bigint;
44
+ requiredYeaMargin: bigint;
45
+ minimumVotes: bigint;
46
+ }
47
+ /** Parameters for `Governance.proposeWithLock`. Stored only in the global Configuration, never on a proposal. */
48
+ export interface ProposeWithLockConfiguration {
49
+ lockDelay: bigint;
50
+ lockAmount: bigint;
51
+ }
52
+ /**
53
+ * Live, mutable governance configuration. `proposeConfig` is the lock configuration used by
54
+ * `proposeWithLock`; the remaining fields are the same shape as `ProposalConfiguration` and are
55
+ * snapshotted onto each new proposal at creation time.
56
+ */
57
+ export interface GovernanceConfiguration extends ProposalConfiguration {
58
+ proposeConfig: ProposeWithLockConfiguration;
59
+ }
60
+ /**
61
+ * A governance proposal augmented with its live (computed) state.
62
+ *
63
+ * Mutability:
64
+ * - `config`, `payload`, `proposer`, `creation` are immutable for the lifetime of the proposal.
65
+ * - `cachedState` is the raw value stored on-chain. It is only written when a proposal is explicitly
66
+ * executed or dropped, so for time-derived terminal states (Rejected, Expired) it remains at the
67
+ * value that was current when the proposal was created.
68
+ * - `state` is the computed state returned by `Governance.getProposalState`. This is the value
69
+ * callers almost always want -- it reflects time-derived transitions that `cachedState` does not.
70
+ * - `summedBallot` is mutated by every `Governance.vote` call while the proposal is Active.
71
+ *
72
+ * Once `state` is in a terminal phase (`Executed`/`Rejected`/`Dropped`/`Expired`) the entire struct
73
+ * is provably immutable on-chain (no further votes can be cast and no state-mutating call to
74
+ * `execute`/`dropProposal` can succeed), and the wrapper memoizes it.
75
+ */
76
+ export interface Proposal {
77
+ config: ProposalConfiguration;
78
+ cachedState: ProposalState;
79
+ state: ProposalState;
80
+ payload: EthAddress;
81
+ proposer: EthAddress;
82
+ creation: bigint;
83
+ summedBallot: Ballot;
84
+ }
85
+ export declare const MAX_PROPOSAL_LIFETIME_SECONDS: bigint;
18
86
  export declare function extractProposalIdFromLogs(logs: Log[]): bigint;
19
87
  export declare class ReadOnlyGovernanceContract {
20
88
  readonly client: ViemClient;
21
89
  protected readonly governanceContract: GetContractReturnType<typeof GovernanceAbi, ViemClient>;
90
+ /**
91
+ * Cache of fully-resolved proposals keyed by id. We populate this lazily and only retain entries
92
+ * whose state is provably terminal -- once `cachedState` is `Executed` or `Dropped` the on-chain
93
+ * proposal struct is frozen and safe to memoize indefinitely. Other state transitions (e.g.
94
+ * Pending -> Active, or accumulating votes) leave the cache untouched and force a fresh fetch.
95
+ */
96
+ private readonly proposalCache;
97
+ /**
98
+ * Cache of `IProposerPayload.getOriginalPayload()` results keyed by wrapper address. The wrapper
99
+ * contract's bytecode is immutable, so this mapping never changes -- a value of `undefined`
100
+ * encodes a proposal whose payload doesn't implement `getOriginalPayload` (e.g. proposeWithLock
101
+ * proposals) and should be treated as "no original".
102
+ */
103
+ private readonly originalPayloadCache;
104
+ /**
105
+ * Payloads (lowercased hex) observed as the subject of an `Executed` Governance proposal. Execution
106
+ * is immutable on-chain, so this verdict never expires within a process. It restores the
107
+ * `'executed'` classification for payloads whose executed proposal has since aged past the bounded
108
+ * lookback below. Lost on restart, at which point the bounded-lookback limitation applies again.
109
+ */
110
+ private readonly executedPayloads;
22
111
  constructor(address: Hex, client: ViemClient);
23
112
  get address(): EthAddress;
24
113
  getGovernanceProposerAddress(): Promise<EthAddress>;
25
- getConfiguration(): Promise<{
26
- executionDelay: bigint;
27
- gracePeriod: bigint;
28
- minimumVotes: bigint;
29
- proposeConfig: {
30
- lockAmount: bigint;
31
- lockDelay: bigint;
32
- };
33
- quorum: bigint;
34
- requiredYeaMargin: bigint;
35
- votingDelay: bigint;
36
- votingDuration: bigint;
37
- }>;
38
- getProposal(proposalId: bigint): Promise<{
39
- cachedState: number;
40
- config: {
41
- executionDelay: bigint;
42
- gracePeriod: bigint;
43
- minimumVotes: bigint;
44
- quorum: bigint;
45
- requiredYeaMargin: bigint;
46
- votingDelay: bigint;
47
- votingDuration: bigint;
48
- };
49
- creation: bigint;
50
- payload: `0x${string}`;
51
- proposer: `0x${string}`;
52
- summedBallot: {
53
- nay: bigint;
54
- yea: bigint;
55
- };
56
- }>;
114
+ getConfiguration(): Promise<GovernanceConfiguration>;
115
+ /**
116
+ * Fetches a proposal by id together with its live state, returning the mapped {@link Proposal}
117
+ * type. Issues `getProposal` and `getProposalState` in parallel so the result carries both the
118
+ * raw stored `cachedState` and the time-derived `state` -- callers can use whichever they need
119
+ * without an extra round-trip.
120
+ *
121
+ * Backed by an in-memory cache that retains entries only when `state` is in one of the four
122
+ * terminal phases (`Executed` / `Rejected` / `Dropped` / `Expired`). At that point the entire
123
+ * proposal struct is provably immutable on-chain (no further votes can be cast and no
124
+ * state-mutating call can succeed), so caching is safe forever. Non-terminal states force a
125
+ * fresh fetch on every call so callers always see fresh `state` and `summedBallot` values.
126
+ */
127
+ getProposal(proposalId: bigint): Promise<Proposal>;
128
+ /**
129
+ * Returns the live state of a proposal as computed by `Governance.getProposalState`. Prefer
130
+ * {@link getProposal} when you also need any other proposal data -- it returns this same value
131
+ * via {@link Proposal.state} alongside the rest of the struct in a single round-trip.
132
+ */
57
133
  getProposalState(proposalId: bigint): Promise<ProposalState>;
134
+ getProposalCount(): Promise<bigint>;
135
+ /**
136
+ * Classifies the given original payload against the Governance proposal history. Distinguishes a
137
+ * payload that is still the subject of a live proposal (`'live'`) from one whose proposal was
138
+ * already executed (`'executed'`) from one that has no relevant proposal (`'none'`), so callers can
139
+ * stop re-signalling an executed payload while still re-signalling one whose proposal was merely
140
+ * rejected/dropped/expired (each GovernanceProposer round is independent and there is no
141
+ * payload-level uniqueness check on-chain).
142
+ *
143
+ * A proposal matches the payload either directly (its stored `payload` equals the target, as for
144
+ * `proposeWithLock` proposals) or via its `GSEPayload` wrapper unwrapping to the target. `'live'`
145
+ * (including `Droppable`) takes precedence over `'executed'`, so a payload re-submitted while a
146
+ * prior execution is still in the lookback window reads as `'live'`.
147
+ *
148
+ * Implemented as a bounded view-call sweep over `Governance.proposals` rather than an event scan,
149
+ * because `eth_getLogs` over the full deployment history of a long-lived rollup exceeds typical
150
+ * RPC block-range caps. The number of proposals (`proposalCount`) is small in practice, and we
151
+ * walk newest -> oldest with a hard early-stop on the protocol-wide proposal lifetime cap. This
152
+ * makes the `'executed'` verdict a *bounded lookback* rather than permanent suppression: a proposal
153
+ * executed longer ago than the lifetime cap is only reported once it has been observed and
154
+ * memoized in-process (memo is lost on restart).
155
+ */
156
+ getPayloadProposalStatus(payload: Hex): Promise<PayloadProposalStatus>;
157
+ private getOriginalPayload;
58
158
  awaitProposalActive({ proposalId, logger }: {
59
159
  proposalId: bigint;
60
160
  logger: Logger;
@@ -89,4 +189,4 @@ export declare class GovernanceContract extends ReadOnlyGovernanceContract {
89
189
  logger: Logger;
90
190
  }): Promise<void>;
91
191
  }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9nb3Zlcm5hbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbEUsT0FBTyxFQUVMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUNSLEtBQUssR0FBRyxFQUlULE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsS0FBSyx3QkFBd0IsRUFBRSxLQUFLLFVBQVUsRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFFL0YsTUFBTSxNQUFNLDZCQUE2QixHQUFHLElBQUksQ0FDOUMsbUJBQW1CLEVBQ25CLG1CQUFtQixHQUFHLGVBQWUsR0FBRyxpQkFBaUIsR0FBRywyQkFBMkIsQ0FDeEYsQ0FBQztBQUdGLG9CQUFZLGFBQWE7SUFDdkIsT0FBTyxJQUFBO0lBQ1AsTUFBTSxJQUFBO0lBQ04sTUFBTSxJQUFBO0lBQ04sVUFBVSxJQUFBO0lBQ1YsUUFBUSxJQUFBO0lBQ1IsUUFBUSxJQUFBO0lBQ1IsT0FBTyxJQUFBO0lBQ1AsT0FBTyxJQUFBO0NBQ1I7QUFFRCx3QkFBZ0IseUJBQXlCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FXN0Q7QUFFRCxxQkFBYSwwQkFBMEI7YUFLbkIsTUFBTSxFQUFFLFVBQVU7SUFKcEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUUvRixZQUNFLE9BQU8sRUFBRSxHQUFHLEVBQ0ksTUFBTSxFQUFFLFVBQVUsRUFHbkM7SUFFRCxJQUFXLE9BQU8sZUFFakI7SUFFWSw0QkFBNEIsd0JBRXhDO0lBRU0sZ0JBQWdCOzs7Ozs7Ozs7Ozs7T0FFdEI7SUFFTSxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUVwQztJQUVZLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQU94RTtJQUVZLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQztRQUFDLE1BQU0sRUFBRSxNQUFNLENBQUE7S0FBRSxpQkFvQjlGO0lBRVksdUJBQXVCLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDO1FBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQTtLQUFFLGlCQXlCbEc7Q0FDRjtBQUVELHFCQUFhLGtCQUFtQixTQUFRLDBCQUEwQjthQUtyQyxNQUFNLEVBQUUsd0JBQXdCO0lBSjNELG1CQUE0QixrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLGFBQWEsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBRXRILFlBQ0UsT0FBTyxFQUFFLEdBQUcsR0FBRyxVQUFVLEVBQ0EsTUFBTSxFQUFFLHdCQUF3QixFQVUxRDtJQUVZLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUduRDtJQUVZLGVBQWUsQ0FBQyxFQUMzQixjQUFjLEVBQ2QsZUFBZSxFQUNoQixFQUFFO1FBQ0QsY0FBYyxFQUFFLEdBQUcsQ0FBQztRQUNwQixlQUFlLEVBQUUsR0FBRyxDQUFDO0tBQ3RCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQU9sQjtJQUVZLFFBQVEsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBR3ZDO0lBRUQsb0dBQW9HO0lBQ3ZGLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUlwRTtJQUVZLElBQUksQ0FBQyxFQUNoQixVQUFVLEVBQ1YsVUFBVSxFQUNWLE9BQU8sRUFDUCxPQUFZLEVBQ1osTUFBTSxFQUNQLEVBQUU7UUFDRCxVQUFVLEVBQUUsTUFBTSxDQUFDO1FBQ25CLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQy9CLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDakIsT0FBTyxFQUFFLE1BQU0sQ0FBQztRQUNoQixNQUFNLEVBQUUsTUFBTSxDQUFDO0tBQ2hCLGlCQWdEQTtJQUVZLGVBQWUsQ0FBQyxFQUMzQixVQUFVLEVBQ1YsT0FBWSxFQUNaLE1BQU0sRUFDUCxFQUFFO1FBQ0QsVUFBVSxFQUFFLE1BQU0sQ0FBQztRQUNuQixPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQ2hCLE1BQU0sRUFBRSxNQUFNLENBQUM7S0FDaEIsaUJBMENBO0NBQ0YifQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9nb3Zlcm5hbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbEUsT0FBTyxFQUVMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUNSLEtBQUssR0FBRyxFQUlULE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsS0FBSyx3QkFBd0IsRUFBRSxLQUFLLFVBQVUsRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFpQi9GLE1BQU0sTUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQzlDLG1CQUFtQixFQUNuQixtQkFBbUIsR0FBRyxlQUFlLEdBQUcsaUJBQWlCLEdBQUcsMkJBQTJCLENBQ3hGLENBQUM7QUFHRixvQkFBWSxhQUFhO0lBQ3ZCLE9BQU8sSUFBQTtJQUNQLE1BQU0sSUFBQTtJQUNOLE1BQU0sSUFBQTtJQUNOLFVBQVUsSUFBQTtJQUNWLFFBQVEsSUFBQTtJQUNSLFFBQVEsSUFBQTtJQUNSLFNBQVMsSUFBQTtJQUNULE9BQU8sSUFBQTtJQUNQLE9BQU8sSUFBQTtDQUNSO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sTUFBTSxxQkFBcUIsR0FBRyxNQUFNLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUVqRSx1RkFBdUY7QUFDdkYsTUFBTSxXQUFXLE1BQU07SUFDckIsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUNaLEdBQUcsRUFBRSxNQUFNLENBQUM7Q0FDYjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFdB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
@@ -1 +1 @@
1
- {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/contracts/governance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/contracts/governance.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,27 @@ import { EthAddress } from '@aztec/foundation/eth-address';
2
2
  import { sleep } from '@aztec/foundation/sleep';
3
3
  import { GovernanceAbi } from '@aztec/l1-artifacts/GovernanceAbi';
4
4
  import { encodeFunctionData, getContract, parseEventLogs } from 'viem';
5
- import { createL1TxUtilsFromViemWallet } from '../l1_tx_utils/index.js';
5
+ import { createL1TxUtils } from '../l1_tx_utils/index.js';
6
6
  import { isExtendedClient } from '../types.js';
7
- // NOTE: Must be kept in sync with DataStructures.ProposalState in l1-contracts
7
+ // Minimal ABI for IProposerPayload (`l1-contracts/src/governance/interfaces/IProposerPayload.sol`).
8
+ // The GovernanceProposer wraps every original payload in a GSEPayload before submitting it to
9
+ // Governance, so `Proposal.payload` on the Governance contract is the wrapper address rather than
10
+ // the original. We only need `getOriginalPayload` to recover the underlying payload, so we inline
11
+ // the ABI here instead of generating a full artifact.
12
+ const ProposerPayloadAbi = [
13
+ {
14
+ type: 'function',
15
+ name: 'getOriginalPayload',
16
+ inputs: [],
17
+ outputs: [
18
+ {
19
+ type: 'address'
20
+ }
21
+ ],
22
+ stateMutability: 'view'
23
+ }
24
+ ];
25
+ // NOTE: Must be kept in sync with IGovernance.ProposalState in l1-contracts
8
26
  export var ProposalState = /*#__PURE__*/ function(ProposalState) {
9
27
  ProposalState[ProposalState["Pending"] = 0] = "Pending";
10
28
  ProposalState[ProposalState["Active"] = 1] = "Active";
@@ -12,10 +30,46 @@ export var ProposalState = /*#__PURE__*/ function(ProposalState) {
12
30
  ProposalState[ProposalState["Executable"] = 3] = "Executable";
13
31
  ProposalState[ProposalState["Rejected"] = 4] = "Rejected";
14
32
  ProposalState[ProposalState["Executed"] = 5] = "Executed";
15
- ProposalState[ProposalState["Dropped"] = 6] = "Dropped";
16
- ProposalState[ProposalState["Expired"] = 7] = "Expired";
33
+ ProposalState[ProposalState["Droppable"] = 6] = "Droppable";
34
+ ProposalState[ProposalState["Dropped"] = 7] = "Dropped";
35
+ ProposalState[ProposalState["Expired"] = 8] = "Expired";
17
36
  return ProposalState;
18
37
  }({});
38
+ /** Set of `ProposalState` values for which a proposal is fully immutable on-chain. */ const TERMINAL_PROPOSAL_STATES = new Set([
39
+ 5,
40
+ 4,
41
+ 7,
42
+ 8
43
+ ]);
44
+ // Set of `ProposalState` values in which a proposal is still progressing towards execution.
45
+ // `Droppable` is deliberately excluded: it is neither live (it cannot progress on its own) nor
46
+ // terminal (it can resume its lifecycle if the governanceProposer is restored), so it is handled
47
+ // separately and is never memoized as immutable.
48
+ const LIVE_PROPOSAL_STATES = new Set([
49
+ 0,
50
+ 1,
51
+ 2,
52
+ 3
53
+ ]);
54
+ // Hard upper bound on the wall-clock lifetime of any Governance proposal, in seconds.
55
+ // Each proposal stores its own snapshot of `ProposalConfiguration` at creation time and progresses
56
+ // through Pending -> Active -> Queued -> Executable using those frozen durations
57
+ // (see `ProposalLib.{pendingThrough,activeThrough,queuedThrough,executableThrough}`). Each of those
58
+ // four durations is bounded by `ConfigurationLib.TIME_UPPER = 90 days` (validated in
59
+ // `ConfigurationLib.assertValid`), so no proposal can be live for more than 4 * 90 days regardless
60
+ // of what config it was created under. Once past this point, the proposal is guaranteed to be in a
61
+ // terminal state (Executed / Rejected / Dropped / Expired).
62
+ export const MAX_PROPOSAL_LIFETIME_SECONDS = 4n * 90n * 24n * 3600n;
63
+ /**
64
+ * Validates a number returned by an on-chain `ProposalState` enum field and narrows it to the
65
+ * `ProposalState` enum. Throws if the value is out of range.
66
+ */ function asProposalState(raw) {
67
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
68
+ if (raw < 0 || raw > 8) {
69
+ throw new Error(`Invalid proposal state: ${raw}`);
70
+ }
71
+ return raw;
72
+ }
19
73
  export function extractProposalIdFromLogs(logs) {
20
74
  const parsedLogs = parseEventLogs({
21
75
  abi: GovernanceAbi,
@@ -30,8 +84,29 @@ export function extractProposalIdFromLogs(logs) {
30
84
  export class ReadOnlyGovernanceContract {
31
85
  client;
32
86
  governanceContract;
87
+ /**
88
+ * Cache of fully-resolved proposals keyed by id. We populate this lazily and only retain entries
89
+ * whose state is provably terminal -- once `cachedState` is `Executed` or `Dropped` the on-chain
90
+ * proposal struct is frozen and safe to memoize indefinitely. Other state transitions (e.g.
91
+ * Pending -> Active, or accumulating votes) leave the cache untouched and force a fresh fetch.
92
+ */ proposalCache;
93
+ /**
94
+ * Cache of `IProposerPayload.getOriginalPayload()` results keyed by wrapper address. The wrapper
95
+ * contract's bytecode is immutable, so this mapping never changes -- a value of `undefined`
96
+ * encodes a proposal whose payload doesn't implement `getOriginalPayload` (e.g. proposeWithLock
97
+ * proposals) and should be treated as "no original".
98
+ */ originalPayloadCache;
99
+ /**
100
+ * Payloads (lowercased hex) observed as the subject of an `Executed` Governance proposal. Execution
101
+ * is immutable on-chain, so this verdict never expires within a process. It restores the
102
+ * `'executed'` classification for payloads whose executed proposal has since aged past the bounded
103
+ * lookback below. Lost on restart, at which point the bounded-lookback limitation applies again.
104
+ */ executedPayloads;
33
105
  constructor(address, client){
34
106
  this.client = client;
107
+ this.proposalCache = new Map();
108
+ this.originalPayloadCache = new Map();
109
+ this.executedPayloads = new Set();
35
110
  this.governanceContract = getContract({
36
111
  address,
37
112
  abi: GovernanceAbi,
@@ -44,23 +119,159 @@ export class ReadOnlyGovernanceContract {
44
119
  async getGovernanceProposerAddress() {
45
120
  return EthAddress.fromString(await this.governanceContract.read.governanceProposer());
46
121
  }
47
- getConfiguration() {
48
- return this.governanceContract.read.getConfiguration();
122
+ async getConfiguration() {
123
+ const raw = await this.governanceContract.read.getConfiguration();
124
+ return {
125
+ proposeConfig: {
126
+ lockDelay: raw.proposeConfig.lockDelay,
127
+ lockAmount: raw.proposeConfig.lockAmount
128
+ },
129
+ votingDelay: raw.votingDelay,
130
+ votingDuration: raw.votingDuration,
131
+ executionDelay: raw.executionDelay,
132
+ gracePeriod: raw.gracePeriod,
133
+ quorum: raw.quorum,
134
+ requiredYeaMargin: raw.requiredYeaMargin,
135
+ minimumVotes: raw.minimumVotes
136
+ };
49
137
  }
50
- getProposal(proposalId) {
51
- return this.governanceContract.read.getProposal([
52
- proposalId
138
+ /**
139
+ * Fetches a proposal by id together with its live state, returning the mapped {@link Proposal}
140
+ * type. Issues `getProposal` and `getProposalState` in parallel so the result carries both the
141
+ * raw stored `cachedState` and the time-derived `state` -- callers can use whichever they need
142
+ * without an extra round-trip.
143
+ *
144
+ * Backed by an in-memory cache that retains entries only when `state` is in one of the four
145
+ * terminal phases (`Executed` / `Rejected` / `Dropped` / `Expired`). At that point the entire
146
+ * proposal struct is provably immutable on-chain (no further votes can be cast and no
147
+ * state-mutating call can succeed), so caching is safe forever. Non-terminal states force a
148
+ * fresh fetch on every call so callers always see fresh `state` and `summedBallot` values.
149
+ */ async getProposal(proposalId) {
150
+ const cached = this.proposalCache.get(proposalId);
151
+ if (cached !== undefined) {
152
+ return cached;
153
+ }
154
+ const [raw, rawState] = await Promise.all([
155
+ this.governanceContract.read.getProposal([
156
+ proposalId
157
+ ]),
158
+ this.governanceContract.read.getProposalState([
159
+ proposalId
160
+ ])
53
161
  ]);
162
+ const proposal = {
163
+ config: {
164
+ votingDelay: raw.config.votingDelay,
165
+ votingDuration: raw.config.votingDuration,
166
+ executionDelay: raw.config.executionDelay,
167
+ gracePeriod: raw.config.gracePeriod,
168
+ quorum: raw.config.quorum,
169
+ requiredYeaMargin: raw.config.requiredYeaMargin,
170
+ minimumVotes: raw.config.minimumVotes
171
+ },
172
+ cachedState: asProposalState(raw.cachedState),
173
+ state: asProposalState(rawState),
174
+ payload: EthAddress.fromString(raw.payload),
175
+ proposer: EthAddress.fromString(raw.proposer),
176
+ creation: raw.creation,
177
+ summedBallot: {
178
+ yea: raw.summedBallot.yea,
179
+ nay: raw.summedBallot.nay
180
+ }
181
+ };
182
+ if (TERMINAL_PROPOSAL_STATES.has(proposal.state)) {
183
+ this.proposalCache.set(proposalId, proposal);
184
+ }
185
+ return proposal;
54
186
  }
55
- async getProposalState(proposalId) {
56
- const state = await this.governanceContract.read.getProposalState([
187
+ /**
188
+ * Returns the live state of a proposal as computed by `Governance.getProposalState`. Prefer
189
+ * {@link getProposal} when you also need any other proposal data -- it returns this same value
190
+ * via {@link Proposal.state} alongside the rest of the struct in a single round-trip.
191
+ */ async getProposalState(proposalId) {
192
+ return asProposalState(await this.governanceContract.read.getProposalState([
57
193
  proposalId
58
- ]);
59
- // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
60
- if (state < 0 || state > 7) {
61
- throw new Error(`Invalid proposal state: ${state}`);
194
+ ]));
195
+ }
196
+ getProposalCount() {
197
+ return this.governanceContract.read.proposalCount();
198
+ }
199
+ /**
200
+ * Classifies the given original payload against the Governance proposal history. Distinguishes a
201
+ * payload that is still the subject of a live proposal (`'live'`) from one whose proposal was
202
+ * already executed (`'executed'`) from one that has no relevant proposal (`'none'`), so callers can
203
+ * stop re-signalling an executed payload while still re-signalling one whose proposal was merely
204
+ * rejected/dropped/expired (each GovernanceProposer round is independent and there is no
205
+ * payload-level uniqueness check on-chain).
206
+ *
207
+ * A proposal matches the payload either directly (its stored `payload` equals the target, as for
208
+ * `proposeWithLock` proposals) or via its `GSEPayload` wrapper unwrapping to the target. `'live'`
209
+ * (including `Droppable`) takes precedence over `'executed'`, so a payload re-submitted while a
210
+ * prior execution is still in the lookback window reads as `'live'`.
211
+ *
212
+ * Implemented as a bounded view-call sweep over `Governance.proposals` rather than an event scan,
213
+ * because `eth_getLogs` over the full deployment history of a long-lived rollup exceeds typical
214
+ * RPC block-range caps. The number of proposals (`proposalCount`) is small in practice, and we
215
+ * walk newest -> oldest with a hard early-stop on the protocol-wide proposal lifetime cap. This
216
+ * makes the `'executed'` verdict a *bounded lookback* rather than permanent suppression: a proposal
217
+ * executed longer ago than the lifetime cap is only reported once it has been observed and
218
+ * memoized in-process (memo is lost on restart).
219
+ */ async getPayloadProposalStatus(payload) {
220
+ const target = payload.toLowerCase();
221
+ const proposalCount = await this.getProposalCount();
222
+ if (proposalCount === 0n) {
223
+ return this.executedPayloads.has(target) ? 'executed' : 'none';
224
+ }
225
+ // Anything created before this cutoff is guaranteed terminal regardless of its frozen config.
226
+ const block = await this.client.getBlock();
227
+ const hardCutoff = block.timestamp - MAX_PROPOSAL_LIFETIME_SECONDS;
228
+ // Proposals are append-only with monotonically non-decreasing creation timestamps, so iterating
229
+ // from newest -> oldest lets us early-stop as soon as we cross the lifetime cutoff.
230
+ for(let id = proposalCount - 1n; id >= 0n; id--){
231
+ const proposal = await this.getProposal(id);
232
+ // Hard early-stop: every older proposal is also older than the cutoff and therefore terminal.
233
+ if (proposal.creation < hardCutoff) {
234
+ break;
235
+ }
236
+ const proposalPayload = proposal.payload.toString().toLowerCase();
237
+ const original = await this.getOriginalPayload(proposal.payload);
238
+ const matches = proposalPayload === target || original !== undefined && original.toLowerCase() === target;
239
+ if (!matches) {
240
+ continue;
241
+ }
242
+ // A live or Droppable proposal blocks re-signalling and wins over any executed one.
243
+ if (LIVE_PROPOSAL_STATES.has(proposal.state) || proposal.state === 6) {
244
+ return 'live';
245
+ }
246
+ if (proposal.state === 5) {
247
+ this.executedPayloads.add(target);
248
+ }
249
+ // Rejected/Dropped/Expired proposals allow re-proposing the same payload; keep scanning.
250
+ }
251
+ return this.executedPayloads.has(target) ? 'executed' : 'none';
252
+ }
253
+ /**
254
+ * Resolves the original payload behind a `GSEPayload` wrapper. Returns `undefined` if the
255
+ * wrapper does not implement `IProposerPayload.getOriginalPayload` (e.g. proposals created via
256
+ * `Governance.proposeWithLock`, which bypass GSEPayload entirely and store the raw `IPayload`
257
+ * directly). Results are memoized indefinitely because deployed wrapper bytecode is immutable.
258
+ */ async getOriginalPayload(wrapper) {
259
+ const key = wrapper.toString();
260
+ if (this.originalPayloadCache.has(key)) {
261
+ return this.originalPayloadCache.get(key);
262
+ }
263
+ let original;
264
+ try {
265
+ original = await this.client.readContract({
266
+ address: key,
267
+ abi: ProposerPayloadAbi,
268
+ functionName: 'getOriginalPayload'
269
+ });
270
+ } catch {
271
+ original = undefined;
62
272
  }
63
- return state;
273
+ this.originalPayloadCache.set(key, original);
274
+ return original;
64
275
  }
65
276
  async awaitProposalActive({ proposalId, logger }) {
66
277
  const state = await this.getProposalState(proposalId);
@@ -164,7 +375,7 @@ export class GovernanceContract extends ReadOnlyGovernanceContract {
164
375
  ]);
165
376
  }
166
377
  async vote({ proposalId, voteAmount, inFavor, retries = 10, logger }) {
167
- const l1TxUtils = createL1TxUtilsFromViemWallet(this.client, {
378
+ const l1TxUtils = createL1TxUtils(this.client, {
168
379
  logger
169
380
  });
170
381
  const retryDelaySeconds = 12;
@@ -214,7 +425,7 @@ export class GovernanceContract extends ReadOnlyGovernanceContract {
214
425
  logger.info(`Proposal [${proposalId}] has summedBallot nay [${proposal.summedBallot.nay}]`);
215
426
  }
216
427
  async executeProposal({ proposalId, retries = 10, logger }) {
217
- const l1TxUtils = createL1TxUtilsFromViemWallet(this.client, {
428
+ const l1TxUtils = createL1TxUtils(this.client, {
218
429
  logger
219
430
  });
220
431
  const retryDelaySeconds = 12;
@@ -4,16 +4,23 @@ import { type Hex, type TransactionReceipt, type TypedDataDefinition } from 'vie
4
4
  import type { L1TxRequest, L1TxUtils } from '../l1_tx_utils/index.js';
5
5
  import type { ViemClient } from '../types.js';
6
6
  import { type IEmpireBase } from './empire_base.js';
7
+ import { type PayloadProposalStatus, ReadOnlyGovernanceContract } from './governance.js';
7
8
  export declare class GovernanceProposerContract implements IEmpireBase {
8
9
  readonly client: ViemClient;
9
10
  private readonly proposer;
11
+ /**
12
+ * Cache of bytecode-existence checks keyed by payload address. The check is stable for a
13
+ * contract's lifetime -- a contract either has code or it does not, and code cannot be removed
14
+ * after deployment (selfdestruct aside, which is not relevant here). Safe to memoize
15
+ * indefinitely for the lifetime of this instance.
16
+ */
17
+ private readonly emptyPayloadCache;
10
18
  constructor(client: ViemClient, address: Hex | EthAddress);
11
19
  get address(): EthAddress;
12
20
  getRollupAddress(): Promise<EthAddress>;
13
21
  getRegistryAddress(): Promise<EthAddress>;
14
22
  getQuorumSize(): Promise<bigint>;
15
23
  getRoundSize(): Promise<bigint>;
16
- getInstance(): Promise<`0x${string}`>;
17
24
  computeRound(slot: SlotNumber): Promise<bigint>;
18
25
  getRoundInfo(rollupAddress: Hex, round: bigint): Promise<{
19
26
  lastSignalSlot: SlotNumber;
@@ -24,9 +31,33 @@ export declare class GovernanceProposerContract implements IEmpireBase {
24
31
  getPayloadSignals(rollupAddress: Hex, round: bigint, payload: Hex): Promise<bigint>;
25
32
  createSignalRequest(payload: Hex): L1TxRequest;
26
33
  createSignalRequestWithSignature(payload: Hex, slot: SlotNumber, chainId: number, signerAddress: Hex, signer: (msg: TypedDataDefinition) => Promise<Hex>): Promise<L1TxRequest>;
34
+ /**
35
+ * Resolves the Governance contract this proposer submits winners to. Lazily reads
36
+ * `GovernanceProposer.getGovernance()` (which itself looks the address up via the registry) and
37
+ * memoizes the resulting wrapper.
38
+ */
39
+ getGovernance(): Promise<ReadOnlyGovernanceContract>;
40
+ /**
41
+ * Classifies the given original payload against the Governance proposal history (`'live'` /
42
+ * `'executed'` / `'none'`). Delegates to `ReadOnlyGovernanceContract.getPayloadProposalStatus`,
43
+ * which implements the actual sweep against the Governance contract -- this method exists only as
44
+ * a convenience wrapper so callers that already hold a GovernanceProposer reference don't have to
45
+ * resolve the Governance address themselves.
46
+ */
47
+ getPayloadProposalStatus(payload: Hex): Promise<PayloadProposalStatus>;
48
+ /**
49
+ * Returns true if the given payload address has no deployed bytecode. Used as a cheap
50
+ * pre-flight check before casting a governance signal — voting for a zero-code address
51
+ * is unrecoverable.
52
+ *
53
+ * We only cache the `false` result (address has bytecode). The `true` result is NOT
54
+ * cached because a CREATE2-redeployed address could go from empty to populated, and
55
+ * caching `true` would make us keep skipping a payload that later becomes valid.
56
+ */
57
+ isPayloadEmpty(payload: EthAddress): Promise<boolean>;
27
58
  submitRoundWinner(round: bigint, l1TxUtils: L1TxUtils): Promise<{
28
59
  receipt: TransactionReceipt;
29
60
  proposalId: bigint;
30
61
  }>;
31
62
  }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZV9wcm9wb3Nlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9nb3Zlcm5hbmNlX3Byb3Bvc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUVMLEtBQUssR0FBRyxFQUNSLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssbUJBQW1CLEVBR3pCLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQThELE1BQU0sa0JBQWtCLENBQUM7QUFHaEgscUJBQWEsMEJBQTJCLFlBQVcsV0FBVzthQUkxQyxNQUFNLEVBQUUsVUFBVTtJQUhwQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBa0U7SUFFM0YsWUFDa0IsTUFBTSxFQUFFLFVBQVUsRUFDbEMsT0FBTyxFQUFFLEdBQUcsR0FBRyxVQUFVLEVBTTFCO0lBRUQsSUFBVyxPQUFPLGVBRWpCO0lBRVksZ0JBQWdCLHdCQUU1QjtJQUdZLGtCQUFrQix3QkFFOUI7SUFFTSxhQUFhLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUV0QztJQUVNLFlBQVksSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRXJDO0lBRU0sV0FBVywyQkFFakI7SUFFTSxZQUFZLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBRXJEO0lBRVksWUFBWSxDQUN2QixhQUFhLEVBQUUsR0FBRyxFQUNsQixLQUFLLEVBQUUsTUFBTSxHQUNaLE9BQU8sQ0FBQztRQUFFLGNBQWMsRUFBRSxVQUFVLENBQUM7UUFBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUM7UUFBQyxhQUFhLEVBQUUsT0FBTyxDQUFDO1FBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQTtLQUFFLENBQUMsQ0FZakg7SUFFTSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBRXpGO0lBRU0sbUJBQW1CLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxXQUFXLENBTXBEO0lBRVksZ0NBQWdDLENBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQ1osSUFBSSxFQUFFLFVBQVUsRUFDaEIsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsR0FBRyxFQUNsQixNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEtBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUNqRCxPQUFPLENBQUMsV0FBVyxDQUFDLENBY3RCO0lBRVksaUJBQWlCLENBQzVCLEtBQUssRUFBRSxNQUFNLEVBQ2IsU0FBUyxFQUFFLFNBQVMsR0FDbkIsT0FBTyxDQUFDO1FBQ1QsT0FBTyxFQUFFLGtCQUFrQixDQUFDO1FBQzVCLFVBQVUsRUFBRSxNQUFNLENBQUM7S0FDcEIsQ0FBQyxDQVlEO0NBQ0YifQ==
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZV9wcm9wb3Nlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9nb3Zlcm5hbmNlX3Byb3Bvc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUVMLEtBQUssR0FBRyxFQUNSLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssbUJBQW1CLEVBR3pCLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQThELE1BQU0sa0JBQWtCLENBQUM7QUFDaEgsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQUUsMEJBQTBCLEVBQTZCLE1BQU0saUJBQWlCLENBQUM7QUFFcEgscUJBQWEsMEJBQTJCLFlBQVcsV0FBVzthQVkxQyxNQUFNLEVBQUUsVUFBVTtJQVhwQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBa0U7SUFFM0Y7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFnQztJQUVsRSxZQUNrQixNQUFNLEVBQUUsVUFBVSxFQUNsQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFVBQVUsRUFNMUI7SUFFRCxJQUFXLE9BQU8sSUFBSSxVQUFVLENBRS9CO0lBRVksZ0JBQWdCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUVuRDtJQUdZLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FFckQ7SUFFTSxhQUFhLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUV0QztJQUVNLFlBQVksSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRXJDO0lBRU0sWUFBWSxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUVyRDtJQUVZLFlBQVksQ0FDdkIsYUFBYSxFQUFFLEdBQUcsRUFDbEIsS0FBSyxFQUFFLE1BQU0sR0FDWixPQUFPLENBQUM7UUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDO1FBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDO1FBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUFDLFFBQVEsRUFBRSxPQUFPLENBQUE7S0FBRSxDQUFDLENBWWpIO0lBRU0saUJBQWlCLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUV6RjtJQUVNLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsV0FBVyxDQU1wRDtJQUVZLGdDQUFnQyxDQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUNaLElBQUksRUFBRSxVQUFVLEVBQ2hCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsYUFBYSxFQUFFLEdBQUcsRUFDbEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLG1CQUFtQixLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FDakQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQWN0QjtJQUVEOzs7O09BSUc7SUFFVSxhQUFhLElBQUksT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBR2hFO0lBRUQ7Ozs7OztPQU1HO0lBQ1Usd0JBQXdCLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FHbEY7SUFFRDs7Ozs7Ozs7T0FRRztJQUNVLGNBQWMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FXakU7SUFFWSxpQkFBaUIsQ0FDNUIsS0FBSyxFQUFFLE1BQU0sRUFDYixTQUFTLEVBQUUsU0FBUyxHQUNuQixPQUFPLENBQUM7UUFDVCxPQUFPLEVBQUUsa0JBQWtCLENBQUM7UUFDNUIsVUFBVSxFQUFFLE1BQU0sQ0FBQztLQUNwQixDQUFDLENBWUQ7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"governance_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/governance_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAGzB,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAA8D,MAAM,kBAAkB,CAAC;AAGhH,qBAAa,0BAA2B,YAAW,WAAW;aAI1C,MAAM,EAAE,UAAU;IAHpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkE;IAE3F,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAM1B;IAED,IAAW,OAAO,eAEjB;IAEY,gBAAgB,wBAE5B;IAGY,kBAAkB,wBAE9B;IAEM,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAEtC;IAEM,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAErC;IAEM,WAAW,2BAEjB;IAEM,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAErD;IAEY,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,cAAc,EAAE,UAAU,CAAC;QAAC,sBAAsB,EAAE,GAAG,CAAC;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAYjH;IAEM,iBAAiB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzF;IAEM,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW,CAMpD;IAEY,gCAAgC,CAC3C,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,GACjD,OAAO,CAAC,WAAW,CAAC,CActB;IAEY,iBAAiB,CAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;QACT,OAAO,EAAE,kBAAkB,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAYD;CACF"}
1
+ {"version":3,"file":"governance_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/governance_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAGzB,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAA8D,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,KAAK,qBAAqB,EAAE,0BAA0B,EAA6B,MAAM,iBAAiB,CAAC;AAEpH,qBAAa,0BAA2B,YAAW,WAAW;aAY1C,MAAM,EAAE,UAAU;IAXpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkE;IAE3F;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAElE,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAM1B;IAED,IAAW,OAAO,IAAI,UAAU,CAE/B;IAEY,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAEnD;IAGY,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC,CAErD;IAEM,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAEtC;IAEM,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAErC;IAEM,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAErD;IAEY,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,cAAc,EAAE,UAAU,CAAC;QAAC,sBAAsB,EAAE,GAAG,CAAC;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAYjH;IAEM,iBAAiB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzF;IAEM,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW,CAMpD;IAEY,gCAAgC,CAC3C,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,GACjD,OAAO,CAAC,WAAW,CAAC,CActB;IAED;;;;OAIG;IAEU,aAAa,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAGhE;IAED;;;;;;OAMG;IACU,wBAAwB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAGlF;IAED;;;;;;;;OAQG;IACU,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAWjE;IAEY,iBAAiB,CAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;QACT,OAAO,EAAE,kBAAkB,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAYD;CACF"}