corepc_client/client_sync/v23/
mod.rs

1// SPDX-License-Identifier: CC0-1.0
2
3//! A JSON-RPC client for testing against Bitcoin Core `v23`.
4//!
5//! We ignore option arguments unless they effect the shape of the returned JSON data.
6
7pub mod blockchain;
8pub mod wallet;
9
10use std::collections::BTreeMap;
11use std::path::Path;
12
13use bitcoin::address::{Address, NetworkChecked};
14use bitcoin::{sign_message, Amount, Block, BlockHash, PublicKey, Txid};
15use serde::{Deserialize, Serialize};
16
17use crate::client_sync::into_json;
18use crate::types::v23::*;
19
20#[rustfmt::skip]                // Keep public re-exports separate.
21pub use crate::client_sync::{
22    v17::{Input, Output, TemplateRequest, TemplateRules, WalletCreateFundedPsbtInput},
23};
24
25crate::define_jsonrpc_minreq_client!("v23");
26crate::impl_client_check_expected_server_version!({ [230200] });
27
28// == Blockchain ==
29crate::impl_client_v17__getbestblockhash!();
30crate::impl_client_v17__getblock!();
31crate::impl_client_v17__getblockchaininfo!();
32crate::impl_client_v17__getblockcount!();
33crate::impl_client_v19__getblockfilter!();
34crate::impl_client_v17__getblockhash!();
35crate::impl_client_v17__getblockheader!();
36crate::impl_client_v17__getblockstats!();
37crate::impl_client_v17__getchaintips!();
38crate::impl_client_v17__getchaintxstats!();
39crate::impl_client_v17__getdifficulty!();
40crate::impl_client_v17__getmempoolancestors!();
41crate::impl_client_v17__getmempooldescendants!();
42crate::impl_client_v17__getmempoolentry!();
43crate::impl_client_v17__getmempoolinfo!();
44crate::impl_client_v17__getrawmempool!();
45crate::impl_client_v17__gettxout!();
46crate::impl_client_v17__gettxoutproof!();
47crate::impl_client_v17__gettxoutsetinfo!();
48crate::impl_client_v17__preciousblock!();
49crate::impl_client_v17__pruneblockchain!();
50crate::impl_client_v23__savemempool!();
51crate::impl_client_v17__verifychain!();
52crate::impl_client_v17__verifytxoutproof!();
53
54// == Control ==
55crate::impl_client_v17__getmemoryinfo!();
56crate::impl_client_v18__getrpcinfo!();
57crate::impl_client_v17__help!();
58crate::impl_client_v17__logging!();
59crate::impl_client_v17__stop!();
60crate::impl_client_v17__uptime!();
61
62// == Generating ==
63crate::impl_client_v17__generatetoaddress!();
64crate::impl_client_v17__invalidateblock!();
65
66// == Mining ==
67crate::impl_client_v17__getblocktemplate!();
68crate::impl_client_v17__getmininginfo!();
69crate::impl_client_v17__getnetworkhashps!();
70crate::impl_client_v17__prioritisetransaction!();
71crate::impl_client_v17__submitblock!();
72
73// == Network ==
74crate::impl_client_v17__getaddednodeinfo!();
75crate::impl_client_v17__getnettotals!();
76crate::impl_client_v17__getnetworkinfo!();
77crate::impl_client_v18__getnodeaddresses!();
78crate::impl_client_v17__getpeerinfo!();
79
80// == Rawtransactions ==
81crate::impl_client_v18__analyzepsbt!();
82crate::impl_client_v17__combinepsbt!();
83crate::impl_client_v17__combinerawtransaction!();
84crate::impl_client_v17__converttopsbt!();
85crate::impl_client_v17__createpsbt!();
86crate::impl_client_v17__createrawtransaction!();
87crate::impl_client_v17__decodepsbt!();
88crate::impl_client_v17__decoderawtransaction!();
89crate::impl_client_v17__decodescript!();
90crate::impl_client_v17__finalizepsbt!();
91crate::impl_client_v17__fundrawtransaction!();
92crate::impl_client_v17__getrawtransaction!();
93crate::impl_client_v18__joinpsbts!();
94crate::impl_client_v17__sendrawtransaction!();
95crate::impl_client_v17__signrawtransaction!();
96crate::impl_client_v17__signrawtransactionwithkey!();
97crate::impl_client_v17__testmempoolaccept!();
98crate::impl_client_v18__utxoupdatepsbt!();
99
100// == Util ==
101crate::impl_client_v17__createmultisig!();
102crate::impl_client_v17__estimatesmartfee!();
103crate::impl_client_v17__signmessagewithprivkey!();
104crate::impl_client_v17__validateaddress!();
105crate::impl_client_v17__verifymessage!();
106
107// == Wallet ==
108crate::impl_client_v17__addmultisigaddress!();
109crate::impl_client_v17__bumpfee!();
110crate::impl_client_v23__createwallet!();
111crate::impl_client_v17__dumpprivkey!();
112crate::impl_client_v17__dumpwallet!();
113crate::impl_client_v17__getaddressesbylabel!();
114crate::impl_client_v17__getaddressinfo!();
115crate::impl_client_v17__getbalance!();
116crate::impl_client_v19__getbalances!();
117crate::impl_client_v17__getnewaddress!();
118crate::impl_client_v17__getrawchangeaddress!();
119crate::impl_client_v17__getreceivedbyaddress!();
120crate::impl_client_v17__gettransaction!();
121crate::impl_client_v17__getunconfirmedbalance!();
122crate::impl_client_v17__getwalletinfo!();
123crate::impl_client_v17__listaddressgroupings!();
124crate::impl_client_v17__listlabels!();
125crate::impl_client_v17__listlockunspent!();
126crate::impl_client_v17__listreceivedbyaddress!();
127crate::impl_client_v17__listsinceblock!();
128crate::impl_client_v17__listtransactions!();
129crate::impl_client_v17__listunspent!();
130crate::impl_client_v17__listwallets!();
131crate::impl_client_v22__loadwallet!();
132crate::impl_client_v17__rescanblockchain!();
133crate::impl_client_v17__sendmany!();
134crate::impl_client_v17__sendtoaddress!();
135crate::impl_client_v17__signmessage!();
136crate::impl_client_v17__signrawtransactionwithwallet!();
137crate::impl_client_v21__unloadwallet!();
138crate::impl_client_v17__walletcreatefundedpsbt!();
139crate::impl_client_v17__walletprocesspsbt!();
140
141/// Argument to the `Client::get_new_address_with_type` function.
142///
143/// For Core v23 and onwards. For earlier versions use `v17::AddressType`.
144#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
145#[serde(rename_all = "kebab-case")]
146pub enum AddressType {
147    Legacy,
148    P2shSegwit,
149    Bech32,
150    Bech32m, // Field added in Core v23
151}
152
153impl fmt::Display for AddressType {
154    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
155        use AddressType::*;
156
157        let s = match *self {
158            Legacy => "legacy",
159            P2shSegwit => "p2sh-segwit",
160            Bech32 => "bech32",
161            Bech32m => "bech32m",
162        };
163        fmt::Display::fmt(s, f)
164    }
165}