@aztec/ethereum 0.0.0-test.1 → 0.0.1-commit.017a351
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.
- package/dest/account.d.ts +2 -0
- package/dest/account.d.ts.map +1 -0
- package/dest/account.js +4 -0
- package/dest/chain.d.ts +1 -1
- package/dest/client.d.ts +28 -4
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +73 -3
- package/dest/config.d.ts +70 -23
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +151 -34
- package/dest/constants.d.ts +1 -1
- package/dest/contracts/chain_state_override.d.ts +78 -0
- package/dest/contracts/chain_state_override.d.ts.map +1 -0
- package/dest/contracts/chain_state_override.js +137 -0
- package/dest/contracts/empire_base.d.ts +25 -8
- package/dest/contracts/empire_base.d.ts.map +1 -1
- package/dest/contracts/empire_base.js +75 -2
- package/dest/contracts/errors.d.ts +7 -0
- package/dest/contracts/errors.d.ts.map +1 -0
- package/dest/contracts/errors.js +12 -0
- package/dest/contracts/fee_asset_handler.d.ts +20 -0
- package/dest/contracts/fee_asset_handler.d.ts.map +1 -0
- package/dest/contracts/fee_asset_handler.js +59 -0
- package/dest/contracts/fee_asset_price_oracle.d.ts +105 -0
- package/dest/contracts/fee_asset_price_oracle.d.ts.map +1 -0
- package/dest/contracts/fee_asset_price_oracle.js +656 -0
- package/dest/contracts/fee_juice.d.ts +6 -7
- package/dest/contracts/fee_juice.d.ts.map +1 -1
- package/dest/contracts/fee_juice.js +27 -20
- package/dest/contracts/governance.d.ts +131 -43
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +281 -87
- package/dest/contracts/governance_proposer.d.ts +49 -13
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +483 -26
- package/dest/contracts/gse.d.ts +32 -0
- package/dest/contracts/gse.d.ts.map +1 -0
- package/dest/contracts/gse.js +72 -0
- package/dest/contracts/inbox.d.ts +47 -0
- package/dest/contracts/inbox.d.ts.map +1 -0
- package/dest/contracts/inbox.js +85 -0
- package/dest/contracts/index.d.ts +11 -2
- package/dest/contracts/index.d.ts.map +1 -1
- package/dest/contracts/index.js +10 -1
- package/dest/contracts/log.d.ts +13 -0
- package/dest/contracts/log.d.ts.map +1 -0
- package/dest/contracts/log.js +1 -0
- package/dest/contracts/multicall.d.ts +136 -0
- package/dest/contracts/multicall.d.ts.map +1 -0
- package/dest/contracts/multicall.js +264 -0
- package/dest/contracts/outbox.d.ts +64 -0
- package/dest/contracts/outbox.d.ts.map +1 -0
- package/dest/contracts/outbox.js +113 -0
- package/dest/contracts/registry.d.ts +12 -5
- package/dest/contracts/registry.d.ts.map +1 -1
- package/dest/contracts/registry.js +74 -17
- package/dest/contracts/rollup.d.ts +5526 -52
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +1446 -118
- package/dest/contracts/slasher_contract.d.ts +44 -0
- package/dest/contracts/slasher_contract.d.ts.map +1 -0
- package/dest/contracts/slasher_contract.js +75 -0
- package/dest/contracts/slashing_proposer.d.ts +133 -15
- package/dest/contracts/slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/slashing_proposer.js +293 -22
- package/dest/contracts/utils.d.ts +3 -0
- package/dest/contracts/utils.d.ts.map +1 -0
- package/dest/contracts/utils.js +11 -0
- package/dest/deploy_aztec_l1_contracts.d.ts +256 -0
- package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -0
- package/dest/deploy_aztec_l1_contracts.js +411 -0
- package/dest/deploy_l1_contract.d.ts +68 -0
- package/dest/deploy_l1_contract.d.ts.map +1 -0
- package/dest/deploy_l1_contract.js +312 -0
- package/dest/eth-signer/eth-signer.d.ts +21 -0
- package/dest/eth-signer/eth-signer.d.ts.map +1 -0
- package/dest/eth-signer/eth-signer.js +5 -0
- package/dest/eth-signer/index.d.ts +2 -0
- package/dest/eth-signer/index.d.ts.map +1 -0
- package/dest/eth-signer/index.js +1 -0
- package/dest/forwarder_proxy.d.ts +32 -0
- package/dest/forwarder_proxy.d.ts.map +1 -0
- package/dest/forwarder_proxy.js +93 -0
- package/dest/generated/l1-contracts-defaults.d.ts +30 -0
- package/dest/generated/l1-contracts-defaults.d.ts.map +1 -0
- package/dest/generated/l1-contracts-defaults.js +30 -0
- package/dest/l1_artifacts.d.ts +79270 -0
- package/dest/l1_artifacts.d.ts.map +1 -0
- package/dest/l1_artifacts.js +151 -0
- package/dest/l1_contract_addresses.d.ts +61 -45
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +99 -76
- package/dest/l1_reader.d.ts +8 -6
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +20 -12
- package/dest/l1_tx_utils/config.d.ts +65 -0
- package/dest/l1_tx_utils/config.d.ts.map +1 -0
- package/dest/l1_tx_utils/config.js +109 -0
- package/dest/l1_tx_utils/constants.d.ts +12 -0
- package/dest/l1_tx_utils/constants.d.ts.map +1 -0
- package/dest/l1_tx_utils/constants.js +39 -0
- package/dest/l1_tx_utils/factory.d.ts +32 -0
- package/dest/l1_tx_utils/factory.d.ts.map +1 -0
- package/dest/l1_tx_utils/factory.js +22 -0
- package/dest/l1_tx_utils/fee-strategies/index.d.ts +10 -0
- package/dest/l1_tx_utils/fee-strategies/index.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/index.js +12 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts +8 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +129 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts +23 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +191 -0
- package/dest/l1_tx_utils/fee-strategies/types.d.ts +51 -0
- package/dest/l1_tx_utils/fee-strategies/types.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/types.js +3 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +42 -0
- package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
- package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
- package/dest/l1_tx_utils/index-blobs.js +2 -0
- package/dest/l1_tx_utils/index.d.ts +13 -0
- package/dest/l1_tx_utils/index.d.ts.map +1 -0
- package/dest/l1_tx_utils/index.js +13 -0
- package/dest/l1_tx_utils/interfaces.d.ts +76 -0
- package/dest/l1_tx_utils/interfaces.d.ts.map +1 -0
- package/dest/l1_tx_utils/interfaces.js +4 -0
- package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +233 -0
- package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_fee_analyzer.js +506 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts +113 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_tx_utils.js +658 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +83 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.js +328 -0
- package/dest/l1_tx_utils/signer.d.ts +4 -0
- package/dest/l1_tx_utils/signer.d.ts.map +1 -0
- package/dest/l1_tx_utils/signer.js +16 -0
- package/dest/l1_tx_utils/tx_delayer.d.ts +58 -0
- package/dest/l1_tx_utils/tx_delayer.d.ts.map +1 -0
- package/dest/l1_tx_utils/tx_delayer.js +223 -0
- package/dest/l1_tx_utils/types.d.ts +67 -0
- package/dest/l1_tx_utils/types.d.ts.map +1 -0
- package/dest/l1_tx_utils/types.js +26 -0
- package/dest/l1_tx_utils/utils.d.ts +4 -0
- package/dest/l1_tx_utils/utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/utils.js +14 -0
- package/dest/l1_types.d.ts +6 -0
- package/dest/l1_types.d.ts.map +1 -0
- package/dest/l1_types.js +1 -0
- package/dest/publisher_manager.d.ts +30 -0
- package/dest/publisher_manager.d.ts.map +1 -0
- package/dest/publisher_manager.js +162 -0
- package/dest/queries.d.ts +17 -4
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +120 -12
- package/dest/test/chain_monitor.d.ts +95 -0
- package/dest/test/chain_monitor.d.ts.map +1 -0
- package/dest/test/chain_monitor.js +249 -0
- package/dest/test/eth_cheat_codes.d.ts +237 -0
- package/dest/test/eth_cheat_codes.d.ts.map +1 -0
- package/dest/test/eth_cheat_codes.js +573 -0
- package/dest/test/eth_cheat_codes_with_state.d.ts +2 -2
- package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes_with_state.js +1 -1
- package/dest/test/index.d.ts +4 -3
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +3 -2
- package/dest/test/rollup_cheat_codes.d.ts +118 -0
- package/dest/test/rollup_cheat_codes.d.ts.map +1 -0
- package/dest/test/rollup_cheat_codes.js +344 -0
- package/dest/test/start_anvil.d.ts +30 -2
- package/dest/test/start_anvil.d.ts.map +1 -1
- package/dest/test/start_anvil.js +147 -24
- package/dest/test/upgrade_utils.d.ts +6 -5
- package/dest/test/upgrade_utils.d.ts.map +1 -1
- package/dest/test/upgrade_utils.js +23 -16
- package/dest/types.d.ts +62 -8
- package/dest/types.d.ts.map +1 -1
- package/dest/types.js +3 -1
- package/dest/utils.d.ts +25 -4
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +142 -91
- package/dest/zkPassportVerifierAddress.d.ts +15 -0
- package/dest/zkPassportVerifierAddress.d.ts.map +1 -0
- package/dest/zkPassportVerifierAddress.js +11 -0
- package/package.json +52 -26
- package/src/account.ts +5 -0
- package/src/client.ts +107 -5
- package/src/config.ts +218 -43
- package/src/contracts/README.md +157 -0
- package/src/contracts/chain_state_override.ts +200 -0
- package/src/contracts/empire_base.ts +77 -7
- package/src/contracts/errors.ts +13 -0
- package/src/contracts/fee_asset_handler.ts +66 -0
- package/src/contracts/fee_asset_price_oracle.ts +285 -0
- package/src/contracts/fee_juice.ts +29 -15
- package/src/contracts/governance.ts +343 -74
- package/src/contracts/governance_proposer.ts +128 -25
- package/src/contracts/gse.ts +88 -0
- package/src/contracts/inbox.ts +123 -0
- package/src/contracts/index.ts +10 -1
- package/src/contracts/log.ts +13 -0
- package/src/contracts/multicall.ts +296 -0
- package/src/contracts/outbox.ts +132 -0
- package/src/contracts/registry.ts +81 -26
- package/src/contracts/rollup.ts +1246 -90
- package/src/contracts/slasher_contract.ts +89 -0
- package/src/contracts/slashing_proposer.ts +296 -27
- package/src/contracts/utils.ts +14 -0
- package/src/deploy_aztec_l1_contracts.ts +646 -0
- package/src/deploy_l1_contract.ts +362 -0
- package/src/eth-signer/eth-signer.ts +25 -0
- package/src/eth-signer/index.ts +1 -0
- package/src/forwarder_proxy.ts +108 -0
- package/src/generated/l1-contracts-defaults.ts +32 -0
- package/src/l1_artifacts.ts +231 -0
- package/src/l1_contract_addresses.ts +121 -80
- package/src/l1_reader.ts +31 -16
- package/src/l1_tx_utils/README.md +177 -0
- package/src/l1_tx_utils/config.ts +181 -0
- package/src/l1_tx_utils/constants.ts +29 -0
- package/src/l1_tx_utils/factory.ts +64 -0
- package/src/l1_tx_utils/fee-strategies/index.ts +22 -0
- package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +163 -0
- package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +245 -0
- package/src/l1_tx_utils/fee-strategies/types.ts +56 -0
- package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +108 -0
- package/src/l1_tx_utils/index-blobs.ts +2 -0
- package/src/l1_tx_utils/index.ts +15 -0
- package/src/l1_tx_utils/interfaces.ts +86 -0
- package/src/l1_tx_utils/l1_fee_analyzer.ts +803 -0
- package/src/l1_tx_utils/l1_tx_utils.ts +789 -0
- package/src/l1_tx_utils/readonly_l1_tx_utils.ts +424 -0
- package/src/l1_tx_utils/signer.ts +28 -0
- package/src/l1_tx_utils/tx_delayer.ts +303 -0
- package/src/l1_tx_utils/types.ts +85 -0
- package/src/l1_tx_utils/utils.ts +16 -0
- package/src/l1_types.ts +6 -0
- package/src/publisher_manager.ts +203 -0
- package/src/queries.ts +149 -17
- package/src/test/chain_monitor.ts +307 -0
- package/src/test/eth_cheat_codes.ts +600 -0
- package/src/test/eth_cheat_codes_with_state.ts +1 -1
- package/src/test/index.ts +3 -2
- package/src/test/rollup_cheat_codes.ts +388 -0
- package/src/test/start_anvil.ts +189 -22
- package/src/test/upgrade_utils.ts +30 -21
- package/src/types.ts +71 -7
- package/src/utils.ts +164 -96
- package/src/zkPassportVerifierAddress.ts +15 -0
- package/dest/contracts/forwarder.d.ts +0 -24
- package/dest/contracts/forwarder.d.ts.map +0 -1
- package/dest/contracts/forwarder.js +0 -101
- package/dest/deploy_l1_contracts.d.ts +0 -21210
- package/dest/deploy_l1_contracts.d.ts.map +0 -1
- package/dest/deploy_l1_contracts.js +0 -687
- package/dest/eth_cheat_codes.d.ts +0 -147
- package/dest/eth_cheat_codes.d.ts.map +0 -1
- package/dest/eth_cheat_codes.js +0 -303
- package/dest/index.d.ts +0 -14
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -13
- package/dest/l1_tx_utils.d.ts +0 -192
- package/dest/l1_tx_utils.d.ts.map +0 -1
- package/dest/l1_tx_utils.js +0 -641
- package/dest/l1_tx_utils_with_blobs.d.ts +0 -12
- package/dest/l1_tx_utils_with_blobs.d.ts.map +0 -1
- package/dest/l1_tx_utils_with_blobs.js +0 -64
- package/dest/test/delayed_tx_utils.d.ts +0 -8
- package/dest/test/delayed_tx_utils.d.ts.map +0 -1
- package/dest/test/delayed_tx_utils.js +0 -21
- package/dest/test/tx_delayer.d.ts +0 -25
- package/dest/test/tx_delayer.d.ts.map +0 -1
- package/dest/test/tx_delayer.js +0 -116
- package/src/contracts/forwarder.ts +0 -132
- package/src/deploy_l1_contracts.ts +0 -948
- package/src/eth_cheat_codes.ts +0 -314
- package/src/index.ts +0 -13
- package/src/l1_tx_utils.ts +0 -847
- package/src/l1_tx_utils_with_blobs.ts +0 -86
- package/src/test/delayed_tx_utils.ts +0 -24
- package/src/test/tx_delayer.ts +0 -163
|
@@ -1,33 +1,32 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
-
import { TestERC20Abi as FeeJuiceAbi } from '@aztec/l1-artifacts';
|
|
2
|
+
import { TestERC20Abi as FeeJuiceAbi } from '@aztec/l1-artifacts/TestERC20Abi';
|
|
3
3
|
import { getContract } from 'viem';
|
|
4
|
+
import { isExtendedClient } from '../types.js';
|
|
4
5
|
export class FeeJuiceContract {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
this.
|
|
6
|
+
client;
|
|
7
|
+
feeJuiceContract;
|
|
8
|
+
constructor(address, client){
|
|
9
|
+
this.client = client;
|
|
10
|
+
if (address instanceof EthAddress) {
|
|
11
|
+
address = address.toString();
|
|
12
|
+
}
|
|
13
|
+
this.feeJuiceContract = getContract({
|
|
13
14
|
address,
|
|
14
15
|
abi: FeeJuiceAbi,
|
|
15
|
-
client
|
|
16
|
+
client
|
|
16
17
|
});
|
|
17
|
-
this.walletFeeJuice = walletClient ? getContract({
|
|
18
|
-
address,
|
|
19
|
-
abi: FeeJuiceAbi,
|
|
20
|
-
client: walletClient
|
|
21
|
-
}) : undefined;
|
|
22
18
|
}
|
|
23
19
|
get address() {
|
|
24
|
-
return EthAddress.fromString(this.
|
|
20
|
+
return EthAddress.fromString(this.feeJuiceContract.address);
|
|
21
|
+
}
|
|
22
|
+
async getOwner() {
|
|
23
|
+
return EthAddress.fromString(await this.feeJuiceContract.read.owner());
|
|
25
24
|
}
|
|
26
25
|
assertWalletFeeJuice() {
|
|
27
|
-
if (!this.
|
|
26
|
+
if (!isExtendedClient(this.client)) {
|
|
28
27
|
throw new Error('Wallet client is required for this operation');
|
|
29
28
|
}
|
|
30
|
-
return this.
|
|
29
|
+
return this.feeJuiceContract;
|
|
31
30
|
}
|
|
32
31
|
async mint(to, amount) {
|
|
33
32
|
const walletFeeJuice = this.assertWalletFeeJuice();
|
|
@@ -35,9 +34,13 @@ export class FeeJuiceContract {
|
|
|
35
34
|
to,
|
|
36
35
|
amount
|
|
37
36
|
]);
|
|
38
|
-
await this.
|
|
37
|
+
const receipt = await this.client.waitForTransactionReceipt({
|
|
39
38
|
hash: tx
|
|
40
39
|
});
|
|
40
|
+
if (receipt.status === 'success') {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
throw new Error('Mint failed');
|
|
41
44
|
}
|
|
42
45
|
async approve(spender, amount) {
|
|
43
46
|
const walletFeeJuice = this.assertWalletFeeJuice();
|
|
@@ -45,8 +48,12 @@ export class FeeJuiceContract {
|
|
|
45
48
|
spender,
|
|
46
49
|
amount
|
|
47
50
|
]);
|
|
48
|
-
await this.
|
|
51
|
+
const receipt = await this.client.waitForTransactionReceipt({
|
|
49
52
|
hash: tx
|
|
50
53
|
});
|
|
54
|
+
if (receipt.status === 'success') {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
throw new Error('Approve failed');
|
|
51
58
|
}
|
|
52
59
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
2
|
import type { Logger } from '@aztec/foundation/log';
|
|
3
|
-
import {
|
|
3
|
+
import { GovernanceAbi } from '@aztec/l1-artifacts/GovernanceAbi';
|
|
4
|
+
import { type GetContractReturnType, type Hex, type Log } from 'viem';
|
|
4
5
|
import type { L1ContractAddresses } from '../l1_contract_addresses.js';
|
|
5
|
-
import type
|
|
6
|
-
import { GovernanceProposerContract } from './governance_proposer.js';
|
|
6
|
+
import { type ExtendedViemWalletClient, type ViemClient } from '../types.js';
|
|
7
7
|
export type L1GovernanceContractAddresses = Pick<L1ContractAddresses, 'governanceAddress' | 'rollupAddress' | 'registryAddress' | 'governanceProposerAddress'>;
|
|
8
8
|
export declare enum ProposalState {
|
|
9
9
|
Pending = 0,
|
|
@@ -15,45 +15,121 @@ export declare enum ProposalState {
|
|
|
15
15
|
Dropped = 6,
|
|
16
16
|
Expired = 7
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
/** Vote tallies on a single proposal. Both fields are mutated by `Governance.vote`. */
|
|
19
|
+
export interface Ballot {
|
|
20
|
+
yea: bigint;
|
|
21
|
+
nay: bigint;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Snapshot of the timing/quorum parameters that govern a single proposal's lifecycle. Each proposal
|
|
25
|
+
* stores its own copy at creation time (see `_propose` in Governance.sol), so this snapshot is
|
|
26
|
+
* immutable for the lifetime of the proposal even if the global `Configuration` changes later.
|
|
27
|
+
*/
|
|
28
|
+
export interface ProposalConfiguration {
|
|
29
|
+
votingDelay: bigint;
|
|
30
|
+
votingDuration: bigint;
|
|
31
|
+
executionDelay: bigint;
|
|
32
|
+
gracePeriod: bigint;
|
|
33
|
+
quorum: bigint;
|
|
34
|
+
requiredYeaMargin: bigint;
|
|
35
|
+
minimumVotes: bigint;
|
|
36
|
+
}
|
|
37
|
+
/** Parameters for `Governance.proposeWithLock`. Stored only in the global Configuration, never on a proposal. */
|
|
38
|
+
export interface ProposeWithLockConfiguration {
|
|
39
|
+
lockDelay: bigint;
|
|
40
|
+
lockAmount: bigint;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Live, mutable governance configuration. `proposeConfig` is the lock configuration used by
|
|
44
|
+
* `proposeWithLock`; the remaining fields are the same shape as `ProposalConfiguration` and are
|
|
45
|
+
* snapshotted onto each new proposal at creation time.
|
|
46
|
+
*/
|
|
47
|
+
export interface GovernanceConfiguration extends ProposalConfiguration {
|
|
48
|
+
proposeConfig: ProposeWithLockConfiguration;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A governance proposal augmented with its live (computed) state.
|
|
52
|
+
*
|
|
53
|
+
* Mutability:
|
|
54
|
+
* - `config`, `payload`, `proposer`, `creation` are immutable for the lifetime of the proposal.
|
|
55
|
+
* - `cachedState` is the raw value stored on-chain. It is only written when a proposal is explicitly
|
|
56
|
+
* executed or dropped, so for time-derived terminal states (Rejected, Expired) it remains at the
|
|
57
|
+
* value that was current when the proposal was created.
|
|
58
|
+
* - `state` is the computed state returned by `Governance.getProposalState`. This is the value
|
|
59
|
+
* callers almost always want -- it reflects time-derived transitions that `cachedState` does not.
|
|
60
|
+
* - `summedBallot` is mutated by every `Governance.vote` call while the proposal is Active.
|
|
61
|
+
*
|
|
62
|
+
* Once `state` is in a terminal phase (`Executed`/`Rejected`/`Dropped`/`Expired`) the entire struct
|
|
63
|
+
* is provably immutable on-chain (no further votes can be cast and no state-mutating call to
|
|
64
|
+
* `execute`/`dropProposal` can succeed), and the wrapper memoizes it.
|
|
65
|
+
*/
|
|
66
|
+
export interface Proposal {
|
|
67
|
+
config: ProposalConfiguration;
|
|
68
|
+
cachedState: ProposalState;
|
|
69
|
+
state: ProposalState;
|
|
70
|
+
payload: EthAddress;
|
|
71
|
+
proposer: EthAddress;
|
|
72
|
+
creation: bigint;
|
|
73
|
+
summedBallot: Ballot;
|
|
74
|
+
}
|
|
75
|
+
export declare const MAX_PROPOSAL_LIFETIME_SECONDS: bigint;
|
|
76
|
+
export declare function extractProposalIdFromLogs(logs: Log[]): bigint;
|
|
77
|
+
export declare class ReadOnlyGovernanceContract {
|
|
78
|
+
readonly client: ViemClient;
|
|
79
|
+
protected readonly governanceContract: GetContractReturnType<typeof GovernanceAbi, ViemClient>;
|
|
80
|
+
/**
|
|
81
|
+
* Cache of fully-resolved proposals keyed by id. We populate this lazily and only retain entries
|
|
82
|
+
* whose state is provably terminal -- once `cachedState` is `Executed` or `Dropped` the on-chain
|
|
83
|
+
* proposal struct is frozen and safe to memoize indefinitely. Other state transitions (e.g.
|
|
84
|
+
* Pending -> Active, or accumulating votes) leave the cache untouched and force a fresh fetch.
|
|
85
|
+
*/
|
|
86
|
+
private readonly proposalCache;
|
|
87
|
+
/**
|
|
88
|
+
* Cache of `IProposerPayload.getOriginalPayload()` results keyed by wrapper address. The wrapper
|
|
89
|
+
* contract's bytecode is immutable, so this mapping never changes -- a value of `undefined`
|
|
90
|
+
* encodes a proposal whose payload doesn't implement `getOriginalPayload` (e.g. proposeWithLock
|
|
91
|
+
* proposals) and should be treated as "no original".
|
|
92
|
+
*/
|
|
93
|
+
private readonly originalPayloadCache;
|
|
94
|
+
constructor(address: Hex, client: ViemClient);
|
|
24
95
|
get address(): EthAddress;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
summedBallot: {
|
|
46
|
-
yea: bigint;
|
|
47
|
-
nea: bigint;
|
|
48
|
-
};
|
|
49
|
-
}>;
|
|
96
|
+
getGovernanceProposerAddress(): Promise<EthAddress>;
|
|
97
|
+
getConfiguration(): Promise<GovernanceConfiguration>;
|
|
98
|
+
/**
|
|
99
|
+
* Fetches a proposal by id together with its live state, returning the mapped {@link Proposal}
|
|
100
|
+
* type. Issues `getProposal` and `getProposalState` in parallel so the result carries both the
|
|
101
|
+
* raw stored `cachedState` and the time-derived `state` -- callers can use whichever they need
|
|
102
|
+
* without an extra round-trip.
|
|
103
|
+
*
|
|
104
|
+
* Backed by an in-memory cache that retains entries only when `state` is in one of the four
|
|
105
|
+
* terminal phases (`Executed` / `Rejected` / `Dropped` / `Expired`). At that point the entire
|
|
106
|
+
* proposal struct is provably immutable on-chain (no further votes can be cast and no
|
|
107
|
+
* state-mutating call can succeed), so caching is safe forever. Non-terminal states force a
|
|
108
|
+
* fresh fetch on every call so callers always see fresh `state` and `summedBallot` values.
|
|
109
|
+
*/
|
|
110
|
+
getProposal(proposalId: bigint): Promise<Proposal>;
|
|
111
|
+
/**
|
|
112
|
+
* Returns the live state of a proposal as computed by `Governance.getProposalState`. Prefer
|
|
113
|
+
* {@link getProposal} when you also need any other proposal data -- it returns this same value
|
|
114
|
+
* via {@link Proposal.state} alongside the rest of the struct in a single round-trip.
|
|
115
|
+
*/
|
|
50
116
|
getProposalState(proposalId: bigint): Promise<ProposalState>;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
117
|
+
getProposalCount(): Promise<bigint>;
|
|
118
|
+
/**
|
|
119
|
+
* Checks whether the given original payload is currently the subject of a live (non-terminal)
|
|
120
|
+
* Governance proposal. Returns true only if a proposal references this payload and is still in
|
|
121
|
+
* Pending, Active, Queued, or Executable state. Terminal proposals (Executed, Rejected, Dropped,
|
|
122
|
+
* Expired) are ignored, because once a proposal reaches a terminal state the same original
|
|
123
|
+
* payload may legitimately be re-signaled and re-submitted via the GovernanceProposer (each round
|
|
124
|
+
* is independent and there is no payload-level uniqueness check on-chain).
|
|
125
|
+
*
|
|
126
|
+
* Implemented as a bounded view-call sweep over `Governance.proposals` rather than an event scan,
|
|
127
|
+
* because `eth_getLogs` over the full deployment history of a long-lived rollup exceeds typical
|
|
128
|
+
* RPC block-range caps. The number of proposals (`proposalCount`) is small in practice, and we
|
|
129
|
+
* walk newest -> oldest with a hard early-stop on the protocol-wide proposal lifetime cap.
|
|
130
|
+
*/
|
|
131
|
+
hasActiveProposalWithPayload(payload: Hex): Promise<boolean>;
|
|
132
|
+
private getOriginalPayload;
|
|
57
133
|
awaitProposalActive({ proposalId, logger }: {
|
|
58
134
|
proposalId: bigint;
|
|
59
135
|
logger: Logger;
|
|
@@ -62,18 +138,30 @@ export declare class GovernanceContract {
|
|
|
62
138
|
proposalId: bigint;
|
|
63
139
|
logger: Logger;
|
|
64
140
|
}): Promise<void>;
|
|
141
|
+
}
|
|
142
|
+
export declare class GovernanceContract extends ReadOnlyGovernanceContract {
|
|
143
|
+
readonly client: ExtendedViemWalletClient;
|
|
144
|
+
protected readonly governanceContract: GetContractReturnType<typeof GovernanceAbi, ExtendedViemWalletClient>;
|
|
145
|
+
constructor(address: Hex | EthAddress, client: ExtendedViemWalletClient);
|
|
146
|
+
deposit(onBehalfOf: Hex, amount: bigint): Promise<void>;
|
|
147
|
+
proposeWithLock({ payloadAddress, withdrawAddress }: {
|
|
148
|
+
payloadAddress: Hex;
|
|
149
|
+
withdrawAddress: Hex;
|
|
150
|
+
}): Promise<bigint>;
|
|
65
151
|
getPower(): Promise<bigint>;
|
|
66
|
-
|
|
152
|
+
/** Returns the user's voting power for a specific proposal, checked at pendingThrough timestamp. */
|
|
153
|
+
getPowerForProposal(proposalId: bigint): Promise<bigint>;
|
|
154
|
+
vote({ proposalId, voteAmount, inFavor, retries, logger }: {
|
|
67
155
|
proposalId: bigint;
|
|
68
156
|
voteAmount: bigint | undefined;
|
|
69
157
|
inFavor: boolean;
|
|
70
158
|
retries: number;
|
|
71
159
|
logger: Logger;
|
|
72
160
|
}): Promise<void>;
|
|
73
|
-
executeProposal({ proposalId, retries, logger
|
|
161
|
+
executeProposal({ proposalId, retries, logger }: {
|
|
74
162
|
proposalId: bigint;
|
|
75
163
|
retries: number;
|
|
76
164
|
logger: Logger;
|
|
77
165
|
}): Promise<void>;
|
|
78
166
|
}
|
|
79
|
-
//# sourceMappingURL=
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9nb3Zlcm5hbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbEUsT0FBTyxFQUVMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUNSLEtBQUssR0FBRyxFQUlULE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsS0FBSyx3QkFBd0IsRUFBRSxLQUFLLFVBQVUsRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFpQi9GLE1BQU0sTUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQzlDLG1CQUFtQixFQUNuQixtQkFBbUIsR0FBRyxlQUFlLEdBQUcsaUJBQWlCLEdBQUcsMkJBQTJCLENBQ3hGLENBQUM7QUFHRixvQkFBWSxhQUFhO0lBQ3ZCLE9BQU8sSUFBQTtJQUNQLE1BQU0sSUFBQTtJQUNOLE1BQU0sSUFBQTtJQUNOLFVBQVUsSUFBQTtJQUNWLFFBQVEsSUFBQTtJQUNSLFFBQVEsSUFBQTtJQUNSLE9BQU8sSUFBQTtJQUNQLE9BQU8sSUFBQTtDQUNSO0FBRUQsdUZBQXVGO0FBQ3ZGLE1BQU0sV0FBVyxNQUFNO0lBQ3JCLEdBQUcsRUFBRSxNQUFNLENBQUM7SUFDWixHQUFHLEVBQUUsTUFBTSxDQUFDO0NBQ2I7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxXQUFXLHFCQUFxQjtJQUNwQyxXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLGNBQWMsRUFBRSxNQUFNLENBQUM7SUFDdkIsY0FBYyxFQUFFLE1BQU0sQ0FBQztJ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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/contracts/governance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/contracts/governance.ts"],"names":[],"mappings":"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"}
|