corepc_client/client_sync/v21/
mod.rs

1// SPDX-License-Identifier: CC0-1.0
2
3//! A JSON-RPC client for testing against Bitcoin Core `v0.21`.
4//!
5//! We ignore option arguments unless they effect the shape of the returned JSON data.
6
7mod generating;
8mod hidden;
9mod util;
10mod wallet;
11
12use std::collections::BTreeMap;
13use std::path::Path;
14
15use bitcoin::address::{Address, NetworkChecked};
16use bitcoin::{sign_message, Amount, Block, BlockHash, PublicKey, Txid};
17use serde::{Deserialize, Serialize};
18
19use crate::client_sync::into_json;
20use crate::types::v21::*;
21
22#[rustfmt::skip]                // Keep public re-exports separate.
23pub use crate::client_sync::{
24    v17::{
25        AddNodeCommand, AddressType, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest,
26        TemplateRules, WalletCreateFundedPsbtInput,
27    },
28};
29
30crate::define_jsonrpc_minreq_client!("v21");
31crate::impl_client_check_expected_server_version!({ [210200] });
32
33// == Blockchain ==
34crate::impl_client_v17__get_best_block_hash!();
35crate::impl_client_v17__get_block!();
36crate::impl_client_v17__get_blockchain_info!();
37crate::impl_client_v17__get_block_count!();
38crate::impl_client_v19__get_block_filter!();
39crate::impl_client_v17__get_block_hash!();
40crate::impl_client_v17__get_block_header!();
41crate::impl_client_v17__get_block_stats!();
42crate::impl_client_v17__get_chain_tips!();
43crate::impl_client_v17__get_chain_tx_stats!();
44crate::impl_client_v17__get_difficulty!();
45crate::impl_client_v17__get_mempool_ancestors!();
46crate::impl_client_v17__get_mempool_descendants!();
47crate::impl_client_v17__get_mempool_entry!();
48crate::impl_client_v17__get_mempool_info!();
49crate::impl_client_v17__get_raw_mempool!();
50crate::impl_client_v17__get_tx_out!();
51crate::impl_client_v17__get_tx_out_proof!();
52crate::impl_client_v17__get_tx_out_set_info!();
53crate::impl_client_v17__precious_block!();
54crate::impl_client_v17__prune_blockchain!();
55crate::impl_client_v17__save_mempool!();
56crate::impl_client_v17__verify_chain!();
57crate::impl_client_v17__verify_tx_out_proof!();
58
59// == Control ==
60crate::impl_client_v17__get_memory_info!();
61crate::impl_client_v18__get_rpc_info!();
62crate::impl_client_v17__help!();
63crate::impl_client_v17__logging!();
64crate::impl_client_v17__stop!();
65crate::impl_client_v17__uptime!();
66
67// == Generating ==
68crate::impl_client_v21__generate_block!();
69crate::impl_client_v17__generate_to_address!();
70crate::impl_client_v20__generate_to_descriptor!();
71crate::impl_client_v17__invalidate_block!();
72
73// == Hidden ==
74crate::impl_client_v21__add_peer_address!();
75
76// == Mining ==
77crate::impl_client_v17__get_block_template!();
78crate::impl_client_v17__get_mining_info!();
79crate::impl_client_v17__get_network_hashes_per_second!();
80crate::impl_client_v17__prioritise_transaction!();
81crate::impl_client_v17__submit_block!();
82crate::impl_client_v18__submit_header!();
83
84// == Network ==
85crate::impl_client_v17__add_node!();
86crate::impl_client_v17__clear_banned!();
87crate::impl_client_v17__disconnect_node!();
88crate::impl_client_v17__get_added_node_info!();
89crate::impl_client_v17__get_connection_count!();
90crate::impl_client_v17__get_net_totals!();
91crate::impl_client_v17__get_network_info!();
92crate::impl_client_v18__get_node_addresses!();
93crate::impl_client_v17__get_peer_info!();
94crate::impl_client_v17__list_banned!();
95crate::impl_client_v17__ping!();
96crate::impl_client_v17__set_ban!();
97crate::impl_client_v17__set_network_active!();
98
99// == Rawtransactions ==
100crate::impl_client_v18__analyze_psbt!();
101crate::impl_client_v17__combine_psbt!();
102crate::impl_client_v17__combine_raw_transaction!();
103crate::impl_client_v17__convert_to_psbt!();
104crate::impl_client_v17__create_psbt!();
105crate::impl_client_v17__create_raw_transaction!();
106crate::impl_client_v17__decode_psbt!();
107crate::impl_client_v17__decode_raw_transaction!();
108crate::impl_client_v17__decode_script!();
109crate::impl_client_v17__finalize_psbt!();
110crate::impl_client_v17__fund_raw_transaction!();
111crate::impl_client_v17__get_raw_transaction!();
112crate::impl_client_v18__join_psbts!();
113crate::impl_client_v17__send_raw_transaction!();
114crate::impl_client_v17__sign_raw_transaction!();
115crate::impl_client_v17__sign_raw_transaction_with_key!();
116crate::impl_client_v17__test_mempool_accept!();
117crate::impl_client_v18__utxo_update_psbt!();
118
119// == Util ==
120crate::impl_client_v17__create_multisig!();
121crate::impl_client_v18__derive_addresses!();
122crate::impl_client_v17__estimate_smart_fee!();
123crate::impl_client_v18__get_descriptor_info!();
124crate::impl_client_v21__get_index_info!();
125crate::impl_client_v17__sign_message_with_priv_key!();
126crate::impl_client_v17__validate_address!();
127crate::impl_client_v17__verify_message!();
128
129// == Wallet ==
130crate::impl_client_v17__abandon_transaction!();
131crate::impl_client_v17__abort_rescan!();
132crate::impl_client_v17__add_multisig_address!();
133crate::impl_client_v17__backup_wallet!();
134crate::impl_client_v17__bump_fee!();
135crate::impl_client_v21__create_wallet!();
136crate::impl_client_v17__dump_priv_key!();
137crate::impl_client_v17__dump_wallet!();
138crate::impl_client_v17__encrypt_wallet!();
139crate::impl_client_v18__get_received_by_label!();
140crate::impl_client_v17__get_addresses_by_label!();
141crate::impl_client_v17__get_address_info!();
142crate::impl_client_v17__get_balance!();
143crate::impl_client_v19__get_balances!();
144crate::impl_client_v17__get_new_address!();
145crate::impl_client_v17__get_raw_change_address!();
146crate::impl_client_v17__get_received_by_address!();
147crate::impl_client_v17__get_transaction!();
148crate::impl_client_v17__get_unconfirmed_balance!();
149crate::impl_client_v17__get_wallet_info!();
150crate::impl_client_v17__import_address!();
151crate::impl_client_v21__import_descriptors!();
152crate::impl_client_v17__import_multi!();
153crate::impl_client_v17__import_privkey!();
154crate::impl_client_v17__import_pruned_funds!();
155crate::impl_client_v17__import_pubkey!();
156crate::impl_client_v17__import_wallet!();
157crate::impl_client_v17__key_pool_refill!();
158crate::impl_client_v17__list_address_groupings!();
159crate::impl_client_v17__list_labels!();
160crate::impl_client_v18__list_received_by_label!();
161crate::impl_client_v17__list_lock_unspent!();
162crate::impl_client_v17__list_received_by_address!();
163crate::impl_client_v17__list_since_block!();
164crate::impl_client_v17__list_transactions!();
165crate::impl_client_v17__list_unspent!();
166crate::impl_client_v18__list_wallet_dir!();
167crate::impl_client_v17__list_wallets!();
168crate::impl_client_v17__load_wallet!();
169crate::impl_client_v17__lock_unspent!();
170crate::impl_client_v21__psbt_bump_fee!();
171crate::impl_client_v17__remove_pruned_funds!();
172crate::impl_client_v17__rescan_blockchain!();
173crate::impl_client_v21__send!();
174crate::impl_client_v17__send_many!();
175crate::impl_client_v21__send_many_verbose!();
176crate::impl_client_v17__send_to_address!();
177crate::impl_client_v17__set_hd_seed!();
178crate::impl_client_v17__set_tx_fee!();
179crate::impl_client_v19__set_wallet_flag!();
180crate::impl_client_v17__sign_message!();
181crate::impl_client_v17__sign_raw_transaction_with_wallet!();
182crate::impl_client_v21__unload_wallet!();
183crate::impl_client_v21__upgrade_wallet!();
184crate::impl_client_v17__wallet_create_funded_psbt!();
185crate::impl_client_v17__wallet_lock!();
186crate::impl_client_v17__wallet_passphrase!();
187crate::impl_client_v17__wallet_passphrase_change!();
188crate::impl_client_v17__wallet_process_psbt!();
189
190// == Zmq ==
191crate::impl_client_v17__get_zmq_notifications!();
192
193/// Request object for the `importdescriptors` method.
194#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
195#[serde(deny_unknown_fields)]
196pub struct ImportDescriptorsRequest {
197    /// Descriptor to import.
198    #[serde(rename = "desc")]
199    pub descriptor: String,
200    /// Time from which to start rescanning the blockchain for this descriptor, in UNIX epoch time or "now".
201    pub timestamp: serde_json::Value,
202}
203
204impl ImportDescriptorsRequest {
205    /// Constructs a new ImportDescriptorsRequest.
206    pub fn new(descriptor: impl Into<String>, timestamp: impl Into<serde_json::Value>) -> Self {
207        ImportDescriptorsRequest { descriptor: descriptor.into(), timestamp: timestamp.into() }
208    }
209}