chia-blockchain 2.5.0rc2__py3-none-any.whl → 2.5.1rc2__py3-none-any.whl
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.
- chia/_tests/README.md +1 -1
- chia/_tests/blockchain/blockchain_test_utils.py +24 -26
- chia/_tests/blockchain/test_augmented_chain.py +6 -8
- chia/_tests/blockchain/test_blockchain.py +409 -307
- chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
- chia/_tests/blockchain/test_build_chains.py +11 -13
- chia/_tests/blockchain/test_get_block_generator.py +8 -8
- chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
- chia/_tests/build-init-files.py +3 -4
- chia/_tests/build-job-matrix.py +9 -9
- chia/_tests/check_sql_statements.py +2 -3
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +7 -5
- chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
- chia/_tests/clvm/test_condition_codes.py +2 -2
- chia/_tests/clvm/test_curry_and_treehash.py +2 -4
- chia/_tests/clvm/test_message_conditions.py +184 -0
- chia/_tests/clvm/test_puzzle_compression.py +1 -2
- chia/_tests/clvm/test_puzzle_drivers.py +3 -3
- chia/_tests/clvm/test_puzzles.py +13 -18
- chia/_tests/clvm/test_singletons.py +17 -17
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +42 -45
- chia/_tests/cmds/conftest.py +2 -2
- chia/_tests/cmds/test_click_types.py +21 -16
- chia/_tests/cmds/test_cmd_framework.py +255 -35
- chia/_tests/cmds/test_cmds_util.py +2 -2
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_dev_gh.py +131 -0
- chia/_tests/cmds/test_farm_cmd.py +1 -2
- chia/_tests/cmds/test_show.py +6 -6
- chia/_tests/cmds/test_tx_config_args.py +2 -1
- chia/_tests/cmds/wallet/test_dao.py +23 -23
- chia/_tests/cmds/wallet/test_did.py +29 -29
- chia/_tests/cmds/wallet/test_nft.py +24 -23
- chia/_tests/cmds/wallet/test_notifications.py +8 -8
- chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
- chia/_tests/cmds/wallet/test_vcs.py +97 -73
- chia/_tests/cmds/wallet/test_wallet.py +74 -75
- chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
- chia/_tests/conftest.py +153 -38
- chia/_tests/connection_utils.py +7 -6
- chia/_tests/core/cmds/test_beta.py +3 -3
- chia/_tests/core/cmds/test_keys.py +6 -6
- chia/_tests/core/cmds/test_wallet.py +3 -3
- chia/_tests/core/consensus/test_block_creation.py +3 -5
- chia/_tests/core/custom_types/test_coin.py +1 -3
- chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
- chia/_tests/core/daemon/test_daemon.py +58 -58
- chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
- chia/_tests/core/data_layer/conftest.py +4 -3
- chia/_tests/core/data_layer/test_data_cli.py +1 -2
- chia/_tests/core/data_layer/test_data_layer.py +5 -5
- chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
- chia/_tests/core/data_layer/test_data_rpc.py +75 -93
- chia/_tests/core/data_layer/test_data_store.py +38 -37
- chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
- chia/_tests/core/data_layer/util.py +11 -10
- chia/_tests/core/farmer/test_farmer_api.py +6 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
- chia/_tests/core/full_node/ram_db.py +2 -2
- chia/_tests/core/full_node/stores/test_block_store.py +113 -11
- chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
- chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
- chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
- chia/_tests/core/full_node/test_address_manager.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +1 -1
- chia/_tests/core/full_node/test_conditions.py +10 -12
- chia/_tests/core/full_node/test_full_node.py +2077 -1822
- chia/_tests/core/full_node/test_generator_tools.py +4 -4
- chia/_tests/core/full_node/test_hint_management.py +2 -2
- chia/_tests/core/full_node/test_performance.py +2 -5
- chia/_tests/core/full_node/test_subscriptions.py +4 -4
- chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
- chia/_tests/core/make_block_generator.py +5 -7
- chia/_tests/core/mempool/test_mempool.py +205 -208
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
- chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
- chia/_tests/core/mempool/test_mempool_manager.py +109 -80
- chia/_tests/core/mempool/test_mempool_performance.py +3 -4
- chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
- chia/_tests/core/server/flood.py +6 -4
- chia/_tests/core/server/serve.py +10 -7
- chia/_tests/core/server/test_api_protocol.py +21 -0
- chia/_tests/core/server/test_capabilities.py +3 -5
- chia/_tests/core/server/test_dos.py +15 -16
- chia/_tests/core/server/test_loop.py +14 -10
- chia/_tests/core/server/test_node_discovery.py +1 -2
- chia/_tests/core/server/test_rate_limits.py +156 -44
- chia/_tests/core/server/test_server.py +8 -7
- chia/_tests/core/services/test_services.py +59 -37
- chia/_tests/core/ssl/test_ssl.py +5 -3
- chia/_tests/core/test_cost_calculation.py +5 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_db_conversion.py +5 -4
- chia/_tests/core/test_db_validation.py +6 -5
- chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
- chia/_tests/core/test_filter.py +3 -5
- chia/_tests/core/test_full_node_rpc.py +64 -90
- chia/_tests/core/test_merkle_set.py +10 -10
- chia/_tests/core/test_program.py +2 -4
- chia/_tests/core/test_rpc_util.py +1 -2
- chia/_tests/core/test_seeder.py +124 -12
- chia/_tests/core/util/test_block_cache.py +5 -5
- chia/_tests/core/util/test_cached_bls.py +3 -3
- chia/_tests/core/util/test_config.py +13 -13
- chia/_tests/core/util/test_files.py +2 -2
- chia/_tests/core/util/test_jsonify.py +9 -9
- chia/_tests/core/util/test_keychain.py +13 -5
- chia/_tests/core/util/test_keyring_wrapper.py +6 -5
- chia/_tests/core/util/test_log_exceptions.py +3 -3
- chia/_tests/core/util/test_streamable.py +38 -38
- chia/_tests/db/test_db_wrapper.py +13 -12
- chia/_tests/environments/common.py +2 -2
- chia/_tests/environments/full_node.py +2 -2
- chia/_tests/environments/wallet.py +109 -48
- chia/_tests/farmer_harvester/test_farmer.py +35 -35
- chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
- chia/_tests/generator/test_compression.py +13 -30
- chia/_tests/generator/test_generator_types.py +3 -3
- chia/_tests/generator/test_rom.py +7 -9
- chia/_tests/plot_sync/test_delta.py +2 -3
- chia/_tests/plot_sync/test_plot_sync.py +25 -24
- chia/_tests/plot_sync/test_receiver.py +9 -9
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +27 -26
- chia/_tests/plot_sync/util.py +2 -1
- chia/_tests/plotting/test_plot_manager.py +54 -11
- chia/_tests/plotting/util.py +2 -3
- chia/_tests/pools/test_pool_cli_parsing.py +128 -0
- chia/_tests/pools/test_pool_cmdline.py +993 -15
- chia/_tests/pools/test_pool_config.py +3 -5
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
- chia/_tests/pools/test_pool_rpc.py +203 -90
- chia/_tests/pools/test_pool_wallet.py +12 -8
- chia/_tests/pools/test_wallet_pool_store.py +3 -3
- chia/_tests/process_junit.py +16 -17
- chia/_tests/rpc/test_rpc_client.py +59 -2
- chia/_tests/rpc/test_rpc_server.py +183 -0
- chia/_tests/simulation/test_simulation.py +5 -5
- chia/_tests/simulation/test_simulator.py +8 -10
- chia/_tests/simulation/test_start_simulator.py +5 -4
- chia/_tests/timelord/test_new_peak.py +19 -19
- chia/_tests/tools/test_run_block.py +1 -2
- chia/_tests/tools/test_virtual_project.py +591 -0
- chia/_tests/util/benchmark_cost.py +9 -9
- chia/_tests/util/benchmarks.py +1 -2
- chia/_tests/util/blockchain.py +12 -11
- chia/_tests/util/blockchain_mock.py +15 -15
- chia/_tests/util/build_network_protocol_files.py +12 -12
- chia/_tests/util/db_connection.py +3 -2
- chia/_tests/util/full_sync.py +14 -6
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/generator_tools_testing.py +5 -7
- chia/_tests/util/get_name_puzzle_conditions.py +52 -0
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +59 -106
- chia/_tests/util/network_protocol_data.py +7 -9
- chia/_tests/util/protocol_messages_json.py +112 -111
- chia/_tests/util/rpc.py +3 -0
- chia/_tests/util/run_block.py +16 -16
- chia/_tests/util/setup_nodes.py +25 -23
- chia/{clvm → _tests/util}/spend_sim.py +59 -55
- chia/_tests/util/split_managers.py +12 -9
- chia/_tests/util/temp_file.py +1 -1
- chia/_tests/util/test_action_scope.py +2 -1
- chia/_tests/util/test_async_pool.py +8 -8
- chia/_tests/util/test_build_job_matrix.py +2 -3
- chia/_tests/util/test_condition_tools.py +4 -6
- chia/_tests/util/test_config.py +5 -5
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +19 -11
- chia/_tests/util/test_limited_semaphore.py +4 -3
- chia/_tests/util/test_logging_filter.py +2 -3
- chia/_tests/util/test_misc.py +29 -28
- chia/_tests/util/test_network.py +32 -31
- chia/_tests/util/test_network_protocol_files.py +2 -3
- chia/_tests/util/test_network_protocol_json.py +1 -0
- chia/_tests/util/test_network_protocol_test.py +18 -19
- chia/_tests/util/test_paginator.py +3 -4
- chia/_tests/util/test_pprint.py +1 -1
- chia/_tests/util/test_priority_mutex.py +18 -17
- chia/_tests/util/test_recursive_replace.py +2 -2
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/test_timing.py +1 -1
- chia/_tests/util/test_trusted_peer.py +2 -2
- chia/_tests/util/time_out_assert.py +43 -6
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
- chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
- chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
- chia/_tests/wallet/conftest.py +135 -74
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
- chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
- chia/_tests/wallet/did_wallet/test_did.py +1277 -474
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
- chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
- chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
- chia/_tests/wallet/test_address_type.py +20 -20
- chia/_tests/wallet/test_clvm_streamable.py +5 -5
- chia/_tests/wallet/test_coin_management.py +354 -0
- chia/_tests/wallet/test_coin_selection.py +34 -35
- chia/_tests/wallet/test_conditions.py +28 -16
- chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
- chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
- chia/_tests/wallet/test_nft_store.py +1 -2
- chia/_tests/wallet/test_notifications.py +2 -2
- chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
- chia/_tests/wallet/test_puzzle_store.py +2 -3
- chia/_tests/wallet/test_sign_coin_spends.py +3 -3
- chia/_tests/wallet/test_signer_protocol.py +33 -34
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
- chia/_tests/wallet/test_taproot.py +1 -1
- chia/_tests/wallet/test_transaction_store.py +23 -19
- chia/_tests/wallet/test_util.py +36 -32
- chia/_tests/wallet/test_wallet.py +37 -37
- chia/_tests/wallet/test_wallet_action_scope.py +8 -8
- chia/_tests/wallet/test_wallet_blockchain.py +4 -6
- chia/_tests/wallet/test_wallet_coin_store.py +34 -34
- chia/_tests/wallet/test_wallet_node.py +69 -72
- chia/_tests/wallet/test_wallet_retry.py +3 -3
- chia/_tests/wallet/test_wallet_state_manager.py +12 -5
- chia/_tests/wallet/test_wallet_trade_store.py +2 -2
- chia/_tests/wallet/test_wallet_utils.py +5 -4
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
- chia/_tests/wallet/wallet_block_tools.py +27 -27
- chia/_tests/weight_proof/test_weight_proof.py +30 -30
- chia/apis.py +19 -0
- chia/cmds/beta.py +8 -7
- chia/cmds/beta_funcs.py +15 -11
- chia/cmds/check_wallet_db.py +29 -27
- chia/cmds/chia.py +17 -9
- chia/cmds/cmd_classes.py +87 -79
- chia/cmds/cmd_helpers.py +242 -0
- chia/cmds/cmds_util.py +56 -66
- chia/cmds/coin_funcs.py +168 -153
- chia/cmds/coins.py +156 -194
- chia/cmds/configure.py +4 -3
- chia/cmds/dao.py +89 -33
- chia/cmds/dao_funcs.py +55 -33
- chia/cmds/data.py +7 -6
- chia/cmds/data_funcs.py +26 -21
- chia/cmds/db.py +4 -3
- chia/cmds/db_backup_func.py +2 -2
- chia/cmds/db_upgrade_func.py +3 -3
- chia/cmds/db_validate_func.py +2 -2
- chia/cmds/dev.py +2 -0
- chia/cmds/farm.py +18 -5
- chia/cmds/farm_funcs.py +17 -24
- chia/cmds/gh.py +275 -0
- chia/cmds/init.py +4 -11
- chia/cmds/init_funcs.py +9 -9
- chia/cmds/installers.py +5 -3
- chia/cmds/keys.py +56 -39
- chia/cmds/keys_funcs.py +30 -31
- chia/cmds/netspace.py +6 -3
- chia/cmds/netspace_funcs.py +3 -2
- chia/cmds/param_types.py +16 -6
- chia/cmds/passphrase.py +8 -7
- chia/cmds/passphrase_funcs.py +7 -61
- chia/cmds/peer.py +2 -1
- chia/cmds/peer_funcs.py +5 -5
- chia/cmds/plotnft.py +207 -153
- chia/cmds/plotnft_funcs.py +205 -174
- chia/cmds/plots.py +14 -6
- chia/cmds/plotters.py +2 -1
- chia/cmds/rpc.py +48 -28
- chia/cmds/show.py +2 -1
- chia/cmds/show_funcs.py +7 -6
- chia/cmds/signer.py +50 -58
- chia/cmds/sim.py +22 -14
- chia/cmds/sim_funcs.py +11 -11
- chia/cmds/start.py +3 -3
- chia/cmds/start_funcs.py +9 -12
- chia/cmds/stop.py +4 -3
- chia/cmds/units.py +1 -3
- chia/cmds/wallet.py +252 -96
- chia/cmds/wallet_funcs.py +217 -143
- chia/consensus/block_body_validation.py +133 -86
- chia/consensus/block_creation.py +42 -21
- chia/consensus/block_header_validation.py +32 -37
- chia/consensus/block_record.py +1 -2
- chia/consensus/blockchain.py +167 -180
- chia/consensus/blockchain_interface.py +10 -10
- chia/consensus/constants.py +2 -2
- chia/consensus/default_constants.py +3 -4
- chia/consensus/difficulty_adjustment.py +5 -5
- chia/consensus/find_fork_point.py +5 -5
- chia/consensus/full_block_to_block_record.py +4 -4
- chia/consensus/get_block_challenge.py +2 -2
- chia/consensus/get_block_generator.py +4 -3
- chia/consensus/multiprocess_validation.py +207 -304
- chia/consensus/vdf_info_computation.py +3 -3
- chia/daemon/client.py +46 -27
- chia/daemon/keychain_proxy.py +10 -9
- chia/daemon/keychain_server.py +18 -18
- chia/daemon/server.py +103 -113
- chia/daemon/windows_signal.py +2 -2
- chia/data_layer/data_layer.py +64 -76
- chia/data_layer/data_layer_api.py +8 -0
- chia/data_layer/data_layer_errors.py +3 -3
- chia/data_layer/data_layer_server.py +2 -2
- chia/data_layer/data_layer_util.py +71 -71
- chia/data_layer/data_layer_wallet.py +63 -67
- chia/data_layer/data_store.py +72 -72
- chia/data_layer/dl_wallet_store.py +10 -10
- chia/data_layer/download_data.py +5 -5
- chia/data_layer/s3_plugin_service.py +9 -9
- chia/data_layer/util/benchmark.py +0 -1
- chia/data_layer/util/plugin.py +2 -3
- chia/farmer/farmer.py +46 -43
- chia/farmer/farmer_api.py +27 -21
- chia/full_node/block_height_map.py +6 -6
- chia/full_node/block_store.py +41 -35
- chia/full_node/coin_store.py +42 -41
- chia/full_node/fee_estimate.py +2 -2
- chia/full_node/fee_estimation.py +1 -2
- chia/full_node/fee_history.py +5 -6
- chia/full_node/fee_tracker.py +24 -24
- chia/full_node/full_node.py +574 -300
- chia/full_node/full_node_api.py +181 -130
- chia/full_node/full_node_store.py +43 -43
- chia/full_node/hint_management.py +4 -4
- chia/full_node/hint_store.py +9 -10
- chia/full_node/mempool.py +25 -19
- chia/full_node/mempool_check_conditions.py +11 -42
- chia/full_node/mempool_manager.py +48 -53
- chia/full_node/pending_tx_cache.py +9 -9
- chia/full_node/subscriptions.py +23 -24
- chia/full_node/sync_store.py +8 -7
- chia/full_node/tx_processing_queue.py +3 -3
- chia/full_node/util/__init__.py +0 -0
- chia/full_node/weight_proof.py +79 -78
- chia/harvester/harvester.py +9 -8
- chia/harvester/harvester_api.py +19 -13
- chia/introducer/introducer.py +7 -5
- chia/introducer/introducer_api.py +9 -3
- chia/legacy/keyring.py +6 -5
- chia/plot_sync/delta.py +8 -8
- chia/plot_sync/receiver.py +12 -11
- chia/plot_sync/sender.py +15 -12
- chia/plotters/bladebit.py +12 -12
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +8 -8
- chia/plotters/plotters.py +6 -6
- chia/plotters/plotters_util.py +6 -4
- chia/plotting/cache.py +8 -7
- chia/plotting/check_plots.py +8 -8
- chia/plotting/create_plots.py +6 -6
- chia/plotting/manager.py +22 -22
- chia/plotting/util.py +31 -19
- chia/pools/pool_config.py +7 -7
- chia/pools/pool_puzzles.py +16 -16
- chia/pools/pool_wallet.py +64 -57
- chia/pools/pool_wallet_info.py +3 -3
- chia/protocols/full_node_protocol.py +3 -3
- chia/protocols/harvester_protocol.py +12 -12
- chia/protocols/introducer_protocol.py +1 -2
- chia/protocols/protocol_message_types.py +4 -4
- chia/protocols/protocol_state_machine.py +2 -2
- chia/protocols/protocol_timing.py +1 -0
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +2 -2
- chia/protocols/wallet_protocol.py +33 -33
- chia/rpc/crawler_rpc_api.py +12 -7
- chia/rpc/data_layer_rpc_api.py +49 -44
- chia/rpc/data_layer_rpc_client.py +41 -41
- chia/rpc/data_layer_rpc_util.py +7 -11
- chia/rpc/farmer_rpc_api.py +32 -27
- chia/rpc/farmer_rpc_client.py +14 -14
- chia/rpc/full_node_rpc_api.py +53 -48
- chia/rpc/full_node_rpc_client.py +30 -30
- chia/rpc/harvester_rpc_api.py +16 -11
- chia/rpc/harvester_rpc_client.py +6 -6
- chia/rpc/rpc_client.py +34 -14
- chia/rpc/rpc_server.py +117 -43
- chia/rpc/timelord_rpc_api.py +9 -4
- chia/rpc/util.py +11 -211
- chia/rpc/wallet_request_types.py +276 -60
- chia/rpc/wallet_rpc_api.py +563 -399
- chia/rpc/wallet_rpc_client.py +220 -250
- chia/seeder/crawl_store.py +6 -8
- chia/seeder/crawler.py +23 -36
- chia/seeder/crawler_api.py +28 -22
- chia/seeder/dns_server.py +99 -50
- chia/seeder/start_crawler.py +13 -9
- chia/server/address_manager.py +19 -19
- chia/server/address_manager_store.py +17 -17
- chia/server/api_protocol.py +106 -1
- chia/server/capabilities.py +3 -3
- chia/server/chia_policy.py +17 -16
- chia/server/introducer_peers.py +3 -3
- chia/server/node_discovery.py +34 -38
- chia/server/rate_limit_numbers.py +26 -16
- chia/server/rate_limits.py +67 -27
- chia/server/server.py +52 -31
- chia/server/signal_handlers.py +6 -3
- chia/server/ssl_context.py +5 -5
- chia/server/start_data_layer.py +37 -23
- chia/server/start_farmer.py +28 -16
- chia/server/start_full_node.py +29 -23
- chia/server/start_harvester.py +28 -15
- chia/server/start_introducer.py +27 -15
- chia/server/start_service.py +17 -29
- chia/server/start_timelord.py +25 -18
- chia/server/start_wallet.py +22 -18
- chia/server/upnp.py +4 -3
- chia/server/ws_connection.py +68 -54
- chia/simulator/add_blocks_in_batches.py +54 -0
- chia/simulator/block_tools.py +65 -64
- chia/simulator/full_node_simulator.py +66 -74
- chia/simulator/setup_services.py +10 -9
- chia/simulator/simulator_full_node_rpc_api.py +12 -14
- chia/simulator/simulator_full_node_rpc_client.py +3 -5
- chia/simulator/simulator_test_tools.py +8 -7
- chia/simulator/socket.py +1 -4
- chia/simulator/ssl_certs.py +5 -5
- chia/simulator/ssl_certs_1.py +2 -4
- chia/simulator/ssl_certs_10.py +2 -4
- chia/simulator/ssl_certs_2.py +2 -4
- chia/simulator/ssl_certs_3.py +2 -4
- chia/simulator/ssl_certs_4.py +2 -4
- chia/simulator/ssl_certs_5.py +2 -4
- chia/simulator/ssl_certs_6.py +2 -4
- chia/simulator/ssl_certs_7.py +2 -4
- chia/simulator/ssl_certs_8.py +2 -4
- chia/simulator/ssl_certs_9.py +2 -4
- chia/simulator/start_simulator.py +14 -6
- chia/simulator/wallet_tools.py +21 -20
- chia/ssl/create_ssl.py +11 -11
- chia/timelord/iters_from_block.py +2 -2
- chia/timelord/timelord.py +57 -33
- chia/timelord/timelord_api.py +12 -6
- chia/timelord/timelord_launcher.py +10 -8
- chia/timelord/timelord_state.py +5 -5
- chia/types/block_protocol.py +2 -2
- chia/types/blockchain_format/coin.py +3 -3
- chia/types/blockchain_format/program.py +17 -18
- chia/types/blockchain_format/tree_hash.py +9 -9
- chia/types/coin_spend.py +8 -8
- chia/types/condition_with_args.py +1 -2
- chia/types/eligible_coin_spends.py +16 -15
- chia/types/generator_types.py +1 -2
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +7 -7
- chia/types/mempool_submission_status.py +2 -2
- chia/types/peer_info.py +1 -1
- chia/types/spend_bundle.py +1 -2
- chia/types/transaction_queue_entry.py +2 -2
- chia/types/unfinished_header_block.py +2 -2
- chia/types/validation_state.py +14 -0
- chia/types/weight_proof.py +5 -6
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +6 -4
- chia/util/augmented_chain.py +13 -9
- chia/util/batches.py +5 -2
- chia/util/bech32m.py +14 -11
- chia/util/beta_metrics.py +5 -4
- chia/util/block_cache.py +5 -5
- chia/util/byte_types.py +2 -0
- chia/util/check_fork_next_block.py +3 -2
- chia/util/chia_logging.py +41 -21
- chia/util/collection.py +3 -3
- chia/util/condition_tools.py +18 -18
- chia/util/config.py +26 -25
- chia/util/cpu.py +2 -0
- chia/util/db_synchronous.py +2 -0
- chia/util/db_version.py +2 -0
- chia/util/db_wrapper.py +13 -10
- chia/util/default_root.py +17 -0
- chia/util/dump_keyring.py +6 -6
- chia/util/errors.py +5 -3
- chia/util/file_keyring.py +22 -33
- chia/util/files.py +2 -0
- chia/util/full_block_utils.py +31 -7
- chia/util/generator_tools.py +18 -8
- chia/util/hash.py +3 -1
- chia/util/initial-config.yaml +19 -0
- chia/util/inline_executor.py +2 -0
- chia/util/ip_address.py +39 -0
- chia/util/json_util.py +0 -4
- chia/util/keychain.py +27 -24
- chia/util/keyring_wrapper.py +65 -4
- chia/util/limited_semaphore.py +3 -1
- chia/util/lock.py +4 -2
- chia/util/log_exceptions.py +5 -2
- chia/util/logging.py +3 -1
- chia/util/lru_cache.py +2 -0
- chia/util/math.py +4 -4
- chia/util/network.py +15 -73
- chia/util/paginator.py +3 -1
- chia/util/path.py +2 -0
- chia/util/permissions.py +3 -2
- chia/util/prev_transaction_block.py +1 -3
- chia/util/priority_mutex.py +6 -3
- chia/util/profiler.py +7 -4
- chia/util/recursive_replace.py +2 -0
- chia/util/safe_cancel_task.py +2 -0
- chia/util/service_groups.py +2 -2
- chia/util/setproctitle.py +2 -0
- chia/util/significant_bits.py +2 -0
- chia/util/ssl_check.py +11 -11
- chia/util/streamable.py +44 -56
- chia/util/task_referencer.py +59 -0
- chia/util/task_timing.py +22 -18
- chia/util/timing.py +4 -1
- chia/util/vdf_prover.py +2 -3
- chia/util/virtual_project_analysis.py +540 -0
- chia/util/ws_message.py +6 -6
- chia/wallet/cat_wallet/cat_info.py +3 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
- chia/wallet/cat_wallet/cat_utils.py +5 -4
- chia/wallet/cat_wallet/cat_wallet.py +56 -70
- chia/wallet/cat_wallet/dao_cat_info.py +3 -3
- chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
- chia/wallet/cat_wallet/lineage_store.py +2 -2
- chia/wallet/coin_selection.py +15 -15
- chia/wallet/conditions.py +257 -71
- chia/wallet/dao_wallet/dao_info.py +4 -4
- chia/wallet/dao_wallet/dao_utils.py +43 -42
- chia/wallet/dao_wallet/dao_wallet.py +66 -68
- chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
- chia/wallet/derive_keys.py +11 -11
- chia/wallet/did_wallet/did_info.py +3 -3
- chia/wallet/did_wallet/did_wallet.py +56 -47
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/nft_info.py +4 -4
- chia/wallet/nft_wallet/nft_puzzles.py +16 -16
- chia/wallet/nft_wallet/nft_wallet.py +90 -89
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
- chia/wallet/nft_wallet/uncurry_nft.py +2 -2
- chia/wallet/notification_manager.py +5 -5
- chia/wallet/notification_store.py +6 -6
- chia/wallet/outer_puzzles.py +2 -2
- chia/wallet/payment.py +4 -5
- chia/wallet/puzzle_drivers.py +4 -4
- chia/wallet/puzzles/clawback/drivers.py +5 -5
- chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
- chia/wallet/puzzles/load_clvm.py +2 -3
- chia/wallet/puzzles/p2_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
- chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
- chia/wallet/puzzles/puzzle_utils.py +7 -7
- chia/wallet/puzzles/singleton_top_layer.py +6 -5
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
- chia/wallet/puzzles/tails.py +34 -30
- chia/wallet/signer_protocol.py +7 -8
- chia/wallet/singleton.py +4 -4
- chia/wallet/trade_manager.py +155 -141
- chia/wallet/trade_record.py +5 -5
- chia/wallet/trading/offer.py +100 -101
- chia/wallet/trading/trade_store.py +14 -14
- chia/wallet/transaction_record.py +31 -16
- chia/wallet/util/address_type.py +4 -4
- chia/wallet/util/blind_signer_tl.py +8 -12
- chia/wallet/util/clvm_streamable.py +15 -15
- chia/wallet/util/compute_hints.py +5 -5
- chia/wallet/util/compute_memos.py +4 -6
- chia/wallet/util/curry_and_treehash.py +3 -2
- chia/wallet/util/debug_spend_bundle.py +6 -8
- chia/wallet/util/merkle_tree.py +10 -10
- chia/wallet/util/merkle_utils.py +10 -10
- chia/wallet/util/new_peak_queue.py +3 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/{util → wallet/util}/pprint.py +2 -3
- chia/wallet/util/puzzle_compression.py +3 -4
- chia/wallet/util/puzzle_decorator.py +10 -10
- chia/wallet/util/query_filter.py +9 -10
- chia/wallet/util/tx_config.py +12 -12
- chia/wallet/util/wallet_sync_utils.py +24 -21
- chia/wallet/util/wallet_types.py +9 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
- chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
- chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
- chia/wallet/vc_wallet/vc_drivers.py +16 -16
- chia/wallet/vc_wallet/vc_store.py +9 -9
- chia/wallet/vc_wallet/vc_wallet.py +35 -35
- chia/wallet/wallet.py +54 -54
- chia/wallet/wallet_action_scope.py +14 -13
- chia/wallet/wallet_blockchain.py +10 -10
- chia/wallet/wallet_coin_record.py +2 -2
- chia/wallet/wallet_coin_store.py +10 -10
- chia/wallet/wallet_info.py +1 -2
- chia/wallet/wallet_interested_store.py +5 -5
- chia/wallet/wallet_nft_store.py +6 -6
- chia/wallet/wallet_node.py +72 -76
- chia/wallet/wallet_node_api.py +33 -27
- chia/wallet/wallet_pool_store.py +1 -2
- chia/wallet/wallet_protocol.py +15 -15
- chia/wallet/wallet_puzzle_store.py +35 -4
- chia/wallet/wallet_retry_store.py +2 -2
- chia/wallet/wallet_singleton_store.py +10 -9
- chia/wallet/wallet_spend_bundle.py +4 -20
- chia/wallet/wallet_state_manager.py +223 -224
- chia/wallet/wallet_transaction_store.py +44 -18
- chia/wallet/wallet_user_store.py +2 -2
- chia/wallet/wallet_weight_proof_handler.py +2 -2
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/LICENSE +1 -1
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/METADATA +67 -72
- chia_blockchain-2.5.1rc2.dist-info/RECORD +1042 -0
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/WHEEL +1 -1
- mozilla-ca/cacert.pem +32 -87
- chia/_tests/cmds/wallet/test_coins.py +0 -195
- chia/consensus/block_root_validation.py +0 -46
- chia/util/api_decorators.py +0 -89
- chia_blockchain-2.5.0rc2.dist-info/RECORD +0 -1028
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/entry_points.txt +0 -0
chia/rpc/wallet_rpc_client.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from collections.abc import Sequence
|
|
4
|
+
from typing import Any, Optional, Union, cast
|
|
4
5
|
|
|
5
6
|
from chia.data_layer.data_layer_util import DLProof, VerifyProofResponse
|
|
6
7
|
from chia.data_layer.data_layer_wallet import Mirror, SingletonRecord
|
|
@@ -45,6 +46,7 @@ from chia.rpc.wallet_request_types import (
|
|
|
45
46
|
GatherSigningInfoResponse,
|
|
46
47
|
GenerateMnemonicResponse,
|
|
47
48
|
GetCATListResponse,
|
|
49
|
+
GetHeightInfoResponse,
|
|
48
50
|
GetLoggedInFingerprintResponse,
|
|
49
51
|
GetNotifications,
|
|
50
52
|
GetNotificationsResponse,
|
|
@@ -52,6 +54,9 @@ from chia.rpc.wallet_request_types import (
|
|
|
52
54
|
GetPrivateKey,
|
|
53
55
|
GetPrivateKeyResponse,
|
|
54
56
|
GetPublicKeysResponse,
|
|
57
|
+
GetSyncStatusResponse,
|
|
58
|
+
GetTimestampForHeight,
|
|
59
|
+
GetTimestampForHeightResponse,
|
|
55
60
|
GetTransactionMemo,
|
|
56
61
|
GetTransactionMemoResponse,
|
|
57
62
|
LogIn,
|
|
@@ -69,15 +74,29 @@ from chia.rpc.wallet_request_types import (
|
|
|
69
74
|
NFTTransferBulk,
|
|
70
75
|
NFTTransferBulkResponse,
|
|
71
76
|
NFTTransferNFTResponse,
|
|
77
|
+
PushTransactions,
|
|
78
|
+
PushTransactionsResponse,
|
|
79
|
+
PushTX,
|
|
72
80
|
SendTransactionMultiResponse,
|
|
73
81
|
SendTransactionResponse,
|
|
82
|
+
SetWalletResyncOnStartup,
|
|
74
83
|
SplitCoins,
|
|
75
84
|
SplitCoinsResponse,
|
|
76
85
|
SubmitTransactions,
|
|
77
86
|
SubmitTransactionsResponse,
|
|
78
87
|
TakeOfferResponse,
|
|
88
|
+
VCAddProofs,
|
|
89
|
+
VCGet,
|
|
90
|
+
VCGetList,
|
|
91
|
+
VCGetListResponse,
|
|
92
|
+
VCGetProofsForRoot,
|
|
93
|
+
VCGetProofsForRootResponse,
|
|
94
|
+
VCGetResponse,
|
|
95
|
+
VCMint,
|
|
79
96
|
VCMintResponse,
|
|
97
|
+
VCRevoke,
|
|
80
98
|
VCRevokeResponse,
|
|
99
|
+
VCSpend,
|
|
81
100
|
VCSpendResponse,
|
|
82
101
|
VerifySignature,
|
|
83
102
|
VerifySignatureResponse,
|
|
@@ -86,7 +105,6 @@ from chia.types.blockchain_format.coin import Coin
|
|
|
86
105
|
from chia.types.blockchain_format.program import Program
|
|
87
106
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
88
107
|
from chia.types.coin_record import CoinRecord
|
|
89
|
-
from chia.util.bech32m import encode_puzzle_hash
|
|
90
108
|
from chia.util.ints import uint16, uint32, uint64
|
|
91
109
|
from chia.wallet.conditions import Condition, ConditionValidTimes, conditions_to_json_dicts
|
|
92
110
|
from chia.wallet.puzzles.clawback.metadata import AutoClaimSettings
|
|
@@ -98,12 +116,10 @@ from chia.wallet.util.clvm_streamable import json_deserialize_with_clvm_streamab
|
|
|
98
116
|
from chia.wallet.util.query_filter import TransactionTypeFilter
|
|
99
117
|
from chia.wallet.util.tx_config import CoinSelectionConfig, TXConfig
|
|
100
118
|
from chia.wallet.util.wallet_types import WalletType
|
|
101
|
-
from chia.wallet.vc_wallet.vc_store import VCRecord
|
|
102
119
|
from chia.wallet.wallet_coin_store import GetCoinRecords
|
|
103
|
-
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
104
120
|
|
|
105
121
|
|
|
106
|
-
def parse_result_transactions(result:
|
|
122
|
+
def parse_result_transactions(result: dict[str, Any]) -> dict[str, Any]:
|
|
107
123
|
result["transaction"] = TransactionRecord.from_json_dict(result["transaction"])
|
|
108
124
|
result["transactions"] = [TransactionRecord.from_json_dict_convenience(tx) for tx in result["transactions"]]
|
|
109
125
|
if result["fee_transaction"]:
|
|
@@ -124,9 +140,6 @@ class WalletRpcClient(RpcClient):
|
|
|
124
140
|
async def log_in(self, request: LogIn) -> LogInResponse:
|
|
125
141
|
return LogInResponse.from_json_dict(await self.fetch("log_in", request.to_json_dict()))
|
|
126
142
|
|
|
127
|
-
async def set_wallet_resync_on_startup(self, enable: bool = True) -> Dict[str, Any]:
|
|
128
|
-
return await self.fetch(path="set_wallet_resync_on_startup", request_json={"enable": enable})
|
|
129
|
-
|
|
130
143
|
async def get_logged_in_fingerprint(self) -> GetLoggedInFingerprintResponse:
|
|
131
144
|
return GetLoggedInFingerprintResponse.from_json_dict(await self.fetch("get_logged_in_fingerprint", {}))
|
|
132
145
|
|
|
@@ -152,39 +165,35 @@ class WalletRpcClient(RpcClient):
|
|
|
152
165
|
await self.fetch("delete_all_keys", {})
|
|
153
166
|
|
|
154
167
|
# Wallet Node APIs
|
|
155
|
-
async def
|
|
156
|
-
|
|
157
|
-
# TODO: casting due to lack of type checked deserialization
|
|
158
|
-
return cast(bool, response["syncing"])
|
|
168
|
+
async def set_wallet_resync_on_startup(self, request: SetWalletResyncOnStartup) -> None:
|
|
169
|
+
await self.fetch("set_wallet_resync_on_startup", request.to_json_dict())
|
|
159
170
|
|
|
160
|
-
async def
|
|
161
|
-
|
|
162
|
-
# TODO: casting due to lack of type checked deserialization
|
|
163
|
-
return cast(bool, response["synced"])
|
|
171
|
+
async def get_sync_status(self) -> GetSyncStatusResponse:
|
|
172
|
+
return GetSyncStatusResponse.from_json_dict(await self.fetch("get_sync_status", {}))
|
|
164
173
|
|
|
165
|
-
async def get_height_info(self) ->
|
|
166
|
-
|
|
167
|
-
# TODO: casting due to lack of type checked deserialization
|
|
168
|
-
return cast(uint32, response["height"])
|
|
174
|
+
async def get_height_info(self) -> GetHeightInfoResponse:
|
|
175
|
+
return GetHeightInfoResponse.from_json_dict(await self.fetch("get_height_info", {}))
|
|
169
176
|
|
|
170
|
-
async def push_tx(self,
|
|
171
|
-
|
|
177
|
+
async def push_tx(self, request: PushTX) -> None:
|
|
178
|
+
await self.fetch("push_tx", request.to_json_dict())
|
|
172
179
|
|
|
173
180
|
async def push_transactions(
|
|
174
|
-
self,
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
181
|
+
self,
|
|
182
|
+
request: PushTransactions,
|
|
183
|
+
tx_config: TXConfig,
|
|
184
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
185
|
+
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
186
|
+
) -> PushTransactionsResponse:
|
|
187
|
+
return PushTransactionsResponse.from_json_dict(
|
|
188
|
+
await self.fetch(
|
|
189
|
+
"push_transactions", request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info)
|
|
190
|
+
)
|
|
191
|
+
)
|
|
182
192
|
|
|
183
|
-
async def get_timestamp_for_height(self,
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
return cast(uint64, response["timestamp"])
|
|
193
|
+
async def get_timestamp_for_height(self, request: GetTimestampForHeight) -> GetTimestampForHeightResponse:
|
|
194
|
+
return GetTimestampForHeightResponse.from_json_dict(
|
|
195
|
+
await self.fetch("get_timestamp_for_height", request.to_json_dict())
|
|
196
|
+
)
|
|
188
197
|
|
|
189
198
|
async def set_auto_claim(self, request: AutoClaimSettings) -> AutoClaimSettings:
|
|
190
199
|
return AutoClaimSettings.from_json_dict(await self.fetch("set_auto_claim", {**request.to_json_dict()}))
|
|
@@ -193,27 +202,27 @@ class WalletRpcClient(RpcClient):
|
|
|
193
202
|
return AutoClaimSettings.from_json_dict(await self.fetch("get_auto_claim", {}))
|
|
194
203
|
|
|
195
204
|
# Wallet Management APIs
|
|
196
|
-
async def get_wallets(self, wallet_type: Optional[WalletType] = None) ->
|
|
205
|
+
async def get_wallets(self, wallet_type: Optional[WalletType] = None) -> list[dict[str, Any]]:
|
|
197
206
|
if wallet_type is None:
|
|
198
207
|
request = {}
|
|
199
208
|
else:
|
|
200
209
|
request = {"type": wallet_type}
|
|
201
210
|
response = await self.fetch("get_wallets", request)
|
|
202
211
|
# TODO: casting due to lack of type checked deserialization
|
|
203
|
-
return cast(
|
|
212
|
+
return cast(list[dict[str, Any]], response["wallets"])
|
|
204
213
|
|
|
205
214
|
# Wallet APIs
|
|
206
|
-
async def get_wallet_balance(self, wallet_id: int) ->
|
|
215
|
+
async def get_wallet_balance(self, wallet_id: int) -> dict[str, Any]:
|
|
207
216
|
request = {"wallet_id": wallet_id}
|
|
208
217
|
response = await self.fetch("get_wallet_balance", request)
|
|
209
218
|
# TODO: casting due to lack of type checked deserialization
|
|
210
|
-
return cast(
|
|
219
|
+
return cast(dict[str, Any], response["wallet_balance"])
|
|
211
220
|
|
|
212
|
-
async def get_wallet_balances(self, wallet_ids: Optional[
|
|
221
|
+
async def get_wallet_balances(self, wallet_ids: Optional[list[int]] = None) -> dict[str, dict[str, Any]]:
|
|
213
222
|
request = {"wallet_ids": wallet_ids}
|
|
214
223
|
response = await self.fetch("get_wallet_balances", request)
|
|
215
224
|
# TODO: casting due to lack of type checked deserialization
|
|
216
|
-
return cast(
|
|
225
|
+
return cast(dict[str, dict[str, Any]], response["wallet_balances"])
|
|
217
226
|
|
|
218
227
|
async def get_transaction(self, transaction_id: bytes32) -> TransactionRecord:
|
|
219
228
|
request = {"transaction_id": transaction_id.hex()}
|
|
@@ -230,8 +239,8 @@ class WalletRpcClient(RpcClient):
|
|
|
230
239
|
to_address: Optional[str] = None,
|
|
231
240
|
type_filter: Optional[TransactionTypeFilter] = None,
|
|
232
241
|
confirmed: Optional[bool] = None,
|
|
233
|
-
) ->
|
|
234
|
-
request:
|
|
242
|
+
) -> list[TransactionRecord]:
|
|
243
|
+
request: dict[str, Any] = {"wallet_id": wallet_id}
|
|
235
244
|
|
|
236
245
|
if start is not None:
|
|
237
246
|
request["start"] = start
|
|
@@ -256,7 +265,7 @@ class WalletRpcClient(RpcClient):
|
|
|
256
265
|
async def get_transaction_count(
|
|
257
266
|
self, wallet_id: int, confirmed: Optional[bool] = None, type_filter: Optional[TransactionTypeFilter] = None
|
|
258
267
|
) -> int:
|
|
259
|
-
request:
|
|
268
|
+
request: dict[str, Any] = {"wallet_id": wallet_id}
|
|
260
269
|
if type_filter is not None:
|
|
261
270
|
request["type_filter"] = type_filter.to_json_dict()
|
|
262
271
|
if confirmed is not None:
|
|
@@ -278,9 +287,9 @@ class WalletRpcClient(RpcClient):
|
|
|
278
287
|
address: str,
|
|
279
288
|
tx_config: TXConfig,
|
|
280
289
|
fee: uint64 = uint64(0),
|
|
281
|
-
memos: Optional[
|
|
282
|
-
puzzle_decorator_override: Optional[
|
|
283
|
-
extra_conditions:
|
|
290
|
+
memos: Optional[list[str]] = None,
|
|
291
|
+
puzzle_decorator_override: Optional[list[dict[str, Union[str, int, bool]]]] = None,
|
|
292
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
284
293
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
285
294
|
push: bool = True,
|
|
286
295
|
) -> SendTransactionResponse:
|
|
@@ -303,9 +312,9 @@ class WalletRpcClient(RpcClient):
|
|
|
303
312
|
async def send_transaction_multi(
|
|
304
313
|
self,
|
|
305
314
|
wallet_id: int,
|
|
306
|
-
additions:
|
|
315
|
+
additions: list[dict[str, Any]],
|
|
307
316
|
tx_config: TXConfig,
|
|
308
|
-
coins: Optional[
|
|
317
|
+
coins: Optional[list[Coin]] = None,
|
|
309
318
|
fee: uint64 = uint64(0),
|
|
310
319
|
push: bool = True,
|
|
311
320
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
@@ -332,13 +341,13 @@ class WalletRpcClient(RpcClient):
|
|
|
332
341
|
|
|
333
342
|
async def spend_clawback_coins(
|
|
334
343
|
self,
|
|
335
|
-
coin_ids:
|
|
344
|
+
coin_ids: list[bytes32],
|
|
336
345
|
fee: int = 0,
|
|
337
346
|
force: bool = False,
|
|
338
347
|
push: bool = True,
|
|
339
|
-
extra_conditions:
|
|
348
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
340
349
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
341
|
-
) ->
|
|
350
|
+
) -> dict[str, Any]:
|
|
342
351
|
request = {
|
|
343
352
|
"coin_ids": [cid.hex() for cid in coin_ids],
|
|
344
353
|
"fee": fee,
|
|
@@ -363,17 +372,17 @@ class WalletRpcClient(RpcClient):
|
|
|
363
372
|
updated_index = response["index"]
|
|
364
373
|
return str(updated_index)
|
|
365
374
|
|
|
366
|
-
async def get_farmed_amount(self) ->
|
|
375
|
+
async def get_farmed_amount(self) -> dict[str, Any]:
|
|
367
376
|
return await self.fetch("get_farmed_amount", {})
|
|
368
377
|
|
|
369
378
|
async def create_signed_transactions(
|
|
370
379
|
self,
|
|
371
|
-
additions:
|
|
380
|
+
additions: list[dict[str, Any]],
|
|
372
381
|
tx_config: TXConfig,
|
|
373
|
-
coins: Optional[
|
|
382
|
+
coins: Optional[list[Coin]] = None,
|
|
374
383
|
fee: uint64 = uint64(0),
|
|
375
384
|
wallet_id: Optional[int] = None,
|
|
376
|
-
extra_conditions:
|
|
385
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
377
386
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
378
387
|
push: bool = False,
|
|
379
388
|
) -> CreateSignedTransactionsResponse:
|
|
@@ -403,17 +412,17 @@ class WalletRpcClient(RpcClient):
|
|
|
403
412
|
response = await self.fetch("create_signed_transaction", request)
|
|
404
413
|
return json_deserialize_with_clvm_streamable(response, CreateSignedTransactionsResponse)
|
|
405
414
|
|
|
406
|
-
async def select_coins(self, amount: int, wallet_id: int, coin_selection_config: CoinSelectionConfig) ->
|
|
415
|
+
async def select_coins(self, amount: int, wallet_id: int, coin_selection_config: CoinSelectionConfig) -> list[Coin]:
|
|
407
416
|
request = {"amount": amount, "wallet_id": wallet_id, **coin_selection_config.to_json_dict()}
|
|
408
417
|
response = await self.fetch("select_coins", request)
|
|
409
418
|
return [Coin.from_json_dict(coin) for coin in response["coins"]]
|
|
410
419
|
|
|
411
|
-
async def get_coin_records(self, request: GetCoinRecords) ->
|
|
420
|
+
async def get_coin_records(self, request: GetCoinRecords) -> dict[str, Any]:
|
|
412
421
|
return await self.fetch("get_coin_records", request.to_json_dict())
|
|
413
422
|
|
|
414
423
|
async def get_spendable_coins(
|
|
415
424
|
self, wallet_id: int, coin_selection_config: CoinSelectionConfig
|
|
416
|
-
) ->
|
|
425
|
+
) -> tuple[list[CoinRecord], list[CoinRecord], list[Coin]]:
|
|
417
426
|
"""
|
|
418
427
|
We return a tuple containing: (confirmed records, unconfirmed removals, unconfirmed additions)
|
|
419
428
|
"""
|
|
@@ -426,11 +435,11 @@ class WalletRpcClient(RpcClient):
|
|
|
426
435
|
|
|
427
436
|
async def get_coin_records_by_names(
|
|
428
437
|
self,
|
|
429
|
-
names:
|
|
438
|
+
names: list[bytes32],
|
|
430
439
|
include_spent_coins: bool = True,
|
|
431
440
|
start_height: Optional[int] = None,
|
|
432
441
|
end_height: Optional[int] = None,
|
|
433
|
-
) ->
|
|
442
|
+
) -> list[CoinRecord]:
|
|
434
443
|
names_hex = [name.hex() for name in names]
|
|
435
444
|
request = {"names": names_hex, "include_spent_coins": include_spent_coins}
|
|
436
445
|
if start_height is not None:
|
|
@@ -448,14 +457,14 @@ class WalletRpcClient(RpcClient):
|
|
|
448
457
|
tx_config: TXConfig,
|
|
449
458
|
fee: int = 0,
|
|
450
459
|
name: Optional[str] = "DID Wallet",
|
|
451
|
-
backup_ids:
|
|
460
|
+
backup_ids: list[str] = [],
|
|
452
461
|
required_num: int = 0,
|
|
453
462
|
type: str = "new",
|
|
454
463
|
backup_data: str = "",
|
|
455
464
|
push: bool = True,
|
|
456
|
-
extra_conditions:
|
|
465
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
457
466
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
458
|
-
) ->
|
|
467
|
+
) -> dict[str, Any]:
|
|
459
468
|
request = {
|
|
460
469
|
"wallet_type": "did_wallet",
|
|
461
470
|
"did_type": type,
|
|
@@ -473,17 +482,17 @@ class WalletRpcClient(RpcClient):
|
|
|
473
482
|
response = await self.fetch("create_new_wallet", request)
|
|
474
483
|
return response
|
|
475
484
|
|
|
476
|
-
async def get_did_id(self, wallet_id: int) ->
|
|
485
|
+
async def get_did_id(self, wallet_id: int) -> dict[str, Any]:
|
|
477
486
|
request = {"wallet_id": wallet_id}
|
|
478
487
|
response = await self.fetch("did_get_did", request)
|
|
479
488
|
return response
|
|
480
489
|
|
|
481
|
-
async def get_did_info(self, coin_id: str, latest: bool) ->
|
|
490
|
+
async def get_did_info(self, coin_id: str, latest: bool) -> dict[str, Any]:
|
|
482
491
|
request = {"coin_id": coin_id, "latest": latest}
|
|
483
492
|
response = await self.fetch("did_get_info", request)
|
|
484
493
|
return response
|
|
485
494
|
|
|
486
|
-
async def create_did_backup_file(self, wallet_id: int, filename: str) ->
|
|
495
|
+
async def create_did_backup_file(self, wallet_id: int, filename: str) -> dict[str, Any]:
|
|
487
496
|
request = {"wallet_id": wallet_id, "filename": filename}
|
|
488
497
|
response = await self.fetch("did_create_backup_file", request)
|
|
489
498
|
return response
|
|
@@ -491,10 +500,10 @@ class WalletRpcClient(RpcClient):
|
|
|
491
500
|
async def update_did_recovery_list(
|
|
492
501
|
self,
|
|
493
502
|
wallet_id: int,
|
|
494
|
-
recovery_list:
|
|
503
|
+
recovery_list: list[str],
|
|
495
504
|
num_verification: int,
|
|
496
505
|
tx_config: TXConfig,
|
|
497
|
-
extra_conditions:
|
|
506
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
498
507
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
499
508
|
push: bool = True,
|
|
500
509
|
) -> DIDUpdateRecoveryIDsResponse:
|
|
@@ -510,7 +519,7 @@ class WalletRpcClient(RpcClient):
|
|
|
510
519
|
response = await self.fetch("did_update_recovery_ids", request)
|
|
511
520
|
return json_deserialize_with_clvm_streamable(response, DIDUpdateRecoveryIDsResponse)
|
|
512
521
|
|
|
513
|
-
async def get_did_recovery_list(self, wallet_id: int) ->
|
|
522
|
+
async def get_did_recovery_list(self, wallet_id: int) -> dict[str, Any]:
|
|
514
523
|
request = {"wallet_id": wallet_id}
|
|
515
524
|
response = await self.fetch("did_get_recovery_list", request)
|
|
516
525
|
return response
|
|
@@ -519,7 +528,7 @@ class WalletRpcClient(RpcClient):
|
|
|
519
528
|
self,
|
|
520
529
|
wallet_id: int,
|
|
521
530
|
tx_config: TXConfig,
|
|
522
|
-
extra_conditions:
|
|
531
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
523
532
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
524
533
|
push: bool = False,
|
|
525
534
|
) -> DIDMessageSpendResponse:
|
|
@@ -536,9 +545,9 @@ class WalletRpcClient(RpcClient):
|
|
|
536
545
|
async def update_did_metadata(
|
|
537
546
|
self,
|
|
538
547
|
wallet_id: int,
|
|
539
|
-
metadata:
|
|
548
|
+
metadata: dict[str, Any],
|
|
540
549
|
tx_config: TXConfig,
|
|
541
|
-
extra_conditions:
|
|
550
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
542
551
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
543
552
|
push: bool = True,
|
|
544
553
|
) -> DIDUpdateMetadataResponse:
|
|
@@ -556,7 +565,7 @@ class WalletRpcClient(RpcClient):
|
|
|
556
565
|
async def get_did_pubkey(self, request: DIDGetPubkey) -> DIDGetPubkeyResponse:
|
|
557
566
|
return DIDGetPubkeyResponse.from_json_dict(await self.fetch("did_get_pubkey", request.to_json_dict()))
|
|
558
567
|
|
|
559
|
-
async def get_did_metadata(self, wallet_id: int) ->
|
|
568
|
+
async def get_did_metadata(self, wallet_id: int) -> dict[str, Any]:
|
|
560
569
|
request = {"wallet_id": wallet_id}
|
|
561
570
|
response = await self.fetch("did_get_metadata", request)
|
|
562
571
|
return response
|
|
@@ -565,10 +574,10 @@ class WalletRpcClient(RpcClient):
|
|
|
565
574
|
self,
|
|
566
575
|
coin_id: str,
|
|
567
576
|
recovery_list_hash: Optional[str],
|
|
568
|
-
metadata: Optional[
|
|
577
|
+
metadata: Optional[dict[str, Any]],
|
|
569
578
|
num_verification: Optional[int],
|
|
570
|
-
) ->
|
|
571
|
-
request:
|
|
579
|
+
) -> dict[str, Any]:
|
|
580
|
+
request: dict[str, Any] = {"coin_id": coin_id}
|
|
572
581
|
if recovery_list_hash is not None:
|
|
573
582
|
request["recovery_list_hash"] = recovery_list_hash
|
|
574
583
|
if metadata is not None:
|
|
@@ -578,7 +587,7 @@ class WalletRpcClient(RpcClient):
|
|
|
578
587
|
response = await self.fetch("did_find_lost_did", request)
|
|
579
588
|
return response
|
|
580
589
|
|
|
581
|
-
async def create_new_did_wallet_from_recovery(self, filename: str) ->
|
|
590
|
+
async def create_new_did_wallet_from_recovery(self, filename: str) -> dict[str, Any]:
|
|
582
591
|
request = {"wallet_type": "did_wallet", "did_type": "recovery", "filename": filename}
|
|
583
592
|
response = await self.fetch("create_new_wallet", request)
|
|
584
593
|
return response
|
|
@@ -590,9 +599,9 @@ class WalletRpcClient(RpcClient):
|
|
|
590
599
|
pubkey: str,
|
|
591
600
|
puzhash: str,
|
|
592
601
|
file_name: str,
|
|
593
|
-
extra_conditions:
|
|
602
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
594
603
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
595
|
-
) ->
|
|
604
|
+
) -> dict[str, Any]:
|
|
596
605
|
request = {
|
|
597
606
|
"wallet_id": wallet_id,
|
|
598
607
|
"coin_name": coin_name,
|
|
@@ -615,7 +624,7 @@ class WalletRpcClient(RpcClient):
|
|
|
615
624
|
await self.fetch("did_get_current_coin_info", request.to_json_dict())
|
|
616
625
|
)
|
|
617
626
|
|
|
618
|
-
async def did_recovery_spend(self, wallet_id: int, attest_filenames: str) ->
|
|
627
|
+
async def did_recovery_spend(self, wallet_id: int, attest_filenames: str) -> dict[str, Any]:
|
|
619
628
|
request = {"wallet_id": wallet_id, "attest_filenames": attest_filenames}
|
|
620
629
|
response = await self.fetch("did_recovery_spend", request)
|
|
621
630
|
return response
|
|
@@ -627,7 +636,7 @@ class WalletRpcClient(RpcClient):
|
|
|
627
636
|
fee: int,
|
|
628
637
|
with_recovery: bool,
|
|
629
638
|
tx_config: TXConfig,
|
|
630
|
-
extra_conditions:
|
|
639
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
631
640
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
632
641
|
push: bool = True,
|
|
633
642
|
) -> DIDTransferDIDResponse:
|
|
@@ -644,12 +653,12 @@ class WalletRpcClient(RpcClient):
|
|
|
644
653
|
response = await self.fetch("did_transfer_did", request)
|
|
645
654
|
return json_deserialize_with_clvm_streamable(response, DIDTransferDIDResponse)
|
|
646
655
|
|
|
647
|
-
async def did_set_wallet_name(self, wallet_id: int, name: str) ->
|
|
656
|
+
async def did_set_wallet_name(self, wallet_id: int, name: str) -> dict[str, Any]:
|
|
648
657
|
request = {"wallet_id": wallet_id, "name": name}
|
|
649
658
|
response = await self.fetch("did_set_wallet_name", request)
|
|
650
659
|
return response
|
|
651
660
|
|
|
652
|
-
async def did_get_wallet_name(self, wallet_id: int) ->
|
|
661
|
+
async def did_get_wallet_name(self, wallet_id: int) -> dict[str, Any]:
|
|
653
662
|
request = {"wallet_id": wallet_id}
|
|
654
663
|
response = await self.fetch("did_get_wallet_name", request)
|
|
655
664
|
return response
|
|
@@ -666,7 +675,7 @@ class WalletRpcClient(RpcClient):
|
|
|
666
675
|
fee: uint64,
|
|
667
676
|
p2_singleton_delay_time: Optional[uint64] = None,
|
|
668
677
|
p2_singleton_delayed_ph: Optional[bytes32] = None,
|
|
669
|
-
extra_conditions:
|
|
678
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
670
679
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
671
680
|
) -> TransactionRecord:
|
|
672
681
|
request = {
|
|
@@ -689,14 +698,14 @@ class WalletRpcClient(RpcClient):
|
|
|
689
698
|
res = await self.fetch("create_new_wallet", request)
|
|
690
699
|
return TransactionRecord.from_json_dict(res["transaction"])
|
|
691
700
|
|
|
692
|
-
async def pw_self_pool(self, wallet_id: int, fee: uint64) ->
|
|
701
|
+
async def pw_self_pool(self, wallet_id: int, fee: uint64) -> dict[str, Any]:
|
|
693
702
|
reply = await self.fetch("pw_self_pool", {"wallet_id": wallet_id, "fee": fee})
|
|
694
703
|
reply = parse_result_transactions(reply)
|
|
695
704
|
return reply
|
|
696
705
|
|
|
697
706
|
async def pw_join_pool(
|
|
698
707
|
self, wallet_id: int, target_puzzlehash: bytes32, pool_url: str, relative_lock_height: uint32, fee: uint64
|
|
699
|
-
) ->
|
|
708
|
+
) -> dict[str, Any]:
|
|
700
709
|
request = {
|
|
701
710
|
"wallet_id": int(wallet_id),
|
|
702
711
|
"target_puzzlehash": target_puzzlehash.hex(),
|
|
@@ -710,7 +719,7 @@ class WalletRpcClient(RpcClient):
|
|
|
710
719
|
|
|
711
720
|
async def pw_absorb_rewards(
|
|
712
721
|
self, wallet_id: int, fee: uint64 = uint64(0), max_spends_in_tx: Optional[int] = None
|
|
713
|
-
) ->
|
|
722
|
+
) -> dict[str, Any]:
|
|
714
723
|
reply = await self.fetch(
|
|
715
724
|
"pw_absorb_rewards", {"wallet_id": wallet_id, "fee": fee, "max_spends_in_tx": max_spends_in_tx}
|
|
716
725
|
)
|
|
@@ -718,7 +727,7 @@ class WalletRpcClient(RpcClient):
|
|
|
718
727
|
reply = parse_result_transactions(reply)
|
|
719
728
|
return reply
|
|
720
729
|
|
|
721
|
-
async def pw_status(self, wallet_id: int) ->
|
|
730
|
+
async def pw_status(self, wallet_id: int) -> tuple[PoolWalletInfo, list[TransactionRecord]]:
|
|
722
731
|
json_dict = await self.fetch("pw_status", {"wallet_id": wallet_id})
|
|
723
732
|
return (
|
|
724
733
|
PoolWalletInfo.from_json_dict(json_dict["state"]),
|
|
@@ -728,11 +737,11 @@ class WalletRpcClient(RpcClient):
|
|
|
728
737
|
# CATS
|
|
729
738
|
async def create_new_cat_and_wallet(
|
|
730
739
|
self, amount: uint64, fee: uint64 = uint64(0), test: bool = False
|
|
731
|
-
) ->
|
|
740
|
+
) -> dict[str, Any]:
|
|
732
741
|
request = {"wallet_type": "cat_wallet", "mode": "new", "amount": amount, "fee": fee, "test": test}
|
|
733
742
|
return await self.fetch("create_new_wallet", request)
|
|
734
743
|
|
|
735
|
-
async def create_wallet_for_existing_cat(self, asset_id: bytes) ->
|
|
744
|
+
async def create_wallet_for_existing_cat(self, asset_id: bytes) -> dict[str, Any]:
|
|
736
745
|
request = {"wallet_type": "cat_wallet", "asset_id": asset_id.hex(), "mode": "existing"}
|
|
737
746
|
return await self.fetch("create_new_wallet", request)
|
|
738
747
|
|
|
@@ -740,12 +749,12 @@ class WalletRpcClient(RpcClient):
|
|
|
740
749
|
request = {"wallet_id": wallet_id}
|
|
741
750
|
return bytes32.from_hexstr((await self.fetch("cat_get_asset_id", request))["asset_id"])
|
|
742
751
|
|
|
743
|
-
async def get_stray_cats(self) ->
|
|
752
|
+
async def get_stray_cats(self) -> list[dict[str, Any]]:
|
|
744
753
|
response = await self.fetch("get_stray_cats", {})
|
|
745
754
|
# TODO: casting due to lack of type checked deserialization
|
|
746
|
-
return cast(
|
|
755
|
+
return cast(list[dict[str, Any]], response["stray_cats"])
|
|
747
756
|
|
|
748
|
-
async def cat_asset_id_to_name(self, asset_id: bytes32) -> Optional[
|
|
757
|
+
async def cat_asset_id_to_name(self, asset_id: bytes32) -> Optional[tuple[Optional[uint32], str]]:
|
|
749
758
|
request = {"asset_id": asset_id.hex()}
|
|
750
759
|
try:
|
|
751
760
|
res = await self.fetch("cat_asset_id_to_name", request)
|
|
@@ -762,7 +771,7 @@ class WalletRpcClient(RpcClient):
|
|
|
762
771
|
return cast(str, response["name"])
|
|
763
772
|
|
|
764
773
|
async def set_cat_name(self, wallet_id: int, name: str) -> None:
|
|
765
|
-
request:
|
|
774
|
+
request: dict[str, Any] = {
|
|
766
775
|
"wallet_id": wallet_id,
|
|
767
776
|
"name": name,
|
|
768
777
|
}
|
|
@@ -775,15 +784,15 @@ class WalletRpcClient(RpcClient):
|
|
|
775
784
|
amount: Optional[uint64] = None,
|
|
776
785
|
inner_address: Optional[str] = None,
|
|
777
786
|
fee: uint64 = uint64(0),
|
|
778
|
-
memos: Optional[
|
|
779
|
-
additions: Optional[
|
|
780
|
-
removals: Optional[
|
|
781
|
-
cat_discrepancy: Optional[
|
|
782
|
-
extra_conditions:
|
|
787
|
+
memos: Optional[list[str]] = None,
|
|
788
|
+
additions: Optional[list[dict[str, Any]]] = None,
|
|
789
|
+
removals: Optional[list[Coin]] = None,
|
|
790
|
+
cat_discrepancy: Optional[tuple[int, Program, Program]] = None, # (extra_delta, tail_reveal, tail_solution)
|
|
791
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
783
792
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
784
793
|
push: bool = True,
|
|
785
794
|
) -> CATSpendResponse:
|
|
786
|
-
send_dict:
|
|
795
|
+
send_dict: dict[str, Any] = {
|
|
787
796
|
"wallet_id": wallet_id,
|
|
788
797
|
"fee": fee,
|
|
789
798
|
"memos": memos if memos is not None else [],
|
|
@@ -816,16 +825,16 @@ class WalletRpcClient(RpcClient):
|
|
|
816
825
|
# Offers
|
|
817
826
|
async def create_offer_for_ids(
|
|
818
827
|
self,
|
|
819
|
-
offer_dict:
|
|
828
|
+
offer_dict: dict[Union[uint32, str], int],
|
|
820
829
|
tx_config: TXConfig,
|
|
821
|
-
driver_dict: Optional[
|
|
822
|
-
solver: Optional[
|
|
830
|
+
driver_dict: Optional[dict[str, Any]] = None,
|
|
831
|
+
solver: Optional[dict[str, Any]] = None,
|
|
823
832
|
fee: int = 0,
|
|
824
833
|
validate_only: bool = False,
|
|
825
|
-
extra_conditions:
|
|
834
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
826
835
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
827
836
|
) -> CreateOfferForIDsResponse:
|
|
828
|
-
send_dict:
|
|
837
|
+
send_dict: dict[str, int] = {str(key): value for key, value in offer_dict.items()}
|
|
829
838
|
|
|
830
839
|
req = {
|
|
831
840
|
"offer": send_dict,
|
|
@@ -844,11 +853,11 @@ class WalletRpcClient(RpcClient):
|
|
|
844
853
|
|
|
845
854
|
async def get_offer_summary(
|
|
846
855
|
self, offer: Offer, advanced: bool = False
|
|
847
|
-
) ->
|
|
856
|
+
) -> tuple[bytes32, dict[str, dict[str, int]]]:
|
|
848
857
|
res = await self.fetch("get_offer_summary", {"offer": offer.to_bech32(), "advanced": advanced})
|
|
849
858
|
return bytes32.from_hexstr(res["id"]), res["summary"]
|
|
850
859
|
|
|
851
|
-
async def check_offer_validity(self, offer: Offer) ->
|
|
860
|
+
async def check_offer_validity(self, offer: Offer) -> tuple[bytes32, bool]:
|
|
852
861
|
res = await self.fetch("check_offer_validity", {"offer": offer.to_bech32()})
|
|
853
862
|
return bytes32.from_hexstr(res["id"]), res["valid"]
|
|
854
863
|
|
|
@@ -856,9 +865,9 @@ class WalletRpcClient(RpcClient):
|
|
|
856
865
|
self,
|
|
857
866
|
offer: Offer,
|
|
858
867
|
tx_config: TXConfig,
|
|
859
|
-
solver: Optional[
|
|
868
|
+
solver: Optional[dict[str, Any]] = None,
|
|
860
869
|
fee: int = 0,
|
|
861
|
-
extra_conditions:
|
|
870
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
862
871
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
863
872
|
push: bool = True,
|
|
864
873
|
) -> TakeOfferResponse:
|
|
@@ -890,7 +899,7 @@ class WalletRpcClient(RpcClient):
|
|
|
890
899
|
exclude_my_offers: bool = False,
|
|
891
900
|
exclude_taken_offers: bool = False,
|
|
892
901
|
include_completed: bool = False,
|
|
893
|
-
) ->
|
|
902
|
+
) -> list[TradeRecord]:
|
|
894
903
|
res = await self.fetch(
|
|
895
904
|
"get_all_offers",
|
|
896
905
|
{
|
|
@@ -924,7 +933,7 @@ class WalletRpcClient(RpcClient):
|
|
|
924
933
|
tx_config: TXConfig,
|
|
925
934
|
fee: int = 0,
|
|
926
935
|
secure: bool = True,
|
|
927
|
-
extra_conditions:
|
|
936
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
928
937
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
929
938
|
push: bool = True,
|
|
930
939
|
) -> CancelOfferResponse:
|
|
@@ -951,7 +960,7 @@ class WalletRpcClient(RpcClient):
|
|
|
951
960
|
batch_size: int = 5,
|
|
952
961
|
cancel_all: bool = False,
|
|
953
962
|
asset_id: Optional[bytes32] = None,
|
|
954
|
-
extra_conditions:
|
|
963
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
955
964
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
956
965
|
push: bool = True,
|
|
957
966
|
) -> CancelOffersResponse:
|
|
@@ -960,7 +969,6 @@ class WalletRpcClient(RpcClient):
|
|
|
960
969
|
{
|
|
961
970
|
"secure": secure,
|
|
962
971
|
"batch_fee": batch_fee,
|
|
963
|
-
"secure": secure,
|
|
964
972
|
"batch_size": batch_size,
|
|
965
973
|
"cancel_all": cancel_all,
|
|
966
974
|
"asset_id": None if asset_id is None else asset_id.hex(),
|
|
@@ -977,7 +985,7 @@ class WalletRpcClient(RpcClient):
|
|
|
977
985
|
return GetCATListResponse.from_json_dict(await self.fetch("get_cat_list", {}))
|
|
978
986
|
|
|
979
987
|
# NFT wallet
|
|
980
|
-
async def create_new_nft_wallet(self, did_id: Optional[str], name: Optional[str] = None) ->
|
|
988
|
+
async def create_new_nft_wallet(self, did_id: Optional[str], name: Optional[str] = None) -> dict[str, Any]:
|
|
981
989
|
request = {"wallet_type": "nft_wallet", "did_id": did_id, "name": name}
|
|
982
990
|
response = await self.fetch("create_new_wallet", request)
|
|
983
991
|
return response
|
|
@@ -988,18 +996,18 @@ class WalletRpcClient(RpcClient):
|
|
|
988
996
|
royalty_address: Optional[str],
|
|
989
997
|
target_address: Optional[str],
|
|
990
998
|
hash: str,
|
|
991
|
-
uris:
|
|
999
|
+
uris: list[str],
|
|
992
1000
|
tx_config: TXConfig,
|
|
993
1001
|
meta_hash: Optional[str] = "",
|
|
994
|
-
meta_uris:
|
|
1002
|
+
meta_uris: list[str] = [],
|
|
995
1003
|
license_hash: Optional[str] = "",
|
|
996
|
-
license_uris:
|
|
1004
|
+
license_uris: list[str] = [],
|
|
997
1005
|
edition_total: Optional[int] = 1,
|
|
998
1006
|
edition_number: Optional[int] = 1,
|
|
999
1007
|
fee: int = 0,
|
|
1000
1008
|
royalty_percentage: int = 0,
|
|
1001
1009
|
did_id: Optional[str] = None,
|
|
1002
|
-
extra_conditions:
|
|
1010
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1003
1011
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1004
1012
|
push: bool = True,
|
|
1005
1013
|
) -> NFTMintNFTResponse:
|
|
@@ -1034,7 +1042,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1034
1042
|
uri: str,
|
|
1035
1043
|
fee: int,
|
|
1036
1044
|
tx_config: TXConfig,
|
|
1037
|
-
extra_conditions:
|
|
1045
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1038
1046
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1039
1047
|
push: bool = True,
|
|
1040
1048
|
) -> NFTAddURIResponse:
|
|
@@ -1054,9 +1062,9 @@ class WalletRpcClient(RpcClient):
|
|
|
1054
1062
|
|
|
1055
1063
|
async def nft_calculate_royalties(
|
|
1056
1064
|
self,
|
|
1057
|
-
royalty_assets_dict:
|
|
1058
|
-
fungible_asset_dict:
|
|
1059
|
-
) ->
|
|
1065
|
+
royalty_assets_dict: dict[Any, tuple[Any, uint16]],
|
|
1066
|
+
fungible_asset_dict: dict[Any, uint64],
|
|
1067
|
+
) -> dict[str, list[dict[str, Any]]]:
|
|
1060
1068
|
request = {
|
|
1061
1069
|
"royalty_assets": [
|
|
1062
1070
|
{"asset": id, "royalty_address": royalty_info[0], "royalty_percentage": royalty_info[1]}
|
|
@@ -1068,7 +1076,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1068
1076
|
del response["success"]
|
|
1069
1077
|
return response
|
|
1070
1078
|
|
|
1071
|
-
async def get_nft_info(self, coin_id: str, latest: bool = True) ->
|
|
1079
|
+
async def get_nft_info(self, coin_id: str, latest: bool = True) -> dict[str, Any]:
|
|
1072
1080
|
request = {"coin_id": coin_id, "latest": latest}
|
|
1073
1081
|
response = await self.fetch("nft_get_info", request)
|
|
1074
1082
|
return response
|
|
@@ -1080,7 +1088,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1080
1088
|
target_address: str,
|
|
1081
1089
|
fee: int,
|
|
1082
1090
|
tx_config: TXConfig,
|
|
1083
|
-
extra_conditions:
|
|
1091
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1084
1092
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1085
1093
|
push: bool = True,
|
|
1086
1094
|
) -> NFTTransferNFTResponse:
|
|
@@ -1097,12 +1105,12 @@ class WalletRpcClient(RpcClient):
|
|
|
1097
1105
|
response = await self.fetch("nft_transfer_nft", request)
|
|
1098
1106
|
return json_deserialize_with_clvm_streamable(response, NFTTransferNFTResponse)
|
|
1099
1107
|
|
|
1100
|
-
async def count_nfts(self, wallet_id: Optional[int]) ->
|
|
1108
|
+
async def count_nfts(self, wallet_id: Optional[int]) -> dict[str, Any]:
|
|
1101
1109
|
request = {"wallet_id": wallet_id}
|
|
1102
1110
|
response = await self.fetch("nft_count_nfts", request)
|
|
1103
1111
|
return response
|
|
1104
1112
|
|
|
1105
|
-
async def list_nfts(self, wallet_id: int, num: int = 50, start_index: int = 0) ->
|
|
1113
|
+
async def list_nfts(self, wallet_id: int, num: int = 50, start_index: int = 0) -> dict[str, Any]:
|
|
1106
1114
|
request = {"wallet_id": wallet_id, "num": num, "start_index": start_index}
|
|
1107
1115
|
response = await self.fetch("nft_get_nfts", request)
|
|
1108
1116
|
return response
|
|
@@ -1117,7 +1125,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1117
1125
|
nft_coin_id: str,
|
|
1118
1126
|
fee: int,
|
|
1119
1127
|
tx_config: TXConfig,
|
|
1120
|
-
extra_conditions:
|
|
1128
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1121
1129
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1122
1130
|
push: bool = True,
|
|
1123
1131
|
) -> NFTSetNFTDIDResponse:
|
|
@@ -1138,7 +1146,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1138
1146
|
async def set_nft_status(self, request: NFTSetNFTStatus) -> None:
|
|
1139
1147
|
await self.fetch("nft_set_nft_status", request.to_json_dict())
|
|
1140
1148
|
|
|
1141
|
-
async def get_nft_wallet_did(self, wallet_id: int) ->
|
|
1149
|
+
async def get_nft_wallet_did(self, wallet_id: int) -> dict[str, Any]:
|
|
1142
1150
|
request = {"wallet_id": wallet_id}
|
|
1143
1151
|
response = await self.fetch("nft_get_wallet_did", request)
|
|
1144
1152
|
return response
|
|
@@ -1149,21 +1157,21 @@ class WalletRpcClient(RpcClient):
|
|
|
1149
1157
|
async def nft_mint_bulk(
|
|
1150
1158
|
self,
|
|
1151
1159
|
wallet_id: int,
|
|
1152
|
-
metadata_list:
|
|
1160
|
+
metadata_list: list[dict[str, Any]],
|
|
1153
1161
|
royalty_percentage: Optional[int],
|
|
1154
1162
|
royalty_address: Optional[str],
|
|
1155
1163
|
tx_config: TXConfig,
|
|
1156
|
-
target_list: Optional[
|
|
1164
|
+
target_list: Optional[list[str]] = None,
|
|
1157
1165
|
mint_number_start: Optional[int] = 1,
|
|
1158
1166
|
mint_total: Optional[int] = None,
|
|
1159
|
-
xch_coins: Optional[
|
|
1167
|
+
xch_coins: Optional[list[dict[str, Any]]] = None,
|
|
1160
1168
|
xch_change_target: Optional[str] = None,
|
|
1161
1169
|
new_innerpuzhash: Optional[str] = None,
|
|
1162
|
-
did_coin: Optional[
|
|
1170
|
+
did_coin: Optional[dict[str, Any]] = None,
|
|
1163
1171
|
did_lineage_parent: Optional[str] = None,
|
|
1164
1172
|
mint_from_did: Optional[bool] = False,
|
|
1165
1173
|
fee: Optional[int] = 0,
|
|
1166
|
-
extra_conditions:
|
|
1174
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1167
1175
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1168
1176
|
push: bool = False,
|
|
1169
1177
|
) -> NFTMintBulkResponse:
|
|
@@ -1194,7 +1202,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1194
1202
|
self,
|
|
1195
1203
|
request: NFTSetDIDBulk,
|
|
1196
1204
|
tx_config: TXConfig,
|
|
1197
|
-
extra_conditions:
|
|
1205
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1198
1206
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1199
1207
|
) -> NFTSetDIDBulkResponse:
|
|
1200
1208
|
return NFTSetDIDBulkResponse.from_json_dict(
|
|
@@ -1207,7 +1215,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1207
1215
|
self,
|
|
1208
1216
|
request: NFTTransferBulk,
|
|
1209
1217
|
tx_config: TXConfig,
|
|
1210
|
-
extra_conditions:
|
|
1218
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1211
1219
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1212
1220
|
) -> NFTTransferBulkResponse:
|
|
1213
1221
|
return NFTTransferBulkResponse.from_json_dict(
|
|
@@ -1221,9 +1229,9 @@ class WalletRpcClient(RpcClient):
|
|
|
1221
1229
|
self,
|
|
1222
1230
|
root: bytes32,
|
|
1223
1231
|
fee: uint64,
|
|
1224
|
-
extra_conditions:
|
|
1232
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1225
1233
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1226
|
-
) ->
|
|
1234
|
+
) -> tuple[list[TransactionRecord], bytes32]:
|
|
1227
1235
|
request = {
|
|
1228
1236
|
"root": root.hex(),
|
|
1229
1237
|
"fee": fee,
|
|
@@ -1250,7 +1258,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1250
1258
|
response = await self.fetch("dl_latest_singleton", request)
|
|
1251
1259
|
return None if response["singleton"] is None else SingletonRecord.from_json_dict(response["singleton"])
|
|
1252
1260
|
|
|
1253
|
-
async def dl_singletons_by_root(self, launcher_id: bytes32, root: bytes32) ->
|
|
1261
|
+
async def dl_singletons_by_root(self, launcher_id: bytes32, root: bytes32) -> list[SingletonRecord]:
|
|
1254
1262
|
request = {"launcher_id": launcher_id.hex(), "root": root.hex()}
|
|
1255
1263
|
response = await self.fetch("dl_singletons_by_root", request)
|
|
1256
1264
|
return [SingletonRecord.from_json_dict(single) for single in response["singletons"]]
|
|
@@ -1260,7 +1268,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1260
1268
|
launcher_id: bytes32,
|
|
1261
1269
|
new_root: bytes32,
|
|
1262
1270
|
fee: uint64,
|
|
1263
|
-
extra_conditions:
|
|
1271
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1264
1272
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1265
1273
|
) -> TransactionRecord:
|
|
1266
1274
|
request = {
|
|
@@ -1275,11 +1283,11 @@ class WalletRpcClient(RpcClient):
|
|
|
1275
1283
|
|
|
1276
1284
|
async def dl_update_multiple(
|
|
1277
1285
|
self,
|
|
1278
|
-
update_dictionary:
|
|
1286
|
+
update_dictionary: dict[bytes32, bytes32],
|
|
1279
1287
|
fee: uint64,
|
|
1280
|
-
extra_conditions:
|
|
1288
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1281
1289
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1282
|
-
) ->
|
|
1290
|
+
) -> list[TransactionRecord]:
|
|
1283
1291
|
updates_as_strings = {str(lid): str(root) for lid, root in update_dictionary.items()}
|
|
1284
1292
|
request = {
|
|
1285
1293
|
"updates": updates_as_strings,
|
|
@@ -1296,7 +1304,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1296
1304
|
min_generation: Optional[uint32] = None,
|
|
1297
1305
|
max_generation: Optional[uint32] = None,
|
|
1298
1306
|
num_results: Optional[uint32] = None,
|
|
1299
|
-
) ->
|
|
1307
|
+
) -> list[SingletonRecord]:
|
|
1300
1308
|
request = {"launcher_id": launcher_id.hex()}
|
|
1301
1309
|
|
|
1302
1310
|
if min_generation is not None:
|
|
@@ -1309,11 +1317,11 @@ class WalletRpcClient(RpcClient):
|
|
|
1309
1317
|
response = await self.fetch("dl_history", request)
|
|
1310
1318
|
return [SingletonRecord.from_json_dict(single) for single in response["history"]]
|
|
1311
1319
|
|
|
1312
|
-
async def dl_owned_singletons(self) ->
|
|
1320
|
+
async def dl_owned_singletons(self) -> list[SingletonRecord]:
|
|
1313
1321
|
response = await self.fetch(path="dl_owned_singletons", request_json={})
|
|
1314
1322
|
return [SingletonRecord.from_json_dict(singleton) for singleton in response["singletons"]]
|
|
1315
1323
|
|
|
1316
|
-
async def dl_get_mirrors(self, launcher_id: bytes32) ->
|
|
1324
|
+
async def dl_get_mirrors(self, launcher_id: bytes32) -> list[Mirror]:
|
|
1317
1325
|
response = await self.fetch(path="dl_get_mirrors", request_json={"launcher_id": launcher_id.hex()})
|
|
1318
1326
|
return [Mirror.from_json_dict(mirror) for mirror in response["mirrors"]]
|
|
1319
1327
|
|
|
@@ -1321,11 +1329,11 @@ class WalletRpcClient(RpcClient):
|
|
|
1321
1329
|
self,
|
|
1322
1330
|
launcher_id: bytes32,
|
|
1323
1331
|
amount: uint64,
|
|
1324
|
-
urls:
|
|
1332
|
+
urls: list[bytes],
|
|
1325
1333
|
fee: uint64 = uint64(0),
|
|
1326
|
-
extra_conditions:
|
|
1334
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1327
1335
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1328
|
-
) ->
|
|
1336
|
+
) -> list[TransactionRecord]:
|
|
1329
1337
|
response = await self.fetch(
|
|
1330
1338
|
path="dl_new_mirror",
|
|
1331
1339
|
request_json={
|
|
@@ -1343,9 +1351,9 @@ class WalletRpcClient(RpcClient):
|
|
|
1343
1351
|
self,
|
|
1344
1352
|
coin_id: bytes32,
|
|
1345
1353
|
fee: uint64 = uint64(0),
|
|
1346
|
-
extra_conditions:
|
|
1354
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1347
1355
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1348
|
-
) ->
|
|
1356
|
+
) -> list[TransactionRecord]:
|
|
1349
1357
|
response = await self.fetch(
|
|
1350
1358
|
path="dl_delete_mirror",
|
|
1351
1359
|
request_json={
|
|
@@ -1380,7 +1388,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1380
1388
|
msg: bytes,
|
|
1381
1389
|
amount: uint64,
|
|
1382
1390
|
fee: uint64 = uint64(0),
|
|
1383
|
-
extra_conditions:
|
|
1391
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1384
1392
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1385
1393
|
push: bool = True,
|
|
1386
1394
|
) -> TransactionRecord:
|
|
@@ -1398,13 +1406,13 @@ class WalletRpcClient(RpcClient):
|
|
|
1398
1406
|
)
|
|
1399
1407
|
return TransactionRecord.from_json_dict_convenience(response["tx"])
|
|
1400
1408
|
|
|
1401
|
-
async def sign_message_by_address(self, address: str, message: str) ->
|
|
1409
|
+
async def sign_message_by_address(self, address: str, message: str) -> tuple[str, str, str]:
|
|
1402
1410
|
response = await self.fetch("sign_message_by_address", {"address": address, "message": message})
|
|
1403
1411
|
return response["pubkey"], response["signature"], response["signing_mode"]
|
|
1404
1412
|
|
|
1405
1413
|
async def sign_message_by_id(
|
|
1406
1414
|
self, id: str, message: str, is_hex: bool = False, safe_mode: bool = True
|
|
1407
|
-
) ->
|
|
1415
|
+
) -> tuple[str, str, str]:
|
|
1408
1416
|
response = await self.fetch(
|
|
1409
1417
|
"sign_message_by_id", {"id": id, "message": message, "is_hex": is_hex, "safe_mode": safe_mode}
|
|
1410
1418
|
)
|
|
@@ -1423,18 +1431,18 @@ class WalletRpcClient(RpcClient):
|
|
|
1423
1431
|
self,
|
|
1424
1432
|
mode: str,
|
|
1425
1433
|
tx_config: TXConfig,
|
|
1426
|
-
dao_rules: Optional[
|
|
1434
|
+
dao_rules: Optional[dict[str, uint64]] = None,
|
|
1427
1435
|
amount_of_cats: Optional[uint64] = None,
|
|
1428
1436
|
treasury_id: Optional[bytes32] = None,
|
|
1429
1437
|
filter_amount: uint64 = uint64(1),
|
|
1430
1438
|
name: Optional[str] = None,
|
|
1431
1439
|
fee: uint64 = uint64(0),
|
|
1432
1440
|
fee_for_cat: uint64 = uint64(0),
|
|
1433
|
-
extra_conditions:
|
|
1441
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1434
1442
|
push: bool = True,
|
|
1435
1443
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1436
1444
|
) -> CreateNewDAOWalletResponse:
|
|
1437
|
-
request:
|
|
1445
|
+
request: dict[str, Any] = {
|
|
1438
1446
|
"wallet_type": "dao_wallet",
|
|
1439
1447
|
"mode": mode,
|
|
1440
1448
|
"treasury_id": treasury_id.hex() if treasury_id is not None else treasury_id,
|
|
@@ -1452,12 +1460,12 @@ class WalletRpcClient(RpcClient):
|
|
|
1452
1460
|
response = await self.fetch("create_new_wallet", request)
|
|
1453
1461
|
return json_deserialize_with_clvm_streamable(response, CreateNewDAOWalletResponse)
|
|
1454
1462
|
|
|
1455
|
-
async def dao_get_treasury_id(self, wallet_id: int) ->
|
|
1463
|
+
async def dao_get_treasury_id(self, wallet_id: int) -> dict[str, Any]:
|
|
1456
1464
|
request = {"wallet_id": wallet_id}
|
|
1457
1465
|
response = await self.fetch("dao_get_treasury_id", request)
|
|
1458
1466
|
return response
|
|
1459
1467
|
|
|
1460
|
-
async def dao_get_rules(self, wallet_id: int) ->
|
|
1468
|
+
async def dao_get_rules(self, wallet_id: int) -> dict[str, Any]:
|
|
1461
1469
|
request = {"wallet_id": wallet_id}
|
|
1462
1470
|
response = await self.fetch("dao_get_rules", request)
|
|
1463
1471
|
return response
|
|
@@ -1467,19 +1475,19 @@ class WalletRpcClient(RpcClient):
|
|
|
1467
1475
|
wallet_id: int,
|
|
1468
1476
|
proposal_type: str,
|
|
1469
1477
|
tx_config: TXConfig,
|
|
1470
|
-
additions: Optional[
|
|
1478
|
+
additions: Optional[list[dict[str, Any]]] = None,
|
|
1471
1479
|
amount: Optional[uint64] = None,
|
|
1472
1480
|
inner_address: Optional[str] = None,
|
|
1473
1481
|
asset_id: Optional[str] = None,
|
|
1474
1482
|
cat_target_address: Optional[str] = None,
|
|
1475
1483
|
vote_amount: Optional[int] = None,
|
|
1476
|
-
new_dao_rules: Optional[
|
|
1484
|
+
new_dao_rules: Optional[dict[str, Optional[uint64]]] = None,
|
|
1477
1485
|
fee: uint64 = uint64(0),
|
|
1478
|
-
extra_conditions:
|
|
1486
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1479
1487
|
push: bool = True,
|
|
1480
1488
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1481
1489
|
) -> DAOCreateProposalResponse:
|
|
1482
|
-
request:
|
|
1490
|
+
request: dict[str, Any] = {
|
|
1483
1491
|
"wallet_id": wallet_id,
|
|
1484
1492
|
"proposal_type": proposal_type,
|
|
1485
1493
|
"additions": additions,
|
|
@@ -1498,12 +1506,12 @@ class WalletRpcClient(RpcClient):
|
|
|
1498
1506
|
response = await self.fetch("dao_create_proposal", request)
|
|
1499
1507
|
return json_deserialize_with_clvm_streamable(response, DAOCreateProposalResponse)
|
|
1500
1508
|
|
|
1501
|
-
async def dao_get_proposal_state(self, wallet_id: int, proposal_id: str) ->
|
|
1509
|
+
async def dao_get_proposal_state(self, wallet_id: int, proposal_id: str) -> dict[str, Any]:
|
|
1502
1510
|
request = {"wallet_id": wallet_id, "proposal_id": proposal_id}
|
|
1503
1511
|
response = await self.fetch("dao_get_proposal_state", request)
|
|
1504
1512
|
return response
|
|
1505
1513
|
|
|
1506
|
-
async def dao_parse_proposal(self, wallet_id: int, proposal_id: str) ->
|
|
1514
|
+
async def dao_parse_proposal(self, wallet_id: int, proposal_id: str) -> dict[str, Any]:
|
|
1507
1515
|
request = {"wallet_id": wallet_id, "proposal_id": proposal_id}
|
|
1508
1516
|
response = await self.fetch("dao_parse_proposal", request)
|
|
1509
1517
|
return response
|
|
@@ -1516,11 +1524,11 @@ class WalletRpcClient(RpcClient):
|
|
|
1516
1524
|
tx_config: TXConfig,
|
|
1517
1525
|
is_yes_vote: bool = True,
|
|
1518
1526
|
fee: uint64 = uint64(0),
|
|
1519
|
-
extra_conditions:
|
|
1527
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1520
1528
|
push: bool = True,
|
|
1521
1529
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1522
1530
|
) -> DAOVoteOnProposalResponse:
|
|
1523
|
-
request:
|
|
1531
|
+
request: dict[str, Any] = {
|
|
1524
1532
|
"wallet_id": wallet_id,
|
|
1525
1533
|
"proposal_id": proposal_id,
|
|
1526
1534
|
"vote_amount": vote_amount,
|
|
@@ -1534,7 +1542,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1534
1542
|
response = await self.fetch("dao_vote_on_proposal", request)
|
|
1535
1543
|
return json_deserialize_with_clvm_streamable(response, DAOVoteOnProposalResponse)
|
|
1536
1544
|
|
|
1537
|
-
async def dao_get_proposals(self, wallet_id: int, include_closed: bool = True) ->
|
|
1545
|
+
async def dao_get_proposals(self, wallet_id: int, include_closed: bool = True) -> dict[str, Any]:
|
|
1538
1546
|
request = {"wallet_id": wallet_id, "include_closed": include_closed}
|
|
1539
1547
|
response = await self.fetch("dao_get_proposals", request)
|
|
1540
1548
|
return response
|
|
@@ -1546,11 +1554,11 @@ class WalletRpcClient(RpcClient):
|
|
|
1546
1554
|
tx_config: TXConfig,
|
|
1547
1555
|
self_destruct: Optional[bool] = None,
|
|
1548
1556
|
fee: uint64 = uint64(0),
|
|
1549
|
-
extra_conditions:
|
|
1557
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1550
1558
|
push: bool = True,
|
|
1551
1559
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1552
1560
|
) -> DAOCloseProposalResponse:
|
|
1553
|
-
request:
|
|
1561
|
+
request: dict[str, Any] = {
|
|
1554
1562
|
"wallet_id": wallet_id,
|
|
1555
1563
|
"proposal_id": proposal_id,
|
|
1556
1564
|
"self_destruct": self_destruct,
|
|
@@ -1568,11 +1576,11 @@ class WalletRpcClient(RpcClient):
|
|
|
1568
1576
|
wallet_id: int,
|
|
1569
1577
|
tx_config: TXConfig,
|
|
1570
1578
|
fee: uint64 = uint64(0),
|
|
1571
|
-
extra_conditions:
|
|
1579
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1572
1580
|
push: bool = True,
|
|
1573
1581
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1574
1582
|
) -> DAOFreeCoinsFromFinishedProposalsResponse:
|
|
1575
|
-
request:
|
|
1583
|
+
request: dict[str, Any] = {
|
|
1576
1584
|
"wallet_id": wallet_id,
|
|
1577
1585
|
"fee": fee,
|
|
1578
1586
|
"extra_conditions": list(extra_conditions),
|
|
@@ -1582,7 +1590,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1582
1590
|
response = await self.fetch("dao_free_coins_from_finished_proposals", request)
|
|
1583
1591
|
return json_deserialize_with_clvm_streamable(response, DAOFreeCoinsFromFinishedProposalsResponse)
|
|
1584
1592
|
|
|
1585
|
-
async def dao_get_treasury_balance(self, wallet_id: int) ->
|
|
1593
|
+
async def dao_get_treasury_balance(self, wallet_id: int) -> dict[str, Any]:
|
|
1586
1594
|
request = {"wallet_id": wallet_id}
|
|
1587
1595
|
response = await self.fetch("dao_get_treasury_balance", request)
|
|
1588
1596
|
return response
|
|
@@ -1594,11 +1602,11 @@ class WalletRpcClient(RpcClient):
|
|
|
1594
1602
|
amount: uint64,
|
|
1595
1603
|
tx_config: TXConfig,
|
|
1596
1604
|
fee: uint64 = uint64(0),
|
|
1597
|
-
extra_conditions:
|
|
1605
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1598
1606
|
push: bool = True,
|
|
1599
1607
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1600
1608
|
) -> DAOAddFundsToTreasuryResponse:
|
|
1601
|
-
request:
|
|
1609
|
+
request: dict[str, Any] = {
|
|
1602
1610
|
"wallet_id": wallet_id,
|
|
1603
1611
|
"funding_wallet_id": funding_wallet_id,
|
|
1604
1612
|
"amount": amount,
|
|
@@ -1617,11 +1625,11 @@ class WalletRpcClient(RpcClient):
|
|
|
1617
1625
|
amount: uint64,
|
|
1618
1626
|
tx_config: TXConfig,
|
|
1619
1627
|
fee: uint64 = uint64(0),
|
|
1620
|
-
extra_conditions:
|
|
1628
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1621
1629
|
push: bool = True,
|
|
1622
1630
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1623
1631
|
) -> DAOSendToLockupResponse:
|
|
1624
|
-
request:
|
|
1632
|
+
request: dict[str, Any] = {
|
|
1625
1633
|
"wallet_id": wallet_id,
|
|
1626
1634
|
"amount": amount,
|
|
1627
1635
|
"fee": fee,
|
|
@@ -1637,13 +1645,13 @@ class WalletRpcClient(RpcClient):
|
|
|
1637
1645
|
self,
|
|
1638
1646
|
wallet_id: int,
|
|
1639
1647
|
tx_config: TXConfig,
|
|
1640
|
-
coins: Optional[
|
|
1648
|
+
coins: Optional[list[dict[str, Any]]] = None,
|
|
1641
1649
|
fee: uint64 = uint64(0),
|
|
1642
|
-
extra_conditions:
|
|
1650
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1643
1651
|
push: bool = True,
|
|
1644
1652
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1645
1653
|
) -> DAOExitLockupResponse:
|
|
1646
|
-
request:
|
|
1654
|
+
request: dict[str, Any] = {
|
|
1647
1655
|
"wallet_id": wallet_id,
|
|
1648
1656
|
"coins": coins,
|
|
1649
1657
|
"fee": fee,
|
|
@@ -1655,101 +1663,63 @@ class WalletRpcClient(RpcClient):
|
|
|
1655
1663
|
response = await self.fetch("dao_exit_lockup", request)
|
|
1656
1664
|
return json_deserialize_with_clvm_streamable(response, DAOExitLockupResponse)
|
|
1657
1665
|
|
|
1658
|
-
async def dao_adjust_filter_level(self, wallet_id: int, filter_level: int) ->
|
|
1666
|
+
async def dao_adjust_filter_level(self, wallet_id: int, filter_level: int) -> dict[str, Any]:
|
|
1659
1667
|
request = {"wallet_id": wallet_id, "filter_level": filter_level}
|
|
1660
1668
|
response = await self.fetch("dao_adjust_filter_level", request)
|
|
1661
1669
|
return response
|
|
1662
1670
|
|
|
1663
1671
|
async def vc_mint(
|
|
1664
1672
|
self,
|
|
1665
|
-
|
|
1673
|
+
request: VCMint,
|
|
1666
1674
|
tx_config: TXConfig,
|
|
1667
|
-
|
|
1668
|
-
fee: uint64 = uint64(0),
|
|
1669
|
-
extra_conditions: Tuple[Condition, ...] = tuple(),
|
|
1675
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1670
1676
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1671
|
-
push: bool = True,
|
|
1672
1677
|
) -> VCMintResponse:
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
"target_address": encode_puzzle_hash(target_address, "rpc") if target_address is not None else None,
|
|
1678
|
-
"fee": fee,
|
|
1679
|
-
"extra_conditions": conditions_to_json_dicts(extra_conditions),
|
|
1680
|
-
"push": push,
|
|
1681
|
-
**tx_config.to_json_dict(),
|
|
1682
|
-
**timelock_info.to_json_dict(),
|
|
1683
|
-
},
|
|
1678
|
+
return VCMintResponse.from_json_dict(
|
|
1679
|
+
await self.fetch(
|
|
1680
|
+
"vc_mint", request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info)
|
|
1681
|
+
)
|
|
1684
1682
|
)
|
|
1685
|
-
return json_deserialize_with_clvm_streamable(response, VCMintResponse)
|
|
1686
1683
|
|
|
1687
|
-
async def vc_get(self,
|
|
1688
|
-
|
|
1689
|
-
return None if response["vc_record"] is None else VCRecord.from_json_dict(response["vc_record"])
|
|
1684
|
+
async def vc_get(self, request: VCGet) -> VCGetResponse:
|
|
1685
|
+
return VCGetResponse.from_json_dict(await self.fetch("vc_get", request.to_json_dict()))
|
|
1690
1686
|
|
|
1691
|
-
async def vc_get_list(self,
|
|
1692
|
-
|
|
1693
|
-
return [VCRecord.from_json_dict(rec) for rec in response["vc_records"]], response["proofs"]
|
|
1687
|
+
async def vc_get_list(self, request: VCGetList) -> VCGetListResponse:
|
|
1688
|
+
return VCGetListResponse.from_json_dict(await self.fetch("vc_get_list", request.to_json_dict()))
|
|
1694
1689
|
|
|
1695
1690
|
async def vc_spend(
|
|
1696
1691
|
self,
|
|
1697
|
-
|
|
1692
|
+
request: VCSpend,
|
|
1698
1693
|
tx_config: TXConfig,
|
|
1699
|
-
|
|
1700
|
-
new_proof_hash: Optional[bytes32] = None,
|
|
1701
|
-
provider_inner_puzhash: Optional[bytes32] = None,
|
|
1702
|
-
fee: uint64 = uint64(0),
|
|
1703
|
-
extra_conditions: Tuple[Condition, ...] = tuple(),
|
|
1694
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1704
1695
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1705
|
-
push: bool = True,
|
|
1706
1696
|
) -> VCSpendResponse:
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
"new_puzhash": new_puzhash.hex() if new_puzhash is not None else new_puzhash,
|
|
1712
|
-
"new_proof_hash": new_proof_hash.hex() if new_proof_hash is not None else new_proof_hash,
|
|
1713
|
-
"provider_inner_puzhash": (
|
|
1714
|
-
provider_inner_puzhash.hex() if provider_inner_puzhash is not None else provider_inner_puzhash
|
|
1715
|
-
),
|
|
1716
|
-
"fee": fee,
|
|
1717
|
-
"extra_conditions": conditions_to_json_dicts(extra_conditions),
|
|
1718
|
-
"push": push,
|
|
1719
|
-
**tx_config.to_json_dict(),
|
|
1720
|
-
**timelock_info.to_json_dict(),
|
|
1721
|
-
},
|
|
1697
|
+
return VCSpendResponse.from_json_dict(
|
|
1698
|
+
await self.fetch(
|
|
1699
|
+
"vc_spend", request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info)
|
|
1700
|
+
)
|
|
1722
1701
|
)
|
|
1723
|
-
return json_deserialize_with_clvm_streamable(response, VCSpendResponse)
|
|
1724
1702
|
|
|
1725
|
-
async def vc_add_proofs(self,
|
|
1726
|
-
await self.fetch("vc_add_proofs",
|
|
1703
|
+
async def vc_add_proofs(self, request: VCAddProofs) -> None:
|
|
1704
|
+
await self.fetch("vc_add_proofs", request.to_json_dict())
|
|
1727
1705
|
|
|
1728
|
-
async def vc_get_proofs_for_root(self,
|
|
1729
|
-
|
|
1730
|
-
|
|
1706
|
+
async def vc_get_proofs_for_root(self, request: VCGetProofsForRoot) -> VCGetProofsForRootResponse:
|
|
1707
|
+
return VCGetProofsForRootResponse.from_json_dict(
|
|
1708
|
+
await self.fetch("vc_get_proofs_for_root", request.to_json_dict())
|
|
1709
|
+
)
|
|
1731
1710
|
|
|
1732
1711
|
async def vc_revoke(
|
|
1733
1712
|
self,
|
|
1734
|
-
|
|
1713
|
+
request: VCRevoke,
|
|
1735
1714
|
tx_config: TXConfig,
|
|
1736
|
-
|
|
1737
|
-
extra_conditions: Tuple[Condition, ...] = tuple(),
|
|
1715
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1738
1716
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1739
|
-
push: bool = True,
|
|
1740
1717
|
) -> VCRevokeResponse:
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
"fee": fee,
|
|
1746
|
-
"extra_conditions": conditions_to_json_dicts(extra_conditions),
|
|
1747
|
-
"push": push,
|
|
1748
|
-
**tx_config.to_json_dict(),
|
|
1749
|
-
**timelock_info.to_json_dict(),
|
|
1750
|
-
},
|
|
1718
|
+
return VCRevokeResponse.from_json_dict(
|
|
1719
|
+
await self.fetch(
|
|
1720
|
+
"vc_revoke", request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info)
|
|
1721
|
+
)
|
|
1751
1722
|
)
|
|
1752
|
-
return json_deserialize_with_clvm_streamable(response, VCRevokeResponse)
|
|
1753
1723
|
|
|
1754
1724
|
async def crcat_approve_pending(
|
|
1755
1725
|
self,
|
|
@@ -1759,7 +1729,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1759
1729
|
fee: uint64 = uint64(0),
|
|
1760
1730
|
push: bool = True,
|
|
1761
1731
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1762
|
-
) ->
|
|
1732
|
+
) -> list[TransactionRecord]:
|
|
1763
1733
|
response = await self.fetch(
|
|
1764
1734
|
"crcat_approve_pending",
|
|
1765
1735
|
{
|
|
@@ -1821,7 +1791,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1821
1791
|
self,
|
|
1822
1792
|
args: SplitCoins,
|
|
1823
1793
|
tx_config: TXConfig,
|
|
1824
|
-
extra_conditions:
|
|
1794
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1825
1795
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1826
1796
|
) -> SplitCoinsResponse:
|
|
1827
1797
|
return SplitCoinsResponse.from_json_dict(
|
|
@@ -1834,7 +1804,7 @@ class WalletRpcClient(RpcClient):
|
|
|
1834
1804
|
self,
|
|
1835
1805
|
args: CombineCoins,
|
|
1836
1806
|
tx_config: TXConfig,
|
|
1837
|
-
extra_conditions:
|
|
1807
|
+
extra_conditions: tuple[Condition, ...] = tuple(),
|
|
1838
1808
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
1839
1809
|
) -> CombineCoinsResponse:
|
|
1840
1810
|
return CombineCoinsResponse.from_json_dict(
|