@aztec/aztec.js 0.0.0-test.1 → 0.0.1-commit.5daedc8
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,4 +1,3 @@
|
|
|
1
|
-
import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
|
|
2
1
|
import { PublicKeys } from '@aztec/stdlib/keys';
|
|
3
2
|
import { ContractBase } from './contract_base.js';
|
|
4
3
|
import { DeployMethod } from './deploy_method.js';
|
|
@@ -6,47 +5,38 @@ import { DeployMethod } from './deploy_method.js';
|
|
|
6
5
|
* The Contract class represents a contract and provides utility methods for interacting with it.
|
|
7
6
|
* It enables the creation of ContractFunctionInteraction instances for each function in the contract's ABI,
|
|
8
7
|
* allowing users to call or send transactions to these functions. Additionally, the Contract class can be used
|
|
9
|
-
* to attach the contract instance to a deployed contract
|
|
8
|
+
* to attach the contract instance to a deployed contract onchain through the PXE, which facilitates
|
|
10
9
|
* interaction with Aztec's privacy protocol.
|
|
11
10
|
*/ export class Contract extends ContractBase {
|
|
12
11
|
/**
|
|
13
|
-
*
|
|
14
|
-
* @param address - The
|
|
12
|
+
* Gets a contract instance.
|
|
13
|
+
* @param address - The address of the contract instance.
|
|
15
14
|
* @param artifact - Build artifact of the contract.
|
|
16
15
|
* @param wallet - The wallet to use when interacting with the contract.
|
|
17
16
|
* @returns A promise that resolves to a new Contract instance.
|
|
18
|
-
*/ static
|
|
19
|
-
|
|
20
|
-
if (instance === undefined) {
|
|
21
|
-
throw new Error(`Contract instance at ${address.toString()} has not been registered in the wallet's PXE`);
|
|
22
|
-
}
|
|
23
|
-
const thisContractClass = await getContractClassFromArtifact(artifact);
|
|
24
|
-
if (!thisContractClass.id.equals(instance.currentContractClassId)) {
|
|
25
|
-
// wallet holds an outdated version of this contract
|
|
26
|
-
await wallet.updateContract(address, artifact);
|
|
27
|
-
instance.currentContractClassId = thisContractClass.id;
|
|
28
|
-
}
|
|
29
|
-
return new Contract(instance, artifact, wallet);
|
|
17
|
+
*/ static at(address, artifact, wallet) {
|
|
18
|
+
return new Contract(address, artifact, wallet);
|
|
30
19
|
}
|
|
31
20
|
/**
|
|
32
|
-
* Creates a tx to deploy a new instance of a contract.
|
|
21
|
+
* Creates a tx to deploy (initialize and/or publish) a new instance of a contract.
|
|
33
22
|
* @param wallet - The wallet for executing the deployment.
|
|
34
23
|
* @param artifact - Build artifact of the contract to deploy
|
|
35
24
|
* @param args - Arguments for the constructor.
|
|
36
25
|
* @param constructorName - The name of the constructor function to call.
|
|
37
26
|
*/ static deploy(wallet, artifact, args, constructorName) {
|
|
38
|
-
const postDeployCtor = (
|
|
27
|
+
const postDeployCtor = (instance, wallet)=>Contract.at(instance.address, artifact, wallet);
|
|
39
28
|
return new DeployMethod(PublicKeys.default(), wallet, artifact, postDeployCtor, args, constructorName);
|
|
40
29
|
}
|
|
41
30
|
/**
|
|
42
|
-
* Creates a tx to deploy a new instance of a contract
|
|
31
|
+
* Creates a tx to deploy (initialize and/or publish) a new instance of a contract
|
|
32
|
+
* using the specified public keys hash to derive the address.
|
|
43
33
|
* @param publicKeys - Hash of public keys to use for deriving the address.
|
|
44
34
|
* @param wallet - The wallet for executing the deployment.
|
|
45
35
|
* @param artifact - Build artifact of the contract.
|
|
46
36
|
* @param args - Arguments for the constructor.
|
|
47
37
|
* @param constructorName - The name of the constructor function to call.
|
|
48
38
|
*/ static deployWithPublicKeys(publicKeys, wallet, artifact, args, constructorName) {
|
|
49
|
-
const postDeployCtor = (
|
|
39
|
+
const postDeployCtor = (instance, wallet)=>Contract.at(instance.address, artifact, wallet);
|
|
50
40
|
return new DeployMethod(publicKeys, wallet, artifact, postDeployCtor, args, constructorName);
|
|
51
41
|
}
|
|
52
42
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type ContractArtifact, type
|
|
2
|
-
import {
|
|
3
|
-
import type { Wallet } from '../
|
|
1
|
+
import { type ContractArtifact, type FieldLayout, FunctionSelector } from '@aztec/stdlib/abi';
|
|
2
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
import type { Wallet } from '../wallet/wallet.js';
|
|
4
4
|
import { ContractFunctionInteraction } from './contract_function_interaction.js';
|
|
5
5
|
/**
|
|
6
6
|
* Type representing a contract method that returns a ContractFunctionInteraction instance
|
|
@@ -18,21 +18,12 @@ export type ContractMethod = ((...args: any[]) => ContractFunctionInteraction) &
|
|
|
18
18
|
export type ContractStorageLayout<T extends string> = {
|
|
19
19
|
[K in T]: FieldLayout;
|
|
20
20
|
};
|
|
21
|
-
/**
|
|
22
|
-
* Type representing the notes used in a contract.
|
|
23
|
-
*/
|
|
24
|
-
export type ContractNotes<T extends string> = {
|
|
25
|
-
[K in T]: ContractNote;
|
|
26
|
-
};
|
|
27
21
|
/**
|
|
28
22
|
* Abstract implementation of a contract extended by the Contract class and generated contract types.
|
|
29
23
|
*/
|
|
30
24
|
export declare class ContractBase {
|
|
31
|
-
|
|
32
|
-
readonly instance: ContractInstanceWithAddress;
|
|
33
|
-
/** The Application Binary Interface for the contract. */
|
|
25
|
+
readonly address: AztecAddress;
|
|
34
26
|
readonly artifact: ContractArtifact;
|
|
35
|
-
/** The wallet used for interacting with this contract. */
|
|
36
27
|
wallet: Wallet;
|
|
37
28
|
/**
|
|
38
29
|
* An object containing contract methods mapped to their respective names.
|
|
@@ -41,16 +32,12 @@ export declare class ContractBase {
|
|
|
41
32
|
[name: string]: ContractMethod;
|
|
42
33
|
};
|
|
43
34
|
protected constructor(
|
|
44
|
-
/** The
|
|
45
|
-
|
|
35
|
+
/** The contract's address. */
|
|
36
|
+
address: AztecAddress,
|
|
46
37
|
/** The Application Binary Interface for the contract. */
|
|
47
38
|
artifact: ContractArtifact,
|
|
48
39
|
/** The wallet used for interacting with this contract. */
|
|
49
40
|
wallet: Wallet);
|
|
50
|
-
/** Address of the contract. */
|
|
51
|
-
get address(): import("@aztec/stdlib/aztec-address").AztecAddress;
|
|
52
|
-
/** Partial address of the contract. */
|
|
53
|
-
get partialAddress(): Promise<import("@aztec/foundation/schemas").Fr>;
|
|
54
41
|
/**
|
|
55
42
|
* Creates a new instance of the contract wrapper attached to a different wallet.
|
|
56
43
|
* @param wallet - Wallet to use for sending txs.
|
|
@@ -58,4 +45,4 @@ export declare class ContractBase {
|
|
|
58
45
|
*/
|
|
59
46
|
withWallet(wallet: Wallet): this;
|
|
60
47
|
}
|
|
61
|
-
//# sourceMappingURL=
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfYmFzZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0L2NvbnRyYWN0X2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssV0FBVyxFQUVoQixnQkFBZ0IsRUFFakIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVoRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVqRjs7O0dBR0c7QUFDSCxNQUFNLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSywyQkFBMkIsQ0FBQyxHQUFHO0lBQy9FOztPQUVHO0lBQ0gsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Q0FDM0MsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxNQUFNLHFCQUFxQixDQUFDLENBQUMsU0FBUyxNQUFNLElBQUk7S0FDbkQsQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXO0NBQ3RCLENBQUM7QUFFRjs7R0FFRztBQUNILHFCQUFhLFlBQVk7YUFRTCxPQUFPLEVBQUUsWUFBWTthQUVyQixRQUFRLEVBQUUsZ0JBQWdCO0lBRW5DLE1BQU0sRUFBRSxNQUFNO0lBWHZCOztPQUVHO0lBQ0ksT0FBTyxFQUFFO1FBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLGNBQWMsQ0FBQTtLQUFFLENBQU07SUFFeEQsU0FBUztJQUNQLDhCQUE4QjtJQUNkLE9BQU8sRUFBRSxZQUFZO0lBQ3JDLHlEQUF5RDtJQUN6QyxRQUFRLEVBQUUsZ0JBQWdCO0lBQzFDLDBEQUEwRDtJQUNuRCxNQUFNLEVBQUUsTUFBTSxFQWlCdEI7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUV0QztDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_base.d.ts","sourceRoot":"","sources":["../../src/contract/contract_base.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,
|
|
1
|
+
{"version":3,"file":"contract_base.d.ts","sourceRoot":"","sources":["../../src/contract/contract_base.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAEhB,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,2BAA2B,CAAC,GAAG;IAC/E;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,MAAM,IAAI;KACnD,CAAC,IAAI,CAAC,GAAG,WAAW;CACtB,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAY;aAQL,OAAO,EAAE,YAAY;aAErB,QAAQ,EAAE,gBAAgB;IAEnC,MAAM,EAAE,MAAM;IAXvB;;OAEG;IACI,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,CAAM;IAExD,SAAS;IACP,8BAA8B;IACd,OAAO,EAAE,YAAY;IACrC,yDAAyD;IACzC,QAAQ,EAAE,gBAAgB;IAC1C,0DAA0D;IACnD,MAAM,EAAE,MAAM,EAiBtB;IAED;;;;OAIG;IACI,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEtC;CACF"}
|
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
2
|
-
import { computePartialAddress } from '@aztec/stdlib/contract';
|
|
1
|
+
import { FunctionSelector, getAllFunctionAbis } from '@aztec/stdlib/abi';
|
|
3
2
|
import { ContractFunctionInteraction } from './contract_function_interaction.js';
|
|
4
3
|
/**
|
|
5
4
|
* Abstract implementation of a contract extended by the Contract class and generated contract types.
|
|
6
5
|
*/ export class ContractBase {
|
|
7
|
-
|
|
6
|
+
address;
|
|
8
7
|
artifact;
|
|
9
8
|
wallet;
|
|
10
9
|
/**
|
|
11
10
|
* An object containing contract methods mapped to their respective names.
|
|
12
11
|
*/ methods;
|
|
13
|
-
constructor(/** The
|
|
14
|
-
this.
|
|
12
|
+
constructor(/** The contract's address. */ address, /** The Application Binary Interface for the contract. */ artifact, /** The wallet used for interacting with this contract. */ wallet){
|
|
13
|
+
this.address = address;
|
|
15
14
|
this.artifact = artifact;
|
|
16
15
|
this.wallet = wallet;
|
|
17
16
|
this.methods = {};
|
|
18
|
-
artifact.
|
|
17
|
+
getAllFunctionAbis(artifact).forEach((f)=>{
|
|
19
18
|
const interactionFunction = (...args)=>{
|
|
20
|
-
return new ContractFunctionInteraction(this.wallet, this.
|
|
19
|
+
return new ContractFunctionInteraction(this.wallet, this.address, f, args);
|
|
21
20
|
};
|
|
22
21
|
this.methods[f.name] = Object.assign(interactionFunction, {
|
|
23
22
|
/**
|
|
@@ -29,17 +28,11 @@ import { ContractFunctionInteraction } from './contract_function_interaction.js'
|
|
|
29
28
|
});
|
|
30
29
|
});
|
|
31
30
|
}
|
|
32
|
-
/** Address of the contract. */ get address() {
|
|
33
|
-
return this.instance.address;
|
|
34
|
-
}
|
|
35
|
-
/** Partial address of the contract. */ get partialAddress() {
|
|
36
|
-
return computePartialAddress(this.instance);
|
|
37
|
-
}
|
|
38
31
|
/**
|
|
39
32
|
* Creates a new instance of the contract wrapper attached to a different wallet.
|
|
40
33
|
* @param wallet - Wallet to use for sending txs.
|
|
41
34
|
* @returns A new contract instance.
|
|
42
35
|
*/ withWallet(wallet) {
|
|
43
|
-
return new ContractBase(this.
|
|
36
|
+
return new ContractBase(this.address, this.artifact, wallet);
|
|
44
37
|
}
|
|
45
38
|
}
|
|
@@ -1,30 +1,11 @@
|
|
|
1
|
-
import { type FunctionAbi,
|
|
1
|
+
import { type FunctionAbi, FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
2
|
+
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
2
3
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
-
import type
|
|
4
|
-
import
|
|
5
|
-
import type { Wallet } from '../
|
|
6
|
-
import { BaseContractInteraction
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Represents the options for simulating a contract function interaction.
|
|
10
|
-
* Allows specifying the address from which the view method should be called.
|
|
11
|
-
* Disregarded for simulation of public functions
|
|
12
|
-
*/
|
|
13
|
-
export type SimulateMethodOptions = Pick<SendMethodOptions, 'fee'> & {
|
|
14
|
-
/** The sender's Aztec address. */
|
|
15
|
-
from?: AztecAddress;
|
|
16
|
-
/** Simulate without checking for the validity of the resulting transaction, e.g. whether it emits any existing nullifiers. */
|
|
17
|
-
skipTxValidation?: boolean;
|
|
18
|
-
/** Whether to ensure the fee payer is not empty and has enough balance to pay for the fee. */
|
|
19
|
-
skipFeeEnforcement?: boolean;
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* The result of a profile() call.
|
|
23
|
-
*/
|
|
24
|
-
export type ProfileResult = PrivateKernelProverProfileResult & {
|
|
25
|
-
/** The result of the transaction as returned by the contract function. */
|
|
26
|
-
returnValues: any;
|
|
27
|
-
};
|
|
4
|
+
import { type Capsule, type HashedValues, type TxProfileResult } from '@aztec/stdlib/tx';
|
|
5
|
+
import { ExecutionPayload } from '@aztec/stdlib/tx';
|
|
6
|
+
import type { Wallet } from '../wallet/wallet.js';
|
|
7
|
+
import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
8
|
+
import { type ProfileInteractionOptions, type RequestInteractionOptions, type SimulateInteractionOptions, type SimulationReturn } from './interaction_options.js';
|
|
28
9
|
/**
|
|
29
10
|
* This is the class that is returned when calling e.g. `contract.methods.myMethod(arg0, arg1)`.
|
|
30
11
|
* It contains available interactions one can call on a method, including view.
|
|
@@ -33,36 +14,63 @@ export declare class ContractFunctionInteraction extends BaseContractInteraction
|
|
|
33
14
|
protected contractAddress: AztecAddress;
|
|
34
15
|
protected functionDao: FunctionAbi;
|
|
35
16
|
protected args: any[];
|
|
36
|
-
|
|
17
|
+
private extraHashedArgs;
|
|
18
|
+
constructor(wallet: Wallet, contractAddress: AztecAddress, functionDao: FunctionAbi, args: any[], authWitnesses?: AuthWitness[], capsules?: Capsule[], extraHashedArgs?: HashedValues[]);
|
|
37
19
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* @
|
|
41
|
-
* @returns A Promise that resolves to a transaction instance.
|
|
20
|
+
* Returns the encoded function call wrapped by this interaction
|
|
21
|
+
* Useful when generating authwits
|
|
22
|
+
* @returns An encoded function call
|
|
42
23
|
*/
|
|
43
|
-
|
|
24
|
+
getFunctionCall(): Promise<{
|
|
25
|
+
name: string;
|
|
26
|
+
args: import("../api/fields.js").Fr[];
|
|
27
|
+
selector: FunctionSelector;
|
|
28
|
+
type: FunctionType;
|
|
29
|
+
to: AztecAddress;
|
|
30
|
+
isStatic: boolean;
|
|
31
|
+
hideMsgSender: boolean; /** Only set to `true` for enqueued public function calls */
|
|
32
|
+
returnTypes: import("@aztec/stdlib/abi").AbiType[];
|
|
33
|
+
}>;
|
|
44
34
|
/**
|
|
45
|
-
* Returns
|
|
46
|
-
*
|
|
47
|
-
* @returns
|
|
35
|
+
* Returns the execution payload that allows this operation to happen on chain.
|
|
36
|
+
* @param options - Configuration options.
|
|
37
|
+
* @returns The execution payload for this operation
|
|
48
38
|
*/
|
|
49
|
-
request(): Promise<
|
|
39
|
+
request(options?: RequestInteractionOptions): Promise<ExecutionPayload>;
|
|
50
40
|
/**
|
|
51
|
-
* Simulate a transaction and get its
|
|
41
|
+
* Simulate a transaction and get information from its execution.
|
|
52
42
|
* Differs from prove in a few important ways:
|
|
53
|
-
* 1. It returns the values of the function execution
|
|
54
|
-
* 2. It supports `
|
|
43
|
+
* 1. It returns the values of the function execution, plus additional metadata if requested
|
|
44
|
+
* 2. It supports `utility`, `private` and `public` functions
|
|
55
45
|
*
|
|
56
|
-
* @param options - An optional object containing additional configuration for the
|
|
57
|
-
* @returns
|
|
46
|
+
* @param options - An optional object containing additional configuration for the simulation.
|
|
47
|
+
* @returns Depending on the simulation options, this method directly returns the result value of the executed
|
|
48
|
+
* function or a rich object containing extra metadata, such as estimated gas costs (if requested via options),
|
|
49
|
+
* execution statistics and emitted offchain effects
|
|
58
50
|
*/
|
|
59
|
-
simulate(options
|
|
51
|
+
simulate<T extends SimulateInteractionOptions>(options: T): Promise<SimulationReturn<Exclude<T['fee'], undefined>['estimateGas']>>;
|
|
52
|
+
simulate<T extends SimulateInteractionOptions>(options: T): Promise<SimulationReturn<T['includeMetadata']>>;
|
|
60
53
|
/**
|
|
61
54
|
* Simulate a transaction and profile the gate count for each function in the transaction.
|
|
62
|
-
* @param options - Same options as `simulate
|
|
55
|
+
* @param options - Same options as `simulate`, plus profiling method
|
|
63
56
|
*
|
|
64
57
|
* @returns An object containing the function return value and profile result.
|
|
65
58
|
*/
|
|
66
|
-
|
|
59
|
+
profile(options: ProfileInteractionOptions): Promise<TxProfileResult>;
|
|
60
|
+
/**
|
|
61
|
+
* Augments this ContractFunctionInteraction with additional metadata, such as authWitnesses, capsules, and extraHashedArgs.
|
|
62
|
+
* This is useful when creating a "batteries included" interaction, such as registering a contract class with its associated
|
|
63
|
+
* capsule instead of having the user provide them externally.
|
|
64
|
+
* @param options - An object containing the metadata to add to the interaction
|
|
65
|
+
* @returns A new ContractFunctionInteraction with the added metadata, but calling the same original function in the same manner
|
|
66
|
+
*/
|
|
67
|
+
with({ authWitnesses, capsules, extraHashedArgs }: {
|
|
68
|
+
/** The authWitnesses to add to the interaction */
|
|
69
|
+
authWitnesses?: AuthWitness[];
|
|
70
|
+
/** The capsules to add to the interaction */
|
|
71
|
+
capsules?: Capsule[];
|
|
72
|
+
/** The extra hashed args to add to the interaction */
|
|
73
|
+
extraHashedArgs?: HashedValues[];
|
|
74
|
+
}): ContractFunctionInteraction;
|
|
67
75
|
}
|
|
68
|
-
//# sourceMappingURL=
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZnVuY3Rpb25faW50ZXJhY3Rpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9jb250cmFjdF9mdW5jdGlvbl9pbnRlcmFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFrQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3JILE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxlQUFlLEVBQTBCLE1BQU0sa0JBQWtCLENBQUM7QUFDakgsT0FBTyxFQUFFLGdCQUFnQixFQUEwQixNQUFNLGtCQUFrQixDQUFDO0FBRTVFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpFLE9BQU8sRUFDTCxLQUFLLHlCQUF5QixFQUM5QixLQUFLLHlCQUF5QixFQUM5QixLQUFLLDBCQUEwQixFQUMvQixLQUFLLGdCQUFnQixFQUd0QixNQUFNLDBCQUEwQixDQUFDO0FBRWxDOzs7R0FHRztBQUNILHFCQUFhLDJCQUE0QixTQUFRLHVCQUF1QjtJQUdwRSxTQUFTLENBQUMsZUFBZSxFQUFFLFlBQVk7SUFDdkMsU0FBUyxDQUFDLFdBQVcsRUFBRSxXQUFXO0lBQ2xDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO0lBR3JCLE9BQU8sQ0FBQyxlQUFlO0lBUHpCLFlBQ0UsTUFBTSxFQUFFLE1BQU0sRUFDSixlQUFlLEVBQUUsWUFBWSxFQUM3QixXQUFXLEVBQUUsV0FBVyxFQUN4QixJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQ3JCLGFBQWEsR0FBRSxXQUFXLEVBQU8sRUFDakMsUUFBUSxHQUFFLE9BQU8sRUFBTyxFQUNoQixlQUFlLEdBQUUsWUFBWSxFQUFPLEVBTTdDO0lBRUQ7Ozs7T0FJRztJQUNVLGVBQWU7Ozs7Ozs7Z0NBU0gsNERBQTREOztPQUdwRjtJQUVEOzs7O09BSUc7SUFDbUIsT0FBTyxDQUFDLE9BQU8sR0FBRSx5QkFBOEIsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FnQmhHO0lBR0Q7Ozs7Ozs7Ozs7T0FVRztJQUNVLFFBQVEsQ0FBQyxDQUFDLFNBQVMsMEJBQTBCLEVBQ3hELE9BQU8sRUFBRSxDQUFDLEdBQ1QsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdELFFBQVEsQ0FBQyxDQUFDLFNBQVMsMEJBQTBCLEVBQ3hELE9BQU8sRUFBRSxDQUFDLEdBQ1QsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQTJEbkQ7Ozs7O09BS0c7SUFDVSxPQUFPLENBQUMsT0FBTyxFQUFFLHlCQUF5QixHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FPakY7SUFFRDs7Ozs7O09BTUc7SUFDSSxJQUFJLENBQUMsRUFDVixhQUFrQixFQUNsQixRQUFhLEVBQ2IsZUFBb0IsRUFDckIsRUFBRTtRQUNELGtEQUFrRDtRQUNsRCxhQUFhLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUM5Qiw2Q0FBNkM7UUFDN0MsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsc0RBQXNEO1FBQ3RELGVBQWUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDO0tBQ2xDLEdBQUcsMkJBQTJCLENBVTlCO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_function_interaction.d.ts","sourceRoot":"","sources":["../../src/contract/contract_function_interaction.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"contract_function_interaction.d.ts","sourceRoot":"","sources":["../../src/contract/contract_function_interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAkC,MAAM,mBAAmB,CAAC;AACrH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAA0B,MAAM,kBAAkB,CAAC;AACjH,OAAO,EAAE,gBAAgB,EAA0B,MAAM,kBAAkB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EAGtB,MAAM,0BAA0B,CAAC;AAElC;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,uBAAuB;IAGpE,SAAS,CAAC,eAAe,EAAE,YAAY;IACvC,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE;IAGrB,OAAO,CAAC,eAAe;IAPzB,YACE,MAAM,EAAE,MAAM,EACJ,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,GAAG,EAAE,EACrB,aAAa,GAAE,WAAW,EAAO,EACjC,QAAQ,GAAE,OAAO,EAAO,EAChB,eAAe,GAAE,YAAY,EAAO,EAM7C;IAED;;;;OAIG;IACU,eAAe;;;;;;;gCASH,4DAA4D;;OAGpF;IAED;;;;OAIG;IACmB,OAAO,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgBhG;IAGD;;;;;;;;;;OAUG;IACU,QAAQ,CAAC,CAAC,SAAS,0BAA0B,EACxD,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAE7D,QAAQ,CAAC,CAAC,SAAS,0BAA0B,EACxD,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IA2DnD;;;;;OAKG;IACU,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC,CAOjF;IAED;;;;;;OAMG;IACI,IAAI,CAAC,EACV,aAAkB,EAClB,QAAa,EACb,eAAoB,EACrB,EAAE;QACD,kDAAkD;QAClD,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;QAC9B,6CAA6C;QAC7C,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QACrB,sDAAsD;QACtD,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;KAClC,GAAG,2BAA2B,CAU9B;CACF"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { FunctionSelector, FunctionType, decodeFromAbi, encodeArguments } from '@aztec/stdlib/abi';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { collectOffchainEffects } from '@aztec/stdlib/tx';
|
|
3
|
+
import { ExecutionPayload, mergeExecutionPayloads } from '@aztec/stdlib/tx';
|
|
4
4
|
import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
5
|
+
import { getGasLimits } from './get_gas_limits.js';
|
|
6
|
+
import { toProfileOptions, toSimulateOptions } from './interaction_options.js';
|
|
5
7
|
/**
|
|
6
8
|
* This is the class that is returned when calling e.g. `contract.methods.myMethod(arg0, arg1)`.
|
|
7
9
|
* It contains available interactions one can call on a method, including view.
|
|
@@ -9,48 +11,18 @@ import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
|
9
11
|
contractAddress;
|
|
10
12
|
functionDao;
|
|
11
13
|
args;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
extraHashedArgs;
|
|
15
|
+
constructor(wallet, contractAddress, functionDao, args, authWitnesses = [], capsules = [], extraHashedArgs = []){
|
|
16
|
+
super(wallet, authWitnesses, capsules), this.contractAddress = contractAddress, this.functionDao = functionDao, this.args = args, this.extraHashedArgs = extraHashedArgs;
|
|
14
17
|
if (args.some((arg)=>arg === undefined || arg === null)) {
|
|
15
|
-
throw new Error(
|
|
18
|
+
throw new Error(`All function interaction arguments must be defined and not null. Received: ${args}`);
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
|
-
// docs:start:create
|
|
19
21
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* @
|
|
23
|
-
|
|
24
|
-
*/ async create(opts = {}) {
|
|
25
|
-
// docs:end:create
|
|
26
|
-
if (this.functionDao.functionType === FunctionType.UNCONSTRAINED) {
|
|
27
|
-
throw new Error("Can't call `create` on an unconstrained function.");
|
|
28
|
-
}
|
|
29
|
-
const calls = [
|
|
30
|
-
await this.request()
|
|
31
|
-
];
|
|
32
|
-
const capsules = this.getCapsules();
|
|
33
|
-
const fee = await this.getFeeOptions({
|
|
34
|
-
calls,
|
|
35
|
-
capsules,
|
|
36
|
-
...opts
|
|
37
|
-
});
|
|
38
|
-
const { nonce, cancellable } = opts;
|
|
39
|
-
return await this.wallet.createTxExecutionRequest({
|
|
40
|
-
calls,
|
|
41
|
-
fee,
|
|
42
|
-
nonce,
|
|
43
|
-
cancellable,
|
|
44
|
-
capsules
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
// docs:start:request
|
|
48
|
-
/**
|
|
49
|
-
* Returns an execution request that represents this operation. Useful as a building
|
|
50
|
-
* block for constructing batch requests.
|
|
51
|
-
* @returns An execution request wrapped in promise.
|
|
52
|
-
*/ async request() {
|
|
53
|
-
// docs:end:request
|
|
22
|
+
* Returns the encoded function call wrapped by this interaction
|
|
23
|
+
* Useful when generating authwits
|
|
24
|
+
* @returns An encoded function call
|
|
25
|
+
*/ async getFunctionCall() {
|
|
54
26
|
const args = encodeArguments(this.functionDao, this.args);
|
|
55
27
|
return {
|
|
56
28
|
name: this.functionDao.name,
|
|
@@ -59,30 +31,46 @@ import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
|
59
31
|
type: this.functionDao.functionType,
|
|
60
32
|
to: this.contractAddress,
|
|
61
33
|
isStatic: this.functionDao.isStatic,
|
|
34
|
+
hideMsgSender: false,
|
|
62
35
|
returnTypes: this.functionDao.returnTypes
|
|
63
36
|
};
|
|
64
37
|
}
|
|
65
|
-
// docs:start:simulate
|
|
66
38
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
39
|
+
* Returns the execution payload that allows this operation to happen on chain.
|
|
40
|
+
* @param options - Configuration options.
|
|
41
|
+
* @returns The execution payload for this operation
|
|
42
|
+
*/ async request(options = {}) {
|
|
43
|
+
const calls = [
|
|
44
|
+
await this.getFunctionCall()
|
|
45
|
+
];
|
|
46
|
+
const { authWitnesses, capsules } = options;
|
|
47
|
+
const feeExecutionPayload = options.fee?.paymentMethod ? await options.fee.paymentMethod.getExecutionPayload() : undefined;
|
|
48
|
+
const functionExecutionPayload = new ExecutionPayload(calls, this.authWitnesses.concat(authWitnesses ?? []), this.capsules.concat(capsules ?? []), this.extraHashedArgs);
|
|
49
|
+
const finalExecutionPayload = feeExecutionPayload ? mergeExecutionPayloads([
|
|
50
|
+
feeExecutionPayload,
|
|
51
|
+
functionExecutionPayload
|
|
52
|
+
]) : functionExecutionPayload;
|
|
53
|
+
return finalExecutionPayload;
|
|
54
|
+
}
|
|
55
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
56
|
+
async simulate(options) {
|
|
75
57
|
// docs:end:simulate
|
|
76
|
-
if (this.functionDao.functionType == FunctionType.
|
|
77
|
-
|
|
58
|
+
if (this.functionDao.functionType == FunctionType.UTILITY) {
|
|
59
|
+
const call = await this.getFunctionCall();
|
|
60
|
+
const utilityResult = await this.wallet.simulateUtility(call, options.authWitnesses ?? []);
|
|
61
|
+
// Decode the raw field elements to the actual return type
|
|
62
|
+
const returnValue = utilityResult.result ? decodeFromAbi(this.functionDao.returnTypes, utilityResult.result) : [];
|
|
63
|
+
if (options.includeMetadata) {
|
|
64
|
+
return {
|
|
65
|
+
stats: utilityResult.stats,
|
|
66
|
+
result: returnValue
|
|
67
|
+
};
|
|
68
|
+
} else {
|
|
69
|
+
return returnValue;
|
|
70
|
+
}
|
|
78
71
|
}
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
};
|
|
82
|
-
const txRequest = await this.create({
|
|
83
|
-
fee
|
|
84
|
-
});
|
|
85
|
-
const simulatedTx = await this.wallet.simulateTx(txRequest, true, options.from, options.skipTxValidation, options.skipFeeEnforcement ?? true);
|
|
72
|
+
const executionPayload = await this.request(options);
|
|
73
|
+
const simulatedTx = await this.wallet.simulateTx(executionPayload, toSimulateOptions(options));
|
|
86
74
|
let rawReturnValues;
|
|
87
75
|
if (this.functionDao.functionType == FunctionType.PRIVATE) {
|
|
88
76
|
if (simulatedTx.getPrivateReturnValues().nested.length > 0) {
|
|
@@ -95,28 +83,44 @@ import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
|
95
83
|
}
|
|
96
84
|
} else {
|
|
97
85
|
// For public functions we retrieve the first values directly from the public output.
|
|
98
|
-
rawReturnValues = simulatedTx.getPublicReturnValues()?.[0]
|
|
86
|
+
rawReturnValues = simulatedTx.getPublicReturnValues()?.[0]?.values;
|
|
87
|
+
}
|
|
88
|
+
const returnValue = rawReturnValues ? decodeFromAbi(this.functionDao.returnTypes, rawReturnValues) : [];
|
|
89
|
+
if (options.includeMetadata || options.fee?.estimateGas) {
|
|
90
|
+
const { gasLimits, teardownGasLimits } = getGasLimits(simulatedTx, options.fee?.estimatedGasPadding);
|
|
91
|
+
this.log.verbose(`Estimated gas limits for tx: DA=${gasLimits.daGas} L2=${gasLimits.l2Gas} teardownDA=${teardownGasLimits.daGas} teardownL2=${teardownGasLimits.l2Gas}`);
|
|
92
|
+
return {
|
|
93
|
+
stats: simulatedTx.stats,
|
|
94
|
+
offchainEffects: collectOffchainEffects(simulatedTx.privateExecutionResult),
|
|
95
|
+
result: returnValue,
|
|
96
|
+
estimatedGas: {
|
|
97
|
+
gasLimits,
|
|
98
|
+
teardownGasLimits
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
} else {
|
|
102
|
+
return returnValue;
|
|
99
103
|
}
|
|
100
|
-
return rawReturnValues ? decodeFromAbi(this.functionDao.returnTypes, rawReturnValues) : [];
|
|
101
104
|
}
|
|
102
105
|
/**
|
|
103
106
|
* Simulate a transaction and profile the gate count for each function in the transaction.
|
|
104
|
-
* @param options - Same options as `simulate
|
|
107
|
+
* @param options - Same options as `simulate`, plus profiling method
|
|
105
108
|
*
|
|
106
109
|
* @returns An object containing the function return value and profile result.
|
|
107
|
-
*/ async
|
|
108
|
-
if (this.functionDao.functionType == FunctionType.
|
|
109
|
-
throw new Error("Can't profile
|
|
110
|
+
*/ async profile(options) {
|
|
111
|
+
if (this.functionDao.functionType == FunctionType.UTILITY) {
|
|
112
|
+
throw new Error("Can't profile a utility function.");
|
|
110
113
|
}
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
114
|
+
const executionPayload = await this.request(options);
|
|
115
|
+
return await this.wallet.profileTx(executionPayload, toProfileOptions(options));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Augments this ContractFunctionInteraction with additional metadata, such as authWitnesses, capsules, and extraHashedArgs.
|
|
119
|
+
* This is useful when creating a "batteries included" interaction, such as registering a contract class with its associated
|
|
120
|
+
* capsule instead of having the user provide them externally.
|
|
121
|
+
* @param options - An object containing the metadata to add to the interaction
|
|
122
|
+
* @returns A new ContractFunctionInteraction with the added metadata, but calling the same original function in the same manner
|
|
123
|
+
*/ with({ authWitnesses = [], capsules = [], extraHashedArgs = [] }) {
|
|
124
|
+
return new ContractFunctionInteraction(this.wallet, this.contractAddress, this.functionDao, this.args, this.authWitnesses.concat(authWitnesses), this.capsules.concat(capsules), this.extraHashedArgs.concat(extraHashedArgs));
|
|
121
125
|
}
|
|
122
126
|
}
|