@aztec/end-to-end 0.0.1-commit.96bb3f7 → 0.0.1-commit.993d240

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 (263) hide show
  1. package/README.md +27 -0
  2. package/dest/bench/client_flows/benchmark.d.ts +17 -2
  3. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  4. package/dest/bench/client_flows/benchmark.js +38 -1
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts +14 -15
  6. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  7. package/dest/bench/client_flows/client_flows_benchmark.js +132 -150
  8. package/dest/bench/client_flows/config.d.ts +2 -2
  9. package/dest/bench/client_flows/config.d.ts.map +1 -1
  10. package/dest/bench/client_flows/config.js +18 -0
  11. package/dest/bench/utils.d.ts +6 -5
  12. package/dest/bench/utils.d.ts.map +1 -1
  13. package/dest/bench/utils.js +15 -8
  14. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +12 -10
  15. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +120 -117
  17. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +21 -11
  18. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +103 -67
  20. package/dest/e2e_deploy_contract/deploy_test.d.ts +6 -5
  21. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  22. package/dest/e2e_deploy_contract/deploy_test.js +20 -14
  23. package/dest/e2e_epochs/epochs_test.d.ts +39 -8
  24. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  25. package/dest/e2e_epochs/epochs_test.js +171 -50
  26. package/dest/e2e_fees/bridging_race.notest.js +3 -5
  27. package/dest/e2e_fees/fees_test.d.ts +18 -15
  28. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  29. package/dest/e2e_fees/fees_test.js +157 -142
  30. package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
  31. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  32. package/dest/e2e_l1_publisher/write_json.js +14 -13
  33. package/dest/e2e_nested_contract/nested_contract_test.d.ts +7 -10
  34. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  35. package/dest/e2e_nested_contract/nested_contract_test.js +32 -41
  36. package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
  37. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  38. package/dest/e2e_p2p/inactivity_slash_test.js +8 -6
  39. package/dest/e2e_p2p/p2p_network.d.ts +20 -17
  40. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  41. package/dest/e2e_p2p/p2p_network.js +166 -123
  42. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  43. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  44. package/dest/e2e_p2p/reqresp/utils.js +206 -0
  45. package/dest/e2e_p2p/shared.d.ts +30 -12
  46. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  47. package/dest/e2e_p2p/shared.js +86 -66
  48. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  49. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  50. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  51. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  52. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  53. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  54. package/dest/e2e_token_contract/token_contract_test.d.ts +20 -11
  55. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  56. package/dest/e2e_token_contract/token_contract_test.js +103 -93
  57. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  58. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  59. package/dest/fixtures/authwit_proxy.js +34 -0
  60. package/dest/fixtures/e2e_prover_test.d.ts +15 -20
  61. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  62. package/dest/fixtures/e2e_prover_test.js +115 -134
  63. package/dest/fixtures/elu_monitor.d.ts +21 -0
  64. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  65. package/dest/fixtures/elu_monitor.js +102 -0
  66. package/dest/fixtures/fixtures.d.ts +77 -1
  67. package/dest/fixtures/fixtures.d.ts.map +1 -1
  68. package/dest/fixtures/fixtures.js +74 -0
  69. package/dest/fixtures/get_bb_config.d.ts +1 -1
  70. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  71. package/dest/fixtures/get_bb_config.js +5 -5
  72. package/dest/fixtures/ha_setup.d.ts +71 -0
  73. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  74. package/dest/fixtures/ha_setup.js +116 -0
  75. package/dest/fixtures/index.d.ts +2 -1
  76. package/dest/fixtures/index.d.ts.map +1 -1
  77. package/dest/fixtures/index.js +1 -0
  78. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  79. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  80. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  81. package/dest/fixtures/setup.d.ts +266 -0
  82. package/dest/fixtures/setup.d.ts.map +1 -0
  83. package/dest/fixtures/setup.js +714 -0
  84. package/dest/fixtures/setup_p2p_test.d.ts +22 -11
  85. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  86. package/dest/fixtures/setup_p2p_test.js +43 -32
  87. package/dest/fixtures/token_utils.d.ts +2 -2
  88. package/dest/fixtures/token_utils.d.ts.map +1 -1
  89. package/dest/fixtures/token_utils.js +7 -6
  90. package/dest/fixtures/utils.d.ts +5 -191
  91. package/dest/fixtures/utils.d.ts.map +1 -1
  92. package/dest/fixtures/utils.js +4 -615
  93. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  94. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  95. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  96. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  97. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  98. package/dest/forward-compatibility/wallet_service.js +109 -0
  99. package/dest/install_legacy_contracts.d.cts +10 -0
  100. package/dest/install_legacy_contracts.d.cts.map +1 -0
  101. package/dest/legacy-jest-resolver.d.cts +3 -0
  102. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  103. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  104. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  105. package/dest/quality_of_service/prometheus_client.js +67 -0
  106. package/dest/shared/cross_chain_test_harness.d.ts +17 -5
  107. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  108. package/dest/shared/cross_chain_test_harness.js +33 -29
  109. package/dest/shared/gas_portal_test_harness.d.ts +18 -5
  110. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  111. package/dest/shared/gas_portal_test_harness.js +20 -11
  112. package/dest/shared/index.d.ts +2 -1
  113. package/dest/shared/index.d.ts.map +1 -1
  114. package/dest/shared/index.js +1 -0
  115. package/dest/shared/jest_setup.js +41 -1
  116. package/dest/shared/mock_state_view.d.ts +86 -0
  117. package/dest/shared/mock_state_view.d.ts.map +1 -0
  118. package/dest/shared/mock_state_view.js +186 -0
  119. package/dest/shared/submit-transactions.d.ts +4 -4
  120. package/dest/shared/submit-transactions.d.ts.map +1 -1
  121. package/dest/shared/submit-transactions.js +9 -11
  122. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  123. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  124. package/dest/shared/uniswap_l1_l2.js +73 -50
  125. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  126. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  127. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  128. package/dest/simulators/lending_simulator.d.ts +14 -3
  129. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  130. package/dest/simulators/lending_simulator.js +28 -16
  131. package/dest/simulators/token_simulator.d.ts +1 -1
  132. package/dest/simulators/token_simulator.d.ts.map +1 -1
  133. package/dest/simulators/token_simulator.js +3 -24
  134. package/dest/spartan/setup_test_wallets.d.ts +12 -3
  135. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  136. package/dest/spartan/setup_test_wallets.js +133 -43
  137. package/dest/spartan/tx_metrics.d.ts +68 -5
  138. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  139. package/dest/spartan/tx_metrics.js +399 -19
  140. package/dest/spartan/utils/bot.d.ts +28 -0
  141. package/dest/spartan/utils/bot.d.ts.map +1 -0
  142. package/dest/spartan/utils/bot.js +142 -0
  143. package/dest/spartan/utils/chaos.d.ts +79 -0
  144. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  145. package/dest/spartan/utils/chaos.js +142 -0
  146. package/dest/spartan/utils/clients.d.ts +39 -0
  147. package/dest/spartan/utils/clients.d.ts.map +1 -0
  148. package/dest/spartan/utils/clients.js +90 -0
  149. package/dest/spartan/utils/config.d.ts +19 -0
  150. package/dest/spartan/utils/config.d.ts.map +1 -0
  151. package/dest/spartan/utils/config.js +23 -0
  152. package/dest/spartan/utils/health.d.ts +63 -0
  153. package/dest/spartan/utils/health.d.ts.map +1 -0
  154. package/dest/spartan/utils/health.js +202 -0
  155. package/dest/spartan/utils/helm.d.ts +15 -0
  156. package/dest/spartan/utils/helm.d.ts.map +1 -0
  157. package/dest/spartan/utils/helm.js +47 -0
  158. package/dest/spartan/utils/index.d.ts +11 -0
  159. package/dest/spartan/utils/index.d.ts.map +1 -0
  160. package/dest/spartan/utils/index.js +22 -0
  161. package/dest/spartan/utils/k8s.d.ts +128 -0
  162. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  163. package/dest/spartan/utils/k8s.js +381 -0
  164. package/dest/spartan/utils/nodes.d.ts +40 -0
  165. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  166. package/dest/spartan/utils/nodes.js +461 -0
  167. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  168. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  169. package/dest/spartan/utils/pod_logs.js +74 -0
  170. package/dest/spartan/utils/scripts.d.ts +30 -0
  171. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  172. package/dest/spartan/utils/scripts.js +81 -0
  173. package/dest/spartan/utils.d.ts +2 -253
  174. package/dest/spartan/utils.d.ts.map +1 -1
  175. package/dest/spartan/utils.js +1 -892
  176. package/dest/test-wallet/test_wallet.d.ts +85 -0
  177. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  178. package/dest/test-wallet/test_wallet.js +273 -0
  179. package/dest/test-wallet/utils.d.ts +41 -0
  180. package/dest/test-wallet/utils.d.ts.map +1 -0
  181. package/dest/test-wallet/utils.js +66 -0
  182. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  183. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  184. package/dest/test-wallet/wallet_worker_script.js +48 -0
  185. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  186. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  187. package/dest/test-wallet/worker_wallet.js +155 -0
  188. package/dest/test-wallet/worker_wallet_schema.d.ts +160 -0
  189. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  190. package/dest/test-wallet/worker_wallet_schema.js +22 -0
  191. package/package.json +53 -45
  192. package/src/bench/client_flows/benchmark.ts +43 -2
  193. package/src/bench/client_flows/client_flows_benchmark.ts +189 -240
  194. package/src/bench/client_flows/config.ts +9 -1
  195. package/src/bench/utils.ts +17 -9
  196. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +141 -152
  197. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +144 -114
  198. package/src/e2e_deploy_contract/deploy_test.ts +24 -16
  199. package/src/e2e_epochs/epochs_test.ts +217 -93
  200. package/src/e2e_fees/bridging_race.notest.ts +4 -10
  201. package/src/e2e_fees/fees_test.ts +206 -227
  202. package/src/e2e_l1_publisher/write_json.ts +16 -13
  203. package/src/e2e_nested_contract/nested_contract_test.ts +38 -57
  204. package/src/e2e_p2p/inactivity_slash_test.ts +8 -6
  205. package/src/e2e_p2p/p2p_network.ts +238 -190
  206. package/src/e2e_p2p/reqresp/utils.ts +274 -0
  207. package/src/e2e_p2p/shared.ts +111 -83
  208. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  209. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  210. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  211. package/src/e2e_token_contract/token_contract_test.ts +129 -117
  212. package/src/fixtures/authwit_proxy.ts +54 -0
  213. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  214. package/src/fixtures/e2e_prover_test.ts +143 -184
  215. package/src/fixtures/elu_monitor.ts +126 -0
  216. package/src/fixtures/fixtures.ts +96 -0
  217. package/src/fixtures/get_bb_config.ts +7 -6
  218. package/src/fixtures/ha_setup.ts +188 -0
  219. package/src/fixtures/index.ts +1 -0
  220. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  221. package/src/fixtures/setup.ts +1037 -0
  222. package/src/fixtures/setup_p2p_test.ts +52 -52
  223. package/src/fixtures/token_utils.ts +7 -6
  224. package/src/fixtures/utils.ts +29 -901
  225. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  226. package/src/forward-compatibility/wallet_service.ts +104 -0
  227. package/src/guides/up_quick_start.sh +3 -5
  228. package/src/install_legacy_contracts.cjs +75 -0
  229. package/src/legacy-jest-resolver.cjs +112 -0
  230. package/src/quality_of_service/prometheus_client.ts +113 -0
  231. package/src/shared/cross_chain_test_harness.ts +38 -38
  232. package/src/shared/gas_portal_test_harness.ts +22 -12
  233. package/src/shared/index.ts +1 -0
  234. package/src/shared/jest_setup.ts +51 -1
  235. package/src/shared/mock_state_view.ts +188 -0
  236. package/src/shared/submit-transactions.ts +11 -16
  237. package/src/shared/uniswap_l1_l2.ts +91 -73
  238. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  239. package/src/simulators/lending_simulator.ts +34 -16
  240. package/src/simulators/token_simulator.ts +6 -30
  241. package/src/spartan/setup_test_wallets.ts +184 -28
  242. package/src/spartan/tx_metrics.ts +329 -25
  243. package/src/spartan/utils/bot.ts +188 -0
  244. package/src/spartan/utils/chaos.ts +253 -0
  245. package/src/spartan/utils/clients.ts +100 -0
  246. package/src/spartan/utils/config.ts +29 -0
  247. package/src/spartan/utils/health.ts +255 -0
  248. package/src/spartan/utils/helm.ts +84 -0
  249. package/src/spartan/utils/index.ts +71 -0
  250. package/src/spartan/utils/k8s.ts +535 -0
  251. package/src/spartan/utils/nodes.ts +543 -0
  252. package/src/spartan/utils/pod_logs.ts +99 -0
  253. package/src/spartan/utils/scripts.ts +99 -0
  254. package/src/spartan/utils.ts +1 -1158
  255. package/src/test-wallet/test_wallet.ts +376 -0
  256. package/src/test-wallet/utils.ts +108 -0
  257. package/src/test-wallet/wallet_worker_script.ts +60 -0
  258. package/src/test-wallet/worker_wallet.ts +218 -0
  259. package/src/test-wallet/worker_wallet_schema.ts +13 -0
  260. package/dest/fixtures/snapshot_manager.d.ts +0 -93
  261. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  262. package/dest/fixtures/snapshot_manager.js +0 -488
  263. package/src/fixtures/snapshot_manager.ts +0 -646
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/env -S node --no-warnings
2
+ /**
3
+ * Standalone entrypoint that spins up a local Aztec network (L1 + node) and exposes a {@link NodeEmbeddedWallet} over
4
+ * JSON-RPC.
5
+ *
6
+ * Intended for forward-compatibility testing: an **old** release image runs this script so that **new** tests can send
7
+ * new artifacts to old runtime code (loadContractArtifact, ACIR simulator, class-ID computation, entrypoint encoding,
8
+ * etc.).
9
+ */ import { getSchnorrAccountContractAddress } from '@aztec/accounts/schnorr';
10
+ import { getInitialTestAccountsData } from '@aztec/accounts/testing';
11
+ import { createLocalNetwork } from '@aztec/aztec';
12
+ import { Fr } from '@aztec/aztec.js/fields';
13
+ import { WalletSchema } from '@aztec/aztec.js/wallet';
14
+ import { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
15
+ import { createNamespacedSafeJsonRpcServer, startHttpRpcServer } from '@aztec/foundation/json-rpc/server';
16
+ import { createLogger } from '@aztec/foundation/log';
17
+ import { AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
18
+ import { EmbeddedWallet } from '@aztec/wallets/embedded';
19
+ const logger = createLogger('wallet-service');
20
+ const { ETHEREUM_HOSTS = 'http://localhost:8545', NODE_PORT = '8080', WALLET_PORT = '8081' } = process.env;
21
+ async function main() {
22
+ const l1RpcUrls = ETHEREUM_HOSTS.split(',').map((url)=>url.trim());
23
+ // Some tests (e.g. AMM) need 4 accounts but only 3 are funded via genesis. Generate deterministic keys for a 4th
24
+ // account so we can compute its address before network startup and include it in genesis funding. We cannot do this
25
+ // in the test because Wallet interface does not expose account creation functionality (only TestWallet exposes that
26
+ // but that's not used in forward compatibility testing).
27
+ const extraAccountSecret = Fr.fromHexString('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef');
28
+ const extraAccountSalt = Fr.ZERO;
29
+ const extraAccountSigningKey = GrumpkinScalar.random();
30
+ const extraAccountAddress = await getSchnorrAccountContractAddress(extraAccountSecret, extraAccountSalt, extraAccountSigningKey);
31
+ logger.info('Starting wallet service...', {
32
+ l1RpcUrls
33
+ });
34
+ // createLocalNetwork deploys L1 contracts, starts the node, and optionally deploys funded test accounts (when
35
+ // TEST_ACCOUNTS=true via env). We are not proving anything just like is done when local network is started by
36
+ // the `aztecStart` function. The extra account address is passed via prefundAddresses so it gets fee juice at genesis.
37
+ const { node, stop: stopNetwork } = await createLocalNetwork({
38
+ l1RpcUrls,
39
+ realProofs: false,
40
+ prefundAddresses: [
41
+ extraAccountAddress.toString()
42
+ ]
43
+ }, logger.info);
44
+ // Create an ephemeral embedded wallet backed by the local node.
45
+ const wallet = await EmbeddedWallet.create(node, {
46
+ ephemeral: true
47
+ });
48
+ // Re-register the initial test accounts so they are available via wallet.getAccounts(). createLocalNetwork deploys
49
+ // them onchain but uses a temporary wallet that is then stopped.
50
+ //
51
+ // We use the non-lazy import path (@aztec/accounts/testing, not /lazy) to avoid the dynamic JSON import that is
52
+ // incompatible with Node.js import attribute enforcement.
53
+ const testAccountsData = await getInitialTestAccountsData();
54
+ const accounts = await Promise.all(testAccountsData.map(({ secret, salt, signingKey })=>wallet.createSchnorrAccount(secret, salt, signingKey)));
55
+ // Register and deploy the 4th account.
56
+ const extraAccount = await wallet.createSchnorrAccount(extraAccountSecret, extraAccountSalt, extraAccountSigningKey);
57
+ const deployMethod = await extraAccount.getDeployMethod();
58
+ await deployMethod.send({
59
+ from: accounts[0].address
60
+ });
61
+ logger.info('Embedded wallet created', {
62
+ accounts: [
63
+ ...accounts,
64
+ extraAccount
65
+ ].map((a)=>a.address.toString())
66
+ });
67
+ // Contract artifacts are large, so allow generous body sizes for RPC requests.
68
+ const rpcOptions = {
69
+ maxBodySizeBytes: '50mb'
70
+ };
71
+ // Serve node RPC
72
+ const nodeRpcServer = createNamespacedSafeJsonRpcServer({
73
+ node: [
74
+ node,
75
+ AztecNodeApiSchema
76
+ ]
77
+ }, rpcOptions);
78
+ const nodeHttpServer = await startHttpRpcServer(nodeRpcServer, {
79
+ port: NODE_PORT
80
+ });
81
+ logger.info(`Node JSON-RPC server listening on port ${nodeHttpServer.port}`);
82
+ // Serve wallet RPC
83
+ const walletRpcServer = createNamespacedSafeJsonRpcServer({
84
+ wallet: [
85
+ wallet,
86
+ WalletSchema
87
+ ]
88
+ }, rpcOptions);
89
+ const walletHttpServer = await startHttpRpcServer(walletRpcServer, {
90
+ port: WALLET_PORT
91
+ });
92
+ logger.info(`Wallet JSON-RPC server listening on port ${walletHttpServer.port}`);
93
+ const shutdown = async ()=>{
94
+ logger.info('Shutting down...');
95
+ nodeHttpServer.close();
96
+ walletHttpServer.close();
97
+ await wallet.stop();
98
+ await stopNetwork();
99
+ process.exit(0);
100
+ };
101
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
102
+ process.once('SIGINT', shutdown);
103
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
104
+ process.once('SIGTERM', shutdown);
105
+ }
106
+ main().catch((err)=>{
107
+ logger.error('Wallet service failed to start', err);
108
+ process.exit(1);
109
+ });
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ declare function cacheRoot(version: any): string;
3
+ declare function installLegacyContracts(version: any): void;
4
+ declare const _default: {
5
+ installLegacyContracts: typeof installLegacyContracts;
6
+ REDIRECTED: string[];
7
+ cacheRoot: typeof cacheRoot;
8
+ };
9
+ export = _default;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbF9sZWdhY3lfY29udHJhY3RzLmQuY3RzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2luc3RhbGxfbGVnYWN5X2NvbnRyYWN0cy5janMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQW9CQSxpQkFBUyxTQUFTLENBQUMsT0FBTyxLQUFBLFVBRXpCO0FBTUQsaUJBQVMsc0JBQXNCLENBQUMsT0FBTyxLQUFBLFFBd0N0Qzs7Ozs7O0FBRUQsa0JBQWtFIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install_legacy_contracts.d.cts","sourceRoot":"","sources":["../src/install_legacy_contracts.cjs"],"names":[],"mappings":";AAoBA,iBAAS,SAAS,CAAC,OAAO,KAAA,UAEzB;AAMD,iBAAS,sBAAsB,CAAC,OAAO,KAAA,QAwCtC;;;;;;AAED,kBAAkE"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (request: any, options: any) => any;
2
+ export = _default;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LWplc3QtcmVzb2x2ZXIuZC5jdHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbGVnYWN5LWplc3QtcmVzb2x2ZXIuY2pzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFrRkEsa0JBNkJDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-jest-resolver.d.cts","sourceRoot":"","sources":["../src/legacy-jest-resolver.cjs"],"names":[],"mappings":";AAkFA,kBA6BC"}
@@ -0,0 +1,38 @@
1
+ export type PromteheusClientOptions = {
2
+ server: URL;
3
+ };
4
+ export declare class PrometheusClient {
5
+ private config;
6
+ private httpClient;
7
+ constructor(config: PromteheusClientOptions, httpClient?: typeof fetch);
8
+ querySingleValue(query: string, time?: Date): Promise<number>;
9
+ queryRaw(query: string, time?: Date): Promise<PrometheusResponse>;
10
+ queryRangeRaw(query: string, step: PrometheusDuration, start: Date, end?: Date): Promise<PrometheusResponse>;
11
+ private callPrometheus;
12
+ }
13
+ export type PrometheusDuration = `${number}s` | `${number}m` | `${number}h`;
14
+ export type PrometheusData = {
15
+ resultType: 'vector';
16
+ result: Array<{
17
+ metric: unknown;
18
+ value: [unixTimestamp: number, value: string];
19
+ }>;
20
+ } | {
21
+ resultType: 'matrix';
22
+ result: Array<{
23
+ metric: unknown;
24
+ values: [unixTimestamp: number, value: string];
25
+ }>;
26
+ } | {
27
+ resultType: 'scalar' | 'string';
28
+ result: unknown;
29
+ };
30
+ export type PrometheusResponse = {
31
+ status: 'error';
32
+ errorType: string;
33
+ error: string;
34
+ } | {
35
+ status: 'success';
36
+ data: PrometheusData;
37
+ };
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWV0aGV1c19jbGllbnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWFsaXR5X29mX3NlcnZpY2UvcHJvbWV0aGV1c19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxNQUFNLHVCQUF1QixHQUFHO0lBQ3BDLE1BQU0sRUFBRSxHQUFHLENBQUM7Q0FDYixDQUFDO0FBRUYscUJBQWEsZ0JBQWdCO0lBRXpCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFVBQVU7SUFGcEIsWUFDVSxNQUFNLEVBQUUsdUJBQXVCLEVBQy9CLFVBQVUsR0FBRSxPQUFPLEtBQWEsRUFDdEM7SUFFUyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksT0FBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FhL0U7SUFFTSxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLE9BQWEsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FPN0U7SUFFTSxhQUFhLENBQ2xCLEtBQUssRUFBRSxNQUFNLEVBQ2IsSUFBSSxFQUFFLGtCQUFrQixFQUN4QixLQUFLLEVBQUUsSUFBSSxFQUNYLEdBQUcsT0FBYSxHQUNmLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQVM3QjtZQUVhLGNBQWM7Q0E2QjdCO0FBRUQsTUFBTSxNQUFNLGtCQUFrQixHQUFHLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sR0FBRyxDQUFDO0FBRTVFLE1BQU0sTUFBTSxjQUFjLEdBQ3RCO0lBQ0UsVUFBVSxFQUFFLFFBQVEsQ0FBQztJQUNyQixNQUFNLEVBQUUsS0FBSyxDQUFDO1FBQ1osTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUNoQixLQUFLLEVBQUUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztLQUMvQyxDQUFDLENBQUM7Q0FDSixHQUNEO0lBQ0UsVUFBVSxFQUFFLFFBQVEsQ0FBQztJQUNyQixNQUFNLEVBQUUsS0FBSyxDQUFDO1FBQ1osTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUNoQixNQUFNLEVBQUUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNoRCxDQUFDLENBQUM7Q0FDSixHQUNEO0lBQ0UsVUFBVSxFQUFFLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDaEMsTUFBTSxFQUFFLE9BQU8sQ0FBQztDQUNqQixDQUFDO0FBRU4sTUFBTSxNQUFNLGtCQUFrQixHQUMxQjtJQUNFLE1BQU0sRUFBRSxPQUFPLENBQUM7SUFDaEIsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQixLQUFLLEVBQUUsTUFBTSxDQUFDO0NBQ2YsR0FDRDtJQUNFLE1BQU0sRUFBRSxTQUFTLENBQUM7SUFDbEIsSUFBSSxFQUFFLGNBQWMsQ0FBQztDQUN0QixDQUFDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prometheus_client.d.ts","sourceRoot":"","sources":["../../src/quality_of_service/prometheus_client.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAFpB,YACU,MAAM,EAAE,uBAAuB,EAC/B,UAAU,GAAE,OAAO,KAAa,EACtC;IAES,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,OAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAa/E;IAEM,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,OAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAO7E;IAEM,aAAa,CAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,IAAI,EACX,GAAG,OAAa,GACf,OAAO,CAAC,kBAAkB,CAAC,CAS7B;YAEa,cAAc;CA6B7B;AAED,MAAM,MAAM,kBAAkB,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC;AAE5E,MAAM,MAAM,cAAc,GACtB;IACE,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,EAAE,KAAK,CAAC;QACZ,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;KAC/C,CAAC,CAAC;CACJ,GACD;IACE,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,EAAE,KAAK,CAAC;QACZ,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;KAChD,CAAC,CAAC;CACJ,GACD;IACE,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,kBAAkB,GAC1B;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;CACtB,CAAC"}
@@ -0,0 +1,67 @@
1
+ export class PrometheusClient {
2
+ config;
3
+ httpClient;
4
+ constructor(config, httpClient = fetch){
5
+ this.config = config;
6
+ this.httpClient = httpClient;
7
+ }
8
+ async querySingleValue(query, time = new Date()) {
9
+ const resp = await this.queryRaw(query, time);
10
+ if (resp.status === 'success') {
11
+ if (resp.data.resultType === 'vector') {
12
+ if (resp.data.result.length === 0) {
13
+ return 0;
14
+ }
15
+ const [_, value] = resp.data.result[0].value;
16
+ return parseFloat(value);
17
+ }
18
+ }
19
+ throw new TypeError('Unsupported response body', {
20
+ cause: JSON.stringify(resp)
21
+ });
22
+ }
23
+ queryRaw(query, time = new Date()) {
24
+ const searchParams = new URLSearchParams();
25
+ searchParams.set('query', query);
26
+ searchParams.set('time', String(Math.trunc(time.getTime() / 1000)));
27
+ searchParams.set('limit', '10');
28
+ return this.callPrometheus('query', searchParams);
29
+ }
30
+ queryRangeRaw(query, step, start, end = new Date()) {
31
+ const searchParams = new URLSearchParams();
32
+ searchParams.set('query', query);
33
+ searchParams.set('step', step);
34
+ searchParams.set('start', String(Math.trunc(start.getTime() / 1000)));
35
+ searchParams.set('end', String(Math.trunc(end.getTime() / 1000)));
36
+ searchParams.set('limit', '10');
37
+ return this.callPrometheus('query_range', searchParams);
38
+ }
39
+ async callPrometheus(api, searchParams) {
40
+ const url = new URL('api/v1/' + api, this.config.server);
41
+ for (const [name, value] of searchParams){
42
+ url.searchParams.append(name, value);
43
+ }
44
+ const resp = await this.httpClient(url, {
45
+ method: 'GET'
46
+ });
47
+ if (!resp.ok || resp.status !== 200) {
48
+ throw new Error('Invalid HTTP response from Prometheus', {
49
+ cause: {
50
+ url,
51
+ status: resp.status,
52
+ statusText: resp.statusText
53
+ }
54
+ });
55
+ }
56
+ const body = await resp.json();
57
+ if ('status' in body && (body.status === 'error' || body.status === 'success')) {
58
+ return body;
59
+ }
60
+ throw new Error('Invalid response from Prometheus', {
61
+ cause: {
62
+ url,
63
+ body
64
+ }
65
+ });
66
+ }
67
+ }
@@ -8,10 +8,10 @@ import type { AztecNode } from '@aztec/aztec.js/node';
8
8
  import type { SiblingPath } from '@aztec/aztec.js/trees';
9
9
  import type { TxReceipt } from '@aztec/aztec.js/tx';
10
10
  import type { Wallet } from '@aztec/aztec.js/wallet';
11
+ import { OutboxContract } from '@aztec/ethereum/contracts';
11
12
  import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
12
13
  import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
13
14
  import { EpochNumber } from '@aztec/foundation/branded-types';
14
- import type { FieldsOf } from '@aztec/foundation/types';
15
15
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
16
16
  import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
17
17
  import { type Hex } from 'viem';
@@ -62,20 +62,32 @@ export type CrossChainContext = {
62
62
  * shared between cross chain tests.
63
63
  */
64
64
  export declare class CrossChainTestHarness {
65
+ /** Aztec node instance. */
65
66
  aztecNode: AztecNode;
67
+ /** Logger. */
66
68
  logger: Logger;
69
+ /** L2 Token contract. */
67
70
  l2Token: TokenContract;
71
+ /** L2 Token bridge contract. */
68
72
  l2Bridge: TokenBridgeContract;
73
+ /** Eth account to interact with. */
69
74
  ethAccount: EthAddress;
75
+ /** Portal address. */
70
76
  tokenPortalAddress: EthAddress;
77
+ /** Underlying token for portal tests. */
71
78
  underlyingERC20Address: EthAddress;
79
+ /** Viem Extended client instance. */
72
80
  l1Client: ExtendedViemWalletClient;
81
+ /** Deployment addresses for all L1 contracts */
73
82
  readonly l1ContractAddresses: L1ContractAddresses;
83
+ /** Wallet to simulate and send txs from. */
74
84
  readonly wallet: Wallet;
85
+ /** Owner of the l2 token and bridge */
75
86
  readonly ownerAddress: AztecAddress;
76
87
  static new(aztecNode: AztecNode, l1Client: ExtendedViemWalletClient, wallet: Wallet, ownerAddress: AztecAddress, logger: Logger, underlyingERC20Address: EthAddress): Promise<CrossChainTestHarness>;
77
88
  private readonly l1TokenManager;
78
89
  private readonly l1TokenPortalManager;
90
+ readonly outboxContract: OutboxContract;
79
91
  constructor(
80
92
  /** Aztec node instance. */
81
93
  aztecNode: AztecNode,
@@ -108,14 +120,14 @@ export declare class CrossChainTestHarness {
108
120
  sendL2PublicTransfer(transferAmount: bigint, receiverAddress: AztecAddress): Promise<void>;
109
121
  consumeMessageOnAztecAndMintPrivately(claim: Pick<L2AmountClaimWithRecipient, 'claimAmount' | 'claimSecret' | 'messageLeafIndex' | 'recipient'>): Promise<void>;
110
122
  consumeMessageOnAztecAndMintPublicly(claim: Pick<L2AmountClaim, 'claimAmount' | 'claimSecret' | 'messageLeafIndex'>): Promise<void>;
111
- withdrawPrivateFromAztecToL1(withdrawAmount: bigint, authwitNonce: Fr | undefined, authWitness: AuthWitness): Promise<FieldsOf<TxReceipt>>;
112
- withdrawPublicFromAztecToL1(withdrawAmount: bigint, authwitNonce?: Fr): Promise<FieldsOf<TxReceipt>>;
123
+ withdrawPrivateFromAztecToL1(withdrawAmount: bigint, authwitNonce: Fr | undefined, authWitness: AuthWitness): Promise<TxReceipt>;
124
+ withdrawPublicFromAztecToL1(withdrawAmount: bigint, authwitNonce?: Fr): Promise<TxReceipt>;
113
125
  getL2PrivateBalanceOf(owner: AztecAddress): Promise<any>;
114
126
  expectPrivateBalanceOnL2(owner: AztecAddress, expectedBalance: bigint): Promise<void>;
115
127
  getL2PublicBalanceOf(owner: AztecAddress): Promise<any>;
116
128
  expectPublicBalanceOnL2(owner: AztecAddress, expectedBalance: bigint): Promise<void>;
117
129
  getL2ToL1MessageLeaf(withdrawAmount: bigint, callerOnL1?: EthAddress): Promise<Fr>;
118
- withdrawFundsFromBridgeOnL1(amount: bigint, epochNumber: EpochNumber, messageIndex: bigint, siblingPath: SiblingPath<number>): Promise<void>;
130
+ withdrawFundsFromBridgeOnL1(amount: bigint, epochNumber: EpochNumber, numCheckpointsInEpoch: number, messageIndex: bigint, siblingPath: SiblingPath<number>): Promise<void>;
119
131
  transferToPrivateOnL2(shieldAmount: bigint): Promise<void>;
120
132
  transferToPublicOnL2(amount: bigint, authwitNonce?: Fr): Promise<void>;
121
133
  /**
@@ -128,4 +140,4 @@ export declare class CrossChainTestHarness {
128
140
  makeMessageConsumable(msgHash: Fr | Hex): Promise<void>;
129
141
  toCrossChainContext(): CrossChainContext;
130
142
  }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fdGVzdF9oYXJuZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL2Nyb3NzX2NoYWluX3Rlc3RfaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFHTCxLQUFLLGFBQWEsRUFDbEIsS0FBSywwQkFBMEIsRUFDaEMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFM0UsT0FBTyxFQUFFLEtBQUssR0FBRyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBSTdDOzs7Ozs7Ozs7R0FTRztBQUNILHdCQUFzQiwwQ0FBMEMsQ0FDOUQsTUFBTSxFQUFFLE1BQU0sRUFDZCxRQUFRLEVBQUUsd0JBQXdCLEVBQ2xDLHFCQUFxQixFQUFFLFVBQVUsRUFDakMsS0FBSyxFQUFFLFlBQVksRUFDbkIsc0JBQXNCLEVBQUUsVUFBVSxHQUNqQyxPQUFPLENBQUM7SUFDVDs7T0FFRztJQUNILEtBQUssRUFBRSxhQUFhLENBQUM7SUFDckI7O09BRUc7SUFDSCxNQUFNLEVBQUUsbUJBQW1CLENBQUM7SUFDNUI7O09BRUc7SUFDSCxrQkFBa0IsRUFBRSxVQUFVLENBQUM7SUFDL0I7O09BRUc7SUFDSCxXQUFXLEVBQUUsR0FBRyxDQUFDO0lBQ2pCOztPQUVHO0lBQ0gsZUFBZSxFQUFFLEdBQUcsQ0FBQztDQUN0QixDQUFDLENBOENEO0FBRUQsTUFBTSxNQUFNLGlCQUFpQixHQUFHO0lBQzlCLE9BQU8sRUFBRSxZQUFZLENBQUM7SUFDdEIsUUFBUSxFQUFFLFlBQVksQ0FBQztJQUN2QixXQUFXLEVBQUUsVUFBVSxDQUFDO0lBQ3hCLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFDdkIsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUN2QixZQUFZLEVBQUUsWUFBWSxDQUFDO0lBQzNCLEtBQUssRUFBRSxVQUFVLENBQUM7SUFDbEIsTUFBTSxFQUFFLFVBQVUsQ0FBQztDQUNwQixDQUFDO0FBRUY7OztHQUdHO0FBQ0gscUJBQWEscUJBQXFCO0lBMkN2QixTQUFTLEVBQUUsU0FBUztJQUVwQixNQUFNLEVBQUUsTUFBTTtJQUdkLE9BQU8sRUFBRSxhQUFhO0lBRXRCLFFBQVEsRUFBRSxtQkFBbUI7SUFHN0IsVUFBVSxFQUFFLFVBQVU7SUFHdEIsa0JBQWtCLEVBQUUsVUFBVTtJQUU5QixzQkFBc0IsRUFBRSxVQUFVO0lBRWxDLFFBQVEsRUFBRSx3QkFBd0I7YUFHekIsbUJBQW1CLEVBQUUsbUJBQW1CO2FBR3hDLE1BQU0sRUFBRSxNQUFNO2FBR2QsWUFBWSxFQUFFLFlBQVk7SUFwRTVDLE9BQWEsR0FBRyxDQUNkLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLFFBQVEsRUFBRSx3QkFBd0IsRUFDbEMsTUFBTSxFQUFFLE1BQU0sRUFDZCxZQUFZLEVBQUUsWUFBWSxFQUMxQixNQUFNLEVBQUUsTUFBTSxFQUNkLHNCQUFzQixFQUFFLFVBQVUsR0FDakMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBNEJoQztJQUVELE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFpQjtJQUNoRCxPQUFPLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUF1QjtJQUU1RDtJQUNFLDJCQUEyQjtJQUNwQixTQUFTLEVBQUUsU0FBUztJQUMzQixjQUFjO0lBQ1AsTUFBTSxFQUFFLE1BQU07SUFFckIseUJBQXlCO0lBQ2xCLE9BQU8sRUFBRSxhQUFhO0lBQzdCLGdDQUFnQztJQUN6QixRQUFRLEVBQUUsbUJBQW1CO0lBRXBDLG9DQUFvQztJQUM3QixVQUFVLEVBQUUsVUFBVTtJQUU3QixzQkFBc0I7SUFDZixrQkFBa0IsRUFBRSxVQUFVO0lBQ3JDLHlDQUF5QztJQUNsQyxzQkFBc0IsRUFBRSxVQUFVO0lBQ3pDLHFDQUFxQztJQUM5QixRQUFRLEVBQUUsd0JBQXdCO0lBRXpDLGdEQUFnRDtJQUNoQyxtQkFBbUIsRUFBRSxtQkFBbUI7SUFFeEQsNENBQTRDO0lBQzVCLE1BQU0sRUFBRSxNQUFNO0lBRTlCLHVDQUF1QztJQUN2QixZQUFZLEVBQUUsWUFBWSxFQVczQztJQUVLLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxpQkFVbEM7SUFFRCxjQUFjLENBQUMsT0FBTyxFQUFFLFVBQVUsbUJBRWpDO0lBRUQsd0JBQXdCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLFVBQVEsMEJBRTFEO0lBRUQseUJBQXlCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLFVBQVEsdUNBRTNEO0lBRUssb0JBQW9CLENBQUMsTUFBTSxFQUFFLE1BQU0saUJBR3hDO0lBRUsscUJBQXFCLENBQUMsTUFBTSxFQUFFLE1BQU0saUJBRXpDO0lBRUssb0JBQW9CLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsWUFBWSxpQkFNL0U7SUFFSyxxQ0FBcUMsQ0FDekMsS0FBSyxFQUFFLElBQUksQ0FBQywwQkFBMEIsRUFBRSxhQUFhLEdBQUcsYUFBYSxHQUFHLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxpQkFRMUc7SUFFSyxvQ0FBb0MsQ0FDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxHQUFHLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxpQkFRL0U7SUFFSyw0QkFBNEIsQ0FDaEMsY0FBYyxFQUFFLE1BQU0sRUFDdEIsWUFBWSxnQkFBYyxFQUMxQixXQUFXLEVBQUUsV0FBVyxHQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBTzlCO0lBRUssMkJBQTJCLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxZQUFZLEdBQUUsRUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FPbEg7SUFFSyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxnQkFFOUM7SUFFSyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUkxRTtJQUVLLG9CQUFvQixDQUFDLEtBQUssRUFBRSxZQUFZLGdCQUU3QztJQUVLLHVCQUF1QixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBR3pFO0lBRUssb0JBQW9CLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxVQUFVLEdBQUUsVUFBNEIsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBT3hHO0lBRUQsMkJBQTJCLENBQ3pCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsV0FBVyxFQUFFLFdBQVcsRUFDeEIsWUFBWSxFQUFFLE1BQU0sRUFDcEIsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsaUJBR2pDO0lBRUsscUJBQXFCLENBQUMsWUFBWSxFQUFFLE1BQU0saUJBTS9DO0lBRUssb0JBQW9CLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEtBQVUsaUJBTWhFO0lBRUQ7Ozs7OztPQU1HO0lBQ0cscUJBQXFCLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxHQUFHLGlCQU81QztJQUVELG1CQUFtQixJQUFJLGlCQUFpQixDQVd2QztDQUNGIn0=
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fdGVzdF9oYXJuZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL2Nyb3NzX2NoYWluX3Rlc3RfaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFHTCxLQUFLLGFBQWEsRUFDbEIsS0FBSywwQkFBMEIsRUFDaEMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFz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
@@ -1 +1 @@
1
- {"version":3,"file":"cross_chain_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/cross_chain_test_harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cross_chain_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/cross_chain_test_harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,EAAE,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAK7C;;;;;;;;;GASG;AACH,wBAAsB,0CAA0C,CAC9D,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,wBAAwB,EAClC,qBAAqB,EAAE,UAAU,EACjC,KAAK,EAAE,YAAY,EACnB,sBAAsB,EAAE,UAAU,GACjC,OAAO,CAAC;IACT;;OAEG;IACH,KAAK,EAAE,aAAa,CAAC;IACrB;;OAEG;IACH,MAAM,EAAE,mBAAmB,CAAC;IAC5B;;OAEG;IACH,kBAAkB,EAAE,UAAU,CAAC;IAC/B;;OAEG;IACH,WAAW,EAAE,GAAG,CAAC;IACjB;;OAEG;IACH,eAAe,EAAE,GAAG,CAAC;CACtB,CAAC,CA8CD;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,UAAU,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,qBAAa,qBAAqB;IA2C9B,2BAA2B;IACpB,SAAS,EAAE,SAAS;IAC3B,cAAc;IACP,MAAM,EAAE,MAAM;IAErB,yBAAyB;IAClB,OAAO,EAAE,aAAa;IAC7B,gCAAgC;IACzB,QAAQ,EAAE,mBAAmB;IAEpC,oCAAoC;IAC7B,UAAU,EAAE,UAAU;IAE7B,sBAAsB;IACf,kBAAkB,EAAE,UAAU;IACrC,yCAAyC;IAClC,sBAAsB,EAAE,UAAU;IACzC,qCAAqC;IAC9B,QAAQ,EAAE,wBAAwB;IAEzC,gDAAgD;aAChC,mBAAmB,EAAE,mBAAmB;IAExD,4CAA4C;aAC5B,MAAM,EAAE,MAAM;IAE9B,uCAAuC;aACvB,YAAY,EAAE,YAAY;IArE5C,OAAa,GAAG,CACd,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,wBAAwB,EAClC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,sBAAsB,EAAE,UAAU,GACjC,OAAO,CAAC,qBAAqB,CAAC,CA4BhC;IAED,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAC5D,SAAgB,cAAc,EAAE,cAAc,CAAC;IAE/C;IACE,2BAA2B;IACpB,SAAS,EAAE,SAAS;IAC3B,cAAc;IACP,MAAM,EAAE,MAAM;IAErB,yBAAyB;IAClB,OAAO,EAAE,aAAa;IAC7B,gCAAgC;IACzB,QAAQ,EAAE,mBAAmB;IAEpC,oCAAoC;IAC7B,UAAU,EAAE,UAAU;IAE7B,sBAAsB;IACf,kBAAkB,EAAE,UAAU;IACrC,yCAAyC;IAClC,sBAAsB,EAAE,UAAU;IACzC,qCAAqC;IAC9B,QAAQ,EAAE,wBAAwB;IAEzC,gDAAgD;IAChC,mBAAmB,EAAE,mBAAmB;IAExD,4CAA4C;IAC5B,MAAM,EAAE,MAAM;IAE9B,uCAAuC;IACvB,YAAY,EAAE,YAAY,EAY3C;IAEK,cAAc,CAAC,MAAM,EAAE,MAAM,iBAUlC;IAED,cAAc,CAAC,OAAO,EAAE,UAAU,mBAEjC;IAED,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,UAAQ,0BAE1D;IAED,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,UAAQ,uCAE3D;IAEK,oBAAoB,CAAC,MAAM,EAAE,MAAM,iBAGxC;IAEK,qBAAqB,CAAC,MAAM,EAAE,MAAM,iBAEzC;IAEK,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,iBAK/E;IAEK,qCAAqC,CACzC,KAAK,EAAE,IAAI,CAAC,0BAA0B,EAAE,aAAa,GAAG,aAAa,GAAG,kBAAkB,GAAG,WAAW,CAAC,iBAO1G;IAEK,oCAAoC,CACxC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,aAAa,GAAG,kBAAkB,CAAC,iBAO/E;IAEK,4BAA4B,CAChC,cAAc,EAAE,MAAM,EACtB,YAAY,gBAAc,EAC1B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,SAAS,CAAC,CAMpB;IAEK,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,GAAE,EAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAMxG;IAEK,qBAAqB,CAAC,KAAK,EAAE,YAAY,gBAE9C;IAEK,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAI1E;IAEK,oBAAoB,CAAC,KAAK,EAAE,YAAY,gBAE7C;IAEK,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAGzE;IAEK,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,GAAE,UAA4B,GAAG,OAAO,CAAC,EAAE,CAAC,CAOxG;IAED,2BAA2B,CACzB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,qBAAqB,EAAE,MAAM,EAC7B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,iBAUjC;IAEK,qBAAqB,CAAC,YAAY,EAAE,MAAM,iBAG/C;IAEK,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,KAAU,iBAKhE;IAED;;;;;;OAMG;IACG,qBAAqB,CAAC,OAAO,EAAE,EAAE,GAAG,GAAG,iBAM5C;IAED,mBAAmB,IAAI,iBAAiB,CAWvC;CACF"}
@@ -1,13 +1,14 @@
1
1
  import { EthAddress } from '@aztec/aztec.js/addresses';
2
2
  import { L1TokenPortalManager } from '@aztec/aztec.js/ethereum';
3
3
  import { Fr } from '@aztec/aztec.js/fields';
4
+ import { OutboxContract } from '@aztec/ethereum/contracts';
4
5
  import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
5
- import { retryUntil } from '@aztec/foundation/retry';
6
6
  import { TestERC20Abi, TokenPortalAbi, TokenPortalBytecode } from '@aztec/l1-artifacts';
7
7
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
8
8
  import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
9
9
  import { getContract } from 'viem';
10
10
  import { mintTokensToPrivate } from '../fixtures/token_utils.js';
11
+ import { waitForL1ToL2MessageSeen } from './wait_for_l1_to_l2_message.js';
11
12
  /**
12
13
  * Deploy L1 token and portal, initialize portal, deploy a non native l2 token contract, its L2 bridge contract and attach is to the portal.
13
14
  * @param wallet - the wallet instance
@@ -26,30 +27,30 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
26
27
  client: l1Client
27
28
  });
28
29
  // deploy l2 token
29
- const token = await TokenContract.deploy(wallet, owner, 'TokenName', 'TokenSymbol', 18).send({
30
+ const { contract: token } = await TokenContract.deploy(wallet, owner, 'TokenName', 'TokenSymbol', 18).send({
30
31
  from: owner
31
- }).deployed();
32
+ });
32
33
  // deploy l2 token bridge and attach to the portal
33
- const bridge = await TokenBridgeContract.deploy(wallet, token.address, tokenPortalAddress).send({
34
+ const { contract: bridge } = await TokenBridgeContract.deploy(wallet, token.address, tokenPortalAddress).send({
34
35
  from: owner
35
- }).deployed();
36
- if (await token.methods.get_admin().simulate({
36
+ });
37
+ if ((await token.methods.get_admin().simulate({
37
38
  from: owner
38
- }) !== owner.toBigInt()) {
39
+ })).result !== owner.toBigInt()) {
39
40
  throw new Error(`Token admin is not ${owner}`);
40
41
  }
41
42
  if (!(await bridge.methods.get_config().simulate({
42
43
  from: owner
43
- })).token.equals(token.address)) {
44
+ })).result.token.equals(token.address)) {
44
45
  throw new Error(`Bridge token is not ${token.address}`);
45
46
  }
46
47
  // make the bridge a minter on the token:
47
48
  await token.methods.set_minter(bridge.address, true).send({
48
49
  from: owner
49
- }).wait();
50
- if (await token.methods.is_minter(bridge.address).simulate({
50
+ });
51
+ if ((await token.methods.is_minter(bridge.address).simulate({
51
52
  from: owner
52
- }) === 1n) {
53
+ })).result === 1n) {
53
54
  throw new Error(`Bridge is not a minter`);
54
55
  }
55
56
  // initialize portal
@@ -97,6 +98,7 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
97
98
  }
98
99
  l1TokenManager;
99
100
  l1TokenPortalManager;
101
+ outboxContract;
100
102
  constructor(/** Aztec node instance. */ aztecNode, /** Logger. */ logger, /** L2 Token contract. */ l2Token, /** L2 Token bridge contract. */ l2Bridge, /** Eth account to interact with. */ ethAccount, /** Portal address. */ tokenPortalAddress, /** Underlying token for portal tests. */ underlyingERC20Address, /** Viem Extended client instance. */ l1Client, /** Deployment addresses for all L1 contracts */ l1ContractAddresses, /** Wallet to simulate and send txs from. */ wallet, /** Owner of the l2 token and bridge */ ownerAddress){
101
103
  this.aztecNode = aztecNode;
102
104
  this.logger = logger;
@@ -111,6 +113,7 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
111
113
  this.ownerAddress = ownerAddress;
112
114
  this.l1TokenPortalManager = new L1TokenPortalManager(this.tokenPortalAddress, this.underlyingERC20Address, this.l1ContractAddresses.feeAssetHandlerAddress, this.l1ContractAddresses.outboxAddress, this.l1Client, this.logger);
113
115
  this.l1TokenManager = this.l1TokenPortalManager.getTokenManager();
116
+ this.outboxContract = new OutboxContract(this.l1Client, this.l1ContractAddresses.outboxAddress);
114
117
  }
115
118
  async mintTokensOnL1(amount) {
116
119
  const contract = getContract({
@@ -141,7 +144,7 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
141
144
  this.logger.info('Minting tokens on L2 publicly');
142
145
  await this.l2Token.methods.mint_to_public(this.ownerAddress, amount).send({
143
146
  from: this.ownerAddress
144
- }).wait();
147
+ });
145
148
  }
146
149
  async mintTokensPrivateOnL2(amount) {
147
150
  await mintTokensToPrivate(this.l2Token, this.ownerAddress, this.ownerAddress, amount);
@@ -150,41 +153,41 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
150
153
  // send a transfer tx to force through rollup with the message included
151
154
  await this.l2Token.methods.transfer_in_public(this.ownerAddress, receiverAddress, transferAmount, 0).send({
152
155
  from: this.ownerAddress
153
- }).wait();
156
+ });
154
157
  }
155
158
  async consumeMessageOnAztecAndMintPrivately(claim) {
156
159
  this.logger.info('Consuming messages on L2 privately');
157
160
  const { recipient, claimAmount, claimSecret: secretForL2MessageConsumption, messageLeafIndex } = claim;
158
161
  await this.l2Bridge.methods.claim_private(recipient, claimAmount, secretForL2MessageConsumption, messageLeafIndex).send({
159
162
  from: this.ownerAddress
160
- }).wait();
163
+ });
161
164
  }
162
165
  async consumeMessageOnAztecAndMintPublicly(claim) {
163
166
  this.logger.info('Consuming messages on L2 Publicly');
164
167
  const { claimAmount, claimSecret, messageLeafIndex } = claim;
165
168
  await this.l2Bridge.methods.claim_public(this.ownerAddress, claimAmount, claimSecret, messageLeafIndex).send({
166
169
  from: this.ownerAddress
167
- }).wait();
170
+ });
168
171
  }
169
172
  async withdrawPrivateFromAztecToL1(withdrawAmount, authwitNonce = Fr.ZERO, authWitness) {
170
- const withdrawReceipt = await this.l2Bridge.methods.exit_to_l1_private(this.l2Token.address, this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
173
+ const { receipt: withdrawReceipt } = await this.l2Bridge.methods.exit_to_l1_private(this.l2Token.address, this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
171
174
  authWitnesses: [
172
175
  authWitness
173
176
  ],
174
177
  from: this.ownerAddress
175
- }).wait();
178
+ });
176
179
  return withdrawReceipt;
177
180
  }
178
181
  async withdrawPublicFromAztecToL1(withdrawAmount, authwitNonce = Fr.ZERO) {
179
- const withdrawReceipt = await this.l2Bridge.methods.exit_to_l1_public(this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
182
+ const { receipt: withdrawReceipt } = await this.l2Bridge.methods.exit_to_l1_public(this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
180
183
  from: this.ownerAddress
181
- }).wait();
184
+ });
182
185
  return withdrawReceipt;
183
186
  }
184
187
  async getL2PrivateBalanceOf(owner) {
185
- return await this.l2Token.methods.balance_of_private(owner).simulate({
188
+ return (await this.l2Token.methods.balance_of_private(owner).simulate({
186
189
  from: owner
187
- });
190
+ })).result;
188
191
  }
189
192
  async expectPrivateBalanceOnL2(owner, expectedBalance) {
190
193
  const balance = await this.getL2PrivateBalanceOf(owner);
@@ -192,9 +195,9 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
192
195
  expect(balance).toBe(expectedBalance);
193
196
  }
194
197
  async getL2PublicBalanceOf(owner) {
195
- return await this.l2Token.methods.balance_of_public(owner).simulate({
198
+ return (await this.l2Token.methods.balance_of_public(owner).simulate({
196
199
  from: this.ownerAddress
197
- });
200
+ })).result;
198
201
  }
199
202
  async expectPublicBalanceOnL2(owner, expectedBalance) {
200
203
  const balance = await this.getL2PublicBalanceOf(owner);
@@ -203,20 +206,20 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
203
206
  async getL2ToL1MessageLeaf(withdrawAmount, callerOnL1 = EthAddress.ZERO) {
204
207
  return await this.l1TokenPortalManager.getL2ToL1MessageLeaf(withdrawAmount, this.ethAccount, this.l2Bridge.address, callerOnL1);
205
208
  }
206
- withdrawFundsFromBridgeOnL1(amount, epochNumber, messageIndex, siblingPath) {
207
- return this.l1TokenPortalManager.withdrawFunds(amount, this.ethAccount, epochNumber, messageIndex, siblingPath);
209
+ withdrawFundsFromBridgeOnL1(amount, epochNumber, numCheckpointsInEpoch, messageIndex, siblingPath) {
210
+ return this.l1TokenPortalManager.withdrawFunds(amount, this.ethAccount, epochNumber, numCheckpointsInEpoch, messageIndex, siblingPath);
208
211
  }
209
212
  async transferToPrivateOnL2(shieldAmount) {
210
213
  this.logger.info('Transferring to private on L2');
211
214
  await this.l2Token.methods.transfer_to_private(this.ownerAddress, shieldAmount).send({
212
215
  from: this.ownerAddress
213
- }).wait();
216
+ });
214
217
  }
215
218
  async transferToPublicOnL2(amount, authwitNonce = Fr.ZERO) {
216
219
  this.logger.info('Transferring tokens to public');
217
220
  await this.l2Token.methods.transfer_to_public(this.ownerAddress, this.ownerAddress, amount, authwitNonce).send({
218
221
  from: this.ownerAddress
219
- }).wait();
222
+ });
220
223
  }
221
224
  /**
222
225
  * Makes message available for consumption.
@@ -226,8 +229,9 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
226
229
  * it's included it becomes available for consumption in the next block because the l1 to l2 message tree.
227
230
  */ async makeMessageConsumable(msgHash) {
228
231
  const frMsgHash = typeof msgHash === 'string' ? Fr.fromHexString(msgHash) : msgHash;
229
- // We poll isL1ToL2MessageSynced endpoint until the message is available
230
- await retryUntil(async ()=>await this.aztecNode.isL1ToL2MessageSynced(frMsgHash), 'message sync', 10);
232
+ await waitForL1ToL2MessageSeen(this.aztecNode, frMsgHash, {
233
+ timeoutSeconds: 10
234
+ });
231
235
  await this.mintTokensPublicOnL2(0n);
232
236
  await this.mintTokensPublicOnL2(0n);
233
237
  }
@@ -5,7 +5,9 @@ import type { AztecNode } from '@aztec/aztec.js/node';
5
5
  import type { Wallet } from '@aztec/aztec.js/wallet';
6
6
  import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
7
7
  import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
8
- import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
8
+ import type { AztecNodeAdmin, AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
9
+ /** Aztec node that may expose the debug mining API in local e2e setups. */
10
+ type MiningAztecNode = AztecNode & Partial<AztecNodeDebug>;
9
11
  export interface IGasBridgingTestHarness {
10
12
  getL1FeeJuiceBalance(address: EthAddress): Promise<bigint>;
11
13
  prepareTokensOnL1(owner: AztecAddress): Promise<L2AmountClaim>;
@@ -14,7 +16,7 @@ export interface IGasBridgingTestHarness {
14
16
  l1FeeJuiceAddress: EthAddress;
15
17
  }
16
18
  export interface FeeJuicePortalTestingHarnessFactoryConfig {
17
- aztecNode: AztecNode;
19
+ aztecNode: MiningAztecNode;
18
20
  aztecNodeAdmin?: AztecNodeAdmin;
19
21
  l1Client: ExtendedViemWalletClient;
20
22
  wallet: Wallet;
@@ -32,21 +34,31 @@ export declare class FeeJuicePortalTestingHarnessFactory {
32
34
  * shared between cross chain tests.
33
35
  */
34
36
  export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
35
- aztecNode: AztecNode;
37
+ /** Aztec node */
38
+ aztecNode: MiningAztecNode;
39
+ /** Aztec node admin interface */
36
40
  aztecNodeAdmin: AztecNodeAdmin | undefined;
41
+ /** Wallet. */
37
42
  wallet: Wallet;
43
+ /** Logger. */
38
44
  logger: Logger;
45
+ /** L2 Token/Bridge contract. */
39
46
  feeJuice: FeeJuiceContract;
47
+ /** Eth account to interact with. */
40
48
  ethAccount: EthAddress;
49
+ /** Portal address. */
41
50
  feeJuicePortalAddress: EthAddress;
51
+ /** Underlying token for portal tests. */
42
52
  l1FeeJuiceAddress: EthAddress;
53
+ /** Fee asset handler address. */
43
54
  feeAssetHandlerAddress: EthAddress;
55
+ /** Viem Extended client instance. */
44
56
  l1Client: ExtendedViemWalletClient;
45
57
  readonly l1TokenManager: L1TokenManager;
46
58
  readonly feeJuicePortalManager: L1FeeJuicePortalManager;
47
59
  constructor(
48
60
  /** Aztec node */
49
- aztecNode: AztecNode,
61
+ aztecNode: MiningAztecNode,
50
62
  /** Aztec node admin interface */
51
63
  aztecNodeAdmin: AztecNodeAdmin | undefined,
52
64
  /** Wallet. */
@@ -75,4 +87,5 @@ export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
75
87
  bridgeFromL1ToL2(owner: AztecAddress, claimer: AztecAddress): Promise<void>;
76
88
  private advanceL2Block;
77
89
  }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE1BQU0sV0FBVyx1QkFBdUI7SUFDdEMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0QsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0QsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RSxRQUFRLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0IsaUJBQWlCLEVBQUUsVUFBVSxDQUFDO0NBQy9CO0FBRUQsTUFBTSxXQUFXLHlDQUF5QztJQUN4RCxTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQ3JCLGNBQWMsQ0FBQyxFQUFFLGNBQWMsQ0FBQztJQUNoQyxRQUFRLEVBQUUsd0JBQXdCLENBQUM7SUFDbkMsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDbEI7QUFFRCxxQkFBYSxtQ0FBbUM7SUFDMUIsT0FBTyxDQUFDLE1BQU07SUFBbEMsT0FBTyxlQUEwRTtZQUVuRSxVQUFVO0lBNkJ4QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSx5Q0FBeUMsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FHaEc7Q0FDRjtBQUVEOzs7R0FHRztBQUNILHFCQUFhLHNCQUF1QixZQUFXLHVCQUF1QjtJQU0zRCxTQUFTLEVBQUUsU0FBUztJQUVwQixjQUFjLEVBQUUsY0FBYyxHQUFHLFNBQVM7SUFFMUMsTUFBTSxFQUFFLE1BQU07SUFFZCxNQUFNLEVBQUUsTUFBTTtJQUdkLFFBQVEsRUFBRSxnQkFBZ0I7SUFHMUIsVUFBVSxFQUFFLFVBQVU7SUFHdEIscUJBQXFCLEVBQUUsVUFBVTtJQUVqQyxpQkFBaUIsRUFBRSxVQUFVO0lBRTdCLHNCQUFzQixFQUFFLFVBQVU7SUFFbEMsUUFBUSxFQUFFLHdCQUF3QjtJQTFCM0MsU0FBZ0IsY0FBYyxFQUFFLGNBQWMsQ0FBQztJQUMvQyxTQUFnQixxQkFBcUIsRUFBRSx1QkFBdUIsQ0FBQztJQUUvRDtJQUNFLGlCQUFpQjtJQUNWLFNBQVMsRUFBRSxTQUFTO0lBQzNCLGlDQUFpQztJQUMxQixjQUFjLEVBQUUsY0FBYyxHQUFHLFNBQVM7SUFDakQsY0FBYztJQUNQLE1BQU0sRUFBRSxNQUFNO0lBQ3JCLGNBQWM7SUFDUCxNQUFNLEVBQUUsTUFBTTtJQUVyQixnQ0FBZ0M7SUFDekIsUUFBUSxFQUFFLGdCQUFnQjtJQUVqQyxvQ0FBb0M7SUFDN0IsVUFBVSxFQUFFLFVBQVU7SUFFN0Isc0JBQXNCO0lBQ2YscUJBQXFCLEVBQUUsVUFBVTtJQUN4Qyx5Q0FBeUM7SUFDbEMsaUJBQWlCLEVBQUUsVUFBVTtJQUNwQyxpQ0FBaUM7SUFDMUIsc0JBQXNCLEVBQUUsVUFBVTtJQUN6QyxxQ0FBcUM7SUFDOUIsUUFBUSxFQUFFLHdCQUF3QixFQVcxQztJQUVLLGNBQWMsQ0FBQyxFQUFFLEdBQUUsVUFBNEIsaUJBS3BEO0lBRUssb0JBQW9CLENBQUMsT0FBTyxFQUFFLFVBQVUsbUJBRTdDO0lBRUQsd0JBQXdCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSwwQkFFckU7SUFFSyxzQ0FBc0MsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGFBQWEsaUJBSTVHO0lBRUssb0JBQW9CLENBQUMsS0FBSyxFQUFFLFlBQVksZ0JBRTdDO0lBRUssdUJBQXVCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFHekU7SUFFSyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSwwQkFhMUM7SUFFSyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLGlCQU1oRTtZQUVhLGNBQWM7Q0FlN0IifQ==
90
+ export {};
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUl0RiwyRUFBMkU7QUFDM0UsS0FBSyxlQUFlLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUUzRCxNQUFNLFdBQVcsdUJBQXVCO0lBQ3RDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNELGlCQUFpQixDQUFDLEtBQUssRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELGdCQUFnQixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUUsUUFBUSxFQUFFLGdCQUFnQixDQUFD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
@@ -1 +1 @@
1
- {"version":3,"file":"gas_portal_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/gas_portal_test_harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gas_portal_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/gas_portal_test_harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE5G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAItF,2EAA2E;AAC3E,KAAK,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAE3D,MAAM,WAAW,uBAAuB;IACtC,oBAAoB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/D,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,iBAAiB,EAAE,UAAU,CAAC;CAC/B;AAED,MAAM,WAAW,yCAAyC;IACxD,SAAS,EAAE,eAAe,CAAC;IAC3B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,mCAAmC;IAC1B,OAAO,CAAC,MAAM;IAAlC,OAAO,eAA0E;YAEnE,UAAU;IA6BxB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,yCAAyC,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAGhG;CACF;AAED;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,uBAAuB;IAKlE,iBAAiB;IACV,SAAS,EAAE,eAAe;IACjC,iCAAiC;IAC1B,cAAc,EAAE,cAAc,GAAG,SAAS;IACjD,cAAc;IACP,MAAM,EAAE,MAAM;IACrB,cAAc;IACP,MAAM,EAAE,MAAM;IAErB,gCAAgC;IACzB,QAAQ,EAAE,gBAAgB;IAEjC,oCAAoC;IAC7B,UAAU,EAAE,UAAU;IAE7B,sBAAsB;IACf,qBAAqB,EAAE,UAAU;IACxC,yCAAyC;IAClC,iBAAiB,EAAE,UAAU;IACpC,iCAAiC;IAC1B,sBAAsB,EAAE,UAAU;IACzC,qCAAqC;IAC9B,QAAQ,EAAE,wBAAwB;IA1B3C,SAAgB,cAAc,EAAE,cAAc,CAAC;IAC/C,SAAgB,qBAAqB,EAAE,uBAAuB,CAAC;IAE/D;IACE,iBAAiB;IACV,SAAS,EAAE,eAAe;IACjC,iCAAiC;IAC1B,cAAc,EAAE,cAAc,GAAG,SAAS;IACjD,cAAc;IACP,MAAM,EAAE,MAAM;IACrB,cAAc;IACP,MAAM,EAAE,MAAM;IAErB,gCAAgC;IACzB,QAAQ,EAAE,gBAAgB;IAEjC,oCAAoC;IAC7B,UAAU,EAAE,UAAU;IAE7B,sBAAsB;IACf,qBAAqB,EAAE,UAAU;IACxC,yCAAyC;IAClC,iBAAiB,EAAE,UAAU;IACpC,iCAAiC;IAC1B,sBAAsB,EAAE,UAAU;IACzC,qCAAqC;IAC9B,QAAQ,EAAE,wBAAwB,EAW1C;IAEK,cAAc,CAAC,EAAE,GAAE,UAA4B,iBAKpD;IAEK,oBAAoB,CAAC,OAAO,EAAE,UAAU,mBAE7C;IAED,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,0BAErE;IAEK,sCAAsC,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,iBAI5G;IAEK,oBAAoB,CAAC,KAAK,EAAE,YAAY,gBAE7C;IAEK,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAGzE;IAEK,iBAAiB,CAAC,KAAK,EAAE,YAAY,0BAY1C;IAEK,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,iBAMhE;YAEa,cAAc;CAsB7B"}