@aztec/aztec.js 0.0.0-test.1 → 0.0.1-commit.5476d83
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 +1 -1
- package/dest/account/account.d.ts +59 -0
- package/dest/account/account.d.ts.map +1 -0
- package/dest/account/account.js +59 -0
- package/dest/account/account_contract.d.ts +43 -0
- package/dest/account/account_contract.d.ts.map +1 -0
- package/dest/account/{contract.js → account_contract.js} +7 -4
- package/dest/account/account_with_secret_key.d.ts +24 -0
- package/dest/account/account_with_secret_key.d.ts.map +1 -0
- package/dest/{wallet/account_wallet_with_private_key.js → account/account_with_secret_key.js} +5 -5
- package/dest/account/index.d.ts +4 -8
- package/dest/account/index.d.ts.map +1 -1
- package/dest/account/index.js +2 -6
- package/dest/account/interface.d.ts +2 -14
- package/dest/account/interface.d.ts.map +1 -1
- package/dest/account/interface.js +1 -0
- package/dest/account/signerless_account.d.ts +23 -0
- package/dest/account/signerless_account.d.ts.map +1 -0
- package/dest/account/signerless_account.js +27 -0
- package/dest/api/abi.d.ts +3 -2
- package/dest/api/abi.d.ts.map +1 -1
- package/dest/api/abi.js +1 -1
- package/dest/api/account.d.ts +7 -3
- package/dest/api/account.d.ts.map +1 -1
- package/dest/api/account.js +4 -1
- package/dest/api/addresses.d.ts +2 -1
- package/dest/api/addresses.d.ts.map +1 -1
- package/dest/api/addresses.js +1 -0
- package/dest/api/authorization.d.ts +5 -0
- package/dest/api/authorization.d.ts.map +1 -0
- package/dest/api/authorization.js +4 -0
- package/dest/api/block.d.ts +3 -0
- package/dest/api/block.d.ts.map +1 -0
- package/dest/api/block.js +2 -0
- package/dest/api/contract.d.ts +49 -0
- package/dest/api/contract.d.ts.map +1 -0
- package/dest/{contract/index.js → api/contract.js} +15 -11
- package/dest/api/crypto.d.ts +2 -0
- package/dest/api/crypto.d.ts.map +1 -0
- package/dest/api/crypto.js +1 -0
- package/dest/api/deployment.d.ts +5 -4
- package/dest/api/deployment.d.ts.map +1 -1
- package/dest/api/deployment.js +4 -3
- package/dest/api/eth_address.d.ts +1 -1
- package/dest/api/ethereum.d.ts +2 -0
- package/dest/api/ethereum.d.ts.map +1 -0
- package/dest/api/ethereum.js +1 -0
- package/dest/api/events.d.ts +12 -0
- package/dest/api/events.d.ts.map +1 -0
- package/dest/api/events.js +30 -0
- package/dest/api/fee.d.ts +2 -2
- package/dest/api/fee.d.ts.map +1 -1
- package/dest/api/fee.js +1 -1
- package/dest/api/fee_testing.d.ts +2 -0
- package/dest/api/fee_testing.d.ts.map +1 -0
- package/dest/api/fee_testing.js +1 -0
- package/dest/api/fields.d.ts +1 -1
- package/dest/api/keys.d.ts +4 -0
- package/dest/api/keys.d.ts.map +1 -0
- package/dest/api/keys.js +3 -0
- package/dest/api/log.d.ts +2 -1
- package/dest/api/log.d.ts.map +1 -1
- package/dest/api/log.js +1 -0
- package/dest/api/messaging.d.ts +3 -0
- package/dest/api/messaging.d.ts.map +1 -0
- package/dest/api/messaging.js +2 -0
- package/dest/api/node.d.ts +21 -0
- package/dest/api/node.d.ts.map +1 -0
- package/dest/api/node.js +18 -0
- package/dest/api/note.d.ts +2 -0
- package/dest/api/note.d.ts.map +1 -0
- package/dest/api/note.js +1 -0
- package/dest/api/protocol.d.ts +3 -0
- package/dest/api/protocol.d.ts.map +1 -0
- package/dest/api/protocol.js +2 -0
- package/dest/api/trees.d.ts +3 -0
- package/dest/api/trees.d.ts.map +1 -0
- package/dest/api/trees.js +2 -0
- package/dest/api/tx.d.ts +2 -0
- package/dest/api/tx.d.ts.map +1 -0
- package/dest/api/tx.js +1 -0
- package/dest/api/utils.d.ts +13 -0
- package/dest/api/utils.d.ts.map +1 -0
- package/dest/api/utils.js +12 -0
- package/dest/api/wallet.d.ts +4 -2
- package/dest/api/wallet.d.ts.map +1 -1
- package/dest/api/wallet.js +3 -1
- package/dest/authorization/call_authorization_request.d.ts +46 -0
- package/dest/authorization/call_authorization_request.d.ts.map +1 -0
- package/dest/authorization/call_authorization_request.js +49 -0
- package/dest/contract/base_contract_interaction.d.ts +16 -80
- package/dest/contract/base_contract_interaction.d.ts.map +1 -1
- package/dest/contract/base_contract_interaction.js +15 -128
- package/dest/contract/batch_call.d.ts +19 -21
- package/dest/contract/batch_call.d.ts.map +1 -1
- package/dest/contract/batch_call.js +86 -68
- package/dest/contract/checker.d.ts +2 -2
- package/dest/contract/checker.d.ts.map +1 -1
- package/dest/contract/checker.js +2 -2
- package/dest/contract/contract.d.ts +9 -8
- package/dest/contract/contract.d.ts.map +1 -1
- package/dest/contract/contract.js +10 -20
- package/dest/contract/contract_base.d.ts +7 -20
- package/dest/contract/contract_base.d.ts.map +1 -1
- package/dest/contract/contract_base.js +7 -14
- package/dest/contract/contract_function_interaction.d.ts +53 -45
- package/dest/contract/contract_function_interaction.d.ts.map +1 -1
- package/dest/contract/contract_function_interaction.js +78 -74
- package/dest/contract/deploy_method.d.ts +106 -60
- package/dest/contract/deploy_method.d.ts.map +1 -1
- package/dest/contract/deploy_method.js +125 -133
- package/dest/contract/deploy_sent_tx.d.ts +14 -11
- package/dest/contract/deploy_sent_tx.d.ts.map +1 -1
- package/dest/contract/deploy_sent_tx.js +18 -15
- package/dest/contract/get_gas_limits.d.ts +6 -7
- package/dest/contract/get_gas_limits.d.ts.map +1 -1
- package/dest/contract/get_gas_limits.js +9 -3
- package/dest/contract/interaction_options.d.ts +114 -0
- package/dest/contract/interaction_options.d.ts.map +1 -0
- package/dest/contract/interaction_options.js +46 -0
- package/dest/contract/protocol_contracts.d.ts +7 -7
- package/dest/contract/protocol_contracts.d.ts.map +1 -1
- package/dest/contract/protocol_contracts.js +7 -7
- package/dest/contract/sent_tx.d.ts +9 -19
- package/dest/contract/sent_tx.d.ts.map +1 -1
- package/dest/contract/sent_tx.js +31 -43
- package/dest/contract/unsafe_contract.d.ts +2 -2
- package/dest/contract/unsafe_contract.d.ts.map +1 -1
- package/dest/contract/unsafe_contract.js +1 -1
- package/dest/contract/wait_for_proven.d.ts +17 -0
- package/dest/contract/wait_for_proven.d.ts.map +1 -0
- package/dest/contract/wait_for_proven.js +17 -0
- package/dest/deployment/broadcast_function.d.ts +4 -4
- package/dest/deployment/broadcast_function.d.ts.map +1 -1
- package/dest/deployment/broadcast_function.js +27 -23
- package/dest/deployment/contract_deployer.d.ts +2 -2
- package/dest/deployment/contract_deployer.d.ts.map +1 -1
- package/dest/deployment/contract_deployer.js +1 -1
- package/dest/deployment/publish_class.d.ts +6 -0
- package/dest/deployment/publish_class.d.ts.map +1 -0
- package/dest/deployment/publish_class.js +17 -0
- package/dest/deployment/publish_instance.d.ts +10 -0
- package/dest/deployment/publish_instance.d.ts.map +1 -0
- package/dest/deployment/publish_instance.js +11 -0
- package/dest/ethereum/portal_manager.d.ts +138 -0
- package/dest/ethereum/portal_manager.d.ts.map +1 -0
- package/dest/{api/ethereum → ethereum}/portal_manager.js +136 -76
- package/dest/fee/fee_juice_payment_method_with_claim.d.ts +17 -12
- package/dest/fee/fee_juice_payment_method_with_claim.d.ts.map +1 -1
- package/dest/fee/fee_juice_payment_method_with_claim.js +26 -16
- package/dest/fee/fee_payment_method.d.ts +12 -8
- package/dest/fee/fee_payment_method.d.ts.map +1 -1
- package/dest/fee/private_fee_payment_method.d.ts +26 -9
- package/dest/fee/private_fee_payment_method.d.ts.map +1 -1
- package/dest/fee/private_fee_payment_method.js +44 -22
- package/dest/fee/public_fee_payment_method.d.ts +27 -10
- package/dest/fee/public_fee_payment_method.d.ts.map +1 -1
- package/dest/fee/public_fee_payment_method.js +46 -24
- package/dest/fee/sponsored_fee_payment.d.ts +17 -0
- package/dest/fee/sponsored_fee_payment.d.ts.map +1 -0
- package/dest/fee/sponsored_fee_payment.js +34 -0
- package/dest/utils/abi_types.d.ts +1 -3
- package/dest/utils/abi_types.d.ts.map +1 -1
- package/dest/utils/authwit.d.ts +82 -25
- package/dest/utils/authwit.d.ts.map +1 -1
- package/dest/utils/authwit.js +237 -40
- package/dest/utils/cross_chain.d.ts +24 -0
- package/dest/utils/cross_chain.d.ts.map +1 -0
- package/dest/utils/cross_chain.js +30 -0
- package/dest/utils/fee_juice.d.ts +4 -3
- package/dest/utils/fee_juice.d.ts.map +1 -1
- package/dest/utils/fee_juice.js +3 -2
- package/dest/utils/field_compressed_string.d.ts +1 -1
- package/dest/utils/field_compressed_string.d.ts.map +1 -1
- package/dest/utils/node.d.ts +2 -2
- package/dest/utils/node.d.ts.map +1 -1
- package/dest/utils/node.js +1 -1
- package/dest/utils/pub_key.d.ts +1 -1
- package/dest/utils/pub_key.d.ts.map +1 -1
- package/dest/utils/pub_key.js +1 -2
- package/dest/wallet/account_entrypoint_meta_payment_method.d.ts +34 -0
- package/dest/wallet/account_entrypoint_meta_payment_method.d.ts.map +1 -0
- package/dest/wallet/account_entrypoint_meta_payment_method.js +76 -0
- package/dest/wallet/account_manager.d.ts +66 -0
- package/dest/wallet/account_manager.d.ts.map +1 -0
- package/dest/wallet/account_manager.js +113 -0
- package/dest/wallet/deploy_account_method.d.ts +52 -0
- package/dest/wallet/deploy_account_method.d.ts.map +1 -0
- package/dest/wallet/deploy_account_method.js +77 -0
- package/dest/wallet/index.d.ts +3 -17
- package/dest/wallet/index.d.ts.map +1 -1
- package/dest/wallet/index.js +2 -20
- package/dest/wallet/wallet.d.ts +1965 -0
- package/dest/wallet/wallet.d.ts.map +1 -0
- package/dest/wallet/wallet.js +186 -0
- package/package.json +44 -35
- package/src/account/account.ts +96 -0
- package/src/account/{contract.ts → account_contract.ts} +24 -13
- package/src/{wallet/account_wallet_with_private_key.ts → account/account_with_secret_key.ts} +6 -8
- package/src/account/index.ts +3 -7
- package/src/account/interface.ts +1 -12
- package/src/account/signerless_account.ts +45 -0
- package/src/api/abi.ts +26 -0
- package/src/api/account.ts +6 -9
- package/src/api/addresses.ts +1 -0
- package/src/api/authorization.ts +14 -0
- package/src/api/block.ts +2 -0
- package/src/{contract/index.ts → api/contract.ts} +39 -14
- package/src/api/crypto.ts +1 -0
- package/src/api/deployment.ts +4 -3
- package/src/api/ethereum.ts +10 -0
- package/src/api/events.ts +44 -0
- package/src/api/fee.ts +1 -1
- package/src/api/fee_testing.ts +1 -0
- package/src/api/keys.ts +8 -0
- package/src/api/log.ts +1 -0
- package/src/api/messaging.ts +2 -0
- package/src/api/node.ts +20 -0
- package/src/api/note.ts +1 -0
- package/src/api/protocol.ts +2 -0
- package/src/api/trees.ts +2 -0
- package/src/api/tx.ts +13 -0
- package/src/api/utils.ts +14 -0
- package/src/api/wallet.ts +27 -5
- package/src/authorization/call_authorization_request.ts +63 -0
- package/src/contract/base_contract_interaction.ts +23 -166
- package/src/contract/batch_call.ts +106 -57
- package/src/contract/checker.ts +8 -3
- package/src/contract/contract.ts +14 -21
- package/src/contract/contract_base.ts +9 -26
- package/src/contract/contract_function_interaction.ts +135 -106
- package/src/contract/deploy_method.ts +205 -134
- package/src/contract/deploy_sent_tx.ts +24 -23
- package/src/contract/get_gas_limits.ts +15 -8
- package/src/contract/interaction_options.ts +163 -0
- package/src/contract/protocol_contracts.ts +10 -10
- package/src/contract/sent_tx.ts +41 -52
- package/src/contract/unsafe_contract.ts +2 -2
- package/src/contract/wait_for_proven.ts +38 -0
- package/src/deployment/broadcast_function.ts +57 -57
- package/src/deployment/contract_deployer.ts +4 -3
- package/src/deployment/publish_class.ts +34 -0
- package/src/deployment/publish_instance.ts +26 -0
- package/src/{api/ethereum → ethereum}/portal_manager.ts +164 -83
- package/src/fee/fee_juice_payment_method_with_claim.ts +48 -33
- package/src/fee/fee_payment_method.ts +11 -7
- package/src/fee/private_fee_payment_method.ts +79 -57
- package/src/fee/public_fee_payment_method.ts +93 -67
- package/src/fee/sponsored_fee_payment.ts +46 -0
- package/src/utils/authwit.ts +261 -53
- package/src/utils/cross_chain.ts +53 -0
- package/src/utils/fee_juice.ts +4 -4
- package/src/utils/node.ts +1 -1
- package/src/utils/pub_key.ts +1 -2
- package/src/wallet/account_entrypoint_meta_payment_method.ts +106 -0
- package/src/wallet/account_manager.ts +154 -0
- package/src/wallet/deploy_account_method.ts +126 -0
- package/src/wallet/index.ts +2 -33
- package/src/wallet/wallet.ts +318 -0
- package/dest/account/contract.d.ts +0 -37
- package/dest/account/contract.d.ts.map +0 -1
- package/dest/account/wallet.d.ts +0 -11
- package/dest/account/wallet.d.ts.map +0 -1
- package/dest/account/wallet.js +0 -3
- package/dest/account_manager/deploy_account_method.d.ts +0 -15
- package/dest/account_manager/deploy_account_method.d.ts.map +0 -1
- package/dest/account_manager/deploy_account_method.js +0 -43
- package/dest/account_manager/deploy_account_sent_tx.d.ts +0 -30
- package/dest/account_manager/deploy_account_sent_tx.d.ts.map +0 -1
- package/dest/account_manager/deploy_account_sent_tx.js +0 -29
- package/dest/account_manager/index.d.ts +0 -108
- package/dest/account_manager/index.d.ts.map +0 -1
- package/dest/account_manager/index.js +0 -159
- package/dest/api/cheat_codes.d.ts +0 -26
- package/dest/api/cheat_codes.d.ts.map +0 -1
- package/dest/api/cheat_codes.js +0 -25
- package/dest/api/entrypoint.d.ts +0 -2
- package/dest/api/entrypoint.d.ts.map +0 -1
- package/dest/api/entrypoint.js +0 -1
- package/dest/api/ethereum/anvil_test_watcher.d.ts +0 -32
- package/dest/api/ethereum/anvil_test_watcher.d.ts.map +0 -1
- package/dest/api/ethereum/anvil_test_watcher.js +0 -133
- package/dest/api/ethereum/chain_monitor.d.ts +0 -25
- package/dest/api/ethereum/chain_monitor.d.ts.map +0 -1
- package/dest/api/ethereum/chain_monitor.js +0 -74
- package/dest/api/ethereum/cheat_codes.d.ts +0 -63
- package/dest/api/ethereum/cheat_codes.d.ts.map +0 -1
- package/dest/api/ethereum/cheat_codes.js +0 -162
- package/dest/api/ethereum/index.d.ts +0 -7
- package/dest/api/ethereum/index.d.ts.map +0 -1
- package/dest/api/ethereum/index.js +0 -6
- package/dest/api/ethereum/l1_contracts.d.ts +0 -3
- package/dest/api/ethereum/l1_contracts.d.ts.map +0 -1
- package/dest/api/ethereum/l1_contracts.js +0 -13
- package/dest/api/ethereum/portal_manager.d.ts +0 -136
- package/dest/api/ethereum/portal_manager.d.ts.map +0 -1
- package/dest/api/interfaces/pxe.d.ts +0 -2
- package/dest/api/interfaces/pxe.d.ts.map +0 -1
- package/dest/api/interfaces/pxe.js +0 -1
- package/dest/api/log_id.d.ts +0 -2
- package/dest/api/log_id.d.ts.map +0 -1
- package/dest/api/log_id.js +0 -1
- package/dest/api/tx_hash.d.ts +0 -2
- package/dest/api/tx_hash.d.ts.map +0 -1
- package/dest/api/tx_hash.js +0 -1
- package/dest/contract/deploy_proven_tx.d.ts +0 -21
- package/dest/contract/deploy_proven_tx.d.ts.map +0 -1
- package/dest/contract/deploy_proven_tx.js +0 -19
- package/dest/contract/index.d.ts +0 -45
- package/dest/contract/index.d.ts.map +0 -1
- package/dest/contract/proven_tx.d.ts +0 -17
- package/dest/contract/proven_tx.d.ts.map +0 -1
- package/dest/contract/proven_tx.js +0 -22
- package/dest/deployment/deploy_instance.d.ts +0 -10
- package/dest/deployment/deploy_instance.d.ts.map +0 -1
- package/dest/deployment/deploy_instance.js +0 -14
- package/dest/deployment/index.d.ts +0 -2
- package/dest/deployment/index.d.ts.map +0 -1
- package/dest/deployment/index.js +0 -1
- package/dest/deployment/register_class.d.ts +0 -6
- package/dest/deployment/register_class.d.ts.map +0 -1
- package/dest/deployment/register_class.js +0 -22
- package/dest/entrypoint/default_entrypoint.d.ts +0 -12
- package/dest/entrypoint/default_entrypoint.d.ts.map +0 -1
- package/dest/entrypoint/default_entrypoint.js +0 -28
- package/dest/entrypoint/default_multi_call_entrypoint.d.ts +0 -15
- package/dest/entrypoint/default_multi_call_entrypoint.d.ts.map +0 -1
- package/dest/entrypoint/default_multi_call_entrypoint.js +0 -130
- package/dest/entrypoint/entrypoint.d.ts +0 -35
- package/dest/entrypoint/entrypoint.d.ts.map +0 -1
- package/dest/entrypoint/entrypoint.js +0 -4
- package/dest/entrypoint/payload.d.ts +0 -128
- package/dest/entrypoint/payload.d.ts.map +0 -1
- package/dest/entrypoint/payload.js +0 -143
- package/dest/fee/fee_juice_payment_method.d.ts +0 -14
- package/dest/fee/fee_juice_payment_method.d.ts.map +0 -1
- package/dest/fee/fee_juice_payment_method.js +0 -20
- package/dest/index.d.ts +0 -66
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -69
- package/dest/rpc_clients/index.d.ts +0 -3
- package/dest/rpc_clients/index.d.ts.map +0 -1
- package/dest/rpc_clients/index.js +0 -2
- package/dest/rpc_clients/node/index.d.ts +0 -12
- package/dest/rpc_clients/node/index.d.ts.map +0 -1
- package/dest/rpc_clients/node/index.js +0 -78
- package/dest/rpc_clients/pxe_client.d.ts +0 -10
- package/dest/rpc_clients/pxe_client.d.ts.map +0 -1
- package/dest/rpc_clients/pxe_client.js +0 -23
- package/dest/utils/aztec_cheatcodes.d.ts +0 -59
- package/dest/utils/aztec_cheatcodes.d.ts.map +0 -1
- package/dest/utils/aztec_cheatcodes.js +0 -62
- package/dest/utils/index.d.ts +0 -8
- package/dest/utils/index.d.ts.map +0 -1
- package/dest/utils/index.js +0 -6
- package/dest/utils/pxe.d.ts +0 -4
- package/dest/utils/pxe.d.ts.map +0 -1
- package/dest/utils/pxe.js +0 -14
- package/dest/wallet/account_wallet.d.ts +0 -76
- package/dest/wallet/account_wallet.d.ts.map +0 -1
- package/dest/wallet/account_wallet.js +0 -231
- package/dest/wallet/account_wallet_with_private_key.d.ts +0 -26
- package/dest/wallet/account_wallet_with_private_key.d.ts.map +0 -1
- package/dest/wallet/base_wallet.d.ts +0 -73
- package/dest/wallet/base_wallet.d.ts.map +0 -1
- package/dest/wallet/base_wallet.js +0 -123
- package/dest/wallet/signerless_wallet.d.ts +0 -25
- package/dest/wallet/signerless_wallet.d.ts.map +0 -1
- package/dest/wallet/signerless_wallet.js +0 -36
- package/src/account/wallet.ts +0 -13
- package/src/account_manager/deploy_account_method.ts +0 -86
- package/src/account_manager/deploy_account_sent_tx.ts +0 -42
- package/src/account_manager/index.ts +0 -229
- package/src/api/cheat_codes.ts +0 -35
- package/src/api/entrypoint.ts +0 -1
- package/src/api/ethereum/anvil_test_watcher.ts +0 -158
- package/src/api/ethereum/chain_monitor.ts +0 -88
- package/src/api/ethereum/cheat_codes.ts +0 -184
- package/src/api/ethereum/index.ts +0 -19
- package/src/api/ethereum/l1_contracts.ts +0 -21
- package/src/api/interfaces/pxe.ts +0 -1
- package/src/api/log_id.ts +0 -1
- package/src/api/tx_hash.ts +0 -1
- package/src/contract/deploy_proven_tx.ts +0 -34
- package/src/contract/proven_tx.ts +0 -42
- package/src/deployment/deploy_instance.ts +0 -31
- package/src/deployment/index.ts +0 -1
- package/src/deployment/register_class.ts +0 -44
- package/src/entrypoint/default_entrypoint.ts +0 -39
- package/src/entrypoint/default_multi_call_entrypoint.ts +0 -93
- package/src/entrypoint/entrypoint.ts +0 -39
- package/src/entrypoint/payload.ts +0 -238
- package/src/fee/fee_juice_payment_method.ts +0 -26
- package/src/index.ts +0 -106
- package/src/rpc_clients/index.ts +0 -2
- package/src/rpc_clients/node/index.ts +0 -77
- package/src/rpc_clients/pxe_client.ts +0 -25
- package/src/utils/aztec_cheatcodes.ts +0 -77
- package/src/utils/index.ts +0 -21
- package/src/utils/pxe.ts +0 -17
- package/src/wallet/account_wallet.ts +0 -242
- package/src/wallet/base_wallet.ts +0 -198
- package/src/wallet/signerless_wallet.ts +0 -52
|
@@ -1,95 +1,144 @@
|
|
|
1
1
|
import { type FunctionCall, FunctionType, decodeFromAbi } from '@aztec/stdlib/abi';
|
|
2
|
-
import
|
|
2
|
+
import {
|
|
3
|
+
ExecutionPayload,
|
|
4
|
+
TxSimulationResult,
|
|
5
|
+
UtilitySimulationResult,
|
|
6
|
+
mergeExecutionPayloads,
|
|
7
|
+
} from '@aztec/stdlib/tx';
|
|
3
8
|
|
|
4
|
-
import type { Wallet } from '../
|
|
5
|
-
import { BaseContractInteraction
|
|
6
|
-
import
|
|
9
|
+
import type { BatchedMethod, Wallet } from '../wallet/wallet.js';
|
|
10
|
+
import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
11
|
+
import {
|
|
12
|
+
type RequestInteractionOptions,
|
|
13
|
+
type SimulateInteractionOptions,
|
|
14
|
+
toSimulateOptions,
|
|
15
|
+
} from './interaction_options.js';
|
|
7
16
|
|
|
8
17
|
/** A batch of function calls to be sent as a single transaction through a wallet. */
|
|
9
18
|
export class BatchCall extends BaseContractInteraction {
|
|
10
|
-
constructor(
|
|
19
|
+
constructor(
|
|
20
|
+
wallet: Wallet,
|
|
21
|
+
protected interactions: (BaseContractInteraction | ExecutionPayload)[],
|
|
22
|
+
) {
|
|
11
23
|
super(wallet);
|
|
12
24
|
}
|
|
13
25
|
|
|
14
26
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* @
|
|
18
|
-
* @returns A Promise that resolves to a transaction instance.
|
|
27
|
+
* Returns an execution request that represents this operation.
|
|
28
|
+
* @param options - An optional object containing additional configuration for the request generation.
|
|
29
|
+
* @returns An execution payload wrapped in promise.
|
|
19
30
|
*/
|
|
20
|
-
public async
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
31
|
+
public async request(options: RequestInteractionOptions = {}): Promise<ExecutionPayload> {
|
|
32
|
+
const requests = await this.getExecutionPayloads();
|
|
33
|
+
const feeExecutionPayload = options.fee?.paymentMethod
|
|
34
|
+
? await options.fee.paymentMethod.getExecutionPayload()
|
|
35
|
+
: undefined;
|
|
36
|
+
const finalExecutionPayload = feeExecutionPayload
|
|
37
|
+
? mergeExecutionPayloads([feeExecutionPayload, ...requests])
|
|
38
|
+
: mergeExecutionPayloads([...requests]);
|
|
39
|
+
return finalExecutionPayload;
|
|
25
40
|
}
|
|
26
41
|
|
|
27
42
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* @
|
|
34
|
-
* @returns The result of the transaction as returned by the contract function.
|
|
43
|
+
* Simulates the batch, supporting private, public and utility functions. Although this is a single
|
|
44
|
+
* interaction with the wallet, private and public functions will be grouped into a single ExecutionPayload
|
|
45
|
+
* that the wallet will simulate as a single transaction. Utility function calls will simply be executed
|
|
46
|
+
* one by one.
|
|
47
|
+
* @param options - An optional object containing additional configuration for the interaction.
|
|
48
|
+
* @returns The results of all the interactions that make up the batch
|
|
35
49
|
*/
|
|
36
|
-
public async simulate(options:
|
|
37
|
-
const {
|
|
50
|
+
public async simulate(options: SimulateInteractionOptions): Promise<any> {
|
|
51
|
+
const { indexedExecutionPayloads, utility } = (await this.getExecutionPayloads()).reduce<{
|
|
38
52
|
/** Keep track of the number of private calls to retrieve the return values */
|
|
39
53
|
privateIndex: 0;
|
|
40
54
|
/** Keep track of the number of public calls to retrieve the return values */
|
|
41
55
|
publicIndex: 0;
|
|
42
|
-
/** The public and private function
|
|
43
|
-
|
|
44
|
-
/** The
|
|
45
|
-
|
|
56
|
+
/** The public and private function execution requests in the batch */
|
|
57
|
+
indexedExecutionPayloads: [ExecutionPayload, number, number][];
|
|
58
|
+
/** The utility function calls in the batch. */
|
|
59
|
+
utility: [FunctionCall, number][];
|
|
46
60
|
}>(
|
|
47
61
|
(acc, current, index) => {
|
|
48
|
-
|
|
49
|
-
|
|
62
|
+
const call = current.calls[0];
|
|
63
|
+
if (call.type === FunctionType.UTILITY) {
|
|
64
|
+
acc.utility.push([call, index]);
|
|
50
65
|
} else {
|
|
51
|
-
acc.
|
|
66
|
+
acc.indexedExecutionPayloads.push([
|
|
52
67
|
current,
|
|
53
68
|
index,
|
|
54
|
-
|
|
69
|
+
call.type === FunctionType.PRIVATE ? acc.privateIndex++ : acc.publicIndex++,
|
|
55
70
|
]);
|
|
56
71
|
}
|
|
57
72
|
return acc;
|
|
58
73
|
},
|
|
59
|
-
{
|
|
74
|
+
{ indexedExecutionPayloads: [], utility: [], publicIndex: 0, privateIndex: 0 },
|
|
60
75
|
);
|
|
61
76
|
|
|
62
|
-
const
|
|
63
|
-
const capsules = this.getCapsules();
|
|
64
|
-
const fee = await this.getFeeOptions({ calls, capsules, ...options });
|
|
65
|
-
const txRequest = await this.wallet.createTxExecutionRequest({ calls, capsules, ...options, fee });
|
|
77
|
+
const batchRequests: Array<BatchedMethod<'simulateUtility'> | BatchedMethod<'simulateTx'>> = [];
|
|
66
78
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
79
|
+
// Add utility calls to batch
|
|
80
|
+
for (const [call] of utility) {
|
|
81
|
+
batchRequests.push({
|
|
82
|
+
name: 'simulateUtility' as const,
|
|
83
|
+
args: [call, options?.authWitnesses] as const,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Add tx simulation to batch if there are any private/public calls
|
|
88
|
+
if (indexedExecutionPayloads.length > 0) {
|
|
89
|
+
const payloads = indexedExecutionPayloads.map(([request]) => request);
|
|
90
|
+
const combinedPayload = mergeExecutionPayloads(payloads);
|
|
91
|
+
const executionPayload = new ExecutionPayload(
|
|
92
|
+
combinedPayload.calls,
|
|
93
|
+
combinedPayload.authWitnesses.concat(options.authWitnesses ?? []),
|
|
94
|
+
combinedPayload.capsules.concat(options.capsules ?? []),
|
|
95
|
+
combinedPayload.extraHashedArgs,
|
|
96
|
+
);
|
|
71
97
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
98
|
+
batchRequests.push({
|
|
99
|
+
name: 'simulateTx' as const,
|
|
100
|
+
args: [executionPayload, toSimulateOptions(options)],
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const batchResults = batchRequests.length > 0 ? await this.wallet.batch(batchRequests) : [];
|
|
76
105
|
|
|
77
106
|
const results: any[] = [];
|
|
78
107
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
108
|
+
// Process utility results (they come first in batch results)
|
|
109
|
+
for (let i = 0; i < utility.length; i++) {
|
|
110
|
+
const [call, resultIndex] = utility[i];
|
|
111
|
+
const wrappedResult = batchResults[i];
|
|
112
|
+
if (wrappedResult.name === 'simulateUtility') {
|
|
113
|
+
const rawReturnValues = (wrappedResult.result as UtilitySimulationResult).result;
|
|
114
|
+
results[resultIndex] = rawReturnValues ? decodeFromAbi(call.returnTypes, rawReturnValues) : [];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Process tx simulation result (it comes last if present)
|
|
119
|
+
if (indexedExecutionPayloads.length > 0) {
|
|
120
|
+
const txResultWrapper = batchResults[utility.length];
|
|
121
|
+
if (txResultWrapper.name === 'simulateTx') {
|
|
122
|
+
const simulatedTx = txResultWrapper.result as TxSimulationResult;
|
|
123
|
+
indexedExecutionPayloads.forEach(([request, callIndex, resultIndex]) => {
|
|
124
|
+
const call = request.calls[0];
|
|
125
|
+
// As account entrypoints are private, for private functions we retrieve the return values from the first nested call
|
|
126
|
+
// since we're interested in the first set of values AFTER the account entrypoint
|
|
127
|
+
// For public functions we retrieve the first values directly from the public output.
|
|
128
|
+
const rawReturnValues =
|
|
129
|
+
call.type == FunctionType.PRIVATE
|
|
130
|
+
? simulatedTx.getPrivateReturnValues()?.nested?.[resultIndex].values
|
|
131
|
+
: simulatedTx.getPublicReturnValues()?.[resultIndex].values;
|
|
132
|
+
|
|
133
|
+
results[callIndex] = rawReturnValues ? decodeFromAbi(call.returnTypes, rawReturnValues) : [];
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
90
137
|
|
|
91
|
-
results[callIndex] = rawReturnValues ? decodeFromAbi(call.returnTypes, rawReturnValues) : [];
|
|
92
|
-
});
|
|
93
138
|
return results;
|
|
94
139
|
}
|
|
140
|
+
|
|
141
|
+
protected async getExecutionPayloads(): Promise<ExecutionPayload[]> {
|
|
142
|
+
return await Promise.all(this.interactions.map(i => (i instanceof ExecutionPayload ? i : i.request())));
|
|
143
|
+
}
|
|
95
144
|
}
|
package/src/contract/checker.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {
|
|
2
|
+
type AbiType,
|
|
3
|
+
type BasicType,
|
|
4
|
+
type ContractArtifact,
|
|
5
|
+
type StructType,
|
|
6
|
+
getDefaultInitializer,
|
|
7
|
+
} from '@aztec/stdlib/abi';
|
|
2
8
|
|
|
3
9
|
/**
|
|
4
10
|
* Represents a type derived from input type T with the 'kind' property removed.
|
|
@@ -38,8 +44,7 @@ export function abiChecker(artifact: ContractArtifact) {
|
|
|
38
44
|
});
|
|
39
45
|
});
|
|
40
46
|
|
|
41
|
-
|
|
42
|
-
if (!artifact.functions.find(func => func.name === 'constructor')) {
|
|
47
|
+
if (!getDefaultInitializer(artifact)) {
|
|
43
48
|
throw new Error('ABI has no constructor');
|
|
44
49
|
}
|
|
45
50
|
|
package/src/contract/contract.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { ContractArtifact } from '@aztec/stdlib/abi';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
-
import {
|
|
3
|
+
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
4
4
|
import { PublicKeys } from '@aztec/stdlib/keys';
|
|
5
5
|
|
|
6
|
-
import type { Wallet } from '../
|
|
6
|
+
import type { Wallet } from '../wallet/wallet.js';
|
|
7
7
|
import { ContractBase } from './contract_base.js';
|
|
8
8
|
import { DeployMethod } from './deploy_method.js';
|
|
9
9
|
|
|
@@ -11,45 +11,37 @@ import { DeployMethod } from './deploy_method.js';
|
|
|
11
11
|
* The Contract class represents a contract and provides utility methods for interacting with it.
|
|
12
12
|
* It enables the creation of ContractFunctionInteraction instances for each function in the contract's ABI,
|
|
13
13
|
* allowing users to call or send transactions to these functions. Additionally, the Contract class can be used
|
|
14
|
-
* to attach the contract instance to a deployed contract
|
|
14
|
+
* to attach the contract instance to a deployed contract onchain through the PXE, which facilitates
|
|
15
15
|
* interaction with Aztec's privacy protocol.
|
|
16
16
|
*/
|
|
17
17
|
export class Contract extends ContractBase {
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
20
|
-
* @param address - The
|
|
19
|
+
* Gets a contract instance.
|
|
20
|
+
* @param address - The address of the contract instance.
|
|
21
21
|
* @param artifact - Build artifact of the contract.
|
|
22
22
|
* @param wallet - The wallet to use when interacting with the contract.
|
|
23
23
|
* @returns A promise that resolves to a new Contract instance.
|
|
24
24
|
*/
|
|
25
|
-
public static
|
|
26
|
-
|
|
27
|
-
if (instance === undefined) {
|
|
28
|
-
throw new Error(`Contract instance at ${address.toString()} has not been registered in the wallet's PXE`);
|
|
29
|
-
}
|
|
30
|
-
const thisContractClass = await getContractClassFromArtifact(artifact);
|
|
31
|
-
if (!thisContractClass.id.equals(instance.currentContractClassId)) {
|
|
32
|
-
// wallet holds an outdated version of this contract
|
|
33
|
-
await wallet.updateContract(address, artifact);
|
|
34
|
-
instance.currentContractClassId = thisContractClass.id;
|
|
35
|
-
}
|
|
36
|
-
return new Contract(instance, artifact, wallet);
|
|
25
|
+
public static at(address: AztecAddress, artifact: ContractArtifact, wallet: Wallet): Contract {
|
|
26
|
+
return new Contract(address, artifact, wallet);
|
|
37
27
|
}
|
|
38
28
|
|
|
39
29
|
/**
|
|
40
|
-
* Creates a tx to deploy a new instance of a contract.
|
|
30
|
+
* Creates a tx to deploy (initialize and/or publish) a new instance of a contract.
|
|
41
31
|
* @param wallet - The wallet for executing the deployment.
|
|
42
32
|
* @param artifact - Build artifact of the contract to deploy
|
|
43
33
|
* @param args - Arguments for the constructor.
|
|
44
34
|
* @param constructorName - The name of the constructor function to call.
|
|
45
35
|
*/
|
|
46
36
|
public static deploy(wallet: Wallet, artifact: ContractArtifact, args: any[], constructorName?: string) {
|
|
47
|
-
const postDeployCtor = (
|
|
37
|
+
const postDeployCtor = (instance: ContractInstanceWithAddress, wallet: Wallet) =>
|
|
38
|
+
Contract.at(instance.address, artifact, wallet);
|
|
48
39
|
return new DeployMethod(PublicKeys.default(), wallet, artifact, postDeployCtor, args, constructorName);
|
|
49
40
|
}
|
|
50
41
|
|
|
51
42
|
/**
|
|
52
|
-
* Creates a tx to deploy a new instance of a contract
|
|
43
|
+
* Creates a tx to deploy (initialize and/or publish) a new instance of a contract
|
|
44
|
+
* using the specified public keys hash to derive the address.
|
|
53
45
|
* @param publicKeys - Hash of public keys to use for deriving the address.
|
|
54
46
|
* @param wallet - The wallet for executing the deployment.
|
|
55
47
|
* @param artifact - Build artifact of the contract.
|
|
@@ -63,7 +55,8 @@ export class Contract extends ContractBase {
|
|
|
63
55
|
args: any[],
|
|
64
56
|
constructorName?: string,
|
|
65
57
|
) {
|
|
66
|
-
const postDeployCtor = (
|
|
58
|
+
const postDeployCtor = (instance: ContractInstanceWithAddress, wallet: Wallet) =>
|
|
59
|
+
Contract.at(instance.address, artifact, wallet);
|
|
67
60
|
return new DeployMethod(publicKeys, wallet, artifact, postDeployCtor, args, constructorName);
|
|
68
61
|
}
|
|
69
62
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
type ContractArtifact,
|
|
3
|
-
type ContractNote,
|
|
4
3
|
type FieldLayout,
|
|
5
|
-
type
|
|
4
|
+
type FunctionAbi,
|
|
6
5
|
FunctionSelector,
|
|
6
|
+
getAllFunctionAbis,
|
|
7
7
|
} from '@aztec/stdlib/abi';
|
|
8
|
-
import
|
|
8
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
9
|
|
|
10
|
-
import type { Wallet } from '../
|
|
10
|
+
import type { Wallet } from '../wallet/wallet.js';
|
|
11
11
|
import { ContractFunctionInteraction } from './contract_function_interaction.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -28,13 +28,6 @@ export type ContractStorageLayout<T extends string> = {
|
|
|
28
28
|
[K in T]: FieldLayout;
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
/**
|
|
32
|
-
* Type representing the notes used in a contract.
|
|
33
|
-
*/
|
|
34
|
-
export type ContractNotes<T extends string> = {
|
|
35
|
-
[K in T]: ContractNote;
|
|
36
|
-
};
|
|
37
|
-
|
|
38
31
|
/**
|
|
39
32
|
* Abstract implementation of a contract extended by the Contract class and generated contract types.
|
|
40
33
|
*/
|
|
@@ -45,16 +38,16 @@ export class ContractBase {
|
|
|
45
38
|
public methods: { [name: string]: ContractMethod } = {};
|
|
46
39
|
|
|
47
40
|
protected constructor(
|
|
48
|
-
/** The
|
|
49
|
-
public readonly
|
|
41
|
+
/** The contract's address. */
|
|
42
|
+
public readonly address: AztecAddress,
|
|
50
43
|
/** The Application Binary Interface for the contract. */
|
|
51
44
|
public readonly artifact: ContractArtifact,
|
|
52
45
|
/** The wallet used for interacting with this contract. */
|
|
53
46
|
public wallet: Wallet,
|
|
54
47
|
) {
|
|
55
|
-
artifact.
|
|
48
|
+
getAllFunctionAbis(artifact).forEach((f: FunctionAbi) => {
|
|
56
49
|
const interactionFunction = (...args: any[]) => {
|
|
57
|
-
return new ContractFunctionInteraction(this.wallet, this.
|
|
50
|
+
return new ContractFunctionInteraction(this.wallet, this.address, f, args);
|
|
58
51
|
};
|
|
59
52
|
|
|
60
53
|
this.methods[f.name] = Object.assign(interactionFunction, {
|
|
@@ -69,22 +62,12 @@ export class ContractBase {
|
|
|
69
62
|
});
|
|
70
63
|
}
|
|
71
64
|
|
|
72
|
-
/** Address of the contract. */
|
|
73
|
-
public get address() {
|
|
74
|
-
return this.instance.address;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/** Partial address of the contract. */
|
|
78
|
-
public get partialAddress() {
|
|
79
|
-
return computePartialAddress(this.instance);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
65
|
/**
|
|
83
66
|
* Creates a new instance of the contract wrapper attached to a different wallet.
|
|
84
67
|
* @param wallet - Wallet to use for sending txs.
|
|
85
68
|
* @returns A new contract instance.
|
|
86
69
|
*/
|
|
87
70
|
public withWallet(wallet: Wallet): this {
|
|
88
|
-
return new ContractBase(this.
|
|
71
|
+
return new ContractBase(this.address, this.artifact, wallet) as this;
|
|
89
72
|
}
|
|
90
73
|
}
|