@aztec/end-to-end 0.0.0-test.0 → 0.0.1-commit.001888fc

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 (293) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +62 -0
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -0
  3. package/dest/bench/client_flows/benchmark.js +281 -0
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +79 -0
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
  6. package/dest/bench/client_flows/client_flows_benchmark.js +329 -0
  7. package/dest/bench/client_flows/config.d.ts +14 -0
  8. package/dest/bench/client_flows/config.d.ts.map +1 -0
  9. package/dest/bench/client_flows/config.js +124 -0
  10. package/dest/bench/client_flows/data_extractor.d.ts +2 -0
  11. package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
  12. package/dest/bench/client_flows/data_extractor.js +79 -0
  13. package/dest/bench/utils.d.ts +16 -41
  14. package/dest/bench/utils.d.ts.map +1 -1
  15. package/dest/bench/utils.js +44 -72
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +28 -19
  17. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  18. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +125 -103
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +32 -32
  20. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  21. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +105 -104
  22. package/dest/e2e_deploy_contract/deploy_test.d.ts +19 -10
  23. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  24. package/dest/e2e_deploy_contract/deploy_test.js +26 -27
  25. package/dest/e2e_epochs/epochs_test.d.ts +75 -24
  26. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  27. package/dest/e2e_epochs/epochs_test.js +290 -58
  28. package/dest/e2e_fees/bridging_race.notest.d.ts +2 -0
  29. package/dest/e2e_fees/bridging_race.notest.d.ts.map +1 -0
  30. package/dest/e2e_fees/bridging_race.notest.js +61 -0
  31. package/dest/e2e_fees/fees_test.d.ts +38 -23
  32. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  33. package/dest/e2e_fees/fees_test.js +169 -183
  34. package/dest/e2e_l1_publisher/write_json.d.ts +11 -0
  35. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -0
  36. package/dest/e2e_l1_publisher/write_json.js +56 -0
  37. package/dest/e2e_multi_validator/utils.d.ts +12 -0
  38. package/dest/e2e_multi_validator/utils.d.ts.map +1 -0
  39. package/dest/e2e_multi_validator/utils.js +214 -0
  40. package/dest/e2e_nested_contract/nested_contract_test.d.ts +15 -15
  41. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  42. package/dest/e2e_nested_contract/nested_contract_test.js +36 -42
  43. package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
  44. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
  45. package/dest/e2e_p2p/inactivity_slash_test.js +136 -0
  46. package/dest/e2e_p2p/p2p_network.d.ts +282 -27
  47. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  48. package/dest/e2e_p2p/p2p_network.js +255 -176
  49. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  50. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  51. package/dest/e2e_p2p/reqresp/utils.js +190 -0
  52. package/dest/e2e_p2p/shared.d.ts +64 -8
  53. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  54. package/dest/e2e_p2p/shared.js +200 -27
  55. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  56. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  57. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  58. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  59. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  60. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  61. package/dest/e2e_token_contract/token_contract_test.d.ts +29 -14
  62. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  63. package/dest/e2e_token_contract/token_contract_test.js +107 -75
  64. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  65. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  66. package/dest/fixtures/authwit_proxy.js +30 -0
  67. package/dest/fixtures/e2e_prover_test.d.ts +55 -0
  68. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
  69. package/dest/fixtures/e2e_prover_test.js +271 -0
  70. package/dest/fixtures/elu_monitor.d.ts +21 -0
  71. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  72. package/dest/fixtures/elu_monitor.js +102 -0
  73. package/dest/fixtures/fixtures.d.ts +10 -8
  74. package/dest/fixtures/fixtures.d.ts.map +1 -1
  75. package/dest/fixtures/fixtures.js +11 -5
  76. package/dest/fixtures/get_acvm_config.d.ts +2 -2
  77. package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
  78. package/dest/fixtures/get_acvm_config.js +3 -15
  79. package/dest/fixtures/get_bb_config.d.ts +2 -2
  80. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  81. package/dest/fixtures/get_bb_config.js +10 -17
  82. package/dest/fixtures/ha_setup.d.ts +71 -0
  83. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  84. package/dest/fixtures/ha_setup.js +116 -0
  85. package/dest/fixtures/index.d.ts +2 -1
  86. package/dest/fixtures/index.d.ts.map +1 -1
  87. package/dest/fixtures/index.js +1 -0
  88. package/dest/fixtures/l1_to_l2_messaging.d.ts +11 -7
  89. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  90. package/dest/fixtures/l1_to_l2_messaging.js +45 -19
  91. package/dest/fixtures/logging.d.ts +1 -1
  92. package/dest/fixtures/setup.d.ts +239 -0
  93. package/dest/fixtures/setup.d.ts.map +1 -0
  94. package/dest/fixtures/setup.js +606 -0
  95. package/dest/fixtures/setup_p2p_test.d.ts +23 -15
  96. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  97. package/dest/fixtures/setup_p2p_test.js +102 -31
  98. package/dest/fixtures/token_utils.d.ts +10 -4
  99. package/dest/fixtures/token_utils.d.ts.map +1 -1
  100. package/dest/fixtures/token_utils.js +33 -13
  101. package/dest/fixtures/utils.d.ts +5 -153
  102. package/dest/fixtures/utils.d.ts.map +1 -1
  103. package/dest/fixtures/utils.js +4 -552
  104. package/dest/fixtures/web3signer.d.ts +5 -0
  105. package/dest/fixtures/web3signer.d.ts.map +1 -0
  106. package/dest/fixtures/web3signer.js +53 -0
  107. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  108. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  109. package/dest/fixtures/with_telemetry_utils.js +2 -2
  110. package/dest/index.d.ts +1 -1
  111. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  112. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  113. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  114. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  115. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  116. package/dest/quality_of_service/prometheus_client.js +67 -0
  117. package/dest/shared/cross_chain_test_harness.d.ts +44 -27
  118. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  119. package/dest/shared/cross_chain_test_harness.js +107 -53
  120. package/dest/shared/gas_portal_test_harness.d.ts +33 -25
  121. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  122. package/dest/shared/gas_portal_test_harness.js +51 -30
  123. package/dest/shared/index.d.ts +3 -2
  124. package/dest/shared/index.d.ts.map +1 -1
  125. package/dest/shared/index.js +1 -0
  126. package/dest/shared/jest_setup.d.ts +1 -1
  127. package/dest/shared/jest_setup.js +42 -2
  128. package/dest/shared/mock_state_view.d.ts +86 -0
  129. package/dest/shared/mock_state_view.d.ts.map +1 -0
  130. package/dest/shared/mock_state_view.js +186 -0
  131. package/dest/shared/submit-transactions.d.ts +6 -4
  132. package/dest/shared/submit-transactions.d.ts.map +1 -1
  133. package/dest/shared/submit-transactions.js +15 -16
  134. package/dest/shared/uniswap_l1_l2.d.ts +3 -25
  135. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  136. package/dest/shared/uniswap_l1_l2.js +175 -126
  137. package/dest/simulators/index.d.ts +1 -1
  138. package/dest/simulators/lending_simulator.d.ts +7 -7
  139. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  140. package/dest/simulators/lending_simulator.js +17 -18
  141. package/dest/simulators/token_simulator.d.ts +6 -3
  142. package/dest/simulators/token_simulator.d.ts.map +1 -1
  143. package/dest/simulators/token_simulator.js +12 -30
  144. package/dest/spartan/setup_test_wallets.d.ts +36 -11
  145. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  146. package/dest/spartan/setup_test_wallets.js +276 -62
  147. package/dest/spartan/tx_metrics.d.ts +88 -0
  148. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  149. package/dest/spartan/tx_metrics.js +422 -0
  150. package/dest/spartan/utils/bot.d.ts +28 -0
  151. package/dest/spartan/utils/bot.d.ts.map +1 -0
  152. package/dest/spartan/utils/bot.js +142 -0
  153. package/dest/spartan/utils/chaos.d.ts +79 -0
  154. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  155. package/dest/spartan/utils/chaos.js +142 -0
  156. package/dest/spartan/utils/clients.d.ts +39 -0
  157. package/dest/spartan/utils/clients.d.ts.map +1 -0
  158. package/dest/spartan/utils/clients.js +90 -0
  159. package/dest/spartan/utils/config.d.ts +45 -0
  160. package/dest/spartan/utils/config.d.ts.map +1 -0
  161. package/dest/spartan/utils/config.js +23 -0
  162. package/dest/spartan/utils/health.d.ts +63 -0
  163. package/dest/spartan/utils/health.d.ts.map +1 -0
  164. package/dest/spartan/utils/health.js +202 -0
  165. package/dest/spartan/utils/helm.d.ts +15 -0
  166. package/dest/spartan/utils/helm.d.ts.map +1 -0
  167. package/dest/spartan/utils/helm.js +47 -0
  168. package/dest/spartan/utils/index.d.ts +11 -0
  169. package/dest/spartan/utils/index.d.ts.map +1 -0
  170. package/dest/spartan/utils/index.js +22 -0
  171. package/dest/spartan/utils/k8s.d.ts +128 -0
  172. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  173. package/dest/spartan/utils/k8s.js +381 -0
  174. package/dest/spartan/utils/nodes.d.ts +40 -0
  175. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  176. package/dest/spartan/utils/nodes.js +461 -0
  177. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  178. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  179. package/dest/spartan/utils/pod_logs.js +74 -0
  180. package/dest/spartan/utils/scripts.d.ts +30 -0
  181. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  182. package/dest/spartan/utils/scripts.js +81 -0
  183. package/dest/spartan/utils.d.ts +2 -415
  184. package/dest/spartan/utils.d.ts.map +1 -1
  185. package/dest/spartan/utils.js +1 -445
  186. package/dest/test-wallet/test_wallet.d.ts +83 -0
  187. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  188. package/dest/test-wallet/test_wallet.js +214 -0
  189. package/dest/test-wallet/utils.d.ts +41 -0
  190. package/dest/test-wallet/utils.d.ts.map +1 -0
  191. package/dest/test-wallet/utils.js +71 -0
  192. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  193. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  194. package/dest/test-wallet/wallet_worker_script.js +48 -0
  195. package/dest/test-wallet/worker_wallet.d.ts +52 -0
  196. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  197. package/dest/test-wallet/worker_wallet.js +151 -0
  198. package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
  199. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  200. package/dest/test-wallet/worker_wallet_schema.js +10 -0
  201. package/package.json +72 -62
  202. package/src/bench/client_flows/benchmark.ts +363 -0
  203. package/src/bench/client_flows/client_flows_benchmark.ts +388 -0
  204. package/src/bench/client_flows/config.ts +69 -0
  205. package/src/bench/client_flows/data_extractor.ts +89 -0
  206. package/src/bench/utils.ts +47 -86
  207. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +149 -171
  208. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +155 -182
  209. package/src/e2e_deploy_contract/deploy_test.ts +40 -48
  210. package/src/e2e_epochs/epochs_test.ts +364 -93
  211. package/src/e2e_fees/bridging_race.notest.ts +74 -0
  212. package/src/e2e_fees/fees_test.ts +213 -259
  213. package/src/e2e_l1_publisher/write_json.ts +77 -0
  214. package/src/e2e_multi_validator/utils.ts +258 -0
  215. package/src/e2e_nested_contract/nested_contract_test.ts +48 -59
  216. package/src/e2e_p2p/inactivity_slash_test.ts +179 -0
  217. package/src/e2e_p2p/p2p_network.ts +367 -234
  218. package/src/e2e_p2p/reqresp/utils.ts +256 -0
  219. package/src/e2e_p2p/shared.ts +315 -39
  220. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  221. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  222. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  223. package/src/e2e_token_contract/token_contract_test.ts +132 -126
  224. package/src/fixtures/authwit_proxy.ts +50 -0
  225. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  226. package/src/fixtures/e2e_prover_test.ts +332 -0
  227. package/src/fixtures/elu_monitor.ts +126 -0
  228. package/src/fixtures/fixtures.ts +15 -7
  229. package/src/fixtures/get_acvm_config.ts +4 -12
  230. package/src/fixtures/get_bb_config.ts +18 -13
  231. package/src/fixtures/ha_setup.ts +186 -0
  232. package/src/fixtures/index.ts +1 -0
  233. package/src/fixtures/l1_to_l2_messaging.ts +56 -24
  234. package/src/fixtures/setup.ts +903 -0
  235. package/src/fixtures/setup_p2p_test.ts +134 -50
  236. package/src/fixtures/token_utils.ts +37 -16
  237. package/src/fixtures/utils.ts +27 -820
  238. package/src/fixtures/web3signer.ts +63 -0
  239. package/src/fixtures/with_telemetry_utils.ts +2 -2
  240. package/src/guides/up_quick_start.sh +9 -17
  241. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +2 -2
  242. package/src/quality_of_service/prometheus_client.ts +113 -0
  243. package/src/shared/cross_chain_test_harness.ts +110 -94
  244. package/src/shared/gas_portal_test_harness.ts +59 -50
  245. package/src/shared/index.ts +2 -1
  246. package/src/shared/jest_setup.ts +52 -2
  247. package/src/shared/mock_state_view.ts +188 -0
  248. package/src/shared/submit-transactions.ts +19 -20
  249. package/src/shared/uniswap_l1_l2.ts +207 -226
  250. package/src/simulators/lending_simulator.ts +18 -17
  251. package/src/simulators/token_simulator.ts +18 -34
  252. package/src/spartan/DEVELOP.md +128 -0
  253. package/src/spartan/setup_test_wallets.ts +393 -95
  254. package/src/spartan/tx_metrics.ts +376 -0
  255. package/src/spartan/utils/bot.ts +188 -0
  256. package/src/spartan/utils/chaos.ts +253 -0
  257. package/src/spartan/utils/clients.ts +100 -0
  258. package/src/spartan/utils/config.ts +29 -0
  259. package/src/spartan/utils/health.ts +255 -0
  260. package/src/spartan/utils/helm.ts +84 -0
  261. package/src/spartan/utils/index.ts +71 -0
  262. package/src/spartan/utils/k8s.ts +535 -0
  263. package/src/spartan/utils/nodes.ts +543 -0
  264. package/src/spartan/utils/pod_logs.ts +99 -0
  265. package/src/spartan/utils/scripts.ts +99 -0
  266. package/src/spartan/utils.ts +1 -582
  267. package/src/test-wallet/test_wallet.ts +306 -0
  268. package/src/test-wallet/utils.ts +112 -0
  269. package/src/test-wallet/wallet_worker_script.ts +60 -0
  270. package/src/test-wallet/worker_wallet.ts +213 -0
  271. package/src/test-wallet/worker_wallet_schema.ts +13 -0
  272. package/dest/e2e_prover/e2e_prover_test.d.ts +0 -56
  273. package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
  274. package/dest/e2e_prover/e2e_prover_test.js +0 -291
  275. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  276. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  277. package/dest/fixtures/setup_l1_contracts.js +0 -17
  278. package/dest/fixtures/snapshot_manager.d.ts +0 -87
  279. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  280. package/dest/fixtures/snapshot_manager.js +0 -479
  281. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  282. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  283. package/dest/sample-dapp/connect.js +0 -12
  284. package/dest/sample-dapp/contracts.js +0 -10
  285. package/dest/sample-dapp/deploy.js +0 -35
  286. package/dest/sample-dapp/index.js +0 -98
  287. package/src/e2e_prover/e2e_prover_test.ts +0 -418
  288. package/src/fixtures/setup_l1_contracts.ts +0 -27
  289. package/src/fixtures/snapshot_manager.ts +0 -617
  290. package/src/sample-dapp/connect.mjs +0 -16
  291. package/src/sample-dapp/contracts.mjs +0 -14
  292. package/src/sample-dapp/deploy.mjs +0 -40
  293. package/src/sample-dapp/index.mjs +0 -128
@@ -1,18 +1,22 @@
1
- import { type AztecAddress, type AztecNode, EthAddress, L1FeeJuicePortalManager, type L1TokenManager, type L2AmountClaim, type Logger, type PXE, type Wallet } from '@aztec/aztec.js';
2
- import type { ViemPublicClient, ViemWalletClient } from '@aztec/ethereum';
1
+ import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
2
+ import { L1FeeJuicePortalManager, type L1TokenManager, type L2AmountClaim } from '@aztec/aztec.js/ethereum';
3
+ import type { Logger } from '@aztec/aztec.js/log';
4
+ import type { AztecNode } from '@aztec/aztec.js/node';
5
+ import type { Wallet } from '@aztec/aztec.js/wallet';
6
+ import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
3
7
  import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
8
+ import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
4
9
  export interface IGasBridgingTestHarness {
5
10
  getL1FeeJuiceBalance(address: EthAddress): Promise<bigint>;
6
- prepareTokensOnL1(bridgeAmount: bigint, owner: AztecAddress): Promise<L2AmountClaim>;
7
- bridgeFromL1ToL2(bridgeAmount: bigint, owner: AztecAddress): Promise<void>;
11
+ prepareTokensOnL1(owner: AztecAddress): Promise<L2AmountClaim>;
12
+ bridgeFromL1ToL2(owner: AztecAddress, claimer: AztecAddress): Promise<void>;
8
13
  feeJuice: FeeJuiceContract;
9
14
  l1FeeJuiceAddress: EthAddress;
10
15
  }
11
16
  export interface FeeJuicePortalTestingHarnessFactoryConfig {
12
17
  aztecNode: AztecNode;
13
- pxeService: PXE;
14
- publicClient: ViemPublicClient;
15
- walletClient: ViemWalletClient;
18
+ aztecNodeAdmin?: AztecNodeAdmin;
19
+ l1Client: ExtendedViemWalletClient;
16
20
  wallet: Wallet;
17
21
  logger: Logger;
18
22
  mockL1?: boolean;
@@ -30,8 +34,10 @@ export declare class FeeJuicePortalTestingHarnessFactory {
30
34
  export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
31
35
  /** Aztec node */
32
36
  aztecNode: AztecNode;
33
- /** Private eXecution Environment (PXE). */
34
- pxeService: PXE;
37
+ /** Aztec node admin interface */
38
+ aztecNodeAdmin: AztecNodeAdmin | undefined;
39
+ /** Wallet. */
40
+ wallet: Wallet;
35
41
  /** Logger. */
36
42
  logger: Logger;
37
43
  /** L2 Token/Bridge contract. */
@@ -42,17 +48,19 @@ export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
42
48
  feeJuicePortalAddress: EthAddress;
43
49
  /** Underlying token for portal tests. */
44
50
  l1FeeJuiceAddress: EthAddress;
45
- /** Viem Public client instance. */
46
- publicClient: ViemPublicClient;
47
- /** Viem Wallet Client instance. */
48
- walletClient: ViemWalletClient;
51
+ /** Fee asset handler address. */
52
+ feeAssetHandlerAddress: EthAddress;
53
+ /** Viem Extended client instance. */
54
+ l1Client: ExtendedViemWalletClient;
49
55
  readonly l1TokenManager: L1TokenManager;
50
56
  readonly feeJuicePortalManager: L1FeeJuicePortalManager;
51
57
  constructor(
52
58
  /** Aztec node */
53
59
  aztecNode: AztecNode,
54
- /** Private eXecution Environment (PXE). */
55
- pxeService: PXE,
60
+ /** Aztec node admin interface */
61
+ aztecNodeAdmin: AztecNodeAdmin | undefined,
62
+ /** Wallet. */
63
+ wallet: Wallet,
56
64
  /** Logger. */
57
65
  logger: Logger,
58
66
  /** L2 Token/Bridge contract. */
@@ -63,18 +71,18 @@ export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
63
71
  feeJuicePortalAddress: EthAddress,
64
72
  /** Underlying token for portal tests. */
65
73
  l1FeeJuiceAddress: EthAddress,
66
- /** Viem Public client instance. */
67
- publicClient: ViemPublicClient,
68
- /** Viem Wallet Client instance. */
69
- walletClient: ViemWalletClient);
70
- mintTokensOnL1(amount: bigint, to?: EthAddress): Promise<void>;
74
+ /** Fee asset handler address. */
75
+ feeAssetHandlerAddress: EthAddress,
76
+ /** Viem Extended client instance. */
77
+ l1Client: ExtendedViemWalletClient);
78
+ mintTokensOnL1(to?: EthAddress): Promise<void>;
71
79
  getL1FeeJuiceBalance(address: EthAddress): Promise<bigint>;
72
- sendTokensToPortalPublic(bridgeAmount: bigint, l2Address: AztecAddress, mint?: boolean): Promise<L2AmountClaim>;
73
- consumeMessageOnAztecAndClaimPrivately(owner: AztecAddress, claim: L2AmountClaim): Promise<void>;
80
+ sendTokensToPortalPublic(bridgeAmount: bigint, l2Address: AztecAddress): Promise<L2AmountClaim>;
81
+ consumeMessageOnAztecAndClaimPrivately(owner: AztecAddress, claimer: AztecAddress, claim: L2AmountClaim): Promise<void>;
74
82
  getL2PublicBalanceOf(owner: AztecAddress): Promise<any>;
75
83
  expectPublicBalanceOnL2(owner: AztecAddress, expectedBalance: bigint): Promise<void>;
76
- prepareTokensOnL1(bridgeAmount: bigint, owner: AztecAddress): Promise<L2AmountClaim>;
77
- bridgeFromL1ToL2(bridgeAmount: bigint, owner: AztecAddress): Promise<void>;
84
+ prepareTokensOnL1(owner: AztecAddress): Promise<L2AmountClaim>;
85
+ bridgeFromL1ToL2(owner: AztecAddress, claimer: AztecAddress): Promise<void>;
78
86
  private advanceL2Block;
79
87
  }
80
- //# sourceMappingURL=gas_portal_test_harness.d.ts.map
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE1BQU0sV0FBVyx1QkFBdUI7SUFDdEMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0QsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0QsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RSxRQUFRLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0IsaUJBQWlCLEVBQUUsVUFBVSxDQUFDO0NBQy9CO0FBRUQsTUFBTSxXQUFXLHlDQUF5QztJQUN4RCxTQUFTLEVBQUUsU0FBUyxD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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":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,UAAU,EAEV,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,GAAG,EACR,KAAK,MAAM,EAEZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,MAAM,WAAW,uBAAuB;IACtC,oBAAoB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACrF,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,iBAAiB,EAAE,UAAU,CAAC;CAC/B;AAED,MAAM,WAAW,yCAAyC;IACxD,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,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;YAEO,UAAU;IA4BxB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,yCAAyC,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAIlG;AAED;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,uBAAuB;IAKlE,iBAAiB;IACV,SAAS,EAAE,SAAS;IAC3B,2CAA2C;IACpC,UAAU,EAAE,GAAG;IACtB,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,mCAAmC;IAC5B,YAAY,EAAE,gBAAgB;IACrC,mCAAmC;IAC5B,YAAY,EAAE,gBAAgB;IAxBvC,SAAgB,cAAc,EAAE,cAAc,CAAC;IAC/C,SAAgB,qBAAqB,EAAE,uBAAuB,CAAC;;IAG7D,iBAAiB;IACV,SAAS,EAAE,SAAS;IAC3B,2CAA2C;IACpC,UAAU,EAAE,GAAG;IACtB,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,mCAAmC;IAC5B,YAAY,EAAE,gBAAgB;IACrC,mCAAmC;IAC5B,YAAY,EAAE,gBAAgB;IAajC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAE,UAA4B;IAM/D,oBAAoB,CAAC,OAAO,EAAE,UAAU;IAI9C,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,UAAQ;IAI9E,sCAAsC,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa;IAMhF,oBAAoB,CAAC,KAAK,EAAE,YAAY;IAIxC,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM;IAKpE,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;IAa3D,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;YASlD,cAAc;CAK7B"}
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,4 +1,7 @@
1
- import { EthAddress, Fr, L1FeeJuicePortalManager, retryUntil } from '@aztec/aztec.js';
1
+ import { EthAddress } from '@aztec/aztec.js/addresses';
2
+ import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum';
3
+ import { Fr } from '@aztec/aztec.js/fields';
4
+ import { retryUntil } from '@aztec/foundation/retry';
2
5
  import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
3
6
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
4
7
  export class FeeJuicePortalTestingHarnessFactory {
@@ -7,16 +10,16 @@ export class FeeJuicePortalTestingHarnessFactory {
7
10
  this.config = config;
8
11
  }
9
12
  async createReal() {
10
- const { aztecNode, pxeService, publicClient, walletClient, wallet, logger } = this.config;
11
- const ethAccount = EthAddress.fromString((await walletClient.getAddresses())[0]);
12
- const l1ContractAddresses = (await pxeService.getNodeInfo()).l1ContractAddresses;
13
+ const { aztecNode, aztecNodeAdmin, l1Client, wallet, logger } = this.config;
14
+ const ethAccount = EthAddress.fromString((await l1Client.getAddresses())[0]);
15
+ const l1ContractAddresses = (await aztecNode.getNodeInfo()).l1ContractAddresses;
13
16
  const feeJuiceAddress = l1ContractAddresses.feeJuiceAddress;
14
17
  const feeJuicePortalAddress = l1ContractAddresses.feeJuicePortalAddress;
15
18
  if (feeJuiceAddress.isZero() || feeJuicePortalAddress.isZero()) {
16
19
  throw new Error('Fee Juice portal not deployed on L1');
17
20
  }
18
- const gasL2 = await FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, wallet);
19
- return new GasBridgingTestHarness(aztecNode, pxeService, logger, gasL2, ethAccount, feeJuicePortalAddress, feeJuiceAddress, publicClient, walletClient);
21
+ const gasL2 = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, wallet);
22
+ return new GasBridgingTestHarness(aztecNode, aztecNodeAdmin, wallet, logger, gasL2, ethAccount, feeJuicePortalAddress, feeJuiceAddress, l1ContractAddresses.feeAssetHandlerAddress, l1Client);
20
23
  }
21
24
  static create(config) {
22
25
  const factory = new FeeJuicePortalTestingHarnessFactory(config);
@@ -28,54 +31,62 @@ export class FeeJuicePortalTestingHarnessFactory {
28
31
  * shared between cross chain tests.
29
32
  */ export class GasBridgingTestHarness {
30
33
  aztecNode;
31
- pxeService;
34
+ aztecNodeAdmin;
35
+ wallet;
32
36
  logger;
33
37
  feeJuice;
34
38
  ethAccount;
35
39
  feeJuicePortalAddress;
36
40
  l1FeeJuiceAddress;
37
- publicClient;
38
- walletClient;
41
+ feeAssetHandlerAddress;
42
+ l1Client;
39
43
  l1TokenManager;
40
44
  feeJuicePortalManager;
41
- constructor(/** Aztec node */ aztecNode, /** Private eXecution Environment (PXE). */ pxeService, /** Logger. */ logger, /** L2 Token/Bridge contract. */ feeJuice, /** Eth account to interact with. */ ethAccount, /** Portal address. */ feeJuicePortalAddress, /** Underlying token for portal tests. */ l1FeeJuiceAddress, /** Viem Public client instance. */ publicClient, /** Viem Wallet Client instance. */ walletClient){
45
+ constructor(/** Aztec node */ aztecNode, /** Aztec node admin interface */ aztecNodeAdmin, /** Wallet. */ wallet, /** Logger. */ logger, /** L2 Token/Bridge contract. */ feeJuice, /** Eth account to interact with. */ ethAccount, /** Portal address. */ feeJuicePortalAddress, /** Underlying token for portal tests. */ l1FeeJuiceAddress, /** Fee asset handler address. */ feeAssetHandlerAddress, /** Viem Extended client instance. */ l1Client){
42
46
  this.aztecNode = aztecNode;
43
- this.pxeService = pxeService;
47
+ this.aztecNodeAdmin = aztecNodeAdmin;
48
+ this.wallet = wallet;
44
49
  this.logger = logger;
45
50
  this.feeJuice = feeJuice;
46
51
  this.ethAccount = ethAccount;
47
52
  this.feeJuicePortalAddress = feeJuicePortalAddress;
48
53
  this.l1FeeJuiceAddress = l1FeeJuiceAddress;
49
- this.publicClient = publicClient;
50
- this.walletClient = walletClient;
51
- this.feeJuicePortalManager = new L1FeeJuicePortalManager(this.feeJuicePortalAddress, this.l1FeeJuiceAddress, this.publicClient, this.walletClient, this.logger);
54
+ this.feeAssetHandlerAddress = feeAssetHandlerAddress;
55
+ this.l1Client = l1Client;
56
+ this.feeJuicePortalManager = new L1FeeJuicePortalManager(this.feeJuicePortalAddress, this.l1FeeJuiceAddress, this.feeAssetHandlerAddress, this.l1Client, this.logger);
52
57
  this.l1TokenManager = this.feeJuicePortalManager.getTokenManager();
53
58
  }
54
- async mintTokensOnL1(amount, to = this.ethAccount) {
55
- const balanceBefore = await this.l1TokenManager.getL1TokenBalance(to.toString());
56
- await this.l1TokenManager.mint(amount, to.toString());
57
- expect(await this.l1TokenManager.getL1TokenBalance(to.toString())).toEqual(balanceBefore + amount);
59
+ async mintTokensOnL1(to = this.ethAccount) {
60
+ // const balanceBefore = await this.l1TokenManager.getL1TokenBalance(to.toString());
61
+ await this.l1TokenManager.mint(to.toString());
62
+ // expect(await this.l1TokenManager.getL1TokenBalance(to.toString())).toEqual(balanceBefore + amount);
58
63
  }
59
64
  async getL1FeeJuiceBalance(address) {
60
65
  return await this.l1TokenManager.getL1TokenBalance(address.toString());
61
66
  }
62
- sendTokensToPortalPublic(bridgeAmount, l2Address, mint = false) {
63
- return this.feeJuicePortalManager.bridgeTokensPublic(l2Address, bridgeAmount, mint);
67
+ sendTokensToPortalPublic(bridgeAmount, l2Address) {
68
+ return this.feeJuicePortalManager.bridgeTokensPublic(l2Address, bridgeAmount, false);
64
69
  }
65
- async consumeMessageOnAztecAndClaimPrivately(owner, claim) {
70
+ async consumeMessageOnAztecAndClaimPrivately(owner, claimer, claim) {
66
71
  this.logger.info('Consuming messages on L2 Privately');
67
72
  const { claimAmount, claimSecret, messageLeafIndex } = claim;
68
- await this.feeJuice.methods.claim(owner, claimAmount, claimSecret, messageLeafIndex).send().wait();
73
+ await this.feeJuice.methods.claim(owner, claimAmount, claimSecret, messageLeafIndex).send({
74
+ from: claimer
75
+ });
69
76
  }
70
77
  async getL2PublicBalanceOf(owner) {
71
- return await this.feeJuice.methods.balance_of_public(owner).simulate();
78
+ return (await this.feeJuice.methods.balance_of_public(owner).simulate({
79
+ from: owner
80
+ })).result;
72
81
  }
73
82
  async expectPublicBalanceOnL2(owner, expectedBalance) {
74
83
  const balance = await this.getL2PublicBalanceOf(owner);
75
84
  expect(balance).toBe(expectedBalance);
76
85
  }
77
- async prepareTokensOnL1(bridgeAmount, owner) {
78
- const claim = await this.sendTokensToPortalPublic(bridgeAmount, owner, true);
86
+ async prepareTokensOnL1(owner) {
87
+ const bridgeAmount = await this.l1TokenManager.getMintAmount();
88
+ await this.mintTokensOnL1();
89
+ const claim = await this.sendTokensToPortalPublic(bridgeAmount, owner);
79
90
  const isSynced = async ()=>await this.aztecNode.isL1ToL2MessageSynced(Fr.fromHexString(claim.messageHash));
80
91
  await retryUntil(isSynced, `message ${claim.messageHash} sync`, 24, 1);
81
92
  // Progress by 2 L2 blocks so that the l1ToL2Message added above will be available to use on L2.
@@ -83,16 +94,26 @@ export class FeeJuicePortalTestingHarnessFactory {
83
94
  await this.advanceL2Block();
84
95
  return claim;
85
96
  }
86
- async bridgeFromL1ToL2(bridgeAmount, owner) {
97
+ async bridgeFromL1ToL2(owner, claimer) {
87
98
  // Prepare the tokens on the L1 side
88
- const claim = await this.prepareTokensOnL1(bridgeAmount, owner);
99
+ const claim = await this.prepareTokensOnL1(owner);
89
100
  // Consume L1 -> L2 message and claim tokens privately on L2
90
- await this.consumeMessageOnAztecAndClaimPrivately(owner, claim);
91
- await this.expectPublicBalanceOnL2(owner, bridgeAmount);
101
+ await this.consumeMessageOnAztecAndClaimPrivately(owner, claimer, claim);
92
102
  }
93
103
  async advanceL2Block() {
94
104
  const initialBlockNumber = await this.aztecNode.getBlockNumber();
95
- await this.aztecNode.flushTxs();
105
+ let minTxsPerBlock = undefined;
106
+ if (this.aztecNodeAdmin) {
107
+ ({ minTxsPerBlock } = await this.aztecNodeAdmin.getConfig());
108
+ await this.aztecNodeAdmin.setConfig({
109
+ minTxsPerBlock: 0
110
+ }); // Set to 0 to ensure we can advance the block
111
+ }
96
112
  await retryUntil(async ()=>await this.aztecNode.getBlockNumber() >= initialBlockNumber + 1);
113
+ if (this.aztecNodeAdmin && minTxsPerBlock !== undefined) {
114
+ await this.aztecNodeAdmin.setConfig({
115
+ minTxsPerBlock
116
+ });
117
+ }
97
118
  }
98
119
  } // docs:end:cross_chain_test_harness
@@ -1,2 +1,3 @@
1
- export { uniswapL1L2TestSuite, type UniswapSetupContext } from './uniswap_l1_l2.js';
2
- //# sourceMappingURL=index.d.ts.map
1
+ export { uniswapL1L2TestSuite } from './uniswap_l1_l2.js';
2
+ export { MockStateView, diffInBps } from './mock_state_view.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1,2 @@
1
1
  export { uniswapL1L2TestSuite } from './uniswap_l1_l2.js';
2
+ export { MockStateView, diffInBps } from './mock_state_view.js';
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=jest_setup.d.ts.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamVzdF9zZXR1cC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC9qZXN0X3NldHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -1,6 +1,12 @@
1
- import { createLogger } from '@aztec/aztec.js';
2
- import { beforeEach, expect } from '@jest/globals';
1
+ import { createLogger } from '@aztec/aztec.js/log';
2
+ import { afterAll, afterEach, beforeEach, expect } from '@jest/globals';
3
+ import { readlinkSync } from 'fs';
3
4
  import { basename } from 'path';
5
+ import { EluMonitor } from '../fixtures/elu_monitor.js';
6
+ const eluMonitor = process.env.ELU_MONITOR_FILE ? new EluMonitor(process.env.ELU_MONITOR_FILE, Number(process.env.ELU_MONITOR_INTERVAL_MS) || undefined) : undefined;
7
+ if (eluMonitor) {
8
+ process.on('exit', ()=>eluMonitor.stop());
9
+ }
4
10
  beforeEach(()=>{
5
11
  const { testPath, currentTestName } = expect.getState();
6
12
  if (!testPath || !currentTestName) {
@@ -8,4 +14,38 @@ beforeEach(()=>{
8
14
  }
9
15
  const logger = createLogger(`e2e:${basename(testPath).replace('.test.ts', '')}`);
10
16
  logger.info(`Running test: ${currentTestName}`);
17
+ eluMonitor?.startTest(currentTestName);
18
+ });
19
+ afterEach(()=>{
20
+ eluMonitor?.stopTest();
21
+ });
22
+ // Log leaked handles after all tests complete. This runs after test-level afterAll hooks,
23
+ // so any handles still alive at this point were not properly cleaned up during teardown.
24
+ // This diagnostic helps identify the source of exit hangs without masking them.
25
+ afterAll(()=>{
26
+ const handles = process._getActiveHandles();
27
+ if (handles.length > 0) {
28
+ const details = handles.map((h)=>{
29
+ const type = h?.constructor?.name ?? typeof h;
30
+ const fd = h?.fd ?? h?._handle?.fd ?? '?';
31
+ const destroyed = h?.destroyed ?? '?';
32
+ const hasRef = typeof h?.hasRef === 'function' ? h.hasRef() : '?';
33
+ const localAddr = h?.localAddress ?? '';
34
+ const remoteAddr = h?.remoteAddress ?? '';
35
+ const localPort = h?.localPort ?? '';
36
+ const remotePort = h?.remotePort ?? '';
37
+ const proto = Object.getPrototypeOf(h)?.constructor?.name ?? '?';
38
+ const keys = Object.keys(h).slice(0, 10).join(',');
39
+ let fdTarget = '';
40
+ if (typeof fd === 'number') {
41
+ try {
42
+ fdTarget = ` -> ${readlinkSync(`/proc/self/fd/${fd}`)}`;
43
+ } catch {
44
+ // ignore
45
+ }
46
+ }
47
+ return ` ${type}(fd=${fd}, destroyed=${destroyed}, hasRef=${hasRef}${fdTarget}) proto=${proto} addr=${localAddr}:${localPort}->${remoteAddr}:${remotePort} keys=[${keys}]`;
48
+ });
49
+ process.stderr.write(`\n[jest_setup] WARNING: ${handles.length} handle(s) still active after teardown:\n${details.join('\n')}\n` + `These may prevent Jest from exiting. Investigate and fix the leak.\n\n`);
50
+ }
11
51
  });
@@ -0,0 +1,86 @@
1
+ import { EthAddress } from '@aztec/aztec.js/addresses';
2
+ import type { EthCheatCodes } from '@aztec/aztec/testing';
3
+ import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
4
+ /**
5
+ * Mock StateView contract for testing the Uniswap price oracle.
6
+ *
7
+ * Wraps a compiled Solidity contract that mimics the Uniswap V4 StateView's getSlot0 function.
8
+ * The mock allows setting return values dynamically for testing different price scenarios.
9
+ *
10
+ * Solidity source:
11
+ * ```solidity
12
+ * // SPDX-License-Identifier: Apache-2.0
13
+ * pragma solidity >=0.8.27;
14
+ *
15
+ * contract MockStateView {
16
+ * uint160 public sqrtPriceX96;
17
+ * int24 public tick;
18
+ * uint24 public protocolFee;
19
+ * uint24 public lpFee;
20
+ *
21
+ * function setReturnValues(
22
+ * uint160 _sqrtPriceX96,
23
+ * int24 _tick,
24
+ * uint24 _protocolFee,
25
+ * uint24 _lpFee
26
+ * ) external {
27
+ * sqrtPriceX96 = _sqrtPriceX96;
28
+ * tick = _tick;
29
+ * protocolFee = _protocolFee;
30
+ * lpFee = _lpFee;
31
+ * }
32
+ *
33
+ * function getSlot0(bytes32 poolId) external view returns (uint160, int24, uint24, uint24) {
34
+ * return (sqrtPriceX96, tick, protocolFee, lpFee);
35
+ * }
36
+ * }
37
+ * ```
38
+ */
39
+ export declare class MockStateView {
40
+ private readonly address;
41
+ private readonly walletClient;
42
+ private readonly log;
43
+ private static readonly BYTECODE;
44
+ private static readonly ABI;
45
+ private constructor();
46
+ /**
47
+ * Deploys the mock StateView contract at the specified address using etch.
48
+ * @param ethCheatCodes - Cheat codes for etching bytecode
49
+ * @param walletClient - Wallet client for sending transactions
50
+ * @param address - Address to deploy the mock at (typically the real StateView address)
51
+ */
52
+ static deploy(ethCheatCodes: EthCheatCodes, walletClient: ExtendedViemWalletClient, address: EthAddress): Promise<MockStateView>;
53
+ /**
54
+ * Sets the price using the ethPerFeeAssetE12 format (same as rollup contract).
55
+ * Computes the corresponding sqrtPriceX96 internally.
56
+ *
57
+ * Math (from fee_asset_price_oracle.ts):
58
+ * ethPerFeeAssetE12 = 1e12 * 2^192 / sqrtPriceX96^2
59
+ *
60
+ * Inverted:
61
+ * sqrtPriceX96^2 = 1e12 * 2^192 / ethPerFeeAssetE12
62
+ * sqrtPriceX96 = sqrt(1e12 * 2^192 / ethPerFeeAssetE12)
63
+ *
64
+ * @param ethPerFeeAssetE12 - The price in ETH per fee asset, scaled by 1e12
65
+ */
66
+ setEthPerFeeAsset(ethPerFeeAssetE12: bigint): Promise<import("viem").TransactionReceipt>;
67
+ /**
68
+ * Sets the sqrtPriceX96 value directly (Uniswap's price encoding).
69
+ * @param sqrtPriceX96 - The sqrtPriceX96 value
70
+ * @param tick - The tick value (default 10)
71
+ * @param protocolFee - The protocol fee (default 0)
72
+ * @param lpFee - The LP fee (default 500)
73
+ */
74
+ setSqrtPriceX96(sqrtPriceX96: bigint, tick?: number, protocolFee?: number, lpFee?: number): Promise<import("viem").TransactionReceipt>;
75
+ /**
76
+ * Converts ethPerFeeAssetE12 to sqrtPriceX96 (inverse of sqrtPriceX96ToEthPerFeeAssetE12).
77
+ *
78
+ * Math:
79
+ * sqrtPriceX96 = sqrt(1e12 * 2^192 / ethPerFeeAssetE12)
80
+ */
81
+ ethPerFeeAssetE12ToSqrtPriceX96(ethPerFeeAssetE12: bigint): bigint;
82
+ /** Integer square root using Newton's method */
83
+ bigintSqrt(n: bigint): bigint;
84
+ }
85
+ export declare function diffInBps(a: bigint, b: bigint): bigint;
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdGF0ZV92aWV3LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL21vY2tfc3RhdGVfdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUl0RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQUNILHFCQUFhLGFBQWE7SUFxRHRCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTztJQUN4QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVk7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0lBdER0QixPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ20rRTtJQUNuZ0YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQStDaEI7SUFFWCxPQUFPLGVBSUg7SUFFSjs7Ozs7T0FLRztJQUNILE9BQWEsTUFBTSxDQUNqQixhQUFhLEVBQUUsYUFBYSxFQUM1QixZQUFZLEVBQUUsd0JBQXdCLEVBQ3RDLE9BQU8sRUFBRSxVQUFVLEdBQ2xCLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FHeEI7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDRyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLDhDQUdoRDtJQUVEOzs7Ozs7T0FNRztJQUNHLGVBQWUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksR0FBRSxNQUFXLEVBQUUsV0FBVyxHQUFFLE1BQVUsRUFBRSxLQUFLLEdBQUUsTUFBWSw4Q0FVMUc7SUFFRDs7Ozs7T0FLRztJQUNILCtCQUErQixDQUFDLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxNQUFNLENBT2pFO0lBRUQsZ0RBQWdEO0lBQ2hELFVBQVUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FjNUI7Q0FDRjtBQUVELHdCQUFnQixTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFdEQifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock_state_view.d.ts","sourceRoot":"","sources":["../../src/shared/mock_state_view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAItE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,aAAa;IAqDtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAtDtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CACm+E;IACngF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CA+ChB;IAEX,OAAO,eAIH;IAEJ;;;;;OAKG;IACH,OAAa,MAAM,CACjB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,wBAAwB,EACtC,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CAGxB;IAED;;;;;;;;;;;;OAYG;IACG,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,8CAGhD;IAED;;;;;;OAMG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,EAAE,WAAW,GAAE,MAAU,EAAE,KAAK,GAAE,MAAY,8CAU1G;IAED;;;;;OAKG;IACH,+BAA+B,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAOjE;IAED,gDAAgD;IAChD,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAc5B;CACF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,186 @@
1
+ import { createLogger } from '@aztec/aztec.js/log';
2
+ import { getContract } from 'viem';
3
+ /**
4
+ * Mock StateView contract for testing the Uniswap price oracle.
5
+ *
6
+ * Wraps a compiled Solidity contract that mimics the Uniswap V4 StateView's getSlot0 function.
7
+ * The mock allows setting return values dynamically for testing different price scenarios.
8
+ *
9
+ * Solidity source:
10
+ * ```solidity
11
+ * // SPDX-License-Identifier: Apache-2.0
12
+ * pragma solidity >=0.8.27;
13
+ *
14
+ * contract MockStateView {
15
+ * uint160 public sqrtPriceX96;
16
+ * int24 public tick;
17
+ * uint24 public protocolFee;
18
+ * uint24 public lpFee;
19
+ *
20
+ * function setReturnValues(
21
+ * uint160 _sqrtPriceX96,
22
+ * int24 _tick,
23
+ * uint24 _protocolFee,
24
+ * uint24 _lpFee
25
+ * ) external {
26
+ * sqrtPriceX96 = _sqrtPriceX96;
27
+ * tick = _tick;
28
+ * protocolFee = _protocolFee;
29
+ * lpFee = _lpFee;
30
+ * }
31
+ *
32
+ * function getSlot0(bytes32 poolId) external view returns (uint160, int24, uint24, uint24) {
33
+ * return (sqrtPriceX96, tick, protocolFee, lpFee);
34
+ * }
35
+ * }
36
+ * ```
37
+ */ export class MockStateView {
38
+ address;
39
+ walletClient;
40
+ log;
41
+ static BYTECODE = '0x608060405234801561000f575f5ffd5b5060043610610060575f3560e01c80633eaf5d9f14610064578063704ce43e146100825780638db791d2146100a0578063b0e21e8a146100be578063b52e4bdd146100dc578063c815641c146100f8575b5f5ffd5b61006c61012b565b60405161007991906102ab565b60405180910390f35b61008a61013d565b60405161009791906102e1565b60405180910390f35b6100a8610151565b6040516100b59190610328565b60405180910390f35b6100c6610175565b6040516100d391906102e1565b60405180910390f35b6100f660048036038101906100f191906103c3565b610189565b005b610112600480360381019061010d919061045a565b61022b565b6040516101229493929190610485565b60405180910390f35b5f60149054906101000a900460020b81565b5f601a9054906101000a900462ffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60179054906101000a900462ffffff1681565b835f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825f60146101000a81548162ffffff021916908360020b62ffffff160217905550815f60176101000a81548162ffffff021916908362ffffff160217905550805f601a6101000a81548162ffffff021916908362ffffff16021790555050505050565b5f5f5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f60149054906101000a900460020b5f60179054906101000a900462ffffff165f601a9054906101000a900462ffffff1693509350935093509193509193565b5f8160020b9050919050565b6102a581610290565b82525050565b5f6020820190506102be5f83018461029c565b92915050565b5f62ffffff82169050919050565b6102db816102c4565b82525050565b5f6020820190506102f45f8301846102d2565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b610322816102fa565b82525050565b5f60208201905061033b5f830184610319565b92915050565b5f5ffd5b61034e816102fa565b8114610358575f5ffd5b50565b5f8135905061036981610345565b92915050565b61037881610290565b8114610382575f5ffd5b50565b5f813590506103938161036f565b92915050565b6103a2816102c4565b81146103ac575f5ffd5b50565b5f813590506103bd81610399565b92915050565b5f5f5f5f608085870312156103db576103da610341565b5b5f6103e88782880161035b565b94505060206103f987828801610385565b935050604061040a878288016103af565b925050606061041b878288016103af565b91505092959194509250565b5f819050919050565b61043981610427565b8114610443575f5ffd5b50565b5f8135905061045481610430565b92915050565b5f6020828403121561046f5761046e610341565b5b5f61047c84828501610446565b91505092915050565b5f6080820190506104985f830187610319565b6104a5602083018661029c565b6104b260408301856102d2565b6104bf60608301846102d2565b9594505050505056fea2646970667358221220f8b1bfff284535bc078368ed34bd5e78981644845f3c9c1f5a4b8448c976805464736f6c634300081f0033';
42
+ static ABI = [
43
+ {
44
+ type: 'function',
45
+ name: 'setReturnValues',
46
+ inputs: [
47
+ {
48
+ name: '_sqrtPriceX96',
49
+ type: 'uint160'
50
+ },
51
+ {
52
+ name: '_tick',
53
+ type: 'int24'
54
+ },
55
+ {
56
+ name: '_protocolFee',
57
+ type: 'uint24'
58
+ },
59
+ {
60
+ name: '_lpFee',
61
+ type: 'uint24'
62
+ }
63
+ ],
64
+ outputs: [],
65
+ stateMutability: 'nonpayable'
66
+ },
67
+ {
68
+ inputs: [
69
+ {
70
+ internalType: 'bytes32',
71
+ name: 'poolId',
72
+ type: 'bytes32'
73
+ }
74
+ ],
75
+ name: 'getSlot0',
76
+ outputs: [
77
+ {
78
+ internalType: 'uint160',
79
+ name: '',
80
+ type: 'uint160'
81
+ },
82
+ {
83
+ internalType: 'int24',
84
+ name: '',
85
+ type: 'int24'
86
+ },
87
+ {
88
+ internalType: 'uint24',
89
+ name: '',
90
+ type: 'uint24'
91
+ },
92
+ {
93
+ internalType: 'uint24',
94
+ name: '',
95
+ type: 'uint24'
96
+ }
97
+ ],
98
+ stateMutability: 'view',
99
+ type: 'function'
100
+ }
101
+ ];
102
+ constructor(address, walletClient, log = createLogger('mock-state-view')){
103
+ this.address = address;
104
+ this.walletClient = walletClient;
105
+ this.log = log;
106
+ }
107
+ /**
108
+ * Deploys the mock StateView contract at the specified address using etch.
109
+ * @param ethCheatCodes - Cheat codes for etching bytecode
110
+ * @param walletClient - Wallet client for sending transactions
111
+ * @param address - Address to deploy the mock at (typically the real StateView address)
112
+ */ static async deploy(ethCheatCodes, walletClient, address) {
113
+ await ethCheatCodes.etch(address, MockStateView.BYTECODE);
114
+ return new MockStateView(address, walletClient);
115
+ }
116
+ /**
117
+ * Sets the price using the ethPerFeeAssetE12 format (same as rollup contract).
118
+ * Computes the corresponding sqrtPriceX96 internally.
119
+ *
120
+ * Math (from fee_asset_price_oracle.ts):
121
+ * ethPerFeeAssetE12 = 1e12 * 2^192 / sqrtPriceX96^2
122
+ *
123
+ * Inverted:
124
+ * sqrtPriceX96^2 = 1e12 * 2^192 / ethPerFeeAssetE12
125
+ * sqrtPriceX96 = sqrt(1e12 * 2^192 / ethPerFeeAssetE12)
126
+ *
127
+ * @param ethPerFeeAssetE12 - The price in ETH per fee asset, scaled by 1e12
128
+ */ async setEthPerFeeAsset(ethPerFeeAssetE12) {
129
+ const sqrtPriceX96 = this.ethPerFeeAssetE12ToSqrtPriceX96(ethPerFeeAssetE12);
130
+ return await this.setSqrtPriceX96(sqrtPriceX96);
131
+ }
132
+ /**
133
+ * Sets the sqrtPriceX96 value directly (Uniswap's price encoding).
134
+ * @param sqrtPriceX96 - The sqrtPriceX96 value
135
+ * @param tick - The tick value (default 10)
136
+ * @param protocolFee - The protocol fee (default 0)
137
+ * @param lpFee - The LP fee (default 500)
138
+ */ async setSqrtPriceX96(sqrtPriceX96, tick = 10, protocolFee = 0, lpFee = 500) {
139
+ const contract = getContract({
140
+ address: this.address.toString(),
141
+ abi: MockStateView.ABI,
142
+ client: this.walletClient
143
+ });
144
+ const hash = await contract.write.setReturnValues([
145
+ sqrtPriceX96,
146
+ tick,
147
+ protocolFee,
148
+ lpFee
149
+ ]);
150
+ this.log.info(`Set sqrtPriceX96 to ${sqrtPriceX96}`);
151
+ return await this.walletClient.waitForTransactionReceipt({
152
+ hash
153
+ });
154
+ }
155
+ /**
156
+ * Converts ethPerFeeAssetE12 to sqrtPriceX96 (inverse of sqrtPriceX96ToEthPerFeeAssetE12).
157
+ *
158
+ * Math:
159
+ * sqrtPriceX96 = sqrt(1e12 * 2^192 / ethPerFeeAssetE12)
160
+ */ ethPerFeeAssetE12ToSqrtPriceX96(ethPerFeeAssetE12) {
161
+ if (ethPerFeeAssetE12 === 0n) {
162
+ throw new Error('Cannot convert zero ethPerFeeAssetE12');
163
+ }
164
+ const Q192 = 2n ** 192n;
165
+ const sqrtPriceSquared = 10n ** 12n * Q192 / ethPerFeeAssetE12;
166
+ return this.bigintSqrt(sqrtPriceSquared);
167
+ }
168
+ /** Integer square root using Newton's method */ bigintSqrt(n) {
169
+ if (n < 0n) {
170
+ throw new Error('Cannot compute sqrt of negative number');
171
+ }
172
+ if (n === 0n) {
173
+ return 0n;
174
+ }
175
+ let x = n;
176
+ let y = (x + 1n) / 2n;
177
+ while(y < x){
178
+ x = y;
179
+ y = (x + n / x) / 2n;
180
+ }
181
+ return x;
182
+ }
183
+ }
184
+ export function diffInBps(a, b) {
185
+ return (a - b) * 10000n / b;
186
+ }
@@ -1,4 +1,6 @@
1
- import { type Logger, type SentTx, type Wallet } from '@aztec/aztec.js';
2
- import type { PXEService } from '@aztec/pxe/server';
3
- export declare const submitTxsTo: (pxe: PXEService, numTxs: number, wallet: Wallet, logger: Logger) => Promise<SentTx[]>;
4
- //# sourceMappingURL=submit-transactions.d.ts.map
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import type { Logger } from '@aztec/aztec.js/log';
3
+ import { TxHash } from '@aztec/aztec.js/tx';
4
+ import type { TestWallet } from '../test-wallet/test_wallet.js';
5
+ export declare const submitTxsTo: (wallet: TestWallet, submitter: AztecAddress, numTxs: number, logger: Logger) => Promise<TxHash[]>;
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LXRyYW5zYWN0aW9ucy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC9zdWJtaXQtdHJhbnNhY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUE0QixNQUFNLG9CQUFvQixDQUFDO0FBR3RFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2hFLGVBQU8sTUFBTSxXQUFXLG9HQXFCdkIsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"submit-transactions.d.ts","sourceRoot":"","sources":["../../src/shared/submit-transactions.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,MAAM,EAAE,KAAK,MAAM,EAAY,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEtG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAO,MAAM,WAAW,QACjB,UAAU,UACP,MAAM,UACN,MAAM,UACN,MAAM,KACb,QAAQ,MAAM,EAAE,CAqBlB,CAAC"}
1
+ {"version":3,"file":"submit-transactions.d.ts","sourceRoot":"","sources":["../../src/shared/submit-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAA4B,MAAM,oBAAoB,CAAC;AAGtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,eAAO,MAAM,WAAW,oGAqBvB,CAAC"}