Skip to content

Commit 0ed10d4

Browse files
committed
Add importdescriptors method, and test
Add the RPC `importdescriptors` type to v21 and add reexports. Add client macro and test. Update types table up to v29.
1 parent 5ee20ed commit 0ed10d4

File tree

21 files changed

+141
-18
lines changed

21 files changed

+141
-18
lines changed

client/src/client_sync/v21/mod.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use std::path::Path;
1313

1414
use bitcoin::address::{Address, NetworkChecked};
1515
use bitcoin::{sign_message, Amount, Block, BlockHash, PublicKey, Txid};
16+
use serde::{Deserialize, Serialize};
1617

1718
use crate::client_sync::into_json;
1819
use crate::types::v21::*;
@@ -144,6 +145,7 @@ crate::impl_client_v17__get_transaction!();
144145
crate::impl_client_v17__get_unconfirmed_balance!();
145146
crate::impl_client_v17__get_wallet_info!();
146147
crate::impl_client_v17__import_address!();
148+
crate::impl_client_v21__import_descriptors!();
147149
crate::impl_client_v17__import_multi!();
148150
crate::impl_client_v17__import_privkey!();
149151
crate::impl_client_v17__import_pruned_funds!();
@@ -175,3 +177,13 @@ crate::impl_client_v21__unload_wallet!();
175177
crate::impl_client_v17__wallet_create_funded_psbt!();
176178
crate::impl_client_v17__wallet_lock!();
177179
crate::impl_client_v17__wallet_process_psbt!();
180+
181+
/// Request object for the `importdescriptors` method.
182+
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
183+
#[serde(deny_unknown_fields)]
184+
pub struct ImportDescriptorsRequest {
185+
/// Descriptor to import.
186+
pub desc: String,
187+
/// Time from which to start rescanning the blockchain for this descriptor, in UNIX epoch time or "now".
188+
pub timestamp: serde_json::Value,
189+
}

client/src/client_sync/v21/wallet.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,21 @@ macro_rules! impl_client_v21__create_wallet_with_descriptors {
3030
};
3131
}
3232

33+
/// Implements Bitcoin Core JSON-RPC API method `importdescriptors`
34+
#[macro_export]
35+
macro_rules! impl_client_v21__import_descriptors {
36+
() => {
37+
impl Client {
38+
pub fn import_descriptors(
39+
&self,
40+
requests: &[ImportDescriptorsRequest],
41+
) -> Result<ImportDescriptors> {
42+
self.call("importdescriptors", &[into_json(requests)?])
43+
}
44+
}
45+
};
46+
}
47+
3348
/// Implements Bitcoin Core JSON-RPC API method `unloadwallet`
3449
#[macro_export]
3550
macro_rules! impl_client_v21__unload_wallet {

client/src/client_sync/v22/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ pub use crate::client_sync::{
2121
AddNodeCommand, AddressType, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest,
2222
TemplateRules, WalletCreateFundedPsbtInput,
2323
},
24+
v21::ImportDescriptorsRequest,
2425
};
2526

2627
crate::define_jsonrpc_minreq_client!("v22");
@@ -142,6 +143,7 @@ crate::impl_client_v17__get_transaction!();
142143
crate::impl_client_v17__get_unconfirmed_balance!();
143144
crate::impl_client_v17__get_wallet_info!();
144145
crate::impl_client_v17__import_address!();
146+
crate::impl_client_v21__import_descriptors!();
145147
crate::impl_client_v17__import_multi!();
146148
crate::impl_client_v17__import_privkey!();
147149
crate::impl_client_v17__import_pruned_funds!();

client/src/client_sync/v23/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ pub use crate::client_sync::{
2323
AddNodeCommand, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest, TemplateRules,
2424
WalletCreateFundedPsbtInput,
2525
},
26+
v21::ImportDescriptorsRequest,
2627
};
2728

2829
crate::define_jsonrpc_minreq_client!("v23");
@@ -144,6 +145,7 @@ crate::impl_client_v17__get_transaction!();
144145
crate::impl_client_v17__get_unconfirmed_balance!();
145146
crate::impl_client_v17__get_wallet_info!();
146147
crate::impl_client_v17__import_address!();
148+
crate::impl_client_v21__import_descriptors!();
147149
crate::impl_client_v17__import_multi!();
148150
crate::impl_client_v17__import_privkey!();
149151
crate::impl_client_v17__import_pruned_funds!();

client/src/client_sync/v24/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ pub use crate::client_sync::{
1919
AddNodeCommand, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest, TemplateRules,
2020
WalletCreateFundedPsbtInput,
2121
},
22+
v21::ImportDescriptorsRequest,
2223
v23::AddressType,
2324
};
2425

@@ -141,6 +142,7 @@ crate::impl_client_v17__get_transaction!();
141142
crate::impl_client_v17__get_unconfirmed_balance!();
142143
crate::impl_client_v17__get_wallet_info!();
143144
crate::impl_client_v17__import_address!();
145+
crate::impl_client_v21__import_descriptors!();
144146
crate::impl_client_v17__import_multi!();
145147
crate::impl_client_v17__import_privkey!();
146148
crate::impl_client_v17__import_pruned_funds!();

client/src/client_sync/v25/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ pub use crate::client_sync::{
2121
AddNodeCommand, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest, TemplateRules,
2222
WalletCreateFundedPsbtInput,
2323
},
24+
v21::ImportDescriptorsRequest,
2425
v23::AddressType,
2526
};
2627

@@ -143,6 +144,7 @@ crate::impl_client_v17__get_transaction!();
143144
crate::impl_client_v17__get_unconfirmed_balance!();
144145
crate::impl_client_v17__get_wallet_info!();
145146
crate::impl_client_v17__import_address!();
147+
crate::impl_client_v21__import_descriptors!();
146148
crate::impl_client_v17__import_multi!();
147149
crate::impl_client_v17__import_privkey!();
148150
crate::impl_client_v17__import_pruned_funds!();

client/src/client_sync/v26/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ pub use crate::client_sync::{
2323
AddNodeCommand, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest, TemplateRules,
2424
WalletCreateFundedPsbtInput,
2525
},
26+
v21::ImportDescriptorsRequest,
2627
v23::AddressType,
2728
};
2829

@@ -147,6 +148,7 @@ crate::impl_client_v17__get_transaction!();
147148
crate::impl_client_v17__get_unconfirmed_balance!();
148149
crate::impl_client_v17__get_wallet_info!();
149150
crate::impl_client_v17__import_address!();
151+
crate::impl_client_v21__import_descriptors!();
150152
crate::impl_client_v17__import_multi!();
151153
crate::impl_client_v17__import_privkey!();
152154
crate::impl_client_v17__import_pruned_funds!();

client/src/client_sync/v27/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ pub use crate::client_sync::{
1919
AddNodeCommand, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest, TemplateRules,
2020
WalletCreateFundedPsbtInput,
2121
},
22+
v21::ImportDescriptorsRequest,
2223
v23::AddressType,
2324
};
2425

@@ -143,6 +144,7 @@ crate::impl_client_v17__get_transaction!();
143144
crate::impl_client_v17__get_unconfirmed_balance!();
144145
crate::impl_client_v17__get_wallet_info!();
145146
crate::impl_client_v17__import_address!();
147+
crate::impl_client_v21__import_descriptors!();
146148
crate::impl_client_v17__import_multi!();
147149
crate::impl_client_v17__import_privkey!();
148150
crate::impl_client_v17__import_pruned_funds!();

client/src/client_sync/v28/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ pub use crate::client_sync::{
2121
AddNodeCommand, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest, TemplateRules,
2222
WalletCreateFundedPsbtInput,
2323
},
24+
v21::ImportDescriptorsRequest,
2425
v23::AddressType,
2526
};
2627

@@ -145,6 +146,7 @@ crate::impl_client_v17__get_transaction!();
145146
crate::impl_client_v17__get_unconfirmed_balance!();
146147
crate::impl_client_v17__get_wallet_info!();
147148
crate::impl_client_v17__import_address!();
149+
crate::impl_client_v21__import_descriptors!();
148150
crate::impl_client_v17__import_multi!();
149151
crate::impl_client_v17__import_privkey!();
150152
crate::impl_client_v17__import_pruned_funds!();

client/src/client_sync/v29/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ use crate::types::v29::*;
2020
#[rustfmt::skip] // Keep public re-exports separate.
2121
pub use crate::client_sync::{
2222
v17::{AddNodeCommand, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, WalletCreateFundedPsbtInput,},
23+
v21::ImportDescriptorsRequest,
2324
v23::AddressType,
2425
};
2526

@@ -145,6 +146,7 @@ crate::impl_client_v17__get_transaction!();
145146
crate::impl_client_v17__get_unconfirmed_balance!();
146147
crate::impl_client_v17__get_wallet_info!();
147148
crate::impl_client_v17__import_address!();
149+
crate::impl_client_v21__import_descriptors!();
148150
crate::impl_client_v17__import_multi!();
149151
crate::impl_client_v17__import_privkey!();
150152
crate::impl_client_v17__import_pruned_funds!();

0 commit comments

Comments
 (0)