From 2a728da3b4ee36cbc900a7914dae7ae6508e1532 Mon Sep 17 00:00:00 2001 From: "Jamil Lambert, PhD" Date: Tue, 16 Dec 2025 09:46:54 +0000 Subject: [PATCH 1/4] Add an empty hidden module in model --- types/src/model/hidden.rs | 6 ++++++ types/src/model/mod.rs | 1 + 2 files changed, 7 insertions(+) create mode 100644 types/src/model/hidden.rs diff --git a/types/src/model/hidden.rs b/types/src/model/hidden.rs new file mode 100644 index 00000000..dfe7ee27 --- /dev/null +++ b/types/src/model/hidden.rs @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: CC0-1.0 + +//! Types for methods that are `== Hidden ==` and not in the API docs of Bitcoin Core. +//! +//! These structs model the types returned by the JSON-RPC API but have concrete types +//! and are not specific to a specific version of Bitcoin Core. diff --git a/types/src/model/mod.rs b/types/src/model/mod.rs index 189b4ca2..f4d15658 100644 --- a/types/src/model/mod.rs +++ b/types/src/model/mod.rs @@ -11,6 +11,7 @@ mod blockchain; mod control; mod generating; +mod hidden; mod mining; mod network; mod raw_transactions; From cd64d27dc4f8fde953ade4f247194a5e4c9cbace Mon Sep 17 00:00:00 2001 From: "Jamil Lambert, PhD" Date: Wed, 17 Dec 2025 16:35:53 +0000 Subject: [PATCH 2/4] Add test file for hidden methods --- integration_test/tests/hidden.rs | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 integration_test/tests/hidden.rs diff --git a/integration_test/tests/hidden.rs b/integration_test/tests/hidden.rs new file mode 100644 index 00000000..82896a53 --- /dev/null +++ b/integration_test/tests/hidden.rs @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: CC0-1.0 + +//! Tests for methods that are `== Hidden ==` and not in the API docs of Bitcoin Core. + +#![allow(non_snake_case)] // Test names intentionally use double underscore. + +use integration_test::{Node, NodeExt as _}; +use node::vtype::*; // All the version specific types. +use node::mtype; From 65e7637a59c53edfcf767a4892d9cd979ba00bca Mon Sep 17 00:00:00 2001 From: "Jamil Lambert, PhD" Date: Tue, 16 Dec 2025 09:22:31 +0000 Subject: [PATCH 3/4] Implement estimaterawfee in hidden Implement the RPC in v17 hidden module, add the client macro and test. Add all the reexports for later versions, there are no changes up to v30. --- client/src/client_sync/v17/hidden.rs | 12 +++++ client/src/client_sync/v17/mod.rs | 1 + client/src/client_sync/v18/mod.rs | 1 + client/src/client_sync/v19/mod.rs | 1 + client/src/client_sync/v20/mod.rs | 1 + client/src/client_sync/v21/mod.rs | 1 + client/src/client_sync/v22/mod.rs | 1 + client/src/client_sync/v23/mod.rs | 1 + client/src/client_sync/v24/mod.rs | 1 + client/src/client_sync/v25/mod.rs | 1 + client/src/client_sync/v26/mod.rs | 1 + client/src/client_sync/v27/mod.rs | 1 + client/src/client_sync/v28/mod.rs | 1 + client/src/client_sync/v29/mod.rs | 1 + client/src/client_sync/v30/mod.rs | 1 + integration_test/tests/hidden.rs | 25 +++++++++- types/src/model/hidden.rs | 48 ++++++++++++++++++ types/src/model/mod.rs | 1 + types/src/v17/hidden/error.rs | 25 ++++++++++ types/src/v17/hidden/into.rs | 52 ++++++++++++++++++- types/src/v17/hidden/mod.rs | 74 +++++++++++++++++++++++++++- types/src/v17/mod.rs | 5 +- types/src/v18/mod.rs | 54 ++++++++++---------- types/src/v19/mod.rs | 28 ++++++----- types/src/v20/mod.rs | 46 ++++++++--------- types/src/v21/mod.rs | 45 ++++++++--------- types/src/v22/mod.rs | 46 ++++++++--------- types/src/v23/mod.rs | 49 +++++++++--------- types/src/v24/mod.rs | 49 +++++++++--------- types/src/v25/mod.rs | 22 ++++----- types/src/v26/mod.rs | 32 ++++++------ types/src/v27/mod.rs | 32 ++++++------ types/src/v28/mod.rs | 28 +++++------ types/src/v29/mod.rs | 25 +++++----- types/src/v30/mod.rs | 36 +++++++------- 35 files changed, 500 insertions(+), 248 deletions(-) diff --git a/client/src/client_sync/v17/hidden.rs b/client/src/client_sync/v17/hidden.rs index 05e305da..d3b400fd 100644 --- a/client/src/client_sync/v17/hidden.rs +++ b/client/src/client_sync/v17/hidden.rs @@ -9,6 +9,18 @@ //! //! See or use the `define_jsonrpc_bitreq_client!` macro to define a `Client`. +/// Implements Bitcoin Core JSON-RPC API method `estimaterawfee`. +#[macro_export] +macro_rules! impl_client_v17__estimate_raw_fee { + () => { + impl Client { + pub fn estimate_raw_fee(&self, conf_target: u32) -> Result { + self.call("estimaterawfee", &[conf_target.into()]) + } + } + }; +} + /// Implements Bitcoin Core JSON-RPC API method `waitforblock`. #[macro_export] macro_rules! impl_client_v17__wait_for_block { diff --git a/client/src/client_sync/v17/mod.rs b/client/src/client_sync/v17/mod.rs index 7921840d..7ad22305 100644 --- a/client/src/client_sync/v17/mod.rs +++ b/client/src/client_sync/v17/mod.rs @@ -66,6 +66,7 @@ crate::impl_client_v17__generate!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v18/mod.rs b/client/src/client_sync/v18/mod.rs index 73a4f048..cb3d9e47 100644 --- a/client/src/client_sync/v18/mod.rs +++ b/client/src/client_sync/v18/mod.rs @@ -71,6 +71,7 @@ crate::impl_client_v17__generate!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v19/mod.rs b/client/src/client_sync/v19/mod.rs index 8bed0e35..dfc00400 100644 --- a/client/src/client_sync/v19/mod.rs +++ b/client/src/client_sync/v19/mod.rs @@ -66,6 +66,7 @@ crate::impl_client_v17__generate_to_address!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v20/mod.rs b/client/src/client_sync/v20/mod.rs index 067caf4c..40c2eed6 100644 --- a/client/src/client_sync/v20/mod.rs +++ b/client/src/client_sync/v20/mod.rs @@ -66,6 +66,7 @@ crate::impl_client_v20__generate_to_descriptor!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v21/mod.rs b/client/src/client_sync/v21/mod.rs index 029a1c94..f532abdb 100644 --- a/client/src/client_sync/v21/mod.rs +++ b/client/src/client_sync/v21/mod.rs @@ -72,6 +72,7 @@ crate::impl_client_v17__invalidate_block!(); // == Hidden == crate::impl_client_v21__add_peer_address!(); +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v22/mod.rs b/client/src/client_sync/v22/mod.rs index 75658cb4..c6c0ceb5 100644 --- a/client/src/client_sync/v22/mod.rs +++ b/client/src/client_sync/v22/mod.rs @@ -70,6 +70,7 @@ crate::impl_client_v17__invalidate_block!(); // == Hidden == crate::impl_client_v21__add_peer_address!(); +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v23/mod.rs b/client/src/client_sync/v23/mod.rs index f6bed4b9..012c6dad 100644 --- a/client/src/client_sync/v23/mod.rs +++ b/client/src/client_sync/v23/mod.rs @@ -73,6 +73,7 @@ crate::impl_client_v17__invalidate_block!(); // == Hidden == crate::impl_client_v21__add_peer_address!(); +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v24/mod.rs b/client/src/client_sync/v24/mod.rs index 427250df..28861f26 100644 --- a/client/src/client_sync/v24/mod.rs +++ b/client/src/client_sync/v24/mod.rs @@ -74,6 +74,7 @@ crate::impl_client_v17__invalidate_block!(); // == Hidden == crate::impl_client_v21__add_peer_address!(); +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v25/mod.rs b/client/src/client_sync/v25/mod.rs index d4fa9aca..931f6607 100644 --- a/client/src/client_sync/v25/mod.rs +++ b/client/src/client_sync/v25/mod.rs @@ -75,6 +75,7 @@ crate::impl_client_v17__invalidate_block!(); // == Hidden == crate::impl_client_v21__add_peer_address!(); +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v26/mod.rs b/client/src/client_sync/v26/mod.rs index d06fefc7..dd004165 100644 --- a/client/src/client_sync/v26/mod.rs +++ b/client/src/client_sync/v26/mod.rs @@ -81,6 +81,7 @@ crate::impl_client_v17__invalidate_block!(); // == Hidden == crate::impl_client_v21__add_peer_address!(); +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v27/mod.rs b/client/src/client_sync/v27/mod.rs index c924ab49..54c15700 100644 --- a/client/src/client_sync/v27/mod.rs +++ b/client/src/client_sync/v27/mod.rs @@ -75,6 +75,7 @@ crate::impl_client_v17__invalidate_block!(); // == Hidden == crate::impl_client_v21__add_peer_address!(); +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v28/mod.rs b/client/src/client_sync/v28/mod.rs index 881758d9..cb296ba3 100644 --- a/client/src/client_sync/v28/mod.rs +++ b/client/src/client_sync/v28/mod.rs @@ -78,6 +78,7 @@ crate::impl_client_v17__invalidate_block!(); // == Hidden == crate::impl_client_v21__add_peer_address!(); +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v29/mod.rs b/client/src/client_sync/v29/mod.rs index 16160bbb..1b52b58c 100644 --- a/client/src/client_sync/v29/mod.rs +++ b/client/src/client_sync/v29/mod.rs @@ -78,6 +78,7 @@ crate::impl_client_v17__invalidate_block!(); // == Hidden == crate::impl_client_v21__add_peer_address!(); +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/client/src/client_sync/v30/mod.rs b/client/src/client_sync/v30/mod.rs index 3446ae0e..59c8352d 100644 --- a/client/src/client_sync/v30/mod.rs +++ b/client/src/client_sync/v30/mod.rs @@ -58,6 +58,7 @@ crate::impl_client_v23__save_mempool!(); crate::impl_client_v25__scan_blocks!(); crate::impl_client_v17__verify_chain!(); crate::impl_client_v17__verify_tx_out_proof!(); +crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); crate::impl_client_v17__wait_for_block_height!(); crate::impl_client_v17__wait_for_new_block!(); diff --git a/integration_test/tests/hidden.rs b/integration_test/tests/hidden.rs index 82896a53..bf14931e 100644 --- a/integration_test/tests/hidden.rs +++ b/integration_test/tests/hidden.rs @@ -4,6 +4,27 @@ #![allow(non_snake_case)] // Test names intentionally use double underscore. -use integration_test::{Node, NodeExt as _}; -use node::vtype::*; // All the version specific types. +use integration_test::{Node, NodeExt as _, Wallet}; use node::mtype; +use node::vtype::*; // All the version specific types. + +#[test] +fn hidden__estimate_raw_fee__modelled() { + let node = Node::with_wallet(Wallet::Default, &[]); + node.fund_wallet(); + + // Give the fee estimator some confirmation history. + for _ in 0..10 { + node.create_mined_transaction(); + } + + let json: EstimateRawFee = node.client.estimate_raw_fee(2).expect("estimaterawfee"); + let json_range: &RawFeeRange = json.long.fail.as_ref().unwrap(); + + assert!(json_range.total_confirmed > 0.0); + + let model: Result = json.into_model(); + let estimate = model.unwrap(); + + assert!(estimate.long.scale > 0); +} diff --git a/types/src/model/hidden.rs b/types/src/model/hidden.rs index dfe7ee27..3665d626 100644 --- a/types/src/model/hidden.rs +++ b/types/src/model/hidden.rs @@ -4,3 +4,51 @@ //! //! These structs model the types returned by the JSON-RPC API but have concrete types //! and are not specific to a specific version of Bitcoin Core. + +use bitcoin::FeeRate; +use serde::{Deserialize, Serialize}; + +/// Models the result of JSON-RPC method `estimaterawfee`. +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] +pub struct EstimateRawFee { + /// Estimate for short time horizon. + pub short: Option, + /// Estimate for medium time horizon. + pub medium: Option, + /// Estimate for long time horizon. + pub long: RawFeeDetail, +} + +/// Estimate for a time horizon. Part of `estimaterawfee`. +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] +pub struct RawFeeDetail { + /// Estimate fee rate in BTC/kB. + pub fee_rate: Option, + /// Exponential decay (per block) for historical moving average of confirmation data. + pub decay: f64, + /// The resolution of confirmation targets at this time horizon. + pub scale: u32, + /// Information about the lowest range of feerates to succeed in meeting the threshold. + pub pass: Option, + /// Information about the highest range of feerates to fail to meet the threshold. + pub fail: Option, + /// Errors encountered during processing. + pub errors: Option>, +} + +/// Information about a feerate range. Part of `estimaterawfee`. +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] +pub struct RawFeeRange { + /// Start of feerate range. + pub start_range: Option, + /// End of feerate range. + pub end_range: Option, + /// Number of txs over history horizon in the feerate range that were confirmed within target. + pub within_target: f64, + /// Number of txs over history horizon in the feerate range that were confirmed at any point. + pub total_confirmed: f64, + /// Current number of txs in mempool in the feerate range unconfirmed for at least target blocks. + pub in_mempool: f64, + /// Number of txs over history horizon in the feerate range that left mempool unconfirmed after target. + pub left_mempool: f64, +} diff --git a/types/src/model/mod.rs b/types/src/model/mod.rs index f4d15658..1b0b326f 100644 --- a/types/src/model/mod.rs +++ b/types/src/model/mod.rs @@ -39,6 +39,7 @@ pub use self::{ WaitForBlockHeight, WaitForNewBlock, }, generating::{Generate, GenerateBlock, GenerateToAddress, GenerateToDescriptor}, + hidden::{EstimateRawFee, RawFeeDetail, RawFeeRange}, mining::{ BlockTemplateTransaction, GetBlockTemplate, GetMiningInfo, GetPrioritisedTransactions, NextBlockInfo, PrioritisedTransaction, diff --git a/types/src/v17/hidden/error.rs b/types/src/v17/hidden/error.rs index f326b6df..1ca8334e 100644 --- a/types/src/v17/hidden/error.rs +++ b/types/src/v17/hidden/error.rs @@ -2,11 +2,36 @@ use core::fmt; +use bitcoin::amount::ParseAmountError; use bitcoin::hex; use crate::error::write_err; use crate::NumericError; +/// Error when converting an `EstimateRawFee` type into the model type. +#[derive(Debug)] +pub enum EstimateRawFeeError { + /// Conversion of the `feerate` field failed. + FeeRate(ParseAmountError), +} + +impl fmt::Display for EstimateRawFeeError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match *self { + Self::FeeRate(ref e) => write_err!(f, "conversion of the `feerate` field failed"; e), + } + } +} + +#[cfg(feature = "std")] +impl std::error::Error for EstimateRawFeeError { + fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { + match *self { + Self::FeeRate(ref e) => Some(e), + } + } +} + /// Error when converting a `WaitForBlock` type into the model type. #[derive(Debug)] pub enum WaitForBlockError { diff --git a/types/src/v17/hidden/into.rs b/types/src/v17/hidden/into.rs index 9027bf4a..8698edd7 100644 --- a/types/src/v17/hidden/into.rs +++ b/types/src/v17/hidden/into.rs @@ -3,11 +3,61 @@ use bitcoin::BlockHash; use super::{ - WaitForBlock, WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, WaitForNewBlock, + EstimateRawFee, EstimateRawFeeError, RawFeeDetail, RawFeeRange, WaitForBlock, + WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, WaitForNewBlock, WaitForNewBlockError, }; use crate::model; +impl EstimateRawFee { + /// Converts version specific type to a version nonspecific, more strongly typed type. + pub fn into_model(self) -> Result { + let short = self.short.map(|d| d.into_model()).transpose()?; + let medium = self.medium.map(|d| d.into_model()).transpose()?; + let long = self.long.into_model()?; + + Ok(model::EstimateRawFee { short, medium, long }) + } +} + +impl RawFeeDetail { + /// Converts version specific type to a version nonspecific, more strongly typed type. + pub fn into_model(self) -> Result { + use EstimateRawFeeError as E; + + let fee_rate = + self.fee_rate.map(crate::btc_per_kb).transpose().map_err(E::FeeRate)?.flatten(); + let pass = self.pass.map(|p| p.into_model()).transpose()?; + let fail = self.fail.map(|p| p.into_model()).transpose()?; + + Ok(model::RawFeeDetail { + fee_rate, + decay: self.decay, + scale: self.scale, + pass, + fail, + errors: self.errors, + }) + } +} + +impl RawFeeRange { + /// Converts version specific type to a version nonspecific, more strongly typed type. + pub fn into_model(self) -> Result { + let start_range = crate::btc_per_kb(self.start_range).ok().flatten(); + let end_range = crate::btc_per_kb(self.end_range).ok().flatten(); + + Ok(model::RawFeeRange { + start_range, + end_range, + within_target: self.within_target, + total_confirmed: self.total_confirmed, + in_mempool: self.in_mempool, + left_mempool: self.left_mempool, + }) + } +} + impl WaitForBlock { /// Converts version specific type to a version nonspecific, more strongly typed type. pub fn into_model(self) -> Result { diff --git a/types/src/v17/hidden/mod.rs b/types/src/v17/hidden/mod.rs index 2001c0d3..d00af53e 100644 --- a/types/src/v17/hidden/mod.rs +++ b/types/src/v17/hidden/mod.rs @@ -9,7 +9,79 @@ mod into; use serde::{Deserialize, Serialize}; -pub use self::error::{WaitForBlockError, WaitForBlockHeightError, WaitForNewBlockError}; +pub use self::error::{ + EstimateRawFeeError, WaitForBlockError, WaitForBlockHeightError, WaitForNewBlockError, +}; + +/// Result of JSON-RPC method `estimaterawfee`. +/// +/// > estimaterawfee conf_target (threshold) +/// > +/// > WARNING: This interface is unstable and may disappear or change! +/// > +/// > WARNING: This is an advanced API call that is tightly coupled to the specific +/// > implementation of fee estimation. The parameters it can be called with +/// > and the results it returns will change if the internal implementation changes. +/// > +/// > Estimates the approximate fee per kilobyte needed for a transaction to begin +/// > confirmation within conf_target blocks if possible. Uses virtual transaction size as +/// > defined in BIP 141 (witness data is discounted). +/// > +/// > Arguments: +/// > 1. conf_target (numeric) Confirmation target in blocks (1 - 1008) +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] +#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))] +pub struct EstimateRawFee { + /// Estimate for short time horizon. + pub short: Option, + /// Estimate for medium time horizon. + pub medium: Option, + /// Estimate for long time horizon. + pub long: RawFeeDetail, +} + +/// Estimate for a time horizon. Part of `estimaterawfee`. +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] +#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))] +pub struct RawFeeDetail { + /// Estimate fee rate in BTC/kB. + #[serde(rename = "feerate")] + pub fee_rate: Option, + /// Exponential decay (per block) for historical moving average of confirmation data. + pub decay: f64, + /// The resolution of confirmation targets at this time horizon. + pub scale: u32, + /// Information about the lowest range of feerates to succeed in meeting the threshold. + pub pass: Option, + /// Information about the highest range of feerates to fail to meet the threshold. + pub fail: Option, + /// Errors encountered during processing. + pub errors: Option>, +} + +/// Information about a feerate range. Part of `estimaterawfee`. +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] +#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))] +pub struct RawFeeRange { + /// Start of feerate range. + #[serde(rename = "startrange")] + pub start_range: f64, + /// End of feerate range. + #[serde(rename = "endrange")] + pub end_range: f64, + /// Number of txs over history horizon in the feerate range that were confirmed within target. + #[serde(rename = "withintarget")] + pub within_target: f64, + /// Number of txs over history horizon in the feerate range that were confirmed at any point. + #[serde(rename = "totalconfirmed")] + pub total_confirmed: f64, + /// Current number of txs in mempool in the feerate range unconfirmed for at least target blocks. + #[serde(rename = "inmempool")] + pub in_mempool: f64, + /// Number of txs over history horizon in the feerate range that left mempool unconfirmed after target. + #[serde(rename = "leftmempool")] + pub left_mempool: f64, +} /// Result of JSON-RPC method `waitforblock`. /// diff --git a/types/src/v17/mod.rs b/types/src/v17/mod.rs index bd6ab153..7f96e791 100644 --- a/types/src/v17/mod.rs +++ b/types/src/v17/mod.rs @@ -250,8 +250,9 @@ pub use self::{ control::{GetMemoryInfoStats, Locked, Logging}, generating::{Generate, GenerateToAddress}, hidden::{ - WaitForBlock, WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, - WaitForNewBlock, WaitForNewBlockError, + EstimateRawFee, EstimateRawFeeError, RawFeeDetail, RawFeeRange, WaitForBlock, + WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, WaitForNewBlock, + WaitForNewBlockError, }, mining::{ BlockTemplateTransaction, BlockTemplateTransactionError, GetBlockTemplate, diff --git a/types/src/v18/mod.rs b/types/src/v18/mod.rs index 45c60d87..cbc8c5e9 100644 --- a/types/src/v18/mod.rs +++ b/types/src/v18/mod.rs @@ -262,33 +262,33 @@ pub use crate::v17::{ CombineRawTransaction, ConvertToPsbt, CreateMultisig, CreateMultisigError, CreatePsbt, CreateRawTransaction, CreateWallet, DecodePsbt, DecodePsbtError, DecodeRawTransaction, DecodeScript, DecodeScriptError, DecodeScriptSegwit, DumpPrivKey, DumpWallet, EncryptWallet, - EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, - Generate, GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, - GetAddressInfoLabel, GetAddressesByLabel, GetBalance, GetBestBlockHash, GetBlockCount, - GetBlockHash, GetBlockHeader, GetBlockHeaderError, GetBlockHeaderVerbose, - GetBlockHeaderVerboseError, GetBlockStats, GetBlockStatsError, GetBlockTemplate, - GetBlockTemplateError, GetBlockVerboseOne, GetBlockVerboseOneError, GetBlockVerboseZero, - GetBlockchainInfo, GetBlockchainInfoError, GetChainTips, GetChainTxStats, GetChainTxStatsError, - GetConnectionCount, GetDifficulty, GetMemoryInfoStats, GetMempoolInfo, GetMempoolInfoError, - GetMiningInfo, GetNetTotals, GetNetworkInfo, GetNetworkInfoAddress, GetNetworkInfoError, - GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, GetRawTransaction, - GetRawTransactionVerbose, GetRawTransactionVerboseError, GetReceivedByAddress, GetTransaction, - GetTransactionDetail, GetTransactionDetailError, GetTransactionError, GetTxOut, GetTxOutError, - GetTxOutSetInfo, GetTxOutSetInfoError, GetUnconfirmedBalance, GetWalletInfoError, - ListAddressGroupings, ListAddressGroupingsError, ListAddressGroupingsItem, ListBanned, - ListLabels, ListLockUnspent, ListLockUnspentItem, ListLockUnspentItemError, - ListReceivedByAddressError, ListSinceBlock, ListSinceBlockError, ListTransactions, - ListUnspentItemError, ListWallets, LoadWallet, LockUnspent, Locked, Logging, + EstimateRawFee, EstimateRawFeeError, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, + FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, + GetAddressInfoEmbeddedError, GetAddressInfoLabel, GetAddressesByLabel, GetBalance, + GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, + GetBlockHeaderVerbose, GetBlockHeaderVerboseError, GetBlockStats, GetBlockStatsError, + GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseOne, GetBlockVerboseOneError, + GetBlockVerboseZero, GetBlockchainInfo, GetBlockchainInfoError, GetChainTips, GetChainTxStats, + GetChainTxStatsError, GetConnectionCount, GetDifficulty, GetMemoryInfoStats, GetMempoolInfo, + GetMempoolInfoError, GetMiningInfo, GetNetTotals, GetNetworkInfo, GetNetworkInfoAddress, + GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, + GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, + GetReceivedByAddress, GetTransaction, GetTransactionDetail, GetTransactionDetailError, + GetTransactionError, GetTxOut, GetTxOutError, GetTxOutSetInfo, GetTxOutSetInfoError, + GetUnconfirmedBalance, GetWalletInfoError, ListAddressGroupings, ListAddressGroupingsError, + ListAddressGroupingsItem, ListBanned, ListLabels, ListLockUnspent, ListLockUnspentItem, + ListLockUnspentItemError, ListReceivedByAddressError, ListSinceBlock, ListSinceBlockError, + ListTransactions, ListUnspentItemError, ListWallets, LoadWallet, LockUnspent, Locked, Logging, MapMempoolEntryError, MempoolAcceptance, MempoolEntryError, MempoolEntryFees, MempoolEntryFeesError, NumericError, PartialSignatureError, PruneBlockchain, PsbtInput, - PsbtInputError, PsbtOutput, PsbtOutputError, PsbtScript, RawTransaction, RawTransactionError, - RawTransactionInput, RawTransactionOutput, RescanBlockchain, ScriptType, SendMany, - SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, SignFail, SignFailError, - SignMessage, SignMessageWithPrivKey, SignRawTransaction, SignRawTransactionError, - SignRawTransactionWithKey, SignRawTransactionWithWallet, Softfork, SoftforkReject, - TestMempoolAccept, TransactionCategory, TransactionItem, TransactionItemError, UploadTarget, - ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, VerifyTxOutProof, - WaitForBlock, WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, WaitForNewBlock, - WaitForNewBlockError, WalletCreateFundedPsbt, WalletCreateFundedPsbtError, WalletProcessPsbt, - WitnessUtxo, WitnessUtxoError, + PsbtInputError, PsbtOutput, PsbtOutputError, PsbtScript, RawFeeDetail, RawFeeRange, + RawTransaction, RawTransactionError, RawTransactionInput, RawTransactionOutput, + RescanBlockchain, ScriptType, SendMany, SendRawTransaction, SendToAddress, SetNetworkActive, + SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, + SignRawTransactionError, SignRawTransactionWithKey, SignRawTransactionWithWallet, Softfork, + SoftforkReject, TestMempoolAccept, TransactionCategory, TransactionItem, TransactionItemError, + UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, + VerifyTxOutProof, WaitForBlock, WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, + WaitForNewBlock, WaitForNewBlockError, WalletCreateFundedPsbt, WalletCreateFundedPsbtError, + WalletProcessPsbt, WitnessUtxo, WitnessUtxoError, }; diff --git a/types/src/v19/mod.rs b/types/src/v19/mod.rs index e481cbf2..7ea527ef 100644 --- a/types/src/v19/mod.rs +++ b/types/src/v19/mod.rs @@ -257,10 +257,11 @@ pub use crate::v17::{ ChainTipsError, ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisig, CreateMultisigError, CreatePsbt, CreateRawTransaction, CreateWallet, DecodePsbt, DecodePsbtError, DecodeRawTransaction, DecodeScript, DecodeScriptError, - DecodeScriptSegwit, DumpPrivKey, DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, - FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, - GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressInfoLabel, GetAddressesByLabel, - GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, + DecodeScriptSegwit, DumpPrivKey, DumpWallet, EncryptWallet, EstimateRawFee, + EstimateRawFeeError, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, + FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, + GetAddressInfoEmbeddedError, GetAddressInfoLabel, GetAddressesByLabel, GetBalance, + GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, GetBlockHeaderVerbose, GetBlockHeaderVerboseError, GetBlockStats, GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseOne, GetBlockVerboseOneError, GetBlockVerboseZero, GetChainTips, GetChainTxStatsError, GetConnectionCount, GetDifficulty, @@ -274,15 +275,16 @@ pub use crate::v17::{ ListReceivedByAddressError, ListSinceBlock, ListSinceBlockError, ListTransactions, ListUnspentItemError, ListWallets, LoadWallet, LockUnspent, Locked, Logging, MempoolAcceptance, NumericError, PartialSignatureError, PruneBlockchain, PsbtInput, PsbtInputError, PsbtOutput, - PsbtOutputError, RawTransactionError, RawTransactionInput, RawTransactionOutput, - RescanBlockchain, ScriptType, SendMany, SendRawTransaction, SendToAddress, SetNetworkActive, - SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, - SignRawTransactionError, SignRawTransactionWithKey, SignRawTransactionWithWallet, - SoftforkReject, TestMempoolAccept, TransactionCategory, TransactionItem, TransactionItemError, - UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, - VerifyTxOutProof, WaitForBlock, WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, - WaitForNewBlock, WaitForNewBlockError, WalletCreateFundedPsbt, WalletCreateFundedPsbtError, - WalletProcessPsbt, WitnessUtxo, WitnessUtxoError, + PsbtOutputError, RawFeeDetail, RawFeeRange, RawTransactionError, RawTransactionInput, + RawTransactionOutput, RescanBlockchain, ScriptType, SendMany, SendRawTransaction, + SendToAddress, SetNetworkActive, SetTxFee, SignFail, SignFailError, SignMessage, + SignMessageWithPrivKey, SignRawTransaction, SignRawTransactionError, SignRawTransactionWithKey, + SignRawTransactionWithWallet, SoftforkReject, TestMempoolAccept, TransactionCategory, + TransactionItem, TransactionItemError, UploadTarget, ValidateAddress, ValidateAddressError, + VerifyChain, VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, + WaitForBlockHeight, WaitForBlockHeightError, WaitForNewBlock, WaitForNewBlockError, + WalletCreateFundedPsbt, WalletCreateFundedPsbtError, WalletProcessPsbt, WitnessUtxo, + WitnessUtxoError, }; #[doc(inline)] pub use crate::v18::{ diff --git a/types/src/v20/mod.rs b/types/src/v20/mod.rs index 2d29314f..f7e9ac20 100644 --- a/types/src/v20/mod.rs +++ b/types/src/v20/mod.rs @@ -253,32 +253,32 @@ pub use crate::{ ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, CreateWallet, DecodePsbt, DecodePsbtError, DecodeRawTransaction, DecodeScript, DecodeScriptError, DecodeScriptSegwit, DumpPrivKey, - DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, - FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, - GetAddressInfoEmbeddedError, GetAddressesByLabel, GetBalance, GetBestBlockHash, - GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, GetBlockHeaderVerbose, - GetBlockHeaderVerboseError, GetBlockStats, GetBlockStatsError, GetBlockTemplate, - GetBlockTemplateError, GetBlockVerboseOne, GetBlockVerboseOneError, GetBlockVerboseZero, - GetChainTips, GetChainTxStatsError, GetConnectionCount, GetDifficulty, GetMemoryInfoStats, - GetMempoolInfoError, GetMiningInfo, GetNetTotals, GetNetworkInfoAddress, - GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, - GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, - GetReceivedByAddress, GetTransactionDetailError, GetTransactionError, GetTxOut, - GetTxOutError, GetTxOutSetInfo, GetTxOutSetInfoError, GetUnconfirmedBalance, - GetWalletInfoError, ListAddressGroupings, ListAddressGroupingsError, + DumpWallet, EncryptWallet, EstimateRawFee, EstimateRawFeeError, EstimateSmartFee, + FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, + GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressesByLabel, + GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, + GetBlockHeaderError, GetBlockHeaderVerbose, GetBlockHeaderVerboseError, GetBlockStats, + GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseOne, + GetBlockVerboseOneError, GetBlockVerboseZero, GetChainTips, GetChainTxStatsError, + GetConnectionCount, GetDifficulty, GetMemoryInfoStats, GetMempoolInfoError, GetMiningInfo, + GetNetTotals, GetNetworkInfoAddress, GetNetworkInfoError, GetNetworkInfoNetwork, + GetNewAddress, GetRawChangeAddress, GetRawTransaction, GetRawTransactionVerbose, + GetRawTransactionVerboseError, GetReceivedByAddress, GetTransactionDetailError, + GetTransactionError, GetTxOut, GetTxOutError, GetTxOutSetInfo, GetTxOutSetInfoError, + GetUnconfirmedBalance, GetWalletInfoError, ListAddressGroupings, ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddressError, ListUnspentItemError, ListWallets, LoadWallet, LockUnspent, Locked, MempoolAcceptance, NumericError, PartialSignatureError, - PruneBlockchain, PsbtInput, PsbtInputError, PsbtOutput, PsbtOutputError, - RawTransactionError, RawTransactionInput, RawTransactionOutput, RescanBlockchain, - ScriptType, SendMany, SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, - SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, - SignRawTransactionError, SignRawTransactionWithKey, SignRawTransactionWithWallet, - SoftforkReject, TestMempoolAccept, TransactionCategory, UploadTarget, ValidateAddress, - ValidateAddressError, VerifyChain, VerifyMessage, VerifyTxOutProof, WaitForBlock, - WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, WaitForNewBlock, - WaitForNewBlockError, WalletCreateFundedPsbt, WalletCreateFundedPsbtError, - WalletProcessPsbt, WitnessUtxo, WitnessUtxoError, + PruneBlockchain, PsbtInput, PsbtInputError, PsbtOutput, PsbtOutputError, RawFeeDetail, + RawFeeRange, RawTransactionError, RawTransactionInput, RawTransactionOutput, + RescanBlockchain, ScriptType, SendMany, SendRawTransaction, SendToAddress, + SetNetworkActive, SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, + SignRawTransaction, SignRawTransactionError, SignRawTransactionWithKey, + SignRawTransactionWithWallet, SoftforkReject, TestMempoolAccept, TransactionCategory, + UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, + VerifyTxOutProof, WaitForBlock, WaitForBlockError, WaitForBlockHeight, + WaitForBlockHeightError, WaitForNewBlock, WaitForNewBlockError, WalletCreateFundedPsbt, + WalletCreateFundedPsbtError, WalletProcessPsbt, WitnessUtxo, WitnessUtxoError, }, v18::{ ActiveCommand, AnalyzePsbt, AnalyzePsbtError, AnalyzePsbtInput, AnalyzePsbtInputMissing, diff --git a/types/src/v21/mod.rs b/types/src/v21/mod.rs index fb83edc8..b5c05f4d 100644 --- a/types/src/v21/mod.rs +++ b/types/src/v21/mod.rs @@ -270,31 +270,32 @@ pub use crate::{ ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, CreateWallet, DecodePsbt, DecodePsbtError, DecodeRawTransaction, DecodeScript, DecodeScriptError, DecodeScriptSegwit, DumpPrivKey, - DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, - FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, - GetAddressInfoEmbeddedError, GetAddressesByLabel, GetBalance, GetBestBlockHash, - GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, GetBlockHeaderVerbose, - GetBlockHeaderVerboseError, GetBlockStats, GetBlockStatsError, GetBlockTemplate, - GetBlockTemplateError, GetBlockVerboseOne, GetBlockVerboseOneError, GetBlockVerboseZero, - GetChainTips, GetChainTxStatsError, GetConnectionCount, GetDifficulty, GetMemoryInfoStats, - GetMempoolInfoError, GetMiningInfo, GetNetTotals, GetNetworkInfoAddress, - GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, - GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, - GetReceivedByAddress, GetTransactionDetailError, GetTransactionError, GetTxOut, - GetTxOutError, GetTxOutSetInfo, GetTxOutSetInfoError, GetUnconfirmedBalance, - GetWalletInfoError, ListAddressGroupings, ListAddressGroupingsError, + DumpWallet, EncryptWallet, EstimateRawFee, EstimateRawFeeError, EstimateSmartFee, + FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, + GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressesByLabel, + GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, + GetBlockHeaderError, GetBlockHeaderVerbose, GetBlockHeaderVerboseError, GetBlockStats, + GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseOne, + GetBlockVerboseOneError, GetBlockVerboseZero, GetChainTips, GetChainTxStatsError, + GetConnectionCount, GetDifficulty, GetMemoryInfoStats, GetMempoolInfoError, GetMiningInfo, + GetNetTotals, GetNetworkInfoAddress, GetNetworkInfoError, GetNetworkInfoNetwork, + GetNewAddress, GetRawChangeAddress, GetRawTransaction, GetRawTransactionVerbose, + GetRawTransactionVerboseError, GetReceivedByAddress, GetTransactionDetailError, + GetTransactionError, GetTxOut, GetTxOutError, GetTxOutSetInfo, GetTxOutSetInfoError, + GetUnconfirmedBalance, GetWalletInfoError, ListAddressGroupings, ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddressError, ListUnspentItemError, ListWallets, LoadWallet, LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, - PsbtInput, PsbtInputError, PsbtOutput, PsbtOutputError, RawTransactionError, - RawTransactionInput, RawTransactionOutput, RescanBlockchain, ScriptType, - SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, SignFail, SignFailError, - SignMessage, SignMessageWithPrivKey, SignRawTransaction, SignRawTransactionError, - SignRawTransactionWithKey, SignRawTransactionWithWallet, SoftforkReject, - TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, - VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, WaitForBlockHeight, - WaitForBlockHeightError, WaitForNewBlock, WaitForNewBlockError, WalletCreateFundedPsbt, - WalletCreateFundedPsbtError, WalletProcessPsbt, WitnessUtxo, WitnessUtxoError, + PsbtInput, PsbtInputError, PsbtOutput, PsbtOutputError, RawFeeDetail, RawFeeRange, + RawTransactionError, RawTransactionInput, RawTransactionOutput, RescanBlockchain, + ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, SignFail, + SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, + SignRawTransactionError, SignRawTransactionWithKey, SignRawTransactionWithWallet, + SoftforkReject, TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, + VerifyChain, VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, + WaitForBlockHeight, WaitForBlockHeightError, WaitForNewBlock, WaitForNewBlockError, + WalletCreateFundedPsbt, WalletCreateFundedPsbtError, WalletProcessPsbt, WitnessUtxo, + WitnessUtxoError, }, v18::{ ActiveCommand, AnalyzePsbt, AnalyzePsbtError, AnalyzePsbtInput, AnalyzePsbtInputMissing, diff --git a/types/src/v22/mod.rs b/types/src/v22/mod.rs index efe44a15..ed4ef2fe 100644 --- a/types/src/v22/mod.rs +++ b/types/src/v22/mod.rs @@ -273,31 +273,33 @@ pub use crate::{ BlockTemplateTransactionError, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, CreateWallet, DecodePsbt, DecodePsbtError, - DecodeRawTransaction, DumpPrivKey, DumpWallet, EncryptWallet, EstimateSmartFee, - FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, - GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressesByLabel, - GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, - GetBlockHeaderError, GetBlockHeaderVerbose, GetBlockHeaderVerboseError, GetBlockStats, - GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseOne, - GetBlockVerboseOneError, GetBlockVerboseZero, GetChainTips, GetChainTxStatsError, - GetConnectionCount, GetDifficulty, GetMemoryInfoStats, GetMempoolInfoError, GetMiningInfo, - GetNetTotals, GetNetworkInfoAddress, GetNetworkInfoError, GetNetworkInfoNetwork, - GetNewAddress, GetRawChangeAddress, GetRawTransaction, GetRawTransactionVerbose, - GetRawTransactionVerboseError, GetReceivedByAddress, GetTransactionDetailError, - GetTransactionError, GetTxOut, GetTxOutError, GetTxOutSetInfo, GetTxOutSetInfoError, - GetUnconfirmedBalance, GetWalletInfoError, ListAddressGroupings, ListAddressGroupingsError, + DecodeRawTransaction, DumpPrivKey, DumpWallet, EncryptWallet, EstimateRawFee, + EstimateRawFeeError, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, + FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, + GetAddressInfoEmbeddedError, GetAddressesByLabel, GetBalance, GetBestBlockHash, + GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, GetBlockHeaderVerbose, + GetBlockHeaderVerboseError, GetBlockStats, GetBlockStatsError, GetBlockTemplate, + GetBlockTemplateError, GetBlockVerboseOne, GetBlockVerboseOneError, GetBlockVerboseZero, + GetChainTips, GetChainTxStatsError, GetConnectionCount, GetDifficulty, GetMemoryInfoStats, + GetMempoolInfoError, GetMiningInfo, GetNetTotals, GetNetworkInfoAddress, + GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, + GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, + GetReceivedByAddress, GetTransactionDetailError, GetTransactionError, GetTxOut, + GetTxOutError, GetTxOutSetInfo, GetTxOutSetInfoError, GetUnconfirmedBalance, + GetWalletInfoError, ListAddressGroupings, ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddressError, ListUnspentItemError, ListWallets, LoadWallet, LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, - PsbtInput, PsbtInputError, PsbtOutput, PsbtOutputError, RawTransactionError, - RawTransactionInput, RawTransactionOutput, RescanBlockchain, ScriptType, - SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, SignFail, SignFailError, - SignMessage, SignMessageWithPrivKey, SignRawTransaction, SignRawTransactionError, - SignRawTransactionWithKey, SignRawTransactionWithWallet, SoftforkReject, - TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, - VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, WaitForBlockHeight, - WaitForBlockHeightError, WaitForNewBlock, WaitForNewBlockError, WalletCreateFundedPsbt, - WalletCreateFundedPsbtError, WalletProcessPsbt, WitnessUtxo, WitnessUtxoError, + PsbtInput, PsbtInputError, PsbtOutput, PsbtOutputError, RawFeeDetail, RawFeeRange, + RawTransactionError, RawTransactionInput, RawTransactionOutput, RescanBlockchain, + ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, SignFail, + SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, + SignRawTransactionError, SignRawTransactionWithKey, SignRawTransactionWithWallet, + SoftforkReject, TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, + VerifyChain, VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, + WaitForBlockHeight, WaitForBlockHeightError, WaitForNewBlock, WaitForNewBlockError, + WalletCreateFundedPsbt, WalletCreateFundedPsbtError, WalletProcessPsbt, WitnessUtxo, + WitnessUtxoError, }, v18::{ ActiveCommand, AnalyzePsbt, AnalyzePsbtError, AnalyzePsbtInput, AnalyzePsbtInputMissing, diff --git a/types/src/v23/mod.rs b/types/src/v23/mod.rs index ff562eef..38a9aa5c 100644 --- a/types/src/v23/mod.rs +++ b/types/src/v23/mod.rs @@ -273,30 +273,31 @@ pub use crate::{ BlockTemplateTransactionError, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, CreateWallet, DecodeRawTransaction, DumpPrivKey, - DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, - FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, - GetAddressInfoEmbeddedError, GetAddressesByLabel, GetBalance, GetBestBlockHash, - GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, GetBlockHeaderVerbose, - GetBlockHeaderVerboseError, GetBlockStats, GetBlockStatsError, GetBlockTemplate, - GetBlockTemplateError, GetBlockVerboseOne, GetBlockVerboseOneError, GetBlockVerboseZero, - GetChainTips, GetChainTxStatsError, GetConnectionCount, GetDifficulty, GetMemoryInfoStats, - GetMempoolInfoError, GetMiningInfo, GetNetTotals, GetNetworkInfoAddress, - GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, - GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, - GetReceivedByAddress, GetTransactionDetailError, GetTxOut, GetTxOutError, GetTxOutSetInfo, - GetTxOutSetInfoError, GetUnconfirmedBalance, GetWalletInfoError, ListAddressGroupings, - ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, ListLockUnspent, - ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddressError, - ListUnspentItemError, ListWallets, LoadWallet, LockUnspent, Locked, NumericError, - PartialSignatureError, PruneBlockchain, RawTransactionError, RawTransactionInput, - RawTransactionOutput, RescanBlockchain, ScriptType, SendRawTransaction, SendToAddress, - SetNetworkActive, SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, - SignRawTransaction, SignRawTransactionError, SignRawTransactionWithKey, - SignRawTransactionWithWallet, SoftforkReject, TransactionCategory, UploadTarget, - ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, VerifyTxOutProof, - WaitForBlock, WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, - WaitForNewBlock, WaitForNewBlockError, WalletCreateFundedPsbt, WalletCreateFundedPsbtError, - WalletProcessPsbt, WitnessUtxo, WitnessUtxoError, + DumpWallet, EncryptWallet, EstimateRawFee, EstimateRawFeeError, EstimateSmartFee, + FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, + GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressesByLabel, + GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, + GetBlockHeaderError, GetBlockHeaderVerbose, GetBlockHeaderVerboseError, GetBlockStats, + GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseOne, + GetBlockVerboseOneError, GetBlockVerboseZero, GetChainTips, GetChainTxStatsError, + GetConnectionCount, GetDifficulty, GetMemoryInfoStats, GetMempoolInfoError, GetMiningInfo, + GetNetTotals, GetNetworkInfoAddress, GetNetworkInfoError, GetNetworkInfoNetwork, + GetNewAddress, GetRawChangeAddress, GetRawTransaction, GetRawTransactionVerbose, + GetRawTransactionVerboseError, GetReceivedByAddress, GetTransactionDetailError, GetTxOut, + GetTxOutError, GetTxOutSetInfo, GetTxOutSetInfoError, GetUnconfirmedBalance, + GetWalletInfoError, ListAddressGroupings, ListAddressGroupingsError, + ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, + ListLockUnspentItemError, ListReceivedByAddressError, ListUnspentItemError, ListWallets, + LoadWallet, LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, + RawFeeDetail, RawFeeRange, RawTransactionError, RawTransactionInput, RawTransactionOutput, + RescanBlockchain, ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, + SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, + SignRawTransactionError, SignRawTransactionWithKey, SignRawTransactionWithWallet, + SoftforkReject, TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, + VerifyChain, VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, + WaitForBlockHeight, WaitForBlockHeightError, WaitForNewBlock, WaitForNewBlockError, + WalletCreateFundedPsbt, WalletCreateFundedPsbtError, WalletProcessPsbt, WitnessUtxo, + WitnessUtxoError, }, v18::{ ActiveCommand, AnalyzePsbt, AnalyzePsbtError, AnalyzePsbtInput, AnalyzePsbtInputMissing, diff --git a/types/src/v24/mod.rs b/types/src/v24/mod.rs index d9b9904a..9faa1212 100644 --- a/types/src/v24/mod.rs +++ b/types/src/v24/mod.rs @@ -273,30 +273,31 @@ pub use crate::{ BlockTemplateTransactionError, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, CreateWallet, DecodeRawTransaction, DumpPrivKey, - DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, - FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, - GetAddressInfoEmbeddedError, GetAddressesByLabel, GetBalance, GetBestBlockHash, - GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, GetBlockHeaderVerbose, - GetBlockHeaderVerboseError, GetBlockStats, GetBlockStatsError, GetBlockTemplate, - GetBlockTemplateError, GetBlockVerboseOne, GetBlockVerboseOneError, GetBlockVerboseZero, - GetChainTips, GetChainTxStatsError, GetConnectionCount, GetDifficulty, GetMemoryInfoStats, - GetMempoolInfoError, GetMiningInfo, GetNetTotals, GetNetworkInfoAddress, - GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, - GetRawMempool, GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, - GetReceivedByAddress, GetTransactionDetailError, GetTxOut, GetTxOutError, GetTxOutSetInfo, - GetTxOutSetInfoError, GetUnconfirmedBalance, GetWalletInfoError, ListAddressGroupings, - ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, ListLockUnspent, - ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddressError, - ListUnspentItemError, ListWallets, LoadWallet, LockUnspent, Locked, NumericError, - PartialSignatureError, PruneBlockchain, RawTransactionError, RawTransactionInput, - RawTransactionOutput, RescanBlockchain, ScriptType, SendRawTransaction, SendToAddress, - SetNetworkActive, SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, - SignRawTransaction, SignRawTransactionError, SignRawTransactionWithKey, - SignRawTransactionWithWallet, SoftforkReject, TransactionCategory, UploadTarget, - ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, VerifyTxOutProof, - WaitForBlock, WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, - WaitForNewBlock, WaitForNewBlockError, WalletCreateFundedPsbt, WalletCreateFundedPsbtError, - WalletProcessPsbt, WitnessUtxo, WitnessUtxoError, + DumpWallet, EncryptWallet, EstimateRawFee, EstimateRawFeeError, EstimateSmartFee, + FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, + GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressesByLabel, + GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, + GetBlockHeaderError, GetBlockHeaderVerbose, GetBlockHeaderVerboseError, GetBlockStats, + GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseOne, + GetBlockVerboseOneError, GetBlockVerboseZero, GetChainTips, GetChainTxStatsError, + GetConnectionCount, GetDifficulty, GetMemoryInfoStats, GetMempoolInfoError, GetMiningInfo, + GetNetTotals, GetNetworkInfoAddress, GetNetworkInfoError, GetNetworkInfoNetwork, + GetNewAddress, GetRawChangeAddress, GetRawMempool, GetRawTransaction, + GetRawTransactionVerbose, GetRawTransactionVerboseError, GetReceivedByAddress, + GetTransactionDetailError, GetTxOut, GetTxOutError, GetTxOutSetInfo, GetTxOutSetInfoError, + GetUnconfirmedBalance, GetWalletInfoError, ListAddressGroupings, ListAddressGroupingsError, + ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, + ListLockUnspentItemError, ListReceivedByAddressError, ListUnspentItemError, ListWallets, + LoadWallet, LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, + RawFeeDetail, RawFeeRange, RawTransactionError, RawTransactionInput, RawTransactionOutput, + RescanBlockchain, ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, + SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, + SignRawTransactionError, SignRawTransactionWithKey, SignRawTransactionWithWallet, + SoftforkReject, TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, + VerifyChain, VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, + WaitForBlockHeight, WaitForBlockHeightError, WaitForNewBlock, WaitForNewBlockError, + WalletCreateFundedPsbt, WalletCreateFundedPsbtError, WalletProcessPsbt, WitnessUtxo, + WitnessUtxoError, }, v18::{ ActiveCommand, AnalyzePsbt, AnalyzePsbtError, AnalyzePsbtInput, AnalyzePsbtInputMissing, diff --git a/types/src/v25/mod.rs b/types/src/v25/mod.rs index 7a31ef90..afd270eb 100644 --- a/types/src/v25/mod.rs +++ b/types/src/v25/mod.rs @@ -267,8 +267,8 @@ pub use crate::{ BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, DecodeRawTransaction, DumpPrivKey, DumpWallet, EncryptWallet, - EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, - FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, + EstimateRawFee, EstimateRawFeeError, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, + FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressesByLabel, GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, GetBlockHeaderVerbose, GetBlockHeaderVerboseError, GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, @@ -282,15 +282,15 @@ pub use crate::{ ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddressError, ListUnspentItemError, ListWallets, LockUnspent, Locked, NumericError, - PartialSignatureError, PruneBlockchain, RawTransactionError, RawTransactionInput, - RawTransactionOutput, RescanBlockchain, ScriptType, SendRawTransaction, SendToAddress, - SetNetworkActive, SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, - SignRawTransaction, SignRawTransactionError, SignRawTransactionWithKey, - SignRawTransactionWithWallet, SoftforkReject, TransactionCategory, UploadTarget, - ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, VerifyTxOutProof, - WaitForBlock, WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, - WaitForNewBlock, WaitForNewBlockError, WalletCreateFundedPsbt, WalletCreateFundedPsbtError, - WalletProcessPsbt, WitnessUtxo, WitnessUtxoError, + PartialSignatureError, PruneBlockchain, RawFeeDetail, RawFeeRange, RawTransactionError, + RawTransactionInput, RawTransactionOutput, RescanBlockchain, ScriptType, + SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, SignFail, SignFailError, + SignMessage, SignMessageWithPrivKey, SignRawTransaction, SignRawTransactionError, + SignRawTransactionWithKey, SignRawTransactionWithWallet, SoftforkReject, + TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, + VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, WaitForBlockHeight, + WaitForBlockHeightError, WaitForNewBlock, WaitForNewBlockError, WalletCreateFundedPsbt, + WalletCreateFundedPsbtError, WalletProcessPsbt, WitnessUtxo, WitnessUtxoError, }, v18::{ ActiveCommand, AnalyzePsbt, AnalyzePsbtError, AnalyzePsbtInput, AnalyzePsbtInputMissing, diff --git a/types/src/v26/mod.rs b/types/src/v26/mod.rs index 482fa991..4a2ab341 100644 --- a/types/src/v26/mod.rs +++ b/types/src/v26/mod.rs @@ -284,24 +284,24 @@ pub use crate::{ BlockTemplateTransactionError, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, DecodeRawTransaction, DumpPrivKey, DumpWallet, - EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, - FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, - GetAddressInfoEmbeddedError, GetAddressesByLabel, GetBalance, GetBestBlockHash, - GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, GetBlockHeaderVerbose, - GetBlockHeaderVerboseError, GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, - GetBlockVerboseOne, GetBlockVerboseOneError, GetBlockVerboseZero, GetChainTips, - GetChainTxStatsError, GetConnectionCount, GetDifficulty, GetMemoryInfoStats, - GetMempoolInfoError, GetMiningInfo, GetNetTotals, GetNetworkInfoAddress, - GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, - GetRawMempool, GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, - GetReceivedByAddress, GetTransactionDetailError, GetTxOut, GetTxOutError, - GetUnconfirmedBalance, ListAddressGroupings, ListAddressGroupingsError, + EncryptWallet, EstimateRawFee, EstimateRawFeeError, EstimateSmartFee, FinalizePsbt, + FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, + GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressesByLabel, + GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, + GetBlockHeaderError, GetBlockHeaderVerbose, GetBlockHeaderVerboseError, GetBlockStatsError, + GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseOne, GetBlockVerboseOneError, + GetBlockVerboseZero, GetChainTips, GetChainTxStatsError, GetConnectionCount, GetDifficulty, + GetMemoryInfoStats, GetMempoolInfoError, GetMiningInfo, GetNetTotals, + GetNetworkInfoAddress, GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, + GetRawChangeAddress, GetRawMempool, GetRawTransaction, GetRawTransactionVerbose, + GetRawTransactionVerboseError, GetReceivedByAddress, GetTransactionDetailError, GetTxOut, + GetTxOutError, GetUnconfirmedBalance, ListAddressGroupings, ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddressError, ListUnspentItemError, ListWallets, - LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, - RawTransactionError, RawTransactionInput, RawTransactionOutput, RescanBlockchain, - ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, SignFail, - SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, + LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, RawFeeDetail, + RawFeeRange, RawTransactionError, RawTransactionInput, RawTransactionOutput, + RescanBlockchain, ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, + SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, SignRawTransactionError, SignRawTransactionWithKey, SignRawTransactionWithWallet, SoftforkReject, TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, diff --git a/types/src/v27/mod.rs b/types/src/v27/mod.rs index 63c4bf47..6f032eaa 100644 --- a/types/src/v27/mod.rs +++ b/types/src/v27/mod.rs @@ -260,24 +260,24 @@ pub use crate::{ BlockTemplateTransactionError, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, DecodeRawTransaction, DumpPrivKey, DumpWallet, - EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, - FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, - GetAddressInfoEmbeddedError, GetAddressesByLabel, GetBalance, GetBestBlockHash, - GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, GetBlockHeaderVerbose, - GetBlockHeaderVerboseError, GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, - GetBlockVerboseOne, GetBlockVerboseOneError, GetBlockVerboseZero, GetChainTips, - GetChainTxStatsError, GetConnectionCount, GetDifficulty, GetMemoryInfoStats, - GetMempoolInfoError, GetMiningInfo, GetNetTotals, GetNetworkInfoAddress, - GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, - GetRawMempool, GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, - GetReceivedByAddress, GetTransactionDetailError, GetTxOut, GetTxOutError, - GetUnconfirmedBalance, ListAddressGroupings, ListAddressGroupingsError, + EncryptWallet, EstimateRawFee, EstimateRawFeeError, EstimateSmartFee, FinalizePsbt, + FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, + GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressesByLabel, + GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, + GetBlockHeaderError, GetBlockHeaderVerbose, GetBlockHeaderVerboseError, GetBlockStatsError, + GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseOne, GetBlockVerboseOneError, + GetBlockVerboseZero, GetChainTips, GetChainTxStatsError, GetConnectionCount, GetDifficulty, + GetMemoryInfoStats, GetMempoolInfoError, GetMiningInfo, GetNetTotals, + GetNetworkInfoAddress, GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, + GetRawChangeAddress, GetRawMempool, GetRawTransaction, GetRawTransactionVerbose, + GetRawTransactionVerboseError, GetReceivedByAddress, GetTransactionDetailError, GetTxOut, + GetTxOutError, GetUnconfirmedBalance, ListAddressGroupings, ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddressError, ListUnspentItemError, ListWallets, - LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, - RawTransactionError, RawTransactionInput, RawTransactionOutput, RescanBlockchain, - ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, SignFail, - SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, + LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, RawFeeDetail, + RawFeeRange, RawTransactionError, RawTransactionInput, RawTransactionOutput, + RescanBlockchain, ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, + SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, SignRawTransactionError, SignRawTransactionWithKey, SignRawTransactionWithWallet, SoftforkReject, TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, diff --git a/types/src/v28/mod.rs b/types/src/v28/mod.rs index 66fbc130..22a6e0e3 100644 --- a/types/src/v28/mod.rs +++ b/types/src/v28/mod.rs @@ -281,24 +281,24 @@ pub use crate::{ BlockTemplateTransactionError, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, DecodeRawTransaction, DumpPrivKey, DumpWallet, - EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, - FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, - GetAddressInfoEmbeddedError, GetAddressesByLabel, GetBalance, GetBestBlockHash, - GetBlockCount, GetBlockHash, GetBlockHeader, GetBlockHeaderError, GetBlockHeaderVerbose, - GetBlockHeaderVerboseError, GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, - GetBlockVerboseOne, GetBlockVerboseOneError, GetBlockVerboseZero, GetChainTips, - GetChainTxStatsError, GetConnectionCount, GetDifficulty, GetMemoryInfoStats, - GetMempoolInfoError, GetNetTotals, GetNetworkInfoAddress, GetNetworkInfoError, - GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, GetRawMempool, - GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, + EncryptWallet, EstimateRawFee, EstimateRawFeeError, EstimateSmartFee, FinalizePsbt, + FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, + GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressesByLabel, + GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockHeader, + GetBlockHeaderError, GetBlockHeaderVerbose, GetBlockHeaderVerboseError, GetBlockStatsError, + GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseOne, GetBlockVerboseOneError, + GetBlockVerboseZero, GetChainTips, GetChainTxStatsError, GetConnectionCount, GetDifficulty, + GetMemoryInfoStats, GetMempoolInfoError, GetNetTotals, GetNetworkInfoAddress, + GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, + GetRawMempool, GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, GetReceivedByAddress, GetTransactionDetailError, GetTxOut, GetTxOutError, GetUnconfirmedBalance, ListAddressGroupings, ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddressError, ListUnspentItemError, ListWallets, - LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, - RawTransactionError, RawTransactionInput, RawTransactionOutput, RescanBlockchain, - ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, SignFail, - SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, + LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, RawFeeDetail, + RawFeeRange, RawTransactionError, RawTransactionInput, RawTransactionOutput, + RescanBlockchain, ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, + SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, SignRawTransactionError, SignRawTransactionWithKey, SignRawTransactionWithWallet, SoftforkReject, TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, diff --git a/types/src/v29/mod.rs b/types/src/v29/mod.rs index bd683ca9..f2661c44 100644 --- a/types/src/v29/mod.rs +++ b/types/src/v29/mod.rs @@ -276,22 +276,23 @@ pub use crate::{ BlockTemplateTransactionError, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, DecodeRawTransaction, DecodeScriptSegwit, DumpPrivKey, - DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, - FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, - GetAddressInfoEmbeddedError, GetAddressesByLabel, GetBalance, GetBestBlockHash, - GetBlockCount, GetBlockHash, GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, - GetBlockVerboseZero, GetChainTips, GetChainTxStatsError, GetConnectionCount, GetDifficulty, - GetMemoryInfoStats, GetMempoolInfoError, GetNetTotals, GetNetworkInfoAddress, - GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, - GetRawMempool, GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, + DumpWallet, EncryptWallet, EstimateRawFee, EstimateRawFeeError, EstimateSmartFee, + FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, + GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressesByLabel, + GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockStatsError, + GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseZero, GetChainTips, + GetChainTxStatsError, GetConnectionCount, GetDifficulty, GetMemoryInfoStats, + GetMempoolInfoError, GetNetTotals, GetNetworkInfoAddress, GetNetworkInfoError, + GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, GetRawMempool, + GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, GetReceivedByAddress, GetTransactionDetailError, GetTxOut, GetTxOutError, GetUnconfirmedBalance, ListAddressGroupings, ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddressError, ListUnspentItemError, ListWallets, - LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, - RawTransactionError, RawTransactionInput, RawTransactionOutput, RescanBlockchain, - ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, SignFail, - SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, + LockUnspent, Locked, NumericError, PartialSignatureError, PruneBlockchain, RawFeeDetail, + RawFeeRange, RawTransactionError, RawTransactionInput, RawTransactionOutput, + RescanBlockchain, ScriptType, SendRawTransaction, SendToAddress, SetNetworkActive, + SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, SignRawTransaction, SignRawTransactionError, SignRawTransactionWithKey, SignRawTransactionWithWallet, TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, VerifyTxOutProof, WaitForBlock, WaitForBlockError, WaitForBlockHeight, diff --git a/types/src/v30/mod.rs b/types/src/v30/mod.rs index 9fd6453f..5f665580 100644 --- a/types/src/v30/mod.rs +++ b/types/src/v30/mod.rs @@ -270,28 +270,28 @@ pub use crate::{ Bip125Replaceable, Bip32DerivError, BlockTemplateTransaction, BlockTemplateTransactionError, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, - CreatePsbt, CreateRawTransaction, DecodeRawTransaction, EncryptWallet, EstimateSmartFee, - FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, - GenerateToAddress, GetAddedNodeInfo, GetAddressInfoEmbeddedError, GetAddressesByLabel, - GetBalance, GetBestBlockHash, GetBlockCount, GetBlockHash, GetBlockStatsError, - GetBlockTemplate, GetBlockTemplateError, GetBlockVerboseZero, GetChainTips, - GetChainTxStatsError, GetConnectionCount, GetDifficulty, GetMemoryInfoStats, - GetMempoolInfoError, GetNetTotals, GetNetworkInfoAddress, GetNetworkInfoError, - GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, GetRawMempool, - GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, + CreatePsbt, CreateRawTransaction, DecodeRawTransaction, EncryptWallet, EstimateRawFee, + EstimateRawFeeError, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, + FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, + GetAddressInfoEmbeddedError, GetAddressesByLabel, GetBalance, GetBestBlockHash, + GetBlockCount, GetBlockHash, GetBlockStatsError, GetBlockTemplate, GetBlockTemplateError, + GetBlockVerboseZero, GetChainTips, GetChainTxStatsError, GetConnectionCount, GetDifficulty, + GetMemoryInfoStats, GetMempoolInfoError, GetNetTotals, GetNetworkInfoAddress, + GetNetworkInfoError, GetNetworkInfoNetwork, GetNewAddress, GetRawChangeAddress, + GetRawMempool, GetRawTransaction, GetRawTransactionVerbose, GetRawTransactionVerboseError, GetReceivedByAddress, GetTransactionDetailError, GetTxOut, GetTxOutError, ListAddressGroupings, ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddressError, ListUnspentItemError, ListWallets, LockUnspent, Locked, NumericError, - PartialSignatureError, PruneBlockchain, RawTransactionError, RawTransactionInput, - RawTransactionOutput, RescanBlockchain, ScriptType, SendRawTransaction, SendToAddress, - SetNetworkActive, SetTxFee, SignFail, SignFailError, SignMessage, SignMessageWithPrivKey, - SignRawTransaction, SignRawTransactionError, SignRawTransactionWithKey, - SignRawTransactionWithWallet, TransactionCategory, UploadTarget, ValidateAddress, - ValidateAddressError, VerifyChain, VerifyMessage, VerifyTxOutProof, WaitForBlock, - WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, WaitForNewBlock, - WaitForNewBlockError, WalletCreateFundedPsbt, WalletCreateFundedPsbtError, WitnessUtxo, - WitnessUtxoError, + PartialSignatureError, PruneBlockchain, RawFeeDetail, RawFeeRange, RawTransactionError, + RawTransactionInput, RawTransactionOutput, RescanBlockchain, ScriptType, + SendRawTransaction, SendToAddress, SetNetworkActive, SetTxFee, SignFail, SignFailError, + SignMessage, SignMessageWithPrivKey, SignRawTransaction, SignRawTransactionError, + SignRawTransactionWithKey, SignRawTransactionWithWallet, TransactionCategory, UploadTarget, + ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, VerifyTxOutProof, + WaitForBlock, WaitForBlockError, WaitForBlockHeight, WaitForBlockHeightError, + WaitForNewBlock, WaitForNewBlockError, WalletCreateFundedPsbt, WalletCreateFundedPsbtError, + WitnessUtxo, WitnessUtxoError, }, v18::{ ActiveCommand, AnalyzePsbt, AnalyzePsbtError, AnalyzePsbtInput, AnalyzePsbtInputMissing, From b453c7192bd132ee6258cf6ecd2426f7723f1f49 Mon Sep 17 00:00:00 2001 From: "Jamil Lambert, PhD" Date: Tue, 16 Dec 2025 10:02:47 +0000 Subject: [PATCH 4/4] Implement addconnection in hidden Implement the RPC in v22 hidden module, add the client macro, model and test. Redefine the client macro in v27 where there is an added required argument. Add all the reexports up to v30. --- client/src/client_sync/v22/hidden.rs | 26 +++++++++++++++++++++ client/src/client_sync/v22/mod.rs | 2 ++ client/src/client_sync/v23/mod.rs | 1 + client/src/client_sync/v24/mod.rs | 1 + client/src/client_sync/v25/mod.rs | 1 + client/src/client_sync/v26/mod.rs | 1 + client/src/client_sync/v27/hidden.rs | 30 ++++++++++++++++++++++++ client/src/client_sync/v27/mod.rs | 3 +++ client/src/client_sync/v28/mod.rs | 1 + client/src/client_sync/v29/mod.rs | 1 + client/src/client_sync/v30/mod.rs | 1 + integration_test/tests/hidden.rs | 34 ++++++++++++++++++++++++++++ types/src/model/hidden.rs | 9 ++++++++ types/src/model/mod.rs | 2 +- types/src/v22/hidden/into.rs | 11 +++++++++ types/src/v22/hidden/mod.rs | 24 ++++++++++++++++++++ types/src/v22/mod.rs | 2 ++ types/src/v23/mod.rs | 8 +++---- types/src/v24/mod.rs | 8 +++---- types/src/v25/mod.rs | 4 ++-- types/src/v26/mod.rs | 4 ++-- types/src/v27/mod.rs | 4 ++-- types/src/v28/mod.rs | 4 ++-- types/src/v29/mod.rs | 4 ++-- types/src/v30/mod.rs | 4 ++-- 25 files changed, 169 insertions(+), 21 deletions(-) create mode 100644 client/src/client_sync/v22/hidden.rs create mode 100644 client/src/client_sync/v27/hidden.rs create mode 100644 types/src/v22/hidden/into.rs create mode 100644 types/src/v22/hidden/mod.rs diff --git a/client/src/client_sync/v22/hidden.rs b/client/src/client_sync/v22/hidden.rs new file mode 100644 index 00000000..d6f23df5 --- /dev/null +++ b/client/src/client_sync/v22/hidden.rs @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: CC0-1.0 + +//! Macros for implementing JSON-RPC methods on a client. +//! +//! Specifically this is `== Hidden ==` methods that are not listed in the +//! API docs of Bitcoin Core `v22`. +//! +//! All macros require `Client` to be in scope. +//! +//! See, or use the `define_jsonrpc_bitreq_client!` macro to define a `Client`. + +/// Implements Bitcoin Core JSON-RPC API method `addconnection`. +#[macro_export] +macro_rules! impl_client_v22__add_connection { + () => { + impl Client { + pub fn add_connection( + &self, + address: &str, + connection_type: &str, + ) -> Result { + self.call("addconnection", &[into_json(address)?, into_json(connection_type)?]) + } + } + }; +} diff --git a/client/src/client_sync/v22/mod.rs b/client/src/client_sync/v22/mod.rs index c6c0ceb5..1e0b542b 100644 --- a/client/src/client_sync/v22/mod.rs +++ b/client/src/client_sync/v22/mod.rs @@ -4,6 +4,7 @@ //! //! We ignore option arguments unless they effect the shape of the returned JSON data. +mod hidden; mod signer; mod wallet; @@ -69,6 +70,7 @@ crate::impl_client_v20__generate_to_descriptor!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v22__add_connection!(); crate::impl_client_v21__add_peer_address!(); crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); diff --git a/client/src/client_sync/v23/mod.rs b/client/src/client_sync/v23/mod.rs index 012c6dad..aba9cd2b 100644 --- a/client/src/client_sync/v23/mod.rs +++ b/client/src/client_sync/v23/mod.rs @@ -72,6 +72,7 @@ crate::impl_client_v20__generate_to_descriptor!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v22__add_connection!(); crate::impl_client_v21__add_peer_address!(); crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); diff --git a/client/src/client_sync/v24/mod.rs b/client/src/client_sync/v24/mod.rs index 28861f26..617dba69 100644 --- a/client/src/client_sync/v24/mod.rs +++ b/client/src/client_sync/v24/mod.rs @@ -73,6 +73,7 @@ crate::impl_client_v20__generate_to_descriptor!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v22__add_connection!(); crate::impl_client_v21__add_peer_address!(); crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); diff --git a/client/src/client_sync/v25/mod.rs b/client/src/client_sync/v25/mod.rs index 931f6607..b17d955d 100644 --- a/client/src/client_sync/v25/mod.rs +++ b/client/src/client_sync/v25/mod.rs @@ -74,6 +74,7 @@ crate::impl_client_v20__generate_to_descriptor!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v22__add_connection!(); crate::impl_client_v21__add_peer_address!(); crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); diff --git a/client/src/client_sync/v26/mod.rs b/client/src/client_sync/v26/mod.rs index dd004165..b1f021a3 100644 --- a/client/src/client_sync/v26/mod.rs +++ b/client/src/client_sync/v26/mod.rs @@ -80,6 +80,7 @@ crate::impl_client_v20__generate_to_descriptor!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v22__add_connection!(); crate::impl_client_v21__add_peer_address!(); crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); diff --git a/client/src/client_sync/v27/hidden.rs b/client/src/client_sync/v27/hidden.rs new file mode 100644 index 00000000..86edb7b3 --- /dev/null +++ b/client/src/client_sync/v27/hidden.rs @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: CC0-1.0 + +//! Macros for implementing JSON-RPC methods on a client. +//! +//! Specifically this is `== Hidden ==` methods that are not listed in the +//! API docs of Bitcoin Core `v29`. +//! +//! All macros require `Client` to be in scope. +//! +//! See, or use the `define_jsonrpc_bitreq_client!` macro to define a `Client`. + +/// Implements Bitcoin Core JSON-RPC API method `addconnection`. +#[macro_export] +macro_rules! impl_client_v27__add_connection { + () => { + impl Client { + pub fn add_connection( + &self, + address: &str, + connection_type: &str, + v2transport: bool, + ) -> Result { + self.call( + "addconnection", + &[into_json(address)?, into_json(connection_type)?, into_json(v2transport)?], + ) + } + } + }; +} diff --git a/client/src/client_sync/v27/mod.rs b/client/src/client_sync/v27/mod.rs index 54c15700..385a122a 100644 --- a/client/src/client_sync/v27/mod.rs +++ b/client/src/client_sync/v27/mod.rs @@ -4,6 +4,8 @@ //! //! We ignore option arguments unless they effect the shape of the returned JSON data. +pub mod hidden; + use std::collections::BTreeMap; use std::path::Path; @@ -74,6 +76,7 @@ crate::impl_client_v20__generate_to_descriptor!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v27__add_connection!(); crate::impl_client_v21__add_peer_address!(); crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); diff --git a/client/src/client_sync/v28/mod.rs b/client/src/client_sync/v28/mod.rs index cb296ba3..422ad4e0 100644 --- a/client/src/client_sync/v28/mod.rs +++ b/client/src/client_sync/v28/mod.rs @@ -77,6 +77,7 @@ crate::impl_client_v20__generate_to_descriptor!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v27__add_connection!(); crate::impl_client_v21__add_peer_address!(); crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); diff --git a/client/src/client_sync/v29/mod.rs b/client/src/client_sync/v29/mod.rs index 1b52b58c..9fe5d04e 100644 --- a/client/src/client_sync/v29/mod.rs +++ b/client/src/client_sync/v29/mod.rs @@ -77,6 +77,7 @@ crate::impl_client_v20__generate_to_descriptor!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v27__add_connection!(); crate::impl_client_v21__add_peer_address!(); crate::impl_client_v17__estimate_raw_fee!(); crate::impl_client_v17__wait_for_block!(); diff --git a/client/src/client_sync/v30/mod.rs b/client/src/client_sync/v30/mod.rs index 59c8352d..d22722ac 100644 --- a/client/src/client_sync/v30/mod.rs +++ b/client/src/client_sync/v30/mod.rs @@ -78,6 +78,7 @@ crate::impl_client_v20__generate_to_descriptor!(); crate::impl_client_v17__invalidate_block!(); // == Hidden == +crate::impl_client_v27__add_connection!(); crate::impl_client_v21__add_peer_address!(); // == Mining == diff --git a/integration_test/tests/hidden.rs b/integration_test/tests/hidden.rs index bf14931e..886c172e 100644 --- a/integration_test/tests/hidden.rs +++ b/integration_test/tests/hidden.rs @@ -7,6 +7,40 @@ use integration_test::{Node, NodeExt as _, Wallet}; use node::mtype; use node::vtype::*; // All the version specific types. +#[cfg(not(feature = "v21_and_below"))] +use node::P2P; + +#[test] +#[cfg(not(feature = "v21_and_below"))] +fn hidden__add_connection__modelled() { + let (listener, dialer, _node3) = integration_test::three_node_network(); + + let p2p = listener.p2p_connect(false).expect("p2p address"); + let address = match p2p { + P2P::Connect(socket, _) => socket.to_string(), + _ => unreachable!("p2p_connect should return P2P::Connect"), + }; + + let json: AddConnection = { + #[cfg(feature = "v26_and_below")] + { + dialer.client.add_connection(&address, "outbound-full-relay").expect("addconnection") + } + #[cfg(not(feature = "v26_and_below"))] + { + dialer + .client + .add_connection(&address, "outbound-full-relay", false) + .expect("addconnection") + } + }; + + let model: mtype::AddConnection = json.into_model(); + + assert_eq!(model.address, address); + assert_eq!(model.connection_type, "outbound-full-relay"); + assert!(dialer.peers_connected() >= 1); +} #[test] fn hidden__estimate_raw_fee__modelled() { diff --git a/types/src/model/hidden.rs b/types/src/model/hidden.rs index 3665d626..8f36533e 100644 --- a/types/src/model/hidden.rs +++ b/types/src/model/hidden.rs @@ -8,6 +8,15 @@ use bitcoin::FeeRate; use serde::{Deserialize, Serialize}; +/// Models the result of JSON-RPC method `addconnection`. +#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] +pub struct AddConnection { + /// The address of the newly added connection. + pub address: String, + /// Type of connection. + pub connection_type: String, +} + /// Models the result of JSON-RPC method `estimaterawfee`. #[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] pub struct EstimateRawFee { diff --git a/types/src/model/mod.rs b/types/src/model/mod.rs index 1b0b326f..8fbd0fd1 100644 --- a/types/src/model/mod.rs +++ b/types/src/model/mod.rs @@ -39,7 +39,7 @@ pub use self::{ WaitForBlockHeight, WaitForNewBlock, }, generating::{Generate, GenerateBlock, GenerateToAddress, GenerateToDescriptor}, - hidden::{EstimateRawFee, RawFeeDetail, RawFeeRange}, + hidden::{AddConnection, EstimateRawFee, RawFeeDetail, RawFeeRange}, mining::{ BlockTemplateTransaction, GetBlockTemplate, GetMiningInfo, GetPrioritisedTransactions, NextBlockInfo, PrioritisedTransaction, diff --git a/types/src/v22/hidden/into.rs b/types/src/v22/hidden/into.rs new file mode 100644 index 00000000..af8f9769 --- /dev/null +++ b/types/src/v22/hidden/into.rs @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: CC0-1.0 + +use super::AddConnection; +use crate::model; + +impl AddConnection { + /// Converts version specific type to a version nonspecific, more strongly typed type. + pub fn into_model(self) -> model::AddConnection { + model::AddConnection { address: self.address, connection_type: self.connection_type } + } +} diff --git a/types/src/v22/hidden/mod.rs b/types/src/v22/hidden/mod.rs new file mode 100644 index 00000000..fa63eb1f --- /dev/null +++ b/types/src/v22/hidden/mod.rs @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: CC0-1.0 + +//! The JSON-RPC API for Bitcoin Core `v22` - hidden. +//! +//! Types for methods that are excluded from the API docs by default. + +mod into; + +use serde::{Deserialize, Serialize}; + +/// Result of JSON-RPC method `addconnection`. +/// +/// > addconnection "address" "connection_type" +/// > +/// > Open an outbound connection to a specified node. +/// > This RPC is for testing only. +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] +#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))] +pub struct AddConnection { + /// The address of the newly added connection. + pub address: String, + /// Type of connection. + pub connection_type: String, +} diff --git a/types/src/v22/mod.rs b/types/src/v22/mod.rs index ed4ef2fe..625eb65e 100644 --- a/types/src/v22/mod.rs +++ b/types/src/v22/mod.rs @@ -245,6 +245,7 @@ // JSON-RPC types by API section. mod blockchain; mod control; +mod hidden; mod network; mod raw_transactions; mod signer; @@ -254,6 +255,7 @@ mod wallet; pub use self::{ blockchain::GetMempoolInfo, control::Logging, + hidden::AddConnection, network::{Banned, GetNodeAddresses, GetPeerInfo, ListBanned, NodeAddress, PeerInfo}, raw_transactions::{ DecodeScript, DecodeScriptError, DecodeScriptSegwit, MempoolAcceptance, diff --git a/types/src/v23/mod.rs b/types/src/v23/mod.rs index 38a9aa5c..8751859c 100644 --- a/types/src/v23/mod.rs +++ b/types/src/v23/mod.rs @@ -321,9 +321,9 @@ pub use crate::{ SendMany, SendManyVerbose, UnloadWallet, UpgradeWallet, }, v22::{ - Banned, DescriptorInfo, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded, - GetMempoolInfo, GetNodeAddresses, ListBanned, ListDescriptors, MempoolAcceptance, - MempoolAcceptanceError, MempoolAcceptanceFees, NodeAddress, ScriptPubkey, Signers, - TestMempoolAccept, TestMempoolAcceptError, WalletDisplayAddress, + AddConnection, Banned, DescriptorInfo, EnumerateSigners, GetAddressInfo, + GetAddressInfoEmbedded, GetMempoolInfo, GetNodeAddresses, ListBanned, ListDescriptors, + MempoolAcceptance, MempoolAcceptanceError, MempoolAcceptanceFees, NodeAddress, + ScriptPubkey, Signers, TestMempoolAccept, TestMempoolAcceptError, WalletDisplayAddress, }, }; diff --git a/types/src/v24/mod.rs b/types/src/v24/mod.rs index 9faa1212..4e232980 100644 --- a/types/src/v24/mod.rs +++ b/types/src/v24/mod.rs @@ -321,10 +321,10 @@ pub use crate::{ SendMany, SendManyVerbose, UnloadWallet, UpgradeWallet, }, v22::{ - Banned, DescriptorInfo, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded, - GetNodeAddresses, ListBanned, ListDescriptors, MempoolAcceptance, MempoolAcceptanceError, - MempoolAcceptanceFees, NodeAddress, ScriptPubkey, Signers, TestMempoolAccept, - TestMempoolAcceptError, WalletDisplayAddress, + AddConnection, Banned, DescriptorInfo, EnumerateSigners, GetAddressInfo, + GetAddressInfoEmbedded, GetNodeAddresses, ListBanned, ListDescriptors, MempoolAcceptance, + MempoolAcceptanceError, MempoolAcceptanceFees, NodeAddress, ScriptPubkey, Signers, + TestMempoolAccept, TestMempoolAcceptError, WalletDisplayAddress, }, v23::{ AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, diff --git a/types/src/v25/mod.rs b/types/src/v25/mod.rs index afd270eb..899c3947 100644 --- a/types/src/v25/mod.rs +++ b/types/src/v25/mod.rs @@ -314,8 +314,8 @@ pub use crate::{ SendManyVerbose, UpgradeWallet, }, v22::{ - Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded, GetNodeAddresses, - ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress, + AddConnection, Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded, + GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress, }, v23::{ AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, diff --git a/types/src/v26/mod.rs b/types/src/v26/mod.rs index 4a2ab341..9886bc97 100644 --- a/types/src/v26/mod.rs +++ b/types/src/v26/mod.rs @@ -329,8 +329,8 @@ pub use crate::{ SendManyVerbose, UpgradeWallet, }, v22::{ - Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded, GetNodeAddresses, - ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress, + AddConnection, Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded, + GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress, }, v23::{ AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, diff --git a/types/src/v27/mod.rs b/types/src/v27/mod.rs index 6f032eaa..a79980fe 100644 --- a/types/src/v27/mod.rs +++ b/types/src/v27/mod.rs @@ -305,8 +305,8 @@ pub use crate::{ SendManyVerbose, UpgradeWallet, }, v22::{ - Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded, GetNodeAddresses, - ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress, + AddConnection, Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded, + GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress, }, v23::{ AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, diff --git a/types/src/v28/mod.rs b/types/src/v28/mod.rs index 22a6e0e3..c904851a 100644 --- a/types/src/v28/mod.rs +++ b/types/src/v28/mod.rs @@ -325,8 +325,8 @@ pub use crate::{ PsbtBumpFee, PsbtBumpFeeError, Send, SendError, SendMany, SendManyVerbose, UpgradeWallet, }, v22::{ - Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers, - WalletDisplayAddress, + AddConnection, Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress, + ScriptPubkey, Signers, WalletDisplayAddress, }, v23::{ AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, diff --git a/types/src/v29/mod.rs b/types/src/v29/mod.rs index f2661c44..024d01bc 100644 --- a/types/src/v29/mod.rs +++ b/types/src/v29/mod.rs @@ -319,8 +319,8 @@ pub use crate::{ PsbtBumpFee, PsbtBumpFeeError, Send, SendError, SendMany, SendManyVerbose, UpgradeWallet, }, v22::{ - Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers, - WalletDisplayAddress, + AddConnection, Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress, + ScriptPubkey, Signers, WalletDisplayAddress, }, v23::{ AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, diff --git a/types/src/v30/mod.rs b/types/src/v30/mod.rs index 5f665580..786e5085 100644 --- a/types/src/v30/mod.rs +++ b/types/src/v30/mod.rs @@ -312,8 +312,8 @@ pub use crate::{ PsbtBumpFee, PsbtBumpFeeError, Send, SendError, SendMany, SendManyVerbose, }, v22::{ - Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers, - WalletDisplayAddress, + AddConnection, Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress, + ScriptPubkey, Signers, WalletDisplayAddress, }, v23::{ Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, DecodeScriptError,