@aztec/end-to-end 4.0.0-nightly.20260113 → 4.0.0-nightly.20260114

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 (63) hide show
  1. package/dest/bench/client_flows/client_flows_benchmark.d.ts +10 -10
  2. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  3. package/dest/bench/client_flows/client_flows_benchmark.js +98 -133
  4. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +5 -6
  5. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  6. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +94 -112
  7. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +5 -5
  8. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  9. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +60 -62
  10. package/dest/e2e_deploy_contract/deploy_test.d.ts +4 -3
  11. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  12. package/dest/e2e_deploy_contract/deploy_test.js +15 -13
  13. package/dest/e2e_fees/bridging_race.notest.js +2 -4
  14. package/dest/e2e_fees/fees_test.d.ts +11 -11
  15. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  16. package/dest/e2e_fees/fees_test.js +118 -139
  17. package/dest/e2e_l1_publisher/write_json.d.ts +1 -1
  18. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  19. package/dest/e2e_l1_publisher/write_json.js +1 -0
  20. package/dest/e2e_nested_contract/nested_contract_test.d.ts +5 -8
  21. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  22. package/dest/e2e_nested_contract/nested_contract_test.js +29 -40
  23. package/dest/e2e_p2p/inactivity_slash_test.js +1 -1
  24. package/dest/e2e_p2p/p2p_network.d.ts +5 -3
  25. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  26. package/dest/e2e_p2p/p2p_network.js +99 -102
  27. package/dest/e2e_token_contract/token_contract_test.d.ts +15 -8
  28. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  29. package/dest/e2e_token_contract/token_contract_test.js +88 -92
  30. package/dest/fixtures/e2e_prover_test.d.ts +7 -13
  31. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  32. package/dest/fixtures/e2e_prover_test.js +78 -91
  33. package/dest/fixtures/snapshot_manager.d.ts +10 -44
  34. package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
  35. package/dest/fixtures/snapshot_manager.js +12 -255
  36. package/dest/fixtures/utils.js +3 -3
  37. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  38. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  39. package/dest/quality_of_service/prometheus_client.js +67 -0
  40. package/dest/spartan/tx_metrics.d.ts +4 -1
  41. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  42. package/dest/spartan/tx_metrics.js +21 -1
  43. package/dest/spartan/utils.d.ts +5 -1
  44. package/dest/spartan/utils.d.ts.map +1 -1
  45. package/dest/spartan/utils.js +25 -8
  46. package/package.json +38 -38
  47. package/src/bench/client_flows/client_flows_benchmark.ts +134 -192
  48. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +104 -136
  49. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +91 -103
  50. package/src/e2e_deploy_contract/deploy_test.ts +18 -14
  51. package/src/e2e_fees/bridging_race.notest.ts +2 -5
  52. package/src/e2e_fees/fees_test.ts +165 -210
  53. package/src/e2e_l1_publisher/write_json.ts +1 -0
  54. package/src/e2e_nested_contract/nested_contract_test.ts +30 -54
  55. package/src/e2e_p2p/inactivity_slash_test.ts +1 -1
  56. package/src/e2e_p2p/p2p_network.ts +149 -165
  57. package/src/e2e_token_contract/token_contract_test.ts +104 -113
  58. package/src/fixtures/e2e_prover_test.ts +97 -130
  59. package/src/fixtures/snapshot_manager.ts +12 -325
  60. package/src/fixtures/utils.ts +3 -3
  61. package/src/quality_of_service/prometheus_client.ts +113 -0
  62. package/src/spartan/tx_metrics.ts +21 -1
  63. package/src/spartan/utils.ts +26 -8
@@ -4,9 +4,8 @@ import { createLogger } from '@aztec/aztec.js/log';
4
4
  import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist';
5
5
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
6
6
  import { jest } from '@jest/globals';
7
- import { createSnapshotManager, deployAccounts, publicDeployAccounts } from '../fixtures/snapshot_manager.js';
7
+ import { deployAccounts, publicDeployAccounts, setupFromFresh, teardown } from '../fixtures/snapshot_manager.js';
8
8
  import { TokenSimulator } from '../simulators/token_simulator.js';
9
- const { E2E_DATA_PATH: dataPath } = process.env;
10
9
  export class Role {
11
10
  isAdmin = false;
12
11
  isMinter = false;
@@ -36,7 +35,7 @@ export class Role {
36
35
  export class BlacklistTokenContractTest {
37
36
  // This value MUST match the same value that we have in the contract
38
37
  static CHANGE_ROLES_DELAY = 86400;
39
- snapshotManager;
38
+ context;
40
39
  logger;
41
40
  wallet;
42
41
  asset;
@@ -50,74 +49,64 @@ export class BlacklistTokenContractTest {
50
49
  blacklistedAddress;
51
50
  constructor(testName){
52
51
  this.logger = createLogger(`e2e:e2e_blacklist_token_contract:${testName}`);
53
- this.snapshotManager = createSnapshotManager(`e2e_blacklist_token_contract/${testName}`, dataPath);
54
52
  }
55
53
  async crossTimestampOfChange() {
56
54
  await this.cheatCodes.warpL2TimeAtLeastBy(this.sequencer, this.aztecNode, BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
57
55
  }
58
56
  /**
59
- * Adds two state shifts to snapshot manager.
57
+ * Applies base setup:
60
58
  * 1. Add 3 accounts.
61
59
  * 2. Publicly deploy accounts, deploy token contract and a "bad account".
62
- */ async applyBaseSnapshots() {
60
+ */ async applyBaseSetup() {
63
61
  // Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
64
62
  jest.setTimeout(120_000);
65
- await this.snapshotManager.snapshot('3_accounts', deployAccounts(3, this.logger), ({ deployedAccounts }, { cheatCodes, aztecNode, sequencer, wallet })=>{
66
- this.cheatCodes = cheatCodes;
67
- this.aztecNode = aztecNode;
68
- this.sequencer = sequencer;
69
- this.wallet = wallet;
70
- this.adminAddress = deployedAccounts[0].address;
71
- this.otherAddress = deployedAccounts[1].address;
72
- this.blacklistedAddress = deployedAccounts[2].address;
73
- return Promise.resolve();
74
- });
75
- await this.snapshotManager.snapshot('e2e_blacklist_token_contract', async ()=>{
76
- // Create the token contract state.
77
- // Move this account thing to addAccounts above?
78
- this.logger.verbose(`Public deploy accounts...`);
79
- await publicDeployAccounts(this.wallet, [
80
- this.adminAddress,
81
- this.otherAddress,
82
- this.blacklistedAddress
83
- ]);
84
- this.logger.verbose(`Deploying TokenContract...`);
85
- this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
86
- from: this.adminAddress
87
- }).deployed();
88
- this.logger.verbose(`Token deployed to ${this.asset.address}`);
89
- this.logger.verbose(`Deploying bad account...`);
90
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
91
- from: this.adminAddress
92
- }).deployed();
93
- this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
94
- await this.crossTimestampOfChange();
95
- return {
96
- tokenContractAddress: this.asset.address,
97
- badAccountAddress: this.badAccount.address
98
- };
99
- }, async ({ tokenContractAddress, badAccountAddress })=>{
100
- // Restore the token contract state.
101
- this.asset = TokenBlacklistContract.at(tokenContractAddress, this.wallet);
102
- this.logger.verbose(`Token contract address: ${this.asset.address}`);
103
- this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
104
- this.adminAddress,
105
- this.otherAddress,
106
- this.blacklistedAddress
107
- ]);
108
- this.badAccount = InvalidAccountContract.at(badAccountAddress, this.wallet);
109
- this.logger.verbose(`Bad account address: ${this.badAccount.address}`);
110
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
111
- from: this.adminAddress
112
- })).toEqual(new Role().withAdmin().toNoirStruct());
63
+ this.logger.info('Deploying 3 accounts');
64
+ const { deployedAccounts } = await deployAccounts(3, this.logger)({
65
+ wallet: this.context.wallet,
66
+ initialFundedAccounts: this.context.initialFundedAccounts
113
67
  });
68
+ this.cheatCodes = this.context.cheatCodes;
69
+ this.aztecNode = this.context.aztecNode;
70
+ this.sequencer = this.context.sequencer;
71
+ this.wallet = this.context.wallet;
72
+ this.adminAddress = deployedAccounts[0].address;
73
+ this.otherAddress = deployedAccounts[1].address;
74
+ this.blacklistedAddress = deployedAccounts[2].address;
75
+ this.logger.info('Setting up blacklist token contract');
76
+ // Create the token contract state.
77
+ this.logger.verbose(`Public deploy accounts...`);
78
+ await publicDeployAccounts(this.wallet, [
79
+ this.adminAddress,
80
+ this.otherAddress,
81
+ this.blacklistedAddress
82
+ ]);
83
+ this.logger.verbose(`Deploying TokenContract...`);
84
+ this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
85
+ from: this.adminAddress
86
+ }).deployed();
87
+ this.logger.verbose(`Token deployed to ${this.asset.address}`);
88
+ this.logger.verbose(`Deploying bad account...`);
89
+ this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
90
+ from: this.adminAddress
91
+ }).deployed();
92
+ this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
93
+ await this.crossTimestampOfChange();
94
+ this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
95
+ this.adminAddress,
96
+ this.otherAddress,
97
+ this.blacklistedAddress
98
+ ]);
99
+ expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
100
+ from: this.adminAddress
101
+ })).toEqual(new Role().withAdmin().toNoirStruct());
114
102
  }
115
103
  async setup() {
116
- await this.snapshotManager.setup();
104
+ this.logger.info('Setting up fresh context');
105
+ this.context = await setupFromFresh(this.logger);
106
+ await this.applyBaseSetup();
117
107
  }
118
- snapshot = (name, apply, restore = ()=>Promise.resolve())=>this.snapshotManager.snapshot(name, apply, restore);
119
108
  async teardown() {
120
- await this.snapshotManager.teardown();
109
+ await teardown(this.context);
121
110
  }
122
111
  async addPendingShieldNoteToPXE(contract, recipient, amount, secretHash, txHash) {
123
112
  const txEffects = await this.aztecNode.getTxEffect(txHash);
@@ -125,61 +114,54 @@ export class BlacklistTokenContractTest {
125
114
  from: recipient
126
115
  });
127
116
  }
128
- async applyMintSnapshot() {
129
- await this.snapshotManager.snapshot('mint', async ()=>{
130
- const { asset } = this;
131
- const amount = 10000n;
132
- const adminMinterRole = new Role().withAdmin().withMinter();
133
- await this.asset.methods.update_roles(this.adminAddress, adminMinterRole.toNoirStruct()).send({
134
- from: this.adminAddress
135
- }).wait();
136
- const blacklistRole = new Role().withBlacklisted();
137
- await this.asset.methods.update_roles(this.blacklistedAddress, blacklistRole.toNoirStruct()).send({
138
- from: this.adminAddress
139
- }).wait();
140
- await this.crossTimestampOfChange();
141
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
142
- from: this.adminAddress
143
- })).toEqual(adminMinterRole.toNoirStruct());
144
- this.logger.verbose(`Minting ${amount} publicly...`);
145
- await asset.methods.mint_public(this.adminAddress, amount).send({
146
- from: this.adminAddress
147
- }).wait();
148
- this.logger.verbose(`Minting ${amount} privately...`);
149
- const secret = Fr.random();
150
- const secretHash = await computeSecretHash(secret);
151
- const receipt = await asset.methods.mint_private(amount, secretHash).send({
152
- from: this.adminAddress
153
- }).wait();
154
- await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
155
- const txClaim = asset.methods.redeem_shield(this.adminAddress, amount, secret).send({
156
- from: this.adminAddress
157
- });
158
- await txClaim.wait();
159
- this.logger.verbose(`Minting complete.`);
160
- return {
161
- amount
162
- };
163
- }, async ({ amount })=>{
164
- const { asset, tokenSim } = this;
165
- tokenSim.mintPublic(this.adminAddress, amount);
166
- const publicBalance = await asset.methods.balance_of_public(this.adminAddress).simulate({
167
- from: this.adminAddress
168
- });
169
- this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
170
- expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
171
- tokenSim.mintPrivate(this.adminAddress, amount);
172
- const privateBalance = await asset.methods.balance_of_private(this.adminAddress).simulate({
173
- from: this.adminAddress
174
- });
175
- this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
176
- expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
177
- const totalSupply = await asset.methods.total_supply().simulate({
178
- from: this.adminAddress
179
- });
180
- this.logger.verbose(`Total supply: ${totalSupply}`);
181
- expect(totalSupply).toEqual(tokenSim.totalSupply);
182
- return Promise.resolve();
117
+ async applyMint() {
118
+ this.logger.info('Applying mint setup');
119
+ const { asset, tokenSim } = this;
120
+ const amount = 10000n;
121
+ const adminMinterRole = new Role().withAdmin().withMinter();
122
+ await this.asset.methods.update_roles(this.adminAddress, adminMinterRole.toNoirStruct()).send({
123
+ from: this.adminAddress
124
+ }).wait();
125
+ const blacklistRole = new Role().withBlacklisted();
126
+ await this.asset.methods.update_roles(this.blacklistedAddress, blacklistRole.toNoirStruct()).send({
127
+ from: this.adminAddress
128
+ }).wait();
129
+ await this.crossTimestampOfChange();
130
+ expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
131
+ from: this.adminAddress
132
+ })).toEqual(adminMinterRole.toNoirStruct());
133
+ this.logger.verbose(`Minting ${amount} publicly...`);
134
+ await asset.methods.mint_public(this.adminAddress, amount).send({
135
+ from: this.adminAddress
136
+ }).wait();
137
+ this.logger.verbose(`Minting ${amount} privately...`);
138
+ const secret = Fr.random();
139
+ const secretHash = await computeSecretHash(secret);
140
+ const receipt = await asset.methods.mint_private(amount, secretHash).send({
141
+ from: this.adminAddress
142
+ }).wait();
143
+ await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
144
+ const txClaim = asset.methods.redeem_shield(this.adminAddress, amount, secret).send({
145
+ from: this.adminAddress
146
+ });
147
+ await txClaim.wait();
148
+ this.logger.verbose(`Minting complete.`);
149
+ tokenSim.mintPublic(this.adminAddress, amount);
150
+ const publicBalance = await asset.methods.balance_of_public(this.adminAddress).simulate({
151
+ from: this.adminAddress
152
+ });
153
+ this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
154
+ expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
155
+ tokenSim.mintPrivate(this.adminAddress, amount);
156
+ const privateBalance = await asset.methods.balance_of_private(this.adminAddress).simulate({
157
+ from: this.adminAddress
158
+ });
159
+ this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
160
+ expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
161
+ const totalSupply = await asset.methods.total_supply().simulate({
162
+ from: this.adminAddress
183
163
  });
164
+ this.logger.verbose(`Total supply: ${totalSupply}`);
165
+ expect(totalSupply).toEqual(tokenSim.totalSupply);
184
166
  }
185
167
  }
@@ -16,13 +16,14 @@ import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
16
16
  import type { SetupOptions } from '../fixtures/utils.js';
17
17
  import { CrossChainTestHarness } from '../shared/cross_chain_test_harness.js';
18
18
  export declare class CrossChainMessagingTest {
19
- private snapshotManager;
20
19
  private requireEpochProven;
20
+ private setupOptions;
21
+ private deployL1ContractsArgs;
21
22
  logger: Logger;
23
+ context: SubsystemsContext;
22
24
  aztecNode: AztecNode;
23
25
  aztecNodeConfig: AztecNodeConfig;
24
26
  aztecNodeAdmin: AztecNodeAdmin;
25
- ctx: SubsystemsContext;
26
27
  l1Client: ExtendedViemWalletClient | undefined;
27
28
  wallet: TestWallet;
28
29
  ownerAddress: AztecAddress;
@@ -41,8 +42,7 @@ export declare class CrossChainMessagingTest {
41
42
  setup(): Promise<void>;
42
43
  advanceToEpochProven(l2TxReceipt: TxReceipt): Promise<EpochNumber>;
43
44
  catchUpProvenChain(): Promise<void>;
44
- snapshot: <T>(name: string, apply: (context: SubsystemsContext) => Promise<T>, restore?: (snapshotData: T, context: SubsystemsContext) => Promise<void>) => Promise<void>;
45
45
  teardown(): Promise<void>;
46
- applyBaseSnapshots(): Promise<void>;
46
+ applyBaseSetup(): Promise<void>;
47
47
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fbWVzc2FnaW5nX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfY3Jvc3NfY2hhaW5fbWVzc2FnaW5nL2Nyb3NzX2NoYWluX21lc3NhZ2luZ190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckUsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRixPQUFPLEtBQUssRUFDViwwQkFBMEIsRUFDMUIsZ0NBQWdDLEVBQ2pDLE1BQU0sMkNBQTJDLENBQUM7QUFFbkQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQW9CLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc1RCxPQUFPLEVBRUwsS0FBSyxpQkFBaUIsRUFJdkIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUk5RSxxQkFBYSx1QkFBdUI7SUFDbEMsT0FBTyxDQUFDLGVBQWUsQ0FBbUI7SUFDMUMsT0FBTyxDQUFDLGtCQUFrQixDQUFVO0lBQ3BDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixTQUFTLEVBQUcsU0FBUyxDQUFDO0lBQ3RCLGVBQWUsRUFBRyxlQUFlLENBQUM7SUFDbEMsY0FBYyxFQUFHLGNBQWMsQ0FBQztJQUNoQyxHQUFHLEVBQUcsaUJBQWlCLENBQUM7SUFFeEIsUUFBUSxFQUFHLHdCQUF3QixHQUFHLFNBQVMsQ0FBQztJQUVoRCxNQUFNLEVBQUcsVUFBVSxDQUFDO0lBQ3BCLFlBQVksRUFBRyxZQUFZLENBQUM7SUFDNUIsWUFBWSxFQUFHLFlBQVksQ0FBQztJQUM1QixZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLHFCQUFxQixFQUFHLHFCQUFxQixDQUFDO0lBQzlDLFVBQVUsRUFBRyxVQUFVLENBQUM7SUFDeEIsT0FBTyxFQUFHLGFBQWEsQ0FBQztJQUN4QixRQUFRLEVBQUcsbUJBQW1CLENBQUM7SUFFL0IsTUFBTSxFQUFHLGNBQWMsQ0FBQztJQUN4QixLQUFLLEVBQUcsYUFBYSxDQUFDO0lBQ3RCLE1BQU0sRUFBRyxjQUFjLENBQUM7SUFDeEIsVUFBVSxFQUFHLFVBQVUsQ0FBQztJQUV4Qix1QkFBdUIsRUFBRyxnQ0FBZ0MsQ0FBQztJQUUzRCxZQUNFLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLElBQUksR0FBRSxZQUFpQixFQUN2QixxQkFBcUIsR0FBRSxPQUFPLENBQUMsMEJBQTBCLENBQU0sRUFRaEU7SUFFSyxLQUFLLGtCQWFWO0lBRUssb0JBQW9CLENBQUMsV0FBVyxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBVXZFO0lBRUssa0JBQWtCLGtCQUt2QjtJQUVELFFBQVEsR0FBSSxDQUFDLDhKQUkyRDtJQUVsRSxRQUFRLGtCQUViO0lBRUssa0JBQWtCLGtCQStFdkI7Q0FDRiJ9
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fbWVzc2FnaW5nX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfY3Jvc3NfY2hhaW5fbWVzc2FnaW5nL2Nyb3NzX2NoYWluX21lc3NhZ2luZ190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckUsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRixPQUFPLEtBQUssRUFDViwwQkFBMEIsRUFDMUIsZ0NBQWdDLEVBQ2pDLE1BQU0sMkNBQTJDLENBQUM7QUFFbkQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQW9CLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc1RCxPQUFPLEVBQ0wsS0FBSyxpQkFBaUIsRUFLdkIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUU5RSxxQkFBYSx1QkFBdUI7SUFDbEMsT0FBTyxDQUFDLGtCQUFrQixDQUFVO0lBQ3BDLE9BQU8sQ0FBQyxZQUFZLENBQWU7SUFDbkMsT0FBTyxDQUFDLHFCQUFxQixDQUFzQztJQUNuRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsT0FBTyxFQUFHLGlCQUFpQixDQUFDO0lBQzVCLFNBQVMsRUFBRyxTQUFTLENBQUM7SUFDdEIsZUFBZSxFQUFHLGVBQWUsQ0FBQztJQUNsQyxjQUFjLEVBQUcsY0FBYyxDQUFDO0lBRWhDLFFBQVEsRUFBRyx3QkFBd0IsR0FBRyxTQUFTLENBQUM7SUFFaEQsTUFBTSxFQUFHLFVBQVUsQ0FBQztJQUNwQixZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLFlBQVksRUFBRyxZQUFZLENBQUM7SUFDNUIsWUFBWSxFQUFHLFlBQVksQ0FBQztJQUM1QixxQkFBcUIsRUFBRyxxQkFBcUIsQ0FBQztJQUM5QyxVQUFVLEVBQUcsVUFBVSxDQUFDO0lBQ3hCLE9BQU8sRUFBRyxhQUFhLENBQUM7SUFDeEIsUUFBUSxFQUFHLG1CQUFtQixDQUFDO0lBRS9CLE1BQU0sRUFBRyxjQUFjLENBQUM7SUFDeEIsS0FBSyxFQUFHLGFBQWEsQ0FBQztJQUN0QixNQUFNLEVBQUcsY0FBYyxDQUFDO0lBQ3hCLFVBQVUsRUFBRyxVQUFVLENBQUM7SUFFeEIsdUJBQXVCLEVBQUcsZ0NBQWdDLENBQUM7SUFFM0QsWUFDRSxRQUFRLEVBQUUsTUFBTSxFQUNoQixJQUFJLEdBQUUsWUFBaUIsRUFDdkIscUJBQXFCLEdBQUUsT0FBTyxDQUFDLDBCQUEwQixDQUFNLEVBU2hFO0lBRUssS0FBSyxrQkFJVjtJQUVLLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQVV2RTtJQUVLLGtCQUFrQixrQkFLdkI7SUFFSyxRQUFRLGtCQUViO0lBRUssY0FBYyxrQkFrRm5CO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"cross_chain_messaging_test.d.ts","sourceRoot":"","sources":["../../src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,KAAK,EACV,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAoB,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGhF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EAEL,KAAK,iBAAiB,EAIvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAI9E,qBAAa,uBAAuB;IAClC,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,kBAAkB,CAAU;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAG,SAAS,CAAC;IACtB,eAAe,EAAG,eAAe,CAAC;IAClC,cAAc,EAAG,cAAc,CAAC;IAChC,GAAG,EAAG,iBAAiB,CAAC;IAExB,QAAQ,EAAG,wBAAwB,GAAG,SAAS,CAAC;IAEhD,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,YAAY,CAAC;IAC5B,YAAY,EAAG,YAAY,CAAC;IAC5B,YAAY,EAAG,YAAY,CAAC;IAC5B,qBAAqB,EAAG,qBAAqB,CAAC;IAC9C,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,EAAG,aAAa,CAAC;IACxB,QAAQ,EAAG,mBAAmB,CAAC;IAE/B,MAAM,EAAG,cAAc,CAAC;IACxB,KAAK,EAAG,aAAa,CAAC;IACtB,MAAM,EAAG,cAAc,CAAC;IACxB,UAAU,EAAG,UAAU,CAAC;IAExB,uBAAuB,EAAG,gCAAgC,CAAC;IAE3D,YACE,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,YAAiB,EACvB,qBAAqB,GAAE,OAAO,CAAC,0BAA0B,CAAM,EAQhE;IAEK,KAAK,kBAaV;IAEK,oBAAoB,CAAC,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAUvE;IAEK,kBAAkB,kBAKvB;IAED,QAAQ,GAAI,CAAC,8JAI2D;IAElE,QAAQ,kBAEb;IAEK,kBAAkB,kBA+EvB;CACF"}
1
+ {"version":3,"file":"cross_chain_messaging_test.d.ts","sourceRoot":"","sources":["../../src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,KAAK,EACV,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAoB,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGhF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EACL,KAAK,iBAAiB,EAKvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,qBAAa,uBAAuB;IAClC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,qBAAqB,CAAsC;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAG,iBAAiB,CAAC;IAC5B,SAAS,EAAG,SAAS,CAAC;IACtB,eAAe,EAAG,eAAe,CAAC;IAClC,cAAc,EAAG,cAAc,CAAC;IAEhC,QAAQ,EAAG,wBAAwB,GAAG,SAAS,CAAC;IAEhD,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,YAAY,CAAC;IAC5B,YAAY,EAAG,YAAY,CAAC;IAC5B,YAAY,EAAG,YAAY,CAAC;IAC5B,qBAAqB,EAAG,qBAAqB,CAAC;IAC9C,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,EAAG,aAAa,CAAC;IACxB,QAAQ,EAAG,mBAAmB,CAAC;IAE/B,MAAM,EAAG,cAAc,CAAC;IACxB,KAAK,EAAG,aAAa,CAAC;IACtB,MAAM,EAAG,cAAc,CAAC;IACxB,UAAU,EAAG,UAAU,CAAC;IAExB,uBAAuB,EAAG,gCAAgC,CAAC;IAE3D,YACE,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,YAAiB,EACvB,qBAAqB,GAAE,OAAO,CAAC,0BAA0B,CAAM,EAShE;IAEK,KAAK,kBAIV;IAEK,oBAAoB,CAAC,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAUvE;IAEK,kBAAkB,kBAKvB;IAEK,QAAQ,kBAEb;IAEK,cAAc,kBAkFnB;CACF"}
@@ -10,17 +10,17 @@ import { TestERC20Abi, TestERC20Bytecode } from '@aztec/l1-artifacts';
10
10
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
11
11
  import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
12
12
  import { MNEMONIC } from '../fixtures/fixtures.js';
13
- import { createSnapshotManager, deployAccounts, publicDeployAccounts } from '../fixtures/snapshot_manager.js';
13
+ import { deployAccounts, publicDeployAccounts, setupFromFresh, teardown } from '../fixtures/snapshot_manager.js';
14
14
  import { CrossChainTestHarness } from '../shared/cross_chain_test_harness.js';
15
- const { E2E_DATA_PATH: dataPath } = process.env;
16
15
  export class CrossChainMessagingTest {
17
- snapshotManager;
18
16
  requireEpochProven;
17
+ setupOptions;
18
+ deployL1ContractsArgs;
19
19
  logger;
20
+ context;
20
21
  aztecNode;
21
22
  aztecNodeConfig;
22
23
  aztecNodeAdmin;
23
- ctx;
24
24
  l1Client;
25
25
  wallet;
26
26
  ownerAddress;
@@ -37,24 +37,17 @@ export class CrossChainMessagingTest {
37
37
  deployL1ContractsValues;
38
38
  constructor(testName, opts = {}, deployL1ContractsArgs = {}){
39
39
  this.logger = createLogger(`e2e:e2e_cross_chain_messaging:${testName}`);
40
- this.snapshotManager = createSnapshotManager(`e2e_cross_chain_messaging/${testName}`, dataPath, opts, {
40
+ this.setupOptions = opts;
41
+ this.deployL1ContractsArgs = {
41
42
  initialValidators: [],
42
43
  ...deployL1ContractsArgs
43
- });
44
+ };
44
45
  this.requireEpochProven = opts.startProverNode ?? false;
45
46
  }
46
47
  async setup() {
47
- this.ctx = await this.snapshotManager.setup();
48
- this.aztecNode = this.ctx.aztecNode;
49
- this.wallet = this.ctx.wallet;
50
- this.aztecNodeConfig = this.ctx.aztecNodeConfig;
51
- this.cheatCodes = this.ctx.cheatCodes;
52
- this.deployL1ContractsValues = this.ctx.deployL1ContractsValues;
53
- this.aztecNodeAdmin = this.ctx.aztecNode;
54
- if (this.requireEpochProven) {
55
- // Turn off the watcher to prevent it from keep marking blocks as proven.
56
- this.ctx.watcher.setIsMarkingAsProven(false);
57
- }
48
+ this.logger.info('Setting up cross chain messaging test');
49
+ this.context = await setupFromFresh(this.logger, this.setupOptions, this.deployL1ContractsArgs);
50
+ await this.applyBaseSetup();
58
51
  }
59
52
  async advanceToEpochProven(l2TxReceipt) {
60
53
  const epoch = await this.rollup.getEpochNumberForCheckpoint(CheckpointNumber.fromBlockNumber(l2TxReceipt.blockNumber));
@@ -73,53 +66,58 @@ export class CrossChainMessagingTest {
73
66
  await sleep(1000);
74
67
  }
75
68
  }
76
- snapshot = (name, apply, restore = ()=>Promise.resolve())=>this.snapshotManager.snapshot(name, apply, restore);
77
69
  async teardown() {
78
- await this.snapshotManager.teardown();
70
+ await teardown(this.context);
79
71
  }
80
- async applyBaseSnapshots() {
81
- // Note that we are using the same `wallet`, `aztecNodeConfig` and `aztecNode` across all snapshots.
82
- // This is to not have issues with different networks.
83
- await this.snapshotManager.snapshot('3_accounts', deployAccounts(3, this.logger), ({ deployedAccounts }, { wallet, aztecNodeConfig, aztecNode })=>{
84
- [this.ownerAddress, this.user1Address, this.user2Address] = deployedAccounts.map((a)=>a.address);
85
- this.wallet = wallet;
86
- this.aztecNode = aztecNode;
87
- this.aztecNodeConfig = aztecNodeConfig;
88
- return Promise.resolve();
89
- });
90
- await this.snapshotManager.snapshot('e2e_cross_chain_messaging', async ()=>{
91
- // Create the token contract state.
92
- // Move this account thing to addAccounts above?
93
- this.logger.verbose(`Public deploy accounts...`);
94
- await publicDeployAccounts(this.wallet, [
95
- this.ownerAddress,
96
- this.user1Address,
97
- this.user2Address
98
- ]);
99
- this.l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
100
- const underlyingERC20Address = await deployL1Contract(this.l1Client, TestERC20Abi, TestERC20Bytecode, [
101
- 'Underlying',
102
- 'UND',
103
- this.l1Client.account.address
104
- ]).then(({ address })=>address);
105
- this.logger.verbose(`Setting up cross chain harness...`);
106
- this.crossChainTestHarness = await CrossChainTestHarness.new(this.aztecNode, this.l1Client, this.wallet, this.ownerAddress, this.logger, underlyingERC20Address);
107
- this.logger.verbose(`L2 token deployed to: ${this.crossChainTestHarness.l2Token.address}`);
108
- return this.crossChainTestHarness.toCrossChainContext();
109
- }, (crossChainContext)=>{
110
- this.l2Token = TokenContract.at(crossChainContext.l2Token, this.wallet);
111
- this.l2Bridge = TokenBridgeContract.at(crossChainContext.l2Bridge, this.wallet);
112
- // There is an issue with the reviver so we are getting strings sometimes. Working around it here.
113
- this.ethAccount = EthAddress.fromString(crossChainContext.ethAccount.toString());
114
- const tokenPortalAddress = EthAddress.fromString(crossChainContext.tokenPortal.toString());
115
- const l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
116
- this.l1Client = l1Client;
117
- const l1Contracts = this.aztecNodeConfig.l1Contracts;
118
- this.rollup = new RollupContract(l1Client, l1Contracts.rollupAddress.toString());
119
- this.inbox = new InboxContract(l1Client, l1Contracts.inboxAddress.toString());
120
- this.outbox = new OutboxContract(l1Client, l1Contracts.outboxAddress.toString());
121
- this.crossChainTestHarness = new CrossChainTestHarness(this.aztecNode, this.logger, this.l2Token, this.l2Bridge, this.ethAccount, tokenPortalAddress, crossChainContext.underlying, l1Client, this.aztecNodeConfig.l1Contracts, this.wallet, this.ownerAddress);
122
- return Promise.resolve();
72
+ async applyBaseSetup() {
73
+ // Set up base context fields
74
+ this.aztecNode = this.context.aztecNode;
75
+ this.wallet = this.context.wallet;
76
+ this.aztecNodeConfig = this.context.aztecNodeConfig;
77
+ this.cheatCodes = this.context.cheatCodes;
78
+ this.deployL1ContractsValues = this.context.deployL1ContractsValues;
79
+ this.aztecNodeAdmin = this.context.aztecNode;
80
+ if (this.requireEpochProven) {
81
+ // Turn off the watcher to prevent it from keep marking blocks as proven.
82
+ this.context.watcher.setIsMarkingAsProven(false);
83
+ }
84
+ // Deploy 3 accounts
85
+ this.logger.info('Applying 3_accounts setup');
86
+ const { deployedAccounts } = await deployAccounts(3, this.logger)({
87
+ wallet: this.context.wallet,
88
+ initialFundedAccounts: this.context.initialFundedAccounts
123
89
  });
90
+ [this.ownerAddress, this.user1Address, this.user2Address] = deployedAccounts.map((a)=>a.address);
91
+ // Set up cross chain messaging
92
+ this.logger.info('Applying e2e_cross_chain_messaging setup');
93
+ // Create the token contract state.
94
+ this.logger.verbose(`Public deploy accounts...`);
95
+ await publicDeployAccounts(this.wallet, [
96
+ this.ownerAddress,
97
+ this.user1Address,
98
+ this.user2Address
99
+ ]);
100
+ this.l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
101
+ const underlyingERC20Address = await deployL1Contract(this.l1Client, TestERC20Abi, TestERC20Bytecode, [
102
+ 'Underlying',
103
+ 'UND',
104
+ this.l1Client.account.address
105
+ ]).then(({ address })=>address);
106
+ this.logger.verbose(`Setting up cross chain harness...`);
107
+ this.crossChainTestHarness = await CrossChainTestHarness.new(this.aztecNode, this.l1Client, this.wallet, this.ownerAddress, this.logger, underlyingERC20Address);
108
+ this.logger.verbose(`L2 token deployed to: ${this.crossChainTestHarness.l2Token.address}`);
109
+ const crossChainContext = this.crossChainTestHarness.toCrossChainContext();
110
+ this.l2Token = TokenContract.at(crossChainContext.l2Token, this.wallet);
111
+ this.l2Bridge = TokenBridgeContract.at(crossChainContext.l2Bridge, this.wallet);
112
+ // There is an issue with the reviver so we are getting strings sometimes. Working around it here.
113
+ this.ethAccount = EthAddress.fromString(crossChainContext.ethAccount.toString());
114
+ const tokenPortalAddress = EthAddress.fromString(crossChainContext.tokenPortal.toString());
115
+ const l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
116
+ this.l1Client = l1Client;
117
+ const l1Contracts = this.aztecNodeConfig.l1Contracts;
118
+ this.rollup = new RollupContract(l1Client, l1Contracts.rollupAddress.toString());
119
+ this.inbox = new InboxContract(l1Client, l1Contracts.inboxAddress.toString());
120
+ this.outbox = new OutboxContract(l1Client, l1Contracts.outboxAddress.toString());
121
+ this.crossChainTestHarness = new CrossChainTestHarness(this.aztecNode, this.logger, this.l2Token, this.l2Bridge, this.ethAccount, tokenPortalAddress, crossChainContext.underlying, l1Client, this.aztecNodeConfig.l1Contracts, this.wallet, this.ownerAddress);
124
122
  }
125
123
  }
@@ -9,8 +9,9 @@ import type { Wallet } from '@aztec/aztec.js/wallet';
9
9
  import type { StatefulTestContract } from '@aztec/noir-test-contracts.js/StatefulTest';
10
10
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
11
11
  import type { TestWallet } from '@aztec/test-wallet/server';
12
+ import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
12
13
  export declare class DeployTest {
13
- private snapshotManager;
14
+ context: SubsystemsContext;
14
15
  logger: Logger;
15
16
  wallet: TestWallet;
16
17
  defaultAccountAddress: AztecAddress;
@@ -19,7 +20,7 @@ export declare class DeployTest {
19
20
  constructor(testName: string);
20
21
  setup(): Promise<this>;
21
22
  teardown(): Promise<void>;
22
- private applyInitialAccountSnapshot;
23
+ private applyInitialAccount;
23
24
  registerContract<T extends ContractBase>(wallet: Wallet, contractArtifact: ContractArtifactClass<T>, opts?: {
24
25
  salt?: Fr;
25
26
  publicKeys?: PublicKeys;
@@ -33,4 +34,4 @@ export type ContractArtifactClass<T extends ContractBase> = {
33
34
  at(address: AztecAddress, wallet: Wallet): T;
34
35
  artifact: ContractArtifact;
35
36
  };
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZGVwbG95X2NvbnRyYWN0L2RlcGxveV90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUE4QyxNQUFNLDJCQUEyQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU01RCxxQkFBYSxVQUFVO0lBQ3JCLE9BQU8sQ0FBQyxlQUFlLENBQW1CO0lBQ25DLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixNQUFNLEVBQUcsVUFBVSxDQUFDO0lBQ3BCLHFCQUFxQixFQUFHLFlBQVksQ0FBQztJQUNyQyxTQUFTLEVBQUcsU0FBUyxDQUFDO0lBQ3RCLGNBQWMsRUFBRyxjQUFjLENBQUM7SUFFdkMsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUczQjtJQUVLLEtBQUssa0JBTVY7SUFFSyxRQUFRLGtCQUViO1lBRWEsMkJBQTJCO0lBT25DLGdCQUFnQixDQUFDLENBQUMsU0FBUyxZQUFZLEVBQzNDLE1BQU0sRUFBRSxNQUFNLEVBQ2QsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQzFDLElBQUksR0FBRTtRQUNKLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNWLFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQztRQUN4QixRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNqQixlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDekIsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDO0tBQ3BCLEdBQ0wsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQVdaO0NBQ0Y7QUFFRCxNQUFNLE1BQU0sd0JBQXdCLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFFbEcsTUFBTSxNQUFNLHFCQUFxQixDQUFDLENBQUMsU0FBUyxZQUFZLElBQUk7SUFDMUQsRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDN0MsUUFBUSxFQUFFLGdCQUFnQixDQUFDO0NBQzVCLENBQUMifQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZGVwbG95X2NvbnRyYWN0L2RlcGxveV90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUE4QyxNQUFNLDJCQUEyQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBNEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuSCxxQkFBYSxVQUFVO0lBQ2QsT0FBTyxFQUFHLGlCQUFpQixDQUFDO0lBQzVCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixNQUFNLEVBQUcsVUFBVSxDQUFDO0lBQ3BCLHFCQUFxQixFQUFHLFlBQVksQ0FBQztJQUNyQyxTQUFTLEVBQUcsU0FBUyxDQUFDO0lBQ3RCLGNBQWMsRUFBRyxjQUFjLENBQUM7SUFFdkMsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUUzQjtJQUVLLEtBQUssa0JBUVY7SUFFSyxRQUFRLGtCQUViO1lBRWEsbUJBQW1CO0lBWTNCLGdCQUFnQixDQUFDLENBQUMsU0FBUyxZQUFZLEVBQzNDLE1BQU0sRUFBRSxNQUFNLEVBQ2QsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQzFDLElBQUksR0FBRTtRQUNKLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNWLFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQztRQUN4QixRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNqQixlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDekIsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDO0tBQ3BCLEdBQ0wsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQVdaO0NBQ0Y7QUFFRCxNQUFNLE1BQU0sd0JBQXdCLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFFbEcsTUFBTSxNQUFNLHFCQUFxQixDQUFDLENBQUMsU0FBUyxZQUFZLElBQUk7SUFDMUQsRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDN0MsUUFBUSxFQUFFLGdCQUFnQixDQUFDO0NBQzVCLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"deploy_test.d.ts","sourceRoot":"","sources":["../../src/e2e_deploy_contract/deploy_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,YAAY,EAA8C,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAM5D,qBAAa,UAAU;IACrB,OAAO,CAAC,eAAe,CAAmB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,UAAU,CAAC;IACpB,qBAAqB,EAAG,YAAY,CAAC;IACrC,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAEvC,YAAY,QAAQ,EAAE,MAAM,EAG3B;IAEK,KAAK,kBAMV;IAEK,QAAQ,kBAEb;YAEa,2BAA2B;IAOnC,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAC3C,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC1C,IAAI,GAAE;QACJ,IAAI,CAAC,EAAE,EAAE,CAAC;QACV,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,YAAY,CAAC;KACpB,GACL,OAAO,CAAC,CAAC,CAAC,CAWZ;CACF;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAElG,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,YAAY,IAAI;IAC1D,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC"}
1
+ {"version":3,"file":"deploy_test.d.ts","sourceRoot":"","sources":["../../src/e2e_deploy_contract/deploy_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,YAAY,EAA8C,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,KAAK,iBAAiB,EAA4C,MAAM,iCAAiC,CAAC;AAEnH,qBAAa,UAAU;IACd,OAAO,EAAG,iBAAiB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,UAAU,CAAC;IACpB,qBAAqB,EAAG,YAAY,CAAC;IACrC,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAEvC,YAAY,QAAQ,EAAE,MAAM,EAE3B;IAEK,KAAK,kBAQV;IAEK,QAAQ,kBAEb;YAEa,mBAAmB;IAY3B,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAC3C,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC1C,IAAI,GAAE;QACJ,IAAI,CAAC,EAAE,EAAE,CAAC;QACV,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,YAAY,CAAC;KACpB,GACL,OAAO,CAAC,CAAC,CAAC,CAWZ;CACF;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAElG,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,YAAY,IAAI;IAC1D,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC"}
@@ -1,10 +1,9 @@
1
1
  import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
2
2
  import { Fr } from '@aztec/aztec.js/fields';
3
3
  import { createLogger } from '@aztec/aztec.js/log';
4
- import { createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
5
- const { E2E_DATA_PATH: dataPath } = process.env;
4
+ import { deployAccounts, setupFromFresh, teardown } from '../fixtures/snapshot_manager.js';
6
5
  export class DeployTest {
7
- snapshotManager;
6
+ context;
8
7
  logger;
9
8
  wallet;
10
9
  defaultAccountAddress;
@@ -12,23 +11,26 @@ export class DeployTest {
12
11
  aztecNodeAdmin;
13
12
  constructor(testName){
14
13
  this.logger = createLogger(`e2e:e2e_deploy_contract:${testName}`);
15
- this.snapshotManager = createSnapshotManager(`e2e_deploy_contract/${testName}`, dataPath);
16
14
  }
17
15
  async setup() {
18
- await this.applyInitialAccountSnapshot();
19
- const context = await this.snapshotManager.setup();
20
- ({ aztecNode: this.aztecNode, wallet: this.wallet } = context);
21
- this.aztecNodeAdmin = context.aztecNode;
16
+ this.logger.info('Setting up test environment');
17
+ this.context = await setupFromFresh(this.logger);
18
+ this.aztecNode = this.context.aztecNode;
19
+ this.wallet = this.context.wallet;
20
+ this.aztecNodeAdmin = this.context.aztecNode;
21
+ await this.applyInitialAccount();
22
22
  return this;
23
23
  }
24
24
  async teardown() {
25
- await this.snapshotManager.teardown();
25
+ await teardown(this.context);
26
26
  }
27
- async applyInitialAccountSnapshot() {
28
- await this.snapshotManager.snapshot('initial_account', deployAccounts(1, this.logger), ({ deployedAccounts })=>{
29
- this.defaultAccountAddress = deployedAccounts[0].address;
30
- return Promise.resolve();
27
+ async applyInitialAccount() {
28
+ this.logger.info('Applying initial account setup');
29
+ const { deployedAccounts } = await deployAccounts(1, this.logger)({
30
+ wallet: this.context.wallet,
31
+ initialFundedAccounts: this.context.initialFundedAccounts
31
32
  });
33
+ this.defaultAccountAddress = deployedAccounts[0].address;
32
34
  }
33
35
  async registerContract(wallet, contractArtifact, opts = {}) {
34
36
  const { salt, publicKeys, initArgs, constructorName, deployer } = opts;
@@ -16,10 +16,8 @@ describe('e2e_fees bridging_race', ()=>{
16
16
  minTxsPerBlock: 0
17
17
  });
18
18
  beforeAll(async ()=>{
19
- await t.applyInitialAccountsSnapshot();
20
- await t.applyPublicDeployAccountsSnapshot();
21
- await t.applySetupFeeJuiceSnapshot();
22
- ({ wallet, logger } = await t.setup());
19
+ await t.setup();
20
+ ({ wallet, logger } = t);
23
21
  });
24
22
  afterAll(async ()=>{
25
23
  await t.teardown();
@@ -20,7 +20,7 @@ import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
20
20
  import { type BalancesFn, type SetupOptions } from '../fixtures/utils.js';
21
21
  import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
22
22
  /**
23
- * Test fixture for testing fees. Provides the following snapshots:
23
+ * Test fixture for testing fees. Provides the following setup steps:
24
24
  * InitialAccounts: Initializes 3 Schnorr account contracts.
25
25
  * PublicDeployAccounts: Deploys the accounts publicly.
26
26
  * DeployFeeJuice: Deploys the Fee Juice contract.
@@ -31,8 +31,9 @@ import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.j
31
31
  */
32
32
  export declare class FeesTest {
33
33
  private numberOfAccounts;
34
- private snapshotManager;
34
+ private setupOptions;
35
35
  private accounts;
36
+ context: SubsystemsContext;
36
37
  logger: Logger;
37
38
  aztecNode: AztecNode;
38
39
  aztecNodeAdmin: AztecNodeAdmin;
@@ -52,7 +53,6 @@ export declare class FeesTest {
52
53
  counterContract: CounterContract;
53
54
  subscriptionContract: AppSubscriptionContract;
54
55
  feeJuiceBridgeTestHarness: GasBridgingTestHarness;
55
- context: SubsystemsContext;
56
56
  chainMonitor: ChainMonitor;
57
57
  getCoinbaseBalance: () => Promise<bigint>;
58
58
  getCoinbaseSequencerRewards: () => Promise<bigint>;
@@ -75,14 +75,14 @@ export declare class FeesTest {
75
75
  mintAndBridgeFeeJuice(minter: AztecAddress, recipient: AztecAddress): Promise<void>;
76
76
  /** Alice mints bananaCoin tokens privately to the target address and redeems them. */
77
77
  mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
78
- applyBaseSnapshots(): Promise<void>;
79
- applyInitialAccountsSnapshot(): Promise<void>;
80
- applyPublicDeployAccountsSnapshot(): Promise<void>;
81
- applySetupFeeJuiceSnapshot(): Promise<void>;
82
- applyDeployBananaTokenSnapshot(): Promise<void>;
83
- applyFPCSetupSnapshot(): Promise<void>;
84
- applySponsoredFPCSetupSnapshot(): Promise<void>;
78
+ applyBaseSetup(): Promise<void>;
79
+ applyInitialAccounts(): Promise<void>;
80
+ applyPublicDeployAccounts(): Promise<void>;
81
+ applySetupFeeJuice(): Promise<void>;
82
+ applyDeployBananaToken(): Promise<void>;
83
+ applyFPCSetup(): Promise<void>;
84
+ applySponsoredFPCSetup(): Promise<void>;
85
85
  applyFundAliceWithBananas(): Promise<void>;
86
86
  applyFundAliceWithPrivateBananas(): Promise<void>;
87
87
  }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLElBQUksVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0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
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLElBQUksVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0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