@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.b8a057fa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +217 -14
- package/dest/automine/automine_test_context.d.ts +85 -0
- package/dest/automine/automine_test_context.d.ts.map +1 -0
- package/dest/automine/automine_test_context.js +98 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts +2 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts.map +1 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.js +184 -0
- package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts +18 -0
- package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts.map +1 -0
- package/dest/automine/contracts/fixtures/storage_proof_fixture.js +120 -0
- package/dest/automine/delivery/onchain_delivery_harness.d.ts +17 -0
- package/dest/automine/delivery/onchain_delivery_harness.d.ts.map +1 -0
- package/dest/automine/delivery/onchain_delivery_harness.js +123 -0
- package/dest/automine/token/blacklist_token_contract_test.d.ts +49 -0
- package/dest/automine/token/blacklist_token_contract_test.d.ts.map +1 -0
- package/dest/automine/token/blacklist_token_contract_test.js +166 -0
- package/dest/automine/token/token_contract_test.d.ts +40 -0
- package/dest/automine/token/token_contract_test.d.ts.map +1 -0
- package/dest/automine/token/token_contract_test.js +119 -0
- package/dest/automine/token/token_test_helpers.d.ts +73 -0
- package/dest/automine/token/token_test_helpers.d.ts.map +1 -0
- package/dest/automine/token/token_test_helpers.js +97 -0
- package/dest/bench/client_flows/benchmark.d.ts +17 -2
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +40 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +26 -20
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +159 -140
- package/dest/bench/client_flows/config.d.ts +2 -2
- package/dest/bench/client_flows/config.d.ts.map +1 -1
- package/dest/bench/client_flows/config.js +18 -0
- package/dest/bench/client_flows/data_extractor.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.js +8 -27
- package/dest/bench/utils.d.ts +10 -9
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +126 -23
- package/dest/composed/ha/ha_full_setup.d.ts +77 -0
- package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
- package/dest/composed/ha/ha_full_setup.js +383 -0
- package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
- package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
- package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +1 -1
- package/dest/fixtures/authwit_proxy.d.ts +15 -0
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
- package/dest/fixtures/authwit_proxy.js +34 -0
- package/dest/fixtures/e2e_prover_test.d.ts +27 -29
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +156 -156
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- package/dest/fixtures/fixtures.d.ts +83 -3
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +86 -3
- package/dest/fixtures/get_acvm_config.d.ts +1 -1
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +5 -5
- package/dest/fixtures/ha_setup.d.ts +71 -0
- package/dest/fixtures/ha_setup.d.ts.map +1 -0
- package/dest/fixtures/ha_setup.js +119 -0
- package/dest/fixtures/index.d.ts +3 -1
- package/dest/fixtures/index.d.ts.map +1 -1
- package/dest/fixtures/index.js +2 -0
- package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +2 -2
- package/dest/fixtures/logging.d.ts +1 -1
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
- package/dest/fixtures/setup.d.ts +269 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +688 -0
- package/dest/fixtures/setup_p2p_test.d.ts +22 -11
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +60 -41
- package/dest/fixtures/timing.d.ts +42 -0
- package/dest/fixtures/timing.d.ts.map +1 -0
- package/dest/fixtures/timing.js +72 -0
- package/dest/fixtures/token_utils.d.ts +26 -5
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +33 -9
- package/dest/fixtures/utils.d.ts +5 -192
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -648
- package/dest/fixtures/wait_helpers.d.ts +135 -0
- package/dest/fixtures/wait_helpers.d.ts.map +1 -0
- package/dest/fixtures/wait_helpers.js +154 -0
- package/dest/fixtures/web3signer.d.ts +1 -1
- package/dest/fixtures/web3signer.js +1 -1
- package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
- package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
- package/dest/forward-compatibility/wallet_service.d.ts +3 -0
- package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_service.js +109 -0
- package/dest/index.d.ts +1 -1
- package/dest/install_legacy_contracts.d.cts +10 -0
- package/dest/install_legacy_contracts.d.cts.map +1 -0
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- package/dest/multi-node/block-production/setup.d.ts +97 -0
- package/dest/multi-node/block-production/setup.d.ts.map +1 -0
- package/dest/multi-node/block-production/setup.js +158 -0
- package/dest/multi-node/governance/setup.d.ts +67 -0
- package/dest/multi-node/governance/setup.d.ts.map +1 -0
- package/dest/multi-node/governance/setup.js +126 -0
- package/dest/multi-node/multi_node_test_context.d.ts +212 -0
- package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
- package/dest/multi-node/multi_node_test_context.js +347 -0
- package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
- package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
- package/dest/multi-node/slashing/inactivity_setup.js +111 -0
- package/dest/multi-node/slashing/setup.d.ts +167 -0
- package/dest/multi-node/slashing/setup.d.ts.map +1 -0
- package/dest/multi-node/slashing/setup.js +275 -0
- package/dest/p2p/p2p_network.d.ts +325 -0
- package/dest/p2p/p2p_network.d.ts.map +1 -0
- package/dest/p2p/p2p_network.js +389 -0
- package/dest/p2p/reqresp/utils.d.ts +19 -0
- package/dest/p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/p2p/reqresp/utils.js +193 -0
- package/dest/p2p/shared.d.ts +72 -0
- package/dest/p2p/shared.d.ts.map +1 -0
- package/dest/p2p/shared.js +212 -0
- package/dest/quality_of_service/grafana_client.d.ts +41 -0
- package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
- package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
- package/dest/quality_of_service/prometheus_client.d.ts +38 -0
- package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
- package/dest/quality_of_service/prometheus_client.js +67 -0
- package/dest/shared/cross_chain_test_harness.d.ts +11 -8
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +45 -40
- package/dest/shared/gas_portal_test_harness.d.ts +9 -6
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +28 -16
- package/dest/shared/index.d.ts +3 -2
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/jest_setup.d.ts +1 -1
- package/dest/shared/jest_setup.js +41 -1
- package/dest/shared/mock_state_view.d.ts +86 -0
- package/dest/shared/mock_state_view.d.ts.map +1 -0
- package/dest/shared/mock_state_view.js +186 -0
- package/dest/shared/submit-transactions.d.ts +4 -4
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +19 -14
- package/dest/shared/timing_env.d.js +5 -0
- package/dest/shared/timing_env.js +365 -0
- package/dest/shared/uniswap_l1_l2.d.ts +3 -27
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +86 -54
- package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
- package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
- package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
- package/dest/simulators/index.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts +11 -4
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +33 -19
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +3 -24
- package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
- package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
- package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
- package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
- package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
- package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
- package/dest/single-node/fees/bridging_race.notest.d.ts +2 -0
- package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
- package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +21 -10
- package/dest/single-node/fees/fees_test.d.ts +93 -0
- package/dest/single-node/fees/fees_test.d.ts.map +1 -0
- package/dest/single-node/fees/fees_test.js +274 -0
- package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
- package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
- package/dest/single-node/l1-reorgs/setup.js +57 -0
- package/dest/single-node/partial-proofs/setup.d.ts +5 -0
- package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
- package/dest/single-node/partial-proofs/setup.js +5 -0
- package/dest/single-node/proving/setup.d.ts +5 -0
- package/dest/single-node/proving/setup.d.ts.map +1 -0
- package/dest/single-node/proving/setup.js +5 -0
- package/dest/single-node/recovery/setup.d.ts +5 -0
- package/dest/single-node/recovery/setup.d.ts.map +1 -0
- package/dest/single-node/recovery/setup.js +5 -0
- package/dest/single-node/setup.d.ts +49 -0
- package/dest/single-node/setup.d.ts.map +1 -0
- package/dest/single-node/setup.js +56 -0
- package/dest/single-node/single_node_test_context.d.ts +360 -0
- package/dest/single-node/single_node_test_context.d.ts.map +1 -0
- package/dest/single-node/single_node_test_context.js +833 -0
- package/dest/spartan/setup_test_wallets.d.ts +18 -6
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +169 -30
- package/dest/spartan/tx_metrics.d.ts +111 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +507 -0
- package/dest/spartan/utils/bot.d.ts +28 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +142 -0
- package/dest/spartan/utils/chaos.d.ts +79 -0
- package/dest/spartan/utils/chaos.d.ts.map +1 -0
- package/dest/spartan/utils/chaos.js +142 -0
- package/dest/spartan/utils/clients.d.ts +39 -0
- package/dest/spartan/utils/clients.d.ts.map +1 -0
- package/dest/spartan/utils/clients.js +90 -0
- package/dest/spartan/utils/config.d.ts +19 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +23 -0
- package/dest/spartan/utils/health.d.ts +63 -0
- package/dest/spartan/utils/health.d.ts.map +1 -0
- package/dest/spartan/utils/health.js +202 -0
- package/dest/spartan/utils/helm.d.ts +15 -0
- package/dest/spartan/utils/helm.d.ts.map +1 -0
- package/dest/spartan/utils/helm.js +47 -0
- package/dest/spartan/utils/index.d.ts +11 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +22 -0
- package/dest/spartan/utils/k8s.d.ts +128 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +381 -0
- package/dest/spartan/utils/nodes.d.ts +40 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +461 -0
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -0
- package/dest/spartan/utils/scripts.d.ts +30 -0
- package/dest/spartan/utils/scripts.d.ts.map +1 -0
- package/dest/spartan/utils/scripts.js +81 -0
- package/dest/spartan/utils.d.ts +2 -218
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -749
- package/dest/test-wallet/test_wallet.d.ts +105 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +323 -0
- package/dest/test-wallet/utils.d.ts +76 -0
- package/dest/test-wallet/utils.d.ts.map +1 -0
- package/dest/test-wallet/utils.js +126 -0
- package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
- package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
- package/dest/test-wallet/wallet_worker_script.js +56 -0
- package/dest/test-wallet/worker_wallet.d.ts +53 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +155 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +22 -0
- package/package.json +57 -47
- package/src/automine/README.md +60 -0
- package/src/automine/automine_test_context.ts +153 -0
- package/src/automine/contracts/fixtures/storage_proof.json +915 -0
- package/src/automine/contracts/fixtures/storage_proof_fetcher.ts +190 -0
- package/src/automine/contracts/fixtures/storage_proof_fixture.ts +173 -0
- package/src/automine/delivery/onchain_delivery_harness.ts +177 -0
- package/src/automine/token/blacklist_token_contract_test.ts +208 -0
- package/src/automine/token/token_contract_test.ts +146 -0
- package/src/automine/token/token_test_helpers.ts +138 -0
- package/src/bench/client_flows/benchmark.ts +45 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +227 -211
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/client_flows/data_extractor.ts +7 -28
- package/src/bench/utils.ts +144 -25
- package/src/composed/ha/ha_full_setup.ts +466 -0
- package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +1 -1
- package/src/fixtures/authwit_proxy.ts +54 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +175 -214
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +110 -5
- package/src/fixtures/get_acvm_config.ts +1 -1
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/ha_setup.ts +192 -0
- package/src/fixtures/index.ts +2 -0
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
- package/src/fixtures/setup.ts +987 -0
- package/src/fixtures/setup_p2p_test.ts +72 -58
- package/src/fixtures/timing.ts +97 -0
- package/src/fixtures/token_utils.ts +47 -11
- package/src/fixtures/utils.ts +26 -947
- package/src/fixtures/wait_helpers.ts +333 -0
- package/src/fixtures/web3signer.ts +1 -1
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
- package/src/forward-compatibility/wallet_service.ts +106 -0
- package/src/guides/up_quick_start.sh +8 -5
- package/src/infra/README.md +12 -0
- package/src/install_legacy_contracts.cjs +75 -0
- package/src/legacy-jest-resolver.cjs +112 -0
- package/src/multi-node/README.md +95 -0
- package/src/multi-node/block-production/setup.ts +272 -0
- package/src/multi-node/governance/setup.ts +172 -0
- package/src/multi-node/multi_node_test_context.ts +447 -0
- package/src/multi-node/slashing/inactivity_setup.ts +139 -0
- package/src/multi-node/slashing/setup.ts +433 -0
- package/src/p2p/README.md +78 -0
- package/src/p2p/p2p_network.ts +542 -0
- package/src/p2p/reqresp/utils.ts +263 -0
- package/src/p2p/shared.ts +329 -0
- package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/shared/cross_chain_test_harness.ts +51 -43
- package/src/shared/gas_portal_test_harness.ts +36 -18
- package/src/shared/index.ts +2 -1
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +22 -19
- package/src/shared/timing_env.d.mts +39 -0
- package/src/shared/timing_env.mjs +363 -0
- package/src/shared/uniswap_l1_l2.ts +136 -115
- package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
- package/src/simulators/lending_simulator.ts +40 -20
- package/src/simulators/token_simulator.ts +6 -30
- package/src/single-node/README.md +60 -0
- package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
- package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
- package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +23 -15
- package/src/single-node/fees/fees_test.ts +368 -0
- package/src/single-node/l1-reorgs/setup.ts +93 -0
- package/src/single-node/partial-proofs/setup.ts +8 -0
- package/src/single-node/proving/setup.ts +15 -0
- package/src/single-node/recovery/setup.ts +8 -0
- package/src/single-node/setup.ts +63 -0
- package/src/single-node/single_node_test_context.ts +1041 -0
- package/src/spartan/DEVELOP.md +7 -0
- package/src/spartan/setup_test_wallets.ts +243 -32
- package/src/spartan/tx_metrics.ts +460 -0
- package/src/spartan/utils/bot.ts +188 -0
- package/src/spartan/utils/chaos.ts +253 -0
- package/src/spartan/utils/clients.ts +100 -0
- package/src/spartan/utils/config.ts +29 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +71 -0
- package/src/spartan/utils/k8s.ts +535 -0
- package/src/spartan/utils/nodes.ts +543 -0
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -942
- package/src/test-wallet/test_wallet.ts +429 -0
- package/src/test-wallet/utils.ts +205 -0
- package/src/test-wallet/wallet_worker_script.ts +66 -0
- package/src/test-wallet/worker_wallet.ts +214 -0
- package/src/test-wallet/worker_wallet_schema.ts +14 -0
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -54
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +0 -185
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -41
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -107
- package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -36
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
- package/dest/e2e_deploy_contract/deploy_test.js +0 -45
- package/dest/e2e_epochs/epochs_test.d.ts +0 -92
- package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
- package/dest/e2e_epochs/epochs_test.js +0 -336
- package/dest/e2e_fees/bridging_race.notest.d.ts +0 -2
- package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
- package/dest/e2e_fees/fees_test.d.ts +0 -84
- package/dest/e2e_fees/fees_test.d.ts.map +0 -1
- package/dest/e2e_fees/fees_test.js +0 -260
- package/dest/e2e_l1_publisher/write_json.d.ts +0 -10
- package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
- package/dest/e2e_l1_publisher/write_json.js +0 -57
- package/dest/e2e_multi_validator/utils.d.ts +0 -12
- package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -29
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +0 -63
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +0 -135
- package/dest/e2e_p2p/p2p_network.d.ts +0 -108
- package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
- package/dest/e2e_p2p/p2p_network.js +0 -318
- package/dest/e2e_p2p/shared.d.ts +0 -46
- package/dest/e2e_p2p/shared.d.ts.map +0 -1
- package/dest/e2e_p2p/shared.js +0 -183
- package/dest/e2e_token_contract/token_contract_test.d.ts +0 -35
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
- package/dest/e2e_token_contract/token_contract_test.js +0 -126
- package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
- package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.js +0 -17
- package/dest/fixtures/snapshot_manager.d.ts +0 -95
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -505
- package/dest/quality_of_service/alert_checker.d.ts +0 -41
- package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +0 -256
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -178
- package/src/e2e_deploy_contract/deploy_test.ts +0 -78
- package/src/e2e_epochs/epochs_test.ts +0 -437
- package/src/e2e_fees/fees_test.ts +0 -378
- package/src/e2e_l1_publisher/write_json.ts +0 -76
- package/src/e2e_nested_contract/nested_contract_test.ts +0 -95
- package/src/e2e_p2p/inactivity_slash_test.ts +0 -178
- package/src/e2e_p2p/p2p_network.ts +0 -472
- package/src/e2e_p2p/shared.ts +0 -282
- package/src/e2e_token_contract/token_contract_test.ts +0 -167
- package/src/fixtures/setup_l1_contracts.ts +0 -26
- package/src/fixtures/snapshot_manager.ts +0 -665
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import type { ContractFunctionInteraction } from '@aztec/aztec.js/contracts';
|
|
3
|
+
import type { Logger } from '@aztec/aztec.js/log';
|
|
4
|
+
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
5
|
+
import { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
6
|
+
import type { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
|
|
7
|
+
import { type AnyTokenContract } from '../../fixtures/token_utils.js';
|
|
8
|
+
import type { TestWallet } from '../../test-wallet/test_wallet.js';
|
|
9
|
+
/** Whether an amount / balance is read from the private or public balance of the token. */
|
|
10
|
+
export type BalanceKind = 'private' | 'public';
|
|
11
|
+
/** The invalid-authwit-nonce assertion the contract raises when `from == msg_sender` but nonce != 0. */
|
|
12
|
+
export declare const INVALID_AUTHWIT_NONCE_ERROR = "Assertion failed: Invalid authwit nonce. When 'from' and 'msg_sender' are the same, 'authwit_nonce' must be zero";
|
|
13
|
+
/** Minimal token shape needed to read balances — satisfied structurally by Token/TestToken/TokenBlacklist. */
|
|
14
|
+
export interface BalanceReadable {
|
|
15
|
+
methods: {
|
|
16
|
+
balance_of_private(owner: AztecAddress): {
|
|
17
|
+
simulate(opts: {
|
|
18
|
+
from: AztecAddress;
|
|
19
|
+
}): Promise<{
|
|
20
|
+
result: bigint;
|
|
21
|
+
}>;
|
|
22
|
+
};
|
|
23
|
+
balance_of_public(owner: AztecAddress): {
|
|
24
|
+
simulate(opts: {
|
|
25
|
+
from: AztecAddress;
|
|
26
|
+
}): Promise<{
|
|
27
|
+
result: bigint;
|
|
28
|
+
}>;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Reads the private or public balance of an account, simulating from that account's own scope. */
|
|
33
|
+
export declare function balanceOf(asset: BalanceReadable, kind: BalanceKind, account: AztecAddress): Promise<bigint>;
|
|
34
|
+
/** Returns half of an account's balance, asserting it is non-zero so the operation under test is meaningful. */
|
|
35
|
+
export declare function halfBalanceOf(asset: BalanceReadable, kind: BalanceKind, owner: AztecAddress): Promise<bigint>;
|
|
36
|
+
/** Returns an amount just above an account's balance (balance + delta), asserting it is non-zero. */
|
|
37
|
+
export declare function amountAboveBalance(asset: BalanceReadable, kind: BalanceKind, owner: AztecAddress, delta?: bigint): Promise<bigint>;
|
|
38
|
+
/**
|
|
39
|
+
* Grants a public authwit for `caller` to run `action` on behalf of `owner`, executes it from `caller`,
|
|
40
|
+
* then asserts a replay of the same call reverts as unauthorized (the authwit is single-use).
|
|
41
|
+
*
|
|
42
|
+
* `onExecuted` runs after the successful execution (before the replay attempt) so callers can update
|
|
43
|
+
* their {@link TokenSimulator} to match the state change the executed action produced.
|
|
44
|
+
*/
|
|
45
|
+
export declare function assertPublicAuthwitReplayRejected(wallet: TestWallet, owner: AztecAddress, action: ContractFunctionInteraction, caller: AztecAddress, onExecuted?: () => void): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Creates a private authwit for `owner`, executes `action` through the authwit proxy (so `msg_sender`
|
|
48
|
+
* differs from the note owner), then asserts a replay reverts with a duplicate-nullifier error.
|
|
49
|
+
*
|
|
50
|
+
* `onExecuted` runs after the successful execution (before the replay attempt) so callers can update
|
|
51
|
+
* their {@link TokenSimulator} to match the state change the executed action produced.
|
|
52
|
+
*/
|
|
53
|
+
export declare function assertAuthwitProxyReplayRejected(proxy: GenericProxyContract, wallet: TestWallet, owner: AztecAddress, action: ContractFunctionInteraction, onExecuted?: () => void): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Deploys an {@link AMMContract} over three freshly deployed tokens (token0, token1, and the liquidity
|
|
56
|
+
* token), makes the AMM the liquidity token's minter, and mints `initialBalance` of token0 and token1 to
|
|
57
|
+
* each liquidity provider plus token0 to the swapper. `deploy` selects the token flavour (Token vs
|
|
58
|
+
* TestToken), so the concrete token type flows through to the caller.
|
|
59
|
+
*/
|
|
60
|
+
export declare function deployAmmWithTokens<T extends AnyTokenContract>(wallet: Wallet, admin: AztecAddress, deploy: (wallet: Wallet, admin: AztecAddress, initialBalance: bigint, logger: Logger) => Promise<{
|
|
61
|
+
contract: T;
|
|
62
|
+
}>, opts: {
|
|
63
|
+
liquidityProviders: AztecAddress[];
|
|
64
|
+
swapper: AztecAddress;
|
|
65
|
+
initialBalance: bigint;
|
|
66
|
+
logger: Logger;
|
|
67
|
+
}): Promise<{
|
|
68
|
+
token0: T;
|
|
69
|
+
token1: T;
|
|
70
|
+
liquidityToken: T;
|
|
71
|
+
amm: AMMContract;
|
|
72
|
+
}>;
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fdGVzdF9oZWxwZXJzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXV0b21pbmUvdG9rZW4vdG9rZW5fdGVzdF9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFJdkYsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQXVCLE1BQU0sK0JBQStCLENBQUM7QUFDM0YsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsMkZBQTJGO0FBQzNGLE1BQU0sTUFBTSxXQUFXLEdBQUcsU0FBUyxHQUFHLFFBQVEsQ0FBQztBQUUvQyx3R0FBd0c7QUFDeEcsZUFBTyxNQUFNLDJCQUEyQixxSEFDNEUsQ0FBQztBQUVySCxnSEFBOEc7QUFDOUcsTUFBTSxXQUFXLGVBQWU7SUFDOUIsT0FBTyxFQUFFO1FBQ1Asa0JBQWtCLENBQUMsS0FBSyxFQUFFLFlBQVksR0FBRztZQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUU7Z0JBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQTthQUFFLEdBQUcsT0FBTyxDQUFDO2dCQUFFLE1BQU0sRUFBRSxNQUFNLENBQUE7YUFBRSxDQUFDLENBQUE7U0FBRSxDQUFDO1FBQ2pILGlCQUFpQixDQUFDLEtBQUssRUFBRSxZQUFZLEdBQUc7WUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUFFLElBQUksRUFBRSxZQUFZLENBQUE7YUFBRSxHQUFHLE9BQU8sQ0FBQztnQkFBRSxNQUFNLEVBQUUsTUFBTSxDQUFBO2FBQUUsQ0FBQyxDQUFBO1NBQUUsQ0FBQztLQUNqSCxDQUFDO0NBQ0g7QUFFRCxtR0FBbUc7QUFDbkcsd0JBQXNCLFNBQVMsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBSWpIO0FBRUQsZ0hBQWdIO0FBQ2hILHdCQUFzQixhQUFhLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUluSDtBQUVELHFHQUFxRztBQUNyRyx3QkFBc0Isa0JBQWtCLENBQ3RDLEtBQUssRUFBRSxlQUFlLEVBQ3RCLElBQUksRUFBRSxXQUFXLEVBQ2pCLEtBQUssRUFBRSxZQUFZLEVBQ25CLEtBQUssU0FBSyxHQUNULE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FJakI7QUFFRDs7Ozs7O0dBTUc7QUFDSCx3QkFBc0IsaUNBQWlDLENBQ3JELE1BQU0sRUFBRSxVQUFVLEVBQ2xCLEtBQUssRUFBRSxZQUFZLEVBQ25CLE1BQU0sRUFBRSwyQkFBMkIsRUFDbkMsTUFBTSxFQUFFLFlBQVksRUFDcEIsVUFBVSxDQUFDLEVBQUUsTUFBTSxJQUFJLEdBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FRZjtBQUVEOzs7Ozs7R0FNRztBQUNILHdCQUFzQixnQ0FBZ0MsQ0FDcEQsS0FBSyxFQUFFLG9CQUFvQixFQUMzQixNQUFNLEVBQUUsVUFBVSxFQUNsQixLQUFLLEVBQUUsWUFBWSxFQUNuQixNQUFNLEVBQUUsMkJBQTJCLEVBQ25DLFVBQVUsQ0FBQyxFQUFFLE1BQU0sSUFBSSxHQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLENBU2Y7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQixtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsZ0JBQWdCLEVBQ2xFLE1BQU0sRUFBRSxNQUFNLEVBQ2QsS0FBSyxFQUFFLFlBQVksRUFDbkIsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sS0FBSyxPQUFPLENBQUM7SUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0NBQUUsQ0FBQyxFQUNqSCxJQUFJLEVBQUU7SUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUFDLE9BQU8sRUFBRSxZQUFZLENBQUM7SUFBQyxjQUFjLEVBQUUsTUFBTSxDQUFDO0lBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQTtDQUFFLEdBQzFHLE9BQU8sQ0FBQztJQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUFDLEdBQUcsRUFBRSxXQUFXLENBQUE7Q0FBRSxDQUFDLENBMEJ4RSJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token_test_helpers.d.ts","sourceRoot":"","sources":["../../../src/automine/token/token_test_helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
2
|
+
import { sendThroughAuthwitProxy } from '../../fixtures/authwit_proxy.js';
|
|
3
|
+
import { DUPLICATE_NULLIFIER_ERROR } from '../../fixtures/fixtures.js';
|
|
4
|
+
import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
|
|
5
|
+
/** The invalid-authwit-nonce assertion the contract raises when `from == msg_sender` but nonce != 0. */ export const INVALID_AUTHWIT_NONCE_ERROR = "Assertion failed: Invalid authwit nonce. When 'from' and 'msg_sender' are the same, 'authwit_nonce' must be zero";
|
|
6
|
+
/** Reads the private or public balance of an account, simulating from that account's own scope. */ export async function balanceOf(asset, kind, account) {
|
|
7
|
+
const interaction = kind === 'private' ? asset.methods.balance_of_private(account) : asset.methods.balance_of_public(account);
|
|
8
|
+
return (await interaction.simulate({
|
|
9
|
+
from: account
|
|
10
|
+
})).result;
|
|
11
|
+
}
|
|
12
|
+
/** Returns half of an account's balance, asserting it is non-zero so the operation under test is meaningful. */ export async function halfBalanceOf(asset, kind, owner) {
|
|
13
|
+
const amount = await balanceOf(asset, kind, owner) / 2n;
|
|
14
|
+
expect(amount).toBeGreaterThan(0n);
|
|
15
|
+
return amount;
|
|
16
|
+
}
|
|
17
|
+
/** Returns an amount just above an account's balance (balance + delta), asserting it is non-zero. */ export async function amountAboveBalance(asset, kind, owner, delta = 1n) {
|
|
18
|
+
const amount = await balanceOf(asset, kind, owner) + delta;
|
|
19
|
+
expect(amount).toBeGreaterThan(0n);
|
|
20
|
+
return amount;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Grants a public authwit for `caller` to run `action` on behalf of `owner`, executes it from `caller`,
|
|
24
|
+
* then asserts a replay of the same call reverts as unauthorized (the authwit is single-use).
|
|
25
|
+
*
|
|
26
|
+
* `onExecuted` runs after the successful execution (before the replay attempt) so callers can update
|
|
27
|
+
* their {@link TokenSimulator} to match the state change the executed action produced.
|
|
28
|
+
*/ export async function assertPublicAuthwitReplayRejected(wallet, owner, action, caller, onExecuted) {
|
|
29
|
+
const grant = await wallet.setPublicAuthWit(owner, {
|
|
30
|
+
caller,
|
|
31
|
+
action
|
|
32
|
+
}, true);
|
|
33
|
+
await grant.send();
|
|
34
|
+
await action.send({
|
|
35
|
+
from: caller
|
|
36
|
+
});
|
|
37
|
+
onExecuted?.();
|
|
38
|
+
await expect(action.simulate({
|
|
39
|
+
from: caller
|
|
40
|
+
})).rejects.toThrow(/unauthorized/);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Creates a private authwit for `owner`, executes `action` through the authwit proxy (so `msg_sender`
|
|
44
|
+
* differs from the note owner), then asserts a replay reverts with a duplicate-nullifier error.
|
|
45
|
+
*
|
|
46
|
+
* `onExecuted` runs after the successful execution (before the replay attempt) so callers can update
|
|
47
|
+
* their {@link TokenSimulator} to match the state change the executed action produced.
|
|
48
|
+
*/ export async function assertAuthwitProxyReplayRejected(proxy, wallet, owner, action, onExecuted) {
|
|
49
|
+
const witness = await wallet.createAuthWit(owner, {
|
|
50
|
+
caller: proxy.address,
|
|
51
|
+
action
|
|
52
|
+
});
|
|
53
|
+
await sendThroughAuthwitProxy(proxy, action, {
|
|
54
|
+
from: owner,
|
|
55
|
+
authWitnesses: [
|
|
56
|
+
witness
|
|
57
|
+
]
|
|
58
|
+
});
|
|
59
|
+
onExecuted?.();
|
|
60
|
+
await expect(sendThroughAuthwitProxy(proxy, action, {
|
|
61
|
+
from: owner,
|
|
62
|
+
authWitnesses: [
|
|
63
|
+
witness
|
|
64
|
+
]
|
|
65
|
+
})).rejects.toThrow(DUPLICATE_NULLIFIER_ERROR);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Deploys an {@link AMMContract} over three freshly deployed tokens (token0, token1, and the liquidity
|
|
69
|
+
* token), makes the AMM the liquidity token's minter, and mints `initialBalance` of token0 and token1 to
|
|
70
|
+
* each liquidity provider plus token0 to the swapper. `deploy` selects the token flavour (Token vs
|
|
71
|
+
* TestToken), so the concrete token type flows through to the caller.
|
|
72
|
+
*/ export async function deployAmmWithTokens(wallet, admin, deploy, opts) {
|
|
73
|
+
const { liquidityProviders, swapper, initialBalance, logger } = opts;
|
|
74
|
+
const { contract: token0 } = await deploy(wallet, admin, 0n, logger);
|
|
75
|
+
const { contract: token1 } = await deploy(wallet, admin, 0n, logger);
|
|
76
|
+
const { contract: liquidityToken } = await deploy(wallet, admin, 0n, logger);
|
|
77
|
+
const { contract: amm } = await AMMContract.deploy(wallet, token0.address, token1.address, liquidityToken.address).send({
|
|
78
|
+
from: admin
|
|
79
|
+
});
|
|
80
|
+
// TODO(#9480): consider deploying the token by some factory when the AMM is deployed, and making the AMM be the
|
|
81
|
+
// minter there.
|
|
82
|
+
await liquidityToken.methods.set_minter(amm.address, true).send({
|
|
83
|
+
from: admin
|
|
84
|
+
});
|
|
85
|
+
for (const lp of liquidityProviders){
|
|
86
|
+
await mintTokensToPrivate(token0, admin, lp, initialBalance);
|
|
87
|
+
await mintTokensToPrivate(token1, admin, lp, initialBalance);
|
|
88
|
+
}
|
|
89
|
+
// Note that the swapper only holds token0, not token1.
|
|
90
|
+
await mintTokensToPrivate(token0, admin, swapper, initialBalance);
|
|
91
|
+
return {
|
|
92
|
+
token0,
|
|
93
|
+
token1,
|
|
94
|
+
liquidityToken,
|
|
95
|
+
amm
|
|
96
|
+
};
|
|
97
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ContractFunctionInteraction, DeployMethod, type DeployOptions, type ProfileInteractionOptions } from '@aztec/aztec.js/contracts';
|
|
2
2
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
3
3
|
import { type PrivateExecutionStep } from '@aztec/stdlib/kernel';
|
|
4
|
-
import type { ProvingStats, ProvingTimings, SimulationStats, SimulationTimings } from '@aztec/stdlib/tx';
|
|
4
|
+
import type { ProvingStats, ProvingTimings, RoundTripStats, SimulationStats, SimulationTimings } from '@aztec/stdlib/tx';
|
|
5
5
|
import type { GithubActionBenchmarkResult } from '../utils.js';
|
|
6
6
|
declare const logLevel: readonly ["silent", "fatal", "error", "warn", "info", "verbose", "debug", "trace"];
|
|
7
7
|
type LogLevel = (typeof logLevel)[number];
|
|
@@ -48,6 +48,7 @@ type ClientFlowBenchmark = {
|
|
|
48
48
|
};
|
|
49
49
|
maxMemory: number;
|
|
50
50
|
rpc: Record<string, CallRecording>;
|
|
51
|
+
roundTrips: RoundTripStats;
|
|
51
52
|
proverType: ProverType;
|
|
52
53
|
minimumTrace: StructuredTrace;
|
|
53
54
|
totalGateCount: number;
|
|
@@ -56,6 +57,20 @@ type ClientFlowBenchmark = {
|
|
|
56
57
|
};
|
|
57
58
|
export declare function generateBenchmark(flow: string, logs: Log[], stats: ProvingStats | SimulationStats, privateExecutionSteps: PrivateExecutionStep[], proverType: ProverType, error: string | undefined): ClientFlowBenchmark;
|
|
58
59
|
export declare function convertProfileToGHBenchmark(benchmark: ClientFlowBenchmark): GithubActionBenchmarkResult[];
|
|
60
|
+
/**
|
|
61
|
+
* Computes the expected number of `PrivateExecutionStep` entries the orchestrator will produce
|
|
62
|
+
* for a tx with `apps` private function calls.
|
|
63
|
+
*
|
|
64
|
+
* Step layout: `apps` app circuits + kernel iterations + 1 final reset + 1 tail + 1 hiding kernel.
|
|
65
|
+
* Each kernel iteration absorbs up to `MAX_APPS_PER_KERNEL` apps via the `init_K` / `inner_K`
|
|
66
|
+
* variants, so the kernel count is `ceil(apps / MAX_APPS_PER_KERNEL)`.
|
|
67
|
+
*
|
|
68
|
+
* Caveat: this assumes no mid-flow reset is triggered, which would split a batch into two kernels
|
|
69
|
+
* separated by a reset. For the flows currently exercised in this benchmark suite that holds, but
|
|
70
|
+
* a future flow that grows large enough to overflow per-tx limits before consuming all apps will
|
|
71
|
+
* not match this formula.
|
|
72
|
+
*/
|
|
73
|
+
export declare function expectedExecutionSteps(apps: number): number;
|
|
59
74
|
export declare function captureProfile(label: string, interaction: ContractFunctionInteraction | DeployMethod, opts: Omit<ProfileInteractionOptions & DeployOptions, 'profileMode'>, expectedSteps?: number): Promise<import("@aztec/stdlib/tx").TxProfileResult>;
|
|
60
75
|
export {};
|
|
61
|
-
//# sourceMappingURL=
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2htYXJrLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2gvY2xpZW50X2Zsb3dzL2JlbmNobWFyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixLQUFLLGFBQWEsRUFDbEIsS0FBSyx5QkFBeUIsRUFDL0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdsRCxPQUFPLEVBQUUsS0FBSyxvQkFBb0IsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRyxPQUFPLEtBQUssRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLEVBQ2YsaUJBQWlCLEVBQ2xCLE1BQU0sa0JBQWtCLENBQUM7QUFNMUIsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJL0QsUUFBQSxNQUFNLFFBQVEsb0ZBQXFGLENBQUM7QUFDcEcsS0FBSyxRQUFRLEdBQUcsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTFDLE1BQU0sTUFBTSxHQUFHLEdBQUc7SUFDaEIsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUNmLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsSUFBSSxFQUFFLEdBQUcsQ0FBQztDQUNYLENBQUM7QUFFRixRQUFBLE1BQU0sVUFBVSwwS0FhTixDQUFDO0FBRVgsS0FBSyxRQUFRLEdBQUcsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTVDLEtBQUssZUFBZSxHQUFHO0tBQ3BCLENBQUMsSUFBSSxRQUFRLEdBQUcsTUFBTTtDQUN4QixDQUFDO0FBRUYscUJBQWEsV0FBVztJQUN0QixPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBYztJQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFhO0lBRXpCLE9BQU8sZUFBaUI7SUFFeEIsTUFBTSxDQUFDLE1BQU0sU0FFWjtJQUVELE1BQU0sQ0FBQyxXQUFXLGdCQUVqQjtJQUVELFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FlbkM7SUFFRCxPQUFPLENBQUMsU0FBUztJQUlWLFNBQVMsU0FFZjtJQUVNLE9BQU8sVUFFYjtDQUNGO0FBRUQsTUFBTSxNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBRTNDLEtBQUssYUFBYSxHQUFHO0lBRW5CLEtBQUssRUFBRSxNQUFNLENBQUM7SUFFZCxHQUFHLEVBQUUsTUFBTSxDQUFDO0lBRVosR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUVaLEdBQUcsRUFBRSxNQUFNLENBQUM7SUFFWixLQUFLLEVBQUUsTUFBTSxDQUFDO0NBQ2YsQ0FBQztBQUVGLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUc7SUFDckUsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN0QixPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztDQUN4QyxDQUFDO0FBRUYsS0FBSyxtQkFBbUIsR0FBRztJQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLEdBQUc7UUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUN0RixTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ25DLFVBQVUsRUFBRSxjQUFjLENBQUM7SUFDM0IsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUN2QixZQUFZLEVBQUUsZUFBZSxDQUFDO0lBQzlCLGNBQWMsRUFBRSxNQUFNLENBQUM7SUFDdkIsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2QsS0FBSyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7Q0FDM0IsQ0FBQztBQTBDRix3QkFBZ0IsaUJBQWlCLENBQy9CLElBQUksRUFBRSxNQUFNLEVBQ1osSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUNYLEtBQUssRUFBRSxZQUFZLEdBQUcsZUFBZSxFQUNyQyxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxFQUM3QyxVQUFVLEVBQUUsVUFBVSxFQUN0QixLQUFLLEVBQUUsTUFBTSxHQUFHLFNBQVMsR0FDeEIsbUJBQW1CLENBMkVyQjtBQUVELHdCQUFnQiwyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLEdBQUcsMkJBQTJCLEVBQUUsQ0E2RHpHO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsd0JBQWdCLHNCQUFzQixDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUszRDtBQUVELHdCQUFzQixjQUFjLENBQ2xDLEtBQUssRUFBRSxNQUFNLEVBQ2IsV0FBVyxFQUFFLDJCQUEyQixHQUFHLFlBQVksRUFDdkQsSUFBSSxFQUFFLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxhQUFhLEVBQUUsYUFBYSxDQUFDLEVBQ3BFLGFBQWEsQ0FBQyxFQUFFLE1BQU0sdURBb0N2QiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/benchmark.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/benchmark.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MAX_APPS_PER_KERNEL } from '@aztec/constants';
|
|
1
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
3
|
import { serializePrivateExecutionSteps } from '@aztec/stdlib/kernel';
|
|
3
4
|
import assert from 'node:assert';
|
|
@@ -140,6 +141,15 @@ export function generateBenchmark(flow, logs, stats, privateExecutionSteps, prov
|
|
|
140
141
|
}, []);
|
|
141
142
|
const timings = stats.timings;
|
|
142
143
|
const totalGateCount = steps[steps.length - 1].accGateCount;
|
|
144
|
+
const nodeRPCCalls = stats.nodeRPCCalls ?? {
|
|
145
|
+
perMethod: {},
|
|
146
|
+
roundTrips: {
|
|
147
|
+
roundTrips: 0,
|
|
148
|
+
totalBlockingTime: 0,
|
|
149
|
+
roundTripDurations: [],
|
|
150
|
+
roundTripMethods: []
|
|
151
|
+
}
|
|
152
|
+
};
|
|
143
153
|
return {
|
|
144
154
|
name: flow,
|
|
145
155
|
timings: {
|
|
@@ -149,7 +159,7 @@ export function generateBenchmark(flow, logs, stats, privateExecutionSteps, prov
|
|
|
149
159
|
unaccounted: timings.unaccounted,
|
|
150
160
|
witgen: timings.perFunction.reduce((acc, fn)=>acc + fn.time, 0)
|
|
151
161
|
},
|
|
152
|
-
rpc: Object.entries(
|
|
162
|
+
rpc: Object.entries(nodeRPCCalls.perMethod).reduce((acc, [RPCName, RPCCalls])=>{
|
|
153
163
|
const total = RPCCalls.times.reduce((sum, time)=>sum + time, 0);
|
|
154
164
|
const calls = RPCCalls.times.length;
|
|
155
165
|
acc[RPCName] = {
|
|
@@ -161,6 +171,7 @@ export function generateBenchmark(flow, logs, stats, privateExecutionSteps, prov
|
|
|
161
171
|
};
|
|
162
172
|
return acc;
|
|
163
173
|
}, {}),
|
|
174
|
+
roundTrips: nodeRPCCalls.roundTrips,
|
|
164
175
|
maxMemory,
|
|
165
176
|
proverType,
|
|
166
177
|
minimumTrace: minimumTrace,
|
|
@@ -201,6 +212,16 @@ export function convertProfileToGHBenchmark(benchmark) {
|
|
|
201
212
|
name: `${benchmark.name}/rpc`,
|
|
202
213
|
value: totalRPCCalls,
|
|
203
214
|
unit: 'calls'
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
name: `${benchmark.name}/round_trips`,
|
|
218
|
+
value: benchmark.roundTrips.roundTrips,
|
|
219
|
+
unit: 'round_trips'
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
name: `${benchmark.name}/round_trips_blocking_time`,
|
|
223
|
+
value: benchmark.roundTrips.totalBlockingTime,
|
|
224
|
+
unit: 'ms'
|
|
204
225
|
}
|
|
205
226
|
];
|
|
206
227
|
if (benchmark.timings.proving) {
|
|
@@ -219,6 +240,24 @@ export function convertProfileToGHBenchmark(benchmark) {
|
|
|
219
240
|
}
|
|
220
241
|
return benches;
|
|
221
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Computes the expected number of `PrivateExecutionStep` entries the orchestrator will produce
|
|
245
|
+
* for a tx with `apps` private function calls.
|
|
246
|
+
*
|
|
247
|
+
* Step layout: `apps` app circuits + kernel iterations + 1 final reset + 1 tail + 1 hiding kernel.
|
|
248
|
+
* Each kernel iteration absorbs up to `MAX_APPS_PER_KERNEL` apps via the `init_K` / `inner_K`
|
|
249
|
+
* variants, so the kernel count is `ceil(apps / MAX_APPS_PER_KERNEL)`.
|
|
250
|
+
*
|
|
251
|
+
* Caveat: this assumes no mid-flow reset is triggered, which would split a batch into two kernels
|
|
252
|
+
* separated by a reset. For the flows currently exercised in this benchmark suite that holds, but
|
|
253
|
+
* a future flow that grows large enough to overflow per-tx limits before consuming all apps will
|
|
254
|
+
* not match this formula.
|
|
255
|
+
*/ export function expectedExecutionSteps(apps) {
|
|
256
|
+
const kernels = Math.ceil(apps / MAX_APPS_PER_KERNEL);
|
|
257
|
+
// The final reset and tail are proved as a single circuit (reset_tail or reset_tail_to_public),
|
|
258
|
+
// so they share one execution step.
|
|
259
|
+
return apps + kernels + 1 /* reset+tail */ + 1 /* hiding */ ;
|
|
260
|
+
}
|
|
222
261
|
export async function captureProfile(label, interaction, opts, expectedSteps) {
|
|
223
262
|
// Make sure the proxy logger starts from a clean slate
|
|
224
263
|
ProxyLogger.getInstance().flushLogs();
|
|
@@ -5,29 +5,28 @@ import { type Logger } from '@aztec/aztec.js/log';
|
|
|
5
5
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
6
6
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
7
7
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
8
|
-
import {
|
|
8
|
+
import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
9
9
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
10
10
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
11
11
|
import { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
12
12
|
import { FPCContract } from '@aztec/noir-contracts.js/FPC';
|
|
13
13
|
import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
|
|
14
14
|
import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { type
|
|
18
|
-
import { type SetupOptions } from '../../fixtures/utils.js';
|
|
15
|
+
import { TestTokenContract as BananaCoin, TestTokenContract } from '@aztec/noir-test-contracts.js/TestToken';
|
|
16
|
+
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
17
|
+
import { type EndToEndContext, type SetupOptions } from '../../fixtures/setup.js';
|
|
19
18
|
import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
|
|
20
19
|
import { type GasBridgingTestHarness } from '../../shared/gas_portal_test_harness.js';
|
|
20
|
+
import { TestWallet } from '../../test-wallet/test_wallet.js';
|
|
21
21
|
import { type ClientFlowsConfig } from './config.js';
|
|
22
22
|
export type AccountType = 'ecdsar1' | 'schnorr';
|
|
23
23
|
export type FeePaymentMethodGetter = (wallet: Wallet, sender: AztecAddress) => Promise<FeePaymentMethod | undefined>;
|
|
24
24
|
export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
|
|
25
25
|
export declare class ClientFlowsBenchmark {
|
|
26
|
-
private snapshotManager;
|
|
27
26
|
logger: Logger;
|
|
28
27
|
aztecNode: AztecNode;
|
|
29
28
|
cheatCodes: CheatCodes;
|
|
30
|
-
context:
|
|
29
|
+
context: EndToEndContext;
|
|
31
30
|
chainMonitor: ChainMonitor;
|
|
32
31
|
feeJuiceBridgeTestHarness: GasBridgingTestHarness;
|
|
33
32
|
adminWallet: TestWallet;
|
|
@@ -36,38 +35,45 @@ export declare class ClientFlowsBenchmark {
|
|
|
36
35
|
coinbase: EthAddress;
|
|
37
36
|
feeJuiceContract: FeeJuiceContract;
|
|
38
37
|
bananaCoin: BananaCoin;
|
|
38
|
+
bananaCoinInstance: ContractInstanceWithAddress;
|
|
39
39
|
bananaFPC: FPCContract;
|
|
40
|
-
|
|
40
|
+
bananaFPCInstance: ContractInstanceWithAddress;
|
|
41
|
+
candyBarCoin: TestTokenContract;
|
|
42
|
+
candyBarCoinInstance: ContractInstanceWithAddress;
|
|
41
43
|
amm: AMMContract;
|
|
42
|
-
|
|
44
|
+
ammInstance: ContractInstanceWithAddress;
|
|
45
|
+
liquidityToken: TestTokenContract;
|
|
46
|
+
liquidityTokenInstance: ContractInstanceWithAddress;
|
|
43
47
|
sponsoredFPC: SponsoredFPCContract;
|
|
48
|
+
sponsoredFPCInstance: ContractInstanceWithAddress;
|
|
44
49
|
userWallet: TestWallet;
|
|
45
50
|
realProofs: boolean;
|
|
46
51
|
paymentMethods: Record<BenchmarkingFeePaymentMethod, {
|
|
47
52
|
forWallet: FeePaymentMethodGetter;
|
|
48
|
-
|
|
53
|
+
apps: number;
|
|
49
54
|
}>;
|
|
50
55
|
config: ClientFlowsConfig;
|
|
51
56
|
private proxyLogger;
|
|
52
|
-
|
|
57
|
+
private setupOptions;
|
|
58
|
+
constructor(testName?: string, setupOptions?: Partial<SetupOptions & DeployAztecL1ContractsArgs>);
|
|
53
59
|
setup(): Promise<this>;
|
|
54
60
|
teardown(): Promise<void>;
|
|
55
61
|
mintAndBridgeFeeJuice(address: AztecAddress): Promise<void>;
|
|
56
62
|
/** Admin mints bananaCoin tokens privately to the target address and redeems them. */
|
|
57
63
|
mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
|
|
58
64
|
createBenchmarkingAccountManager(wallet: TestWallet, type: 'ecdsar1' | 'schnorr'): Promise<import("@aztec/aztec.js/wallet").AccountManager>;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
applyBaseSetup(): Promise<void>;
|
|
66
|
+
applyInitialAccounts(): Promise<void>;
|
|
67
|
+
applySetupFeeJuice(): Promise<void>;
|
|
68
|
+
applyDeployBananaToken(): Promise<void>;
|
|
69
|
+
applyDeployCandyBarToken(): Promise<void>;
|
|
70
|
+
applyFPCSetup(): Promise<void>;
|
|
71
|
+
applyDeploySponsoredFPC(): Promise<void>;
|
|
66
72
|
createCrossChainTestHarness(owner: AztecAddress): Promise<CrossChainTestHarness>;
|
|
67
73
|
createAndFundBenchmarkingAccountOnUserWallet(accountType: AccountType): Promise<AztecAddress>;
|
|
68
|
-
|
|
74
|
+
applyDeployAmm(): Promise<void>;
|
|
69
75
|
getBridgedFeeJuicePaymentMethodForWallet(_wallet: Wallet, sender: AztecAddress): Promise<FeeJuicePaymentMethodWithClaim>;
|
|
70
76
|
getPrivateFPCPaymentMethodForWallet(wallet: Wallet, sender: AztecAddress): Promise<PrivateFeePaymentMethod>;
|
|
71
77
|
getSponsoredFPCPaymentMethodForWallet(_wallet: Wallet, _sender: AztecAddress): Promise<SponsoredFeePaymentMethod>;
|
|
72
78
|
}
|
|
73
|
-
//# sourceMappingURL=
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2Zsb3dzX2JlbmNobWFyay5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JlbmNoL2NsaWVudF9mbG93cy9jbGllbnRfZmxvd3NfYmVuY2htYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHNCQUFzQixDQUFDO0FBR2pGLE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsSUFBSSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUk3RyxPQUFP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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client_flows_benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/client_flows_benchmark.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client_flows_benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/client_flows_benchmark.ts"],"names":[],"mappings":"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"}
|