chia-blockchain 2.5.7rc4__py3-none-any.whl → 2.5.8rc1__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.
Files changed (528) hide show
  1. chia/__init__.py +8 -4
  2. chia/_tests/blockchain/blockchain_test_utils.py +6 -8
  3. chia/_tests/blockchain/test_augmented_chain.py +4 -4
  4. chia/_tests/blockchain/test_blockchain.py +165 -190
  5. chia/_tests/blockchain/test_build_chains.py +2 -4
  6. chia/_tests/blockchain/test_get_block_generator.py +2 -3
  7. chia/_tests/clvm/coin_store.py +4 -7
  8. chia/_tests/clvm/test_clvm_step.py +4 -4
  9. chia/_tests/clvm/test_puzzle_compression.py +2 -1
  10. chia/_tests/clvm/test_puzzle_drivers.py +2 -2
  11. chia/_tests/clvm/test_singletons.py +2 -4
  12. chia/_tests/clvm/test_spend_sim.py +2 -2
  13. chia/_tests/cmds/cmd_test_utils.py +27 -45
  14. chia/_tests/cmds/test_cmd_framework.py +6 -6
  15. chia/_tests/cmds/test_daemon.py +3 -3
  16. chia/_tests/cmds/test_show.py +4 -4
  17. chia/_tests/cmds/test_tx_config_args.py +1 -2
  18. chia/_tests/cmds/testing_classes.py +4 -5
  19. chia/_tests/cmds/wallet/test_did.py +24 -27
  20. chia/_tests/cmds/wallet/test_nft.py +12 -10
  21. chia/_tests/cmds/wallet/test_vcs.py +11 -12
  22. chia/_tests/cmds/wallet/test_wallet.py +134 -89
  23. chia/_tests/conftest.py +59 -30
  24. chia/_tests/connection_utils.py +2 -2
  25. chia/_tests/core/cmds/test_beta.py +4 -4
  26. chia/_tests/core/cmds/test_keys.py +2 -3
  27. chia/_tests/core/cmds/test_wallet.py +15 -15
  28. chia/_tests/core/consensus/test_pot_iterations.py +19 -73
  29. chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
  30. chia/_tests/core/daemon/test_daemon.py +11 -11
  31. chia/_tests/core/data_layer/conftest.py +2 -2
  32. chia/_tests/core/data_layer/test_data_rpc.py +28 -14
  33. chia/_tests/core/data_layer/test_data_store.py +10 -10
  34. chia/_tests/core/data_layer/util.py +11 -11
  35. chia/_tests/core/farmer/test_farmer_api.py +2 -4
  36. chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
  37. chia/_tests/core/full_node/stores/test_block_store.py +5 -4
  38. chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
  39. chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
  40. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  41. chia/_tests/core/full_node/test_block_height_map.py +3 -4
  42. chia/_tests/core/full_node/test_conditions.py +21 -23
  43. chia/_tests/core/full_node/test_full_node.py +225 -62
  44. chia/_tests/core/full_node/test_hint_management.py +2 -4
  45. chia/_tests/core/full_node/test_performance.py +0 -1
  46. chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
  47. chia/_tests/core/full_node/test_transactions.py +1 -2
  48. chia/_tests/core/full_node/test_tx_processing_queue.py +109 -25
  49. chia/_tests/core/mempool/test_mempool.py +29 -37
  50. chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
  51. chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
  52. chia/_tests/core/mempool/test_mempool_manager.py +963 -839
  53. chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
  54. chia/_tests/core/server/serve.py +7 -7
  55. chia/_tests/core/server/test_dos.py +1 -2
  56. chia/_tests/core/server/test_event_loop.py +12 -4
  57. chia/_tests/core/server/test_loop.py +7 -8
  58. chia/_tests/core/server/test_rate_limits.py +9 -8
  59. chia/_tests/core/server/test_server.py +61 -1
  60. chia/_tests/core/services/test_services.py +2 -2
  61. chia/_tests/core/ssl/test_ssl.py +2 -2
  62. chia/_tests/core/test_cost_calculation.py +2 -6
  63. chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
  64. chia/_tests/core/test_filter.py +0 -1
  65. chia/_tests/core/test_full_node_rpc.py +2 -2
  66. chia/_tests/core/test_merkle_set.py +1 -2
  67. chia/_tests/core/test_seeder.py +4 -4
  68. chia/_tests/core/util/test_config.py +4 -4
  69. chia/_tests/core/util/test_jsonify.py +2 -2
  70. chia/_tests/core/util/test_keychain.py +3 -3
  71. chia/_tests/core/util/test_lockfile.py +2 -1
  72. chia/_tests/core/util/test_log_exceptions.py +1 -2
  73. chia/_tests/core/util/test_streamable.py +17 -17
  74. chia/_tests/db/test_db_wrapper.py +3 -2
  75. chia/_tests/environments/wallet.py +14 -14
  76. chia/_tests/ether.py +4 -3
  77. chia/_tests/farmer_harvester/test_farmer.py +41 -24
  78. chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
  79. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
  80. chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
  81. chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
  82. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
  83. chia/_tests/harvester/test_harvester_api.py +11 -4
  84. chia/_tests/plot_sync/test_plot_sync.py +13 -11
  85. chia/_tests/plot_sync/test_receiver.py +11 -10
  86. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  87. chia/_tests/plot_sync/util.py +1 -2
  88. chia/_tests/plotting/test_plot_manager.py +7 -6
  89. chia/_tests/plotting/test_prover.py +30 -38
  90. chia/_tests/pools/test_pool_cmdline.py +4 -6
  91. chia/_tests/pools/test_pool_rpc.py +203 -61
  92. chia/_tests/pools/test_pool_wallet.py +3 -3
  93. chia/_tests/pools/test_wallet_pool_store.py +1 -4
  94. chia/_tests/process_junit.py +2 -2
  95. chia/_tests/rpc/test_rpc_client.py +4 -4
  96. chia/_tests/rpc/test_rpc_server.py +3 -3
  97. chia/_tests/simulation/test_simulation.py +12 -25
  98. chia/_tests/solver/test_solver_service.py +13 -4
  99. chia/_tests/testconfig.py +2 -2
  100. chia/_tests/timelord/test_new_peak.py +22 -11
  101. chia/_tests/tools/test_run_block.py +0 -2
  102. chia/_tests/tools/test_virtual_project.py +2 -1
  103. chia/_tests/util/benchmarks.py +1 -0
  104. chia/_tests/util/blockchain.py +38 -36
  105. chia/_tests/util/blockchain_mock.py +11 -11
  106. chia/_tests/util/build_network_protocol_files.py +2 -1
  107. chia/_tests/util/coin_store.py +2 -1
  108. chia/_tests/util/config.py +1 -1
  109. chia/_tests/util/db_connection.py +2 -3
  110. chia/_tests/util/full_sync.py +9 -11
  111. chia/_tests/util/gen_ssl_certs.py +4 -5
  112. chia/_tests/util/get_name_puzzle_conditions.py +2 -0
  113. chia/_tests/util/misc.py +24 -24
  114. chia/_tests/util/network_protocol_data.py +20 -3
  115. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  116. chia/_tests/util/protocol_messages_json.py +292 -3
  117. chia/_tests/util/setup_nodes.py +62 -47
  118. chia/_tests/util/spend_sim.py +57 -57
  119. chia/_tests/util/test_async_pool.py +2 -3
  120. chia/_tests/util/test_chia_version.py +1 -3
  121. chia/_tests/util/test_config.py +3 -3
  122. chia/_tests/util/test_full_block_utils.py +6 -3
  123. chia/_tests/util/test_limited_semaphore.py +1 -2
  124. chia/_tests/util/test_misc.py +2 -2
  125. chia/_tests/util/test_network.py +1 -2
  126. chia/_tests/util/test_priority_mutex.py +3 -3
  127. chia/_tests/util/test_recursive_replace.py +5 -6
  128. chia/_tests/util/test_replace_str_to_bytes.py +8 -10
  129. chia/_tests/util/test_testnet_overrides.py +3 -3
  130. chia/_tests/util/time_out_assert.py +2 -2
  131. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
  132. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
  133. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
  134. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
  135. chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
  136. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
  137. chia/_tests/wallet/conftest.py +6 -6
  138. chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
  139. chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
  140. chia/_tests/wallet/did_wallet/test_did.py +16 -6
  141. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
  142. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
  143. chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
  144. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
  145. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
  146. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
  147. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
  148. chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
  149. chia/_tests/wallet/sync/test_wallet_sync.py +43 -47
  150. chia/_tests/wallet/test_clvm_streamable.py +2 -3
  151. chia/_tests/wallet/test_coin_management.py +2 -2
  152. chia/_tests/wallet/test_conditions.py +45 -51
  153. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  154. chia/_tests/wallet/test_new_wallet_protocol.py +4 -6
  155. chia/_tests/wallet/test_notifications.py +14 -14
  156. chia/_tests/wallet/test_signer_protocol.py +5 -5
  157. chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
  158. chia/_tests/wallet/test_transaction_store.py +20 -20
  159. chia/_tests/wallet/test_util.py +2 -2
  160. chia/_tests/wallet/test_wallet.py +380 -228
  161. chia/_tests/wallet/test_wallet_action_scope.py +4 -4
  162. chia/_tests/wallet/test_wallet_blockchain.py +12 -12
  163. chia/_tests/wallet/test_wallet_coin_store.py +3 -4
  164. chia/_tests/wallet/test_wallet_node.py +14 -14
  165. chia/_tests/wallet/test_wallet_test_framework.py +2 -1
  166. chia/_tests/wallet/test_wallet_utils.py +2 -3
  167. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
  168. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
  169. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
  170. chia/_tests/wallet/wallet_block_tools.py +12 -11
  171. chia/_tests/weight_proof/config.py +1 -0
  172. chia/_tests/weight_proof/test_weight_proof.py +5 -4
  173. chia/apis/__init__.py +21 -0
  174. chia/apis/farmer_stub.py +102 -0
  175. chia/apis/full_node_stub.py +372 -0
  176. chia/apis/harvester_stub.py +57 -0
  177. chia/apis/introducer_stub.py +35 -0
  178. chia/apis/solver_stub.py +30 -0
  179. chia/apis/stub_protocol_registry.py +21 -0
  180. chia/apis/timelord_stub.py +39 -0
  181. chia/apis/wallet_stub.py +161 -0
  182. chia/cmds/beta.py +3 -4
  183. chia/cmds/beta_funcs.py +4 -3
  184. chia/cmds/check_wallet_db.py +4 -4
  185. chia/cmds/chia.py +1 -2
  186. chia/cmds/cmd_classes.py +11 -13
  187. chia/cmds/cmd_helpers.py +11 -11
  188. chia/cmds/cmds_util.py +15 -15
  189. chia/cmds/coin_funcs.py +6 -7
  190. chia/cmds/coins.py +2 -3
  191. chia/cmds/configure.py +1 -2
  192. chia/cmds/data.py +42 -42
  193. chia/cmds/data_funcs.py +81 -81
  194. chia/cmds/db.py +4 -5
  195. chia/cmds/db_backup_func.py +2 -2
  196. chia/cmds/db_upgrade_func.py +3 -3
  197. chia/cmds/db_validate_func.py +2 -2
  198. chia/cmds/dev/data.py +4 -4
  199. chia/cmds/dev/gh.py +5 -5
  200. chia/cmds/dev/installers.py +2 -3
  201. chia/cmds/dev/mempool.py +3 -4
  202. chia/cmds/dev/mempool_funcs.py +4 -4
  203. chia/cmds/dev/sim.py +8 -8
  204. chia/cmds/dump_keyring.py +3 -3
  205. chia/cmds/farm.py +6 -8
  206. chia/cmds/farm_funcs.py +25 -24
  207. chia/cmds/init_funcs.py +4 -4
  208. chia/cmds/keys.py +16 -18
  209. chia/cmds/keys_funcs.py +36 -36
  210. chia/cmds/netspace.py +1 -3
  211. chia/cmds/netspace_funcs.py +1 -2
  212. chia/cmds/options.py +3 -2
  213. chia/cmds/param_types.py +17 -16
  214. chia/cmds/passphrase.py +6 -7
  215. chia/cmds/passphrase_funcs.py +11 -13
  216. chia/cmds/peer.py +1 -3
  217. chia/cmds/peer_funcs.py +3 -3
  218. chia/cmds/plotnft.py +6 -7
  219. chia/cmds/plotnft_funcs.py +37 -26
  220. chia/cmds/rpc.py +3 -3
  221. chia/cmds/show.py +3 -5
  222. chia/cmds/show_funcs.py +9 -9
  223. chia/cmds/sim_funcs.py +25 -26
  224. chia/cmds/solver.py +1 -3
  225. chia/cmds/solver_funcs.py +1 -2
  226. chia/cmds/start_funcs.py +2 -2
  227. chia/cmds/wallet.py +76 -81
  228. chia/cmds/wallet_funcs.py +206 -177
  229. chia/consensus/augmented_chain.py +6 -6
  230. chia/consensus/block_body_validation.py +19 -15
  231. chia/consensus/block_creation.py +25 -21
  232. chia/consensus/block_header_validation.py +27 -13
  233. chia/consensus/block_height_map.py +3 -6
  234. chia/consensus/block_height_map_protocol.py +2 -2
  235. chia/consensus/block_record.py +2 -4
  236. chia/consensus/blockchain.py +58 -40
  237. chia/consensus/blockchain_interface.py +7 -7
  238. chia/consensus/coin_store_protocol.py +5 -6
  239. chia/consensus/condition_tools.py +4 -4
  240. chia/consensus/cost_calculator.py +2 -3
  241. chia/consensus/default_constants.py +16 -13
  242. chia/consensus/deficit.py +1 -3
  243. chia/consensus/difficulty_adjustment.py +3 -5
  244. chia/consensus/find_fork_point.py +2 -4
  245. chia/consensus/full_block_to_block_record.py +11 -13
  246. chia/consensus/generator_tools.py +2 -3
  247. chia/consensus/get_block_challenge.py +42 -26
  248. chia/consensus/get_block_generator.py +2 -3
  249. chia/consensus/make_sub_epoch_summary.py +8 -7
  250. chia/consensus/multiprocess_validation.py +31 -20
  251. chia/consensus/pos_quality.py +6 -23
  252. chia/consensus/pot_iterations.py +17 -44
  253. chia/consensus/signage_point.py +4 -5
  254. chia/consensus/vdf_info_computation.py +2 -4
  255. chia/daemon/client.py +8 -8
  256. chia/daemon/keychain_proxy.py +31 -37
  257. chia/daemon/server.py +32 -33
  258. chia/daemon/windows_signal.py +4 -3
  259. chia/data_layer/data_layer.py +86 -77
  260. chia/data_layer/data_layer_rpc_api.py +9 -9
  261. chia/data_layer/data_layer_rpc_client.py +13 -15
  262. chia/data_layer/data_layer_server.py +3 -3
  263. chia/data_layer/data_layer_util.py +14 -14
  264. chia/data_layer/data_layer_wallet.py +94 -101
  265. chia/data_layer/data_store.py +50 -50
  266. chia/data_layer/dl_wallet_store.py +9 -12
  267. chia/data_layer/download_data.py +8 -9
  268. chia/data_layer/s3_plugin_service.py +5 -9
  269. chia/data_layer/start_data_layer.py +5 -5
  270. chia/farmer/farmer.py +31 -31
  271. chia/farmer/farmer_api.py +45 -33
  272. chia/farmer/farmer_rpc_api.py +5 -4
  273. chia/farmer/farmer_rpc_client.py +6 -6
  274. chia/farmer/start_farmer.py +6 -6
  275. chia/full_node/block_store.py +13 -16
  276. chia/full_node/check_fork_next_block.py +1 -2
  277. chia/full_node/coin_store.py +15 -16
  278. chia/full_node/eligible_coin_spends.py +3 -3
  279. chia/full_node/fee_estimate_store.py +2 -3
  280. chia/full_node/fee_tracker.py +1 -2
  281. chia/full_node/full_block_utils.py +4 -4
  282. chia/full_node/full_node.py +238 -224
  283. chia/full_node/full_node_api.py +193 -150
  284. chia/full_node/full_node_rpc_api.py +53 -31
  285. chia/full_node/full_node_rpc_client.py +18 -19
  286. chia/full_node/full_node_store.py +45 -43
  287. chia/full_node/hint_management.py +2 -2
  288. chia/full_node/mempool.py +17 -19
  289. chia/full_node/mempool_manager.py +89 -42
  290. chia/full_node/pending_tx_cache.py +2 -3
  291. chia/full_node/start_full_node.py +5 -5
  292. chia/full_node/sync_store.py +3 -4
  293. chia/full_node/tx_processing_queue.py +34 -13
  294. chia/full_node/weight_proof.py +61 -48
  295. chia/harvester/harvester.py +25 -24
  296. chia/harvester/harvester_api.py +61 -38
  297. chia/harvester/harvester_rpc_api.py +10 -10
  298. chia/harvester/start_harvester.py +4 -4
  299. chia/introducer/introducer.py +3 -3
  300. chia/introducer/introducer_api.py +6 -4
  301. chia/introducer/start_introducer.py +4 -4
  302. chia/legacy/keyring.py +3 -3
  303. chia/plot_sync/delta.py +1 -2
  304. chia/plot_sync/receiver.py +20 -17
  305. chia/plot_sync/sender.py +15 -10
  306. chia/plotters/bladebit.py +7 -7
  307. chia/plotters/chiapos.py +2 -2
  308. chia/plotters/madmax.py +4 -4
  309. chia/plotters/plotters.py +4 -4
  310. chia/plotters/plotters_util.py +3 -3
  311. chia/plotting/cache.py +20 -14
  312. chia/plotting/check_plots.py +26 -35
  313. chia/plotting/create_plots.py +22 -23
  314. chia/plotting/manager.py +21 -14
  315. chia/plotting/prover.py +59 -42
  316. chia/plotting/util.py +16 -16
  317. chia/pools/pool_config.py +2 -1
  318. chia/pools/pool_puzzles.py +11 -12
  319. chia/pools/pool_wallet.py +34 -57
  320. chia/pools/pool_wallet_info.py +39 -10
  321. chia/protocols/farmer_protocol.py +8 -9
  322. chia/protocols/fee_estimate.py +3 -4
  323. chia/protocols/full_node_protocol.py +3 -4
  324. chia/protocols/harvester_protocol.py +27 -15
  325. chia/protocols/outbound_message.py +3 -3
  326. chia/protocols/pool_protocol.py +8 -9
  327. chia/protocols/shared_protocol.py +1 -2
  328. chia/protocols/solver_protocol.py +9 -2
  329. chia/protocols/timelord_protocol.py +4 -7
  330. chia/protocols/wallet_protocol.py +11 -12
  331. chia/rpc/rpc_client.py +9 -9
  332. chia/rpc/rpc_server.py +17 -17
  333. chia/rpc/util.py +2 -2
  334. chia/seeder/crawler.py +8 -8
  335. chia/seeder/crawler_api.py +21 -27
  336. chia/seeder/crawler_rpc_api.py +2 -2
  337. chia/seeder/dns_server.py +21 -21
  338. chia/seeder/start_crawler.py +4 -4
  339. chia/server/address_manager.py +15 -16
  340. chia/server/api_protocol.py +11 -11
  341. chia/server/chia_policy.py +46 -26
  342. chia/server/introducer_peers.py +2 -3
  343. chia/server/node_discovery.py +19 -19
  344. chia/server/rate_limit_numbers.py +4 -5
  345. chia/server/rate_limits.py +4 -4
  346. chia/server/resolve_peer_info.py +4 -4
  347. chia/server/server.py +49 -52
  348. chia/server/signal_handlers.py +6 -6
  349. chia/server/start_service.py +17 -17
  350. chia/server/upnp.py +4 -6
  351. chia/server/ws_connection.py +52 -37
  352. chia/simulator/add_blocks_in_batches.py +1 -3
  353. chia/simulator/block_tools.py +312 -200
  354. chia/simulator/full_node_simulator.py +56 -35
  355. chia/simulator/keyring.py +2 -3
  356. chia/simulator/setup_services.py +15 -15
  357. chia/simulator/simulator_full_node_rpc_api.py +1 -2
  358. chia/simulator/simulator_full_node_rpc_client.py +1 -2
  359. chia/simulator/simulator_protocol.py +1 -2
  360. chia/simulator/simulator_test_tools.py +3 -3
  361. chia/simulator/start_simulator.py +7 -7
  362. chia/simulator/wallet_tools.py +10 -10
  363. chia/solver/solver.py +10 -10
  364. chia/solver/solver_api.py +10 -8
  365. chia/solver/solver_rpc_api.py +2 -2
  366. chia/solver/start_solver.py +4 -4
  367. chia/ssl/cacert.pem +148 -90
  368. chia/ssl/chia_ca.crt +14 -10
  369. chia/ssl/chia_ca_old.crt +19 -0
  370. chia/ssl/create_ssl.py +4 -4
  371. chia/ssl/renewedselfsignedca.conf +4 -0
  372. chia/ssl/ssl_check.py +1 -2
  373. chia/timelord/iters_from_block.py +1 -4
  374. chia/timelord/start_timelord.py +4 -4
  375. chia/timelord/timelord.py +44 -40
  376. chia/timelord/timelord_api.py +6 -4
  377. chia/timelord/timelord_launcher.py +2 -2
  378. chia/timelord/timelord_rpc_api.py +2 -2
  379. chia/timelord/timelord_state.py +11 -12
  380. chia/types/block_protocol.py +1 -3
  381. chia/types/blockchain_format/coin.py +1 -3
  382. chia/types/blockchain_format/program.py +11 -8
  383. chia/types/blockchain_format/proof_of_space.py +123 -76
  384. chia/types/blockchain_format/tree_hash.py +3 -3
  385. chia/types/blockchain_format/vdf.py +1 -2
  386. chia/types/coin_spend.py +3 -3
  387. chia/types/mempool_item.py +5 -5
  388. chia/types/mempool_submission_status.py +2 -3
  389. chia/types/peer_info.py +1 -2
  390. chia/types/unfinished_header_block.py +3 -4
  391. chia/types/validation_state.py +1 -2
  392. chia/util/action_scope.py +8 -8
  393. chia/util/async_pool.py +5 -5
  394. chia/util/bech32m.py +1 -2
  395. chia/util/beta_metrics.py +2 -2
  396. chia/util/block_cache.py +4 -4
  397. chia/util/chia_logging.py +2 -2
  398. chia/util/chia_version.py +1 -2
  399. chia/util/config.py +15 -16
  400. chia/util/db_wrapper.py +26 -27
  401. chia/util/default_root.py +1 -2
  402. chia/util/errors.py +3 -3
  403. chia/util/file_keyring.py +14 -14
  404. chia/util/files.py +2 -3
  405. chia/util/hash.py +4 -4
  406. chia/util/initial-config.yaml +3 -5
  407. chia/util/inline_executor.py +2 -1
  408. chia/util/ip_address.py +1 -2
  409. chia/util/keychain.py +25 -27
  410. chia/util/keyring_wrapper.py +18 -19
  411. chia/util/lock.py +3 -4
  412. chia/util/log_exceptions.py +1 -2
  413. chia/util/lru_cache.py +2 -2
  414. chia/util/network.py +6 -6
  415. chia/util/path.py +2 -3
  416. chia/util/priority_mutex.py +2 -2
  417. chia/util/profiler.py +1 -2
  418. chia/util/safe_cancel_task.py +1 -2
  419. chia/util/streamable.py +22 -8
  420. chia/util/task_referencer.py +1 -1
  421. chia/util/timing.py +3 -3
  422. chia/util/virtual_project_analysis.py +6 -5
  423. chia/util/ws_message.py +2 -2
  424. chia/wallet/cat_wallet/cat_info.py +3 -4
  425. chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
  426. chia/wallet/cat_wallet/cat_utils.py +3 -4
  427. chia/wallet/cat_wallet/cat_wallet.py +61 -83
  428. chia/wallet/cat_wallet/lineage_store.py +3 -4
  429. chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
  430. chia/wallet/coin_selection.py +9 -10
  431. chia/wallet/conditions.py +120 -105
  432. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
  433. chia/wallet/derivation_record.py +1 -2
  434. chia/wallet/derive_keys.py +2 -4
  435. chia/wallet/did_wallet/did_info.py +10 -11
  436. chia/wallet/did_wallet/did_wallet.py +36 -82
  437. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
  438. chia/wallet/driver_protocol.py +5 -7
  439. chia/wallet/lineage_proof.py +4 -4
  440. chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
  441. chia/wallet/nft_wallet/nft_info.py +8 -9
  442. chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
  443. chia/wallet/nft_wallet/nft_wallet.py +79 -116
  444. chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
  445. chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
  446. chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
  447. chia/wallet/nft_wallet/uncurry_nft.py +10 -11
  448. chia/wallet/notification_manager.py +3 -3
  449. chia/wallet/notification_store.py +44 -61
  450. chia/wallet/outer_puzzles.py +6 -7
  451. chia/wallet/puzzle_drivers.py +34 -6
  452. chia/wallet/puzzles/clawback/drivers.py +6 -6
  453. chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
  454. chia/wallet/puzzles/load_clvm.py +1 -1
  455. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
  456. chia/wallet/puzzles/singleton_top_layer.py +2 -3
  457. chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
  458. chia/wallet/puzzles/tails.py +3 -3
  459. chia/wallet/singleton.py +5 -7
  460. chia/wallet/singleton_record.py +3 -3
  461. chia/wallet/start_wallet.py +5 -5
  462. chia/wallet/trade_manager.py +37 -58
  463. chia/wallet/trade_record.py +4 -4
  464. chia/wallet/trading/offer.py +59 -46
  465. chia/wallet/trading/trade_store.py +8 -9
  466. chia/wallet/transaction_record.py +8 -8
  467. chia/wallet/uncurried_puzzle.py +1 -2
  468. chia/wallet/util/clvm_streamable.py +12 -12
  469. chia/wallet/util/compute_hints.py +4 -5
  470. chia/wallet/util/curry_and_treehash.py +1 -2
  471. chia/wallet/util/merkle_tree.py +2 -3
  472. chia/wallet/util/peer_request_cache.py +8 -8
  473. chia/wallet/util/signing.py +85 -0
  474. chia/wallet/util/tx_config.py +15 -6
  475. chia/wallet/util/wallet_sync_utils.py +14 -16
  476. chia/wallet/util/wallet_types.py +2 -2
  477. chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
  478. chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
  479. chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
  480. chia/wallet/vc_wallet/vc_drivers.py +27 -27
  481. chia/wallet/vc_wallet/vc_store.py +5 -6
  482. chia/wallet/vc_wallet/vc_wallet.py +33 -61
  483. chia/wallet/wallet.py +50 -78
  484. chia/wallet/wallet_action_scope.py +11 -11
  485. chia/wallet/wallet_blockchain.py +12 -12
  486. chia/wallet/wallet_coin_record.py +12 -6
  487. chia/wallet/wallet_coin_store.py +24 -25
  488. chia/wallet/wallet_interested_store.py +3 -5
  489. chia/wallet/wallet_nft_store.py +10 -11
  490. chia/wallet/wallet_node.py +53 -61
  491. chia/wallet/wallet_node_api.py +5 -3
  492. chia/wallet/wallet_protocol.py +23 -23
  493. chia/wallet/wallet_puzzle_store.py +15 -18
  494. chia/wallet/wallet_request_types.py +778 -114
  495. chia/wallet/wallet_retry_store.py +1 -3
  496. chia/wallet/wallet_rpc_api.py +572 -909
  497. chia/wallet/wallet_rpc_client.py +87 -279
  498. chia/wallet/wallet_singleton_store.py +3 -4
  499. chia/wallet/wallet_state_manager.py +332 -106
  500. chia/wallet/wallet_transaction_store.py +11 -14
  501. chia/wallet/wallet_user_store.py +4 -6
  502. chia/wallet/wallet_weight_proof_handler.py +4 -4
  503. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/METADATA +6 -5
  504. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/RECORD +507 -516
  505. chia/apis.py +0 -21
  506. chia/consensus/check_time_locks.py +0 -57
  507. chia/data_layer/puzzles/__init__.py +0 -0
  508. chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
  509. chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
  510. chia/types/coin_record.py +0 -44
  511. chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
  512. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
  513. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
  514. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
  515. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
  516. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
  517. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
  518. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
  519. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
  520. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
  521. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
  522. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
  523. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
  524. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
  525. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
  526. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/WHEEL +0 -0
  527. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/entry_points.txt +0 -0
  528. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/licenses/LICENSE +0 -0
@@ -1,17 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, Optional, Union
4
-
5
- from chia_rs.sized_bytes import bytes32
6
- from chia_rs.sized_ints import uint32, uint64
3
+ from typing import Any
7
4
 
8
5
  from chia.data_layer.data_layer_util import DLProof, VerifyProofResponse
9
6
  from chia.rpc.rpc_client import RpcClient
10
- from chia.types.blockchain_format.coin import Coin
11
- from chia.wallet.conditions import Condition, ConditionValidTimes, conditions_to_json_dicts
7
+ from chia.wallet.conditions import Condition, ConditionValidTimes
12
8
  from chia.wallet.puzzles.clawback.metadata import AutoClaimSettings
13
- from chia.wallet.trade_record import TradeRecord
14
- from chia.wallet.trading.offer import Offer
15
9
  from chia.wallet.transaction_record import TransactionRecord
16
10
  from chia.wallet.util.clvm_streamable import json_deserialize_with_clvm_streamable
17
11
  from chia.wallet.util.tx_config import TXConfig
@@ -21,7 +15,9 @@ from chia.wallet.wallet_request_types import (
21
15
  AddKeyResponse,
22
16
  ApplySignatures,
23
17
  ApplySignaturesResponse,
18
+ CancelOffer,
24
19
  CancelOfferResponse,
20
+ CancelOffers,
25
21
  CancelOffersResponse,
26
22
  CATAssetIDToName,
27
23
  CATAssetIDToNameResponse,
@@ -39,9 +35,15 @@ from chia.wallet.wallet_request_types import (
39
35
  CheckOfferValidityResponse,
40
36
  CombineCoins,
41
37
  CombineCoinsResponse,
38
+ CRCATApprovePending,
39
+ CRCATApprovePendingResponse,
42
40
  CreateNewDL,
43
41
  CreateNewDLResponse,
42
+ CreateNewWallet,
43
+ CreateNewWalletResponse,
44
+ CreateOfferForIDs,
44
45
  CreateOfferForIDsResponse,
46
+ CreateSignedTransaction,
45
47
  CreateSignedTransactionsResponse,
46
48
  DeleteKey,
47
49
  DeleteNotifications,
@@ -96,17 +98,25 @@ from chia.wallet.wallet_request_types import (
96
98
  GatherSigningInfo,
97
99
  GatherSigningInfoResponse,
98
100
  GenerateMnemonicResponse,
101
+ GetAllOffers,
102
+ GetAllOffersResponse,
99
103
  GetCATListResponse,
100
104
  GetCoinRecordsByNames,
101
105
  GetCoinRecordsByNamesResponse,
102
106
  GetCurrentDerivationIndexResponse,
107
+ GetFarmedAmount,
108
+ GetFarmedAmountResponse,
103
109
  GetHeightInfoResponse,
104
110
  GetLoggedInFingerprintResponse,
105
111
  GetNextAddress,
106
112
  GetNextAddressResponse,
107
113
  GetNotifications,
108
114
  GetNotificationsResponse,
115
+ GetOffer,
116
+ GetOfferResponse,
109
117
  GetOffersCountResponse,
118
+ GetOfferSummary,
119
+ GetOfferSummaryResponse,
110
120
  GetPrivateKey,
111
121
  GetPrivateKeyResponse,
112
122
  GetPublicKeysResponse,
@@ -176,6 +186,7 @@ from chia.wallet.wallet_request_types import (
176
186
  SendNotification,
177
187
  SendNotificationResponse,
178
188
  SendTransaction,
189
+ SendTransactionMulti,
179
190
  SendTransactionMultiResponse,
180
191
  SendTransactionResponse,
181
192
  SetWalletResyncOnStartup,
@@ -189,6 +200,7 @@ from chia.wallet.wallet_request_types import (
189
200
  SplitCoinsResponse,
190
201
  SubmitTransactions,
191
202
  SubmitTransactionsResponse,
203
+ TakeOffer,
192
204
  TakeOfferResponse,
193
205
  VCAddProofs,
194
206
  VCGet,
@@ -315,6 +327,20 @@ class WalletRpcClient(RpcClient):
315
327
  async def get_next_address(self, request: GetNextAddress) -> GetNextAddressResponse:
316
328
  return GetNextAddressResponse.from_json_dict(await self.fetch("get_next_address", request.to_json_dict()))
317
329
 
330
+ async def create_new_wallet(
331
+ self,
332
+ request: CreateNewWallet,
333
+ tx_config: TXConfig,
334
+ extra_conditions: tuple[Condition, ...] = tuple(),
335
+ timelock_info: ConditionValidTimes = ConditionValidTimes(),
336
+ ) -> CreateNewWalletResponse:
337
+ return CreateNewWalletResponse.from_json_dict(
338
+ await self.fetch(
339
+ "create_new_wallet",
340
+ request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info),
341
+ )
342
+ )
343
+
318
344
  async def send_transaction(
319
345
  self,
320
346
  request: SendTransaction,
@@ -331,33 +357,17 @@ class WalletRpcClient(RpcClient):
331
357
 
332
358
  async def send_transaction_multi(
333
359
  self,
334
- wallet_id: int,
335
- additions: list[dict[str, Any]],
360
+ request: SendTransactionMulti,
336
361
  tx_config: TXConfig,
337
- coins: Optional[list[Coin]] = None,
338
- fee: uint64 = uint64(0),
339
- push: bool = True,
362
+ extra_conditions: tuple[Condition, ...] = tuple(),
340
363
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
341
364
  ) -> SendTransactionMultiResponse:
342
- # Converts bytes to hex for puzzle hashes
343
- additions_hex = []
344
- for ad in additions:
345
- additions_hex.append({"amount": ad["amount"], "puzzle_hash": ad["puzzle_hash"].hex()})
346
- if "memos" in ad:
347
- additions_hex[-1]["memos"] = ad["memos"]
348
- request = {
349
- "wallet_id": wallet_id,
350
- "additions": additions_hex,
351
- "fee": fee,
352
- "push": push,
353
- **tx_config.to_json_dict(),
354
- **timelock_info.to_json_dict(),
355
- }
356
- if coins is not None and len(coins) > 0:
357
- coins_json = [c.to_json_dict() for c in coins]
358
- request["coins"] = coins_json
359
- response = await self.fetch("send_transaction_multi", request)
360
- return json_deserialize_with_clvm_streamable(response, SendTransactionMultiResponse)
365
+ return SendTransactionMultiResponse.from_json_dict(
366
+ await self.fetch(
367
+ "send_transaction_multi",
368
+ request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info),
369
+ )
370
+ )
361
371
 
362
372
  async def spend_clawback_coins(
363
373
  self,
@@ -383,45 +393,22 @@ class WalletRpcClient(RpcClient):
383
393
  await self.fetch("extend_derivation_index", request.to_json_dict())
384
394
  )
385
395
 
386
- async def get_farmed_amount(self, include_pool_rewards: bool = False) -> dict[str, Any]:
387
- return await self.fetch("get_farmed_amount", {"include_pool_rewards": include_pool_rewards})
396
+ async def get_farmed_amount(self, request: GetFarmedAmount) -> GetFarmedAmountResponse:
397
+ return GetFarmedAmountResponse.from_json_dict(await self.fetch("get_farmed_amount", request.to_json_dict()))
388
398
 
389
399
  async def create_signed_transactions(
390
400
  self,
391
- additions: list[dict[str, Any]],
401
+ request: CreateSignedTransaction,
392
402
  tx_config: TXConfig,
393
- coins: Optional[list[Coin]] = None,
394
- fee: uint64 = uint64(0),
395
- wallet_id: Optional[int] = None,
396
403
  extra_conditions: tuple[Condition, ...] = tuple(),
397
404
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
398
- push: bool = False,
399
405
  ) -> CreateSignedTransactionsResponse:
400
- # Converts bytes to hex for puzzle hashes
401
- additions_hex = []
402
- for ad in additions:
403
- additions_hex.append({"amount": ad["amount"], "puzzle_hash": ad["puzzle_hash"].hex()})
404
- if "memos" in ad:
405
- additions_hex[-1]["memos"] = ad["memos"]
406
-
407
- request = {
408
- "additions": additions_hex,
409
- "fee": fee,
410
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
411
- "push": push,
412
- **tx_config.to_json_dict(),
413
- **timelock_info.to_json_dict(),
414
- }
415
-
416
- if coins is not None and len(coins) > 0:
417
- coins_json = [c.to_json_dict() for c in coins]
418
- request["coins"] = coins_json
419
-
420
- if wallet_id:
421
- request["wallet_id"] = wallet_id
422
-
423
- response = await self.fetch("create_signed_transaction", request)
424
- return json_deserialize_with_clvm_streamable(response, CreateSignedTransactionsResponse)
406
+ return CreateSignedTransactionsResponse.from_json_dict(
407
+ await self.fetch(
408
+ "create_signed_transaction",
409
+ request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info),
410
+ )
411
+ )
425
412
 
426
413
  async def select_coins(self, request: SelectCoins) -> SelectCoinsResponse:
427
414
  return SelectCoinsResponse.from_json_dict(await self.fetch("select_coins", request.to_json_dict()))
@@ -438,37 +425,6 @@ class WalletRpcClient(RpcClient):
438
425
  )
439
426
 
440
427
  # DID wallet
441
- async def create_new_did_wallet(
442
- self,
443
- amount: int,
444
- tx_config: TXConfig,
445
- fee: int = 0,
446
- name: Optional[str] = "DID Wallet",
447
- backup_ids: list[str] = [],
448
- required_num: int = 0,
449
- type: str = "new",
450
- backup_data: str = "",
451
- push: bool = True,
452
- extra_conditions: tuple[Condition, ...] = tuple(),
453
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
454
- ) -> dict[str, Any]:
455
- request = {
456
- "wallet_type": "did_wallet",
457
- "did_type": type,
458
- "backup_dids": backup_ids,
459
- "num_of_backup_ids_needed": required_num,
460
- "amount": amount,
461
- "fee": fee,
462
- "wallet_name": name,
463
- "push": push,
464
- "backup_data": backup_data,
465
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
466
- **tx_config.to_json_dict(),
467
- **timelock_info.to_json_dict(),
468
- }
469
- response = await self.fetch("create_new_wallet", request)
470
- return response
471
-
472
428
  async def get_did_id(self, request: DIDGetDID) -> DIDGetDIDResponse:
473
429
  return DIDGetDIDResponse.from_json_dict(await self.fetch("did_get_did", request.to_json_dict()))
474
430
 
@@ -547,41 +503,6 @@ class WalletRpcClient(RpcClient):
547
503
  async def did_get_wallet_name(self, request: DIDGetWalletName) -> DIDGetWalletNameResponse:
548
504
  return DIDGetWalletNameResponse.from_json_dict(await self.fetch("did_get_wallet_name", request.to_json_dict()))
549
505
 
550
- # TODO: test all invocations of create_new_pool_wallet with new fee arg.
551
- async def create_new_pool_wallet(
552
- self,
553
- target_puzzlehash: Optional[bytes32],
554
- pool_url: Optional[str],
555
- relative_lock_height: uint32,
556
- backup_host: str,
557
- mode: str,
558
- state: str,
559
- fee: uint64,
560
- p2_singleton_delay_time: Optional[uint64] = None,
561
- p2_singleton_delayed_ph: Optional[bytes32] = None,
562
- extra_conditions: tuple[Condition, ...] = tuple(),
563
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
564
- ) -> TransactionRecord:
565
- request = {
566
- "wallet_type": "pool_wallet",
567
- "mode": mode,
568
- "initial_target_state": {
569
- "target_puzzle_hash": target_puzzlehash.hex() if target_puzzlehash else None,
570
- "relative_lock_height": relative_lock_height,
571
- "pool_url": pool_url,
572
- "state": state,
573
- },
574
- "fee": fee,
575
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
576
- **timelock_info.to_json_dict(),
577
- }
578
- if p2_singleton_delay_time is not None:
579
- request["p2_singleton_delay_time"] = p2_singleton_delay_time
580
- if p2_singleton_delayed_ph is not None:
581
- request["p2_singleton_delayed_ph"] = p2_singleton_delayed_ph.hex()
582
- res = await self.fetch("create_new_wallet", request)
583
- return TransactionRecord.from_json_dict(res["transaction"])
584
-
585
506
  async def pw_self_pool(
586
507
  self,
587
508
  request: PWSelfPool,
@@ -625,16 +546,6 @@ class WalletRpcClient(RpcClient):
625
546
  return PWStatusResponse.from_json_dict(await self.fetch("pw_status", request.to_json_dict()))
626
547
 
627
548
  # CATS
628
- async def create_new_cat_and_wallet(
629
- self, amount: uint64, fee: uint64 = uint64(0), test: bool = False
630
- ) -> dict[str, Any]:
631
- request = {"wallet_type": "cat_wallet", "mode": "new", "amount": amount, "fee": fee, "test": test}
632
- return await self.fetch("create_new_wallet", request)
633
-
634
- async def create_wallet_for_existing_cat(self, asset_id: bytes) -> dict[str, Any]:
635
- request = {"wallet_type": "cat_wallet", "asset_id": asset_id.hex(), "mode": "existing"}
636
- return await self.fetch("create_new_wallet", request)
637
-
638
549
  async def get_cat_asset_id(self, request: CATGetAssetID) -> CATGetAssetIDResponse:
639
550
  return CATGetAssetIDResponse.from_json_dict(await self.fetch("cat_get_asset_id", request.to_json_dict()))
640
551
 
@@ -666,37 +577,19 @@ class WalletRpcClient(RpcClient):
666
577
  # Offers
667
578
  async def create_offer_for_ids(
668
579
  self,
669
- offer_dict: dict[Union[uint32, str], int],
580
+ request: CreateOfferForIDs,
670
581
  tx_config: TXConfig,
671
- driver_dict: Optional[dict[str, Any]] = None,
672
- solver: Optional[dict[str, Any]] = None,
673
- fee: int = 0,
674
- validate_only: bool = False,
675
582
  extra_conditions: tuple[Condition, ...] = tuple(),
676
583
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
677
584
  ) -> CreateOfferForIDsResponse:
678
- send_dict: dict[str, int] = {str(key): value for key, value in offer_dict.items()}
679
-
680
- req = {
681
- "offer": send_dict,
682
- "validate_only": validate_only,
683
- "fee": fee,
684
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
685
- **tx_config.to_json_dict(),
686
- **timelock_info.to_json_dict(),
687
- }
688
- if driver_dict is not None:
689
- req["driver_dict"] = driver_dict
690
- if solver is not None:
691
- req["solver"] = solver
692
- res = await self.fetch("create_offer_for_ids", req)
693
- return json_deserialize_with_clvm_streamable(res, CreateOfferForIDsResponse)
694
-
695
- async def get_offer_summary(
696
- self, offer: Offer, advanced: bool = False
697
- ) -> tuple[bytes32, dict[str, dict[str, int]]]:
698
- res = await self.fetch("get_offer_summary", {"offer": offer.to_bech32(), "advanced": advanced})
699
- return bytes32.from_hexstr(res["id"]), res["summary"]
585
+ return CreateOfferForIDsResponse.from_json_dict(
586
+ await self.fetch(
587
+ "create_offer_for_ids", request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info)
588
+ )
589
+ )
590
+
591
+ async def get_offer_summary(self, request: GetOfferSummary) -> GetOfferSummaryResponse:
592
+ return GetOfferSummaryResponse.from_json_dict(await self.fetch("get_offer_summary", request.to_json_dict()))
700
593
 
701
594
  async def check_offer_validity(self, request: CheckOfferValidity) -> CheckOfferValidityResponse:
702
595
  return CheckOfferValidityResponse.from_json_dict(
@@ -705,133 +598,56 @@ class WalletRpcClient(RpcClient):
705
598
 
706
599
  async def take_offer(
707
600
  self,
708
- offer: Offer,
601
+ request: TakeOffer,
709
602
  tx_config: TXConfig,
710
- solver: Optional[dict[str, Any]] = None,
711
- fee: int = 0,
712
603
  extra_conditions: tuple[Condition, ...] = tuple(),
713
604
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
714
- push: bool = True,
715
605
  ) -> TakeOfferResponse:
716
- req = {
717
- "offer": offer.to_bech32(),
718
- "fee": fee,
719
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
720
- "push": push,
721
- **tx_config.to_json_dict(),
722
- **timelock_info.to_json_dict(),
723
- }
724
- if solver is not None:
725
- req["solver"] = solver
726
- res = await self.fetch("take_offer", req)
727
- return json_deserialize_with_clvm_streamable(res, TakeOfferResponse)
728
-
729
- async def get_offer(self, trade_id: bytes32, file_contents: bool = False) -> TradeRecord:
730
- res = await self.fetch("get_offer", {"trade_id": trade_id.hex(), "file_contents": file_contents})
731
- offer_str = bytes(Offer.from_bech32(res["offer"])).hex() if file_contents else ""
732
- return TradeRecord.from_json_dict_convenience(res["trade_record"], offer_str)
733
-
734
- async def get_all_offers(
735
- self,
736
- start: int = 0,
737
- end: int = 50,
738
- sort_key: Optional[str] = None,
739
- reverse: bool = False,
740
- file_contents: bool = False,
741
- exclude_my_offers: bool = False,
742
- exclude_taken_offers: bool = False,
743
- include_completed: bool = False,
744
- ) -> list[TradeRecord]:
745
- res = await self.fetch(
746
- "get_all_offers",
747
- {
748
- "start": start,
749
- "end": end,
750
- "sort_key": sort_key,
751
- "reverse": reverse,
752
- "file_contents": file_contents,
753
- "exclude_my_offers": exclude_my_offers,
754
- "exclude_taken_offers": exclude_taken_offers,
755
- "include_completed": include_completed,
756
- },
606
+ return TakeOfferResponse.from_json_dict(
607
+ await self.fetch(
608
+ "take_offer", request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info)
609
+ )
757
610
  )
758
611
 
759
- records = []
760
- if file_contents:
761
- optional_offers = [bytes(Offer.from_bech32(o)).hex() for o in res["offers"]]
762
- else:
763
- optional_offers = [""] * len(res["trade_records"])
764
- for record, offer in zip(res["trade_records"], optional_offers):
765
- records.append(TradeRecord.from_json_dict_convenience(record, offer))
612
+ async def get_offer(self, request: GetOffer) -> GetOfferResponse:
613
+ return GetOfferResponse.from_json_dict(await self.fetch("get_offer", request.to_json_dict()))
766
614
 
767
- return records
615
+ async def get_all_offers(self, request: GetAllOffers) -> GetAllOffersResponse:
616
+ return GetAllOffersResponse.from_json_dict(await self.fetch("get_all_offers", request.to_json_dict()))
768
617
 
769
618
  async def get_offers_count(self) -> GetOffersCountResponse:
770
619
  return GetOffersCountResponse.from_json_dict(await self.fetch("get_offers_count", {}))
771
620
 
772
621
  async def cancel_offer(
773
622
  self,
774
- trade_id: bytes32,
623
+ request: CancelOffer,
775
624
  tx_config: TXConfig,
776
- fee: int = 0,
777
- secure: bool = True,
778
625
  extra_conditions: tuple[Condition, ...] = tuple(),
779
626
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
780
- push: bool = True,
781
627
  ) -> CancelOfferResponse:
782
- res = await self.fetch(
783
- "cancel_offer",
784
- {
785
- "trade_id": trade_id.hex(),
786
- "secure": secure,
787
- "fee": fee,
788
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
789
- "push": push,
790
- **tx_config.to_json_dict(),
791
- **timelock_info.to_json_dict(),
792
- },
628
+ return CancelOfferResponse.from_json_dict(
629
+ await self.fetch(
630
+ "cancel_offer", request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info)
631
+ )
793
632
  )
794
633
 
795
- return json_deserialize_with_clvm_streamable(res, CancelOfferResponse)
796
-
797
634
  async def cancel_offers(
798
635
  self,
636
+ request: CancelOffers,
799
637
  tx_config: TXConfig,
800
- batch_fee: int = 0,
801
- secure: bool = True,
802
- batch_size: int = 5,
803
- cancel_all: bool = False,
804
- asset_id: Optional[bytes32] = None,
805
638
  extra_conditions: tuple[Condition, ...] = tuple(),
806
639
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
807
- push: bool = True,
808
640
  ) -> CancelOffersResponse:
809
- res = await self.fetch(
810
- "cancel_offers",
811
- {
812
- "secure": secure,
813
- "batch_fee": batch_fee,
814
- "batch_size": batch_size,
815
- "cancel_all": cancel_all,
816
- "asset_id": None if asset_id is None else asset_id.hex(),
817
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
818
- "push": push,
819
- **tx_config.to_json_dict(),
820
- **timelock_info.to_json_dict(),
821
- },
641
+ return CancelOffersResponse.from_json_dict(
642
+ await self.fetch(
643
+ "cancel_offers", request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info)
644
+ )
822
645
  )
823
646
 
824
- return json_deserialize_with_clvm_streamable(res, CancelOffersResponse)
825
-
826
647
  async def get_cat_list(self) -> GetCATListResponse:
827
648
  return GetCATListResponse.from_json_dict(await self.fetch("get_cat_list", {}))
828
649
 
829
650
  # NFT wallet
830
- async def create_new_nft_wallet(self, did_id: Optional[str], name: Optional[str] = None) -> dict[str, Any]:
831
- request = {"wallet_type": "nft_wallet", "did_id": did_id, "name": name}
832
- response = await self.fetch("create_new_wallet", request)
833
- return response
834
-
835
651
  async def mint_nft(
836
652
  self,
837
653
  request: NFTMintNFTRequest,
@@ -1135,25 +951,17 @@ class WalletRpcClient(RpcClient):
1135
951
 
1136
952
  async def crcat_approve_pending(
1137
953
  self,
1138
- wallet_id: uint32,
1139
- min_amount_to_claim: uint64,
954
+ request: CRCATApprovePending,
1140
955
  tx_config: TXConfig,
1141
- fee: uint64 = uint64(0),
1142
- push: bool = True,
956
+ extra_conditions: tuple[Condition, ...] = tuple(),
1143
957
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
1144
- ) -> list[TransactionRecord]:
1145
- response = await self.fetch(
1146
- "crcat_approve_pending",
1147
- {
1148
- "wallet_id": wallet_id,
1149
- "min_amount_to_claim": min_amount_to_claim,
1150
- "fee": fee,
1151
- "push": push,
1152
- **tx_config.to_json_dict(),
1153
- **timelock_info.to_json_dict(),
1154
- },
958
+ ) -> CRCATApprovePendingResponse:
959
+ return CRCATApprovePendingResponse.from_json_dict(
960
+ await self.fetch(
961
+ "crcat_approve_pending",
962
+ request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info),
963
+ )
1155
964
  )
1156
- return [TransactionRecord.from_json_dict(tx) for tx in response["transactions"]]
1157
965
 
1158
966
  async def gather_signing_info(
1159
967
  self,
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  import json
4
4
  import logging
5
5
  from sqlite3 import Row
6
- from typing import Optional, Union
7
6
 
8
7
  from chia_rs import CoinSpend
9
8
  from chia_rs.sized_bytes import bytes32
@@ -234,7 +233,7 @@ class WalletSingletonStore:
234
233
  )
235
234
  await cursor.close()
236
235
 
237
- async def count(self, wallet_id: Optional[uint32] = None) -> int:
236
+ async def count(self, wallet_id: uint32 | None = None) -> int:
238
237
  sql = "SELECT COUNT(singleton_id) FROM singletons WHERE removed_height=0"
239
238
  params: list[uint32] = []
240
239
  if wallet_id is not None:
@@ -246,9 +245,9 @@ class WalletSingletonStore:
246
245
  return int(count_row[0])
247
246
  return -1 # pragma: no cover
248
247
 
249
- async def is_empty(self, wallet_id: Optional[uint32] = None) -> bool:
248
+ async def is_empty(self, wallet_id: uint32 | None = None) -> bool:
250
249
  sql = "SELECT 1 FROM singletons WHERE removed_height=0"
251
- params: list[Union[uint32, bytes32]] = []
250
+ params: list[uint32 | bytes32] = []
252
251
  if wallet_id is not None:
253
252
  sql += " AND wallet_id=?"
254
253
  params.append(wallet_id)