diff --git a/integration_test/tests/wallet.rs b/integration_test/tests/wallet.rs index f81e7fd7..172cf5a5 100644 --- a/integration_test/tests/wallet.rs +++ b/integration_test/tests/wallet.rs @@ -52,20 +52,28 @@ fn wallet__abort_rescan() { } #[test] -#[cfg(feature = "TODO")] fn wallet__add_multisig_address__modelled() { - let nrequired = 1; // 1-of-2 multisig. + let nrequired = 2; - let add1: Address = - "32iVBEu4dxkUQk9dJbZUiBiQdmypcEyJRf".parse::>().unwrap().assume_checked(); - let add2: Address = - "132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM".parse::>().unwrap().assume_checked(); + let node = match () { + #[cfg(feature = "v22_and_below")] + () => Node::with_wallet(Wallet::Default, &[]), + #[cfg(not(feature = "v22_and_below"))] + () => { + let node = Node::with_wallet(Wallet::None, &["-deprecatedrpc=create_bdb"]); + node.client.create_legacy_wallet("wallet_name").expect("createlegacywallet"); + node + } + }; + + let addr1 = node.client.new_address().expect("new_address"); + let addr2 = node.client.new_address().expect("new_address"); - let node = Node::with_wallet(Wallet::Default, &[]); let json: AddMultisigAddress = node .client - .add_multisig_address_with_addresses(nrequired, vec![add1, add2]) + .add_multisig_address_with_addresses(nrequired, vec![addr1, addr2]) .expect("addmultisigaddress"); + let model: Result = json.into_model(); model.unwrap(); } diff --git a/types/src/model/wallet.rs b/types/src/model/wallet.rs index 46e8601c..3cc4cc41 100644 --- a/types/src/model/wallet.rs +++ b/types/src/model/wallet.rs @@ -59,6 +59,10 @@ pub struct AddMultisigAddress { pub address: Address, /// The redemption script. pub redeem_script: ScriptBuf, + /// The descriptor for this multisig. + pub descriptor: Option, + /// Any warnings resulting from the creation of this multisig. + pub warnings: Option>, } /// Models the result of JSON-RPC method `bumpfee`. diff --git a/types/src/v17/mod.rs b/types/src/v17/mod.rs index 7cc1aa7c..ee2f87c8 100644 --- a/types/src/v17/mod.rs +++ b/types/src/v17/mod.rs @@ -152,7 +152,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | diff --git a/types/src/v17/wallet/into.rs b/types/src/v17/wallet/into.rs index 9cd26933..4bd27144 100644 --- a/types/src/v17/wallet/into.rs +++ b/types/src/v17/wallet/into.rs @@ -66,7 +66,12 @@ impl AddMultisigAddress { let address = self.address.parse::>().map_err(E::Address)?; let redeem_script = ScriptBuf::from_hex(&self.redeem_script).map_err(E::RedeemScript)?; - Ok(model::AddMultisigAddress { address, redeem_script }) + Ok(model::AddMultisigAddress { + address, + redeem_script, + descriptor: None, // v20 and later only. + warnings: None, // v23 and later only. + }) } } diff --git a/types/src/v18/mod.rs b/types/src/v18/mod.rs index 59eaff37..47230087 100644 --- a/types/src/v18/mod.rs +++ b/types/src/v18/mod.rs @@ -159,7 +159,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | diff --git a/types/src/v19/mod.rs b/types/src/v19/mod.rs index 152f0c2b..15e90b33 100644 --- a/types/src/v19/mod.rs +++ b/types/src/v19/mod.rs @@ -159,7 +159,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | diff --git a/types/src/v20/mod.rs b/types/src/v20/mod.rs index 453f6743..94ad4888 100644 --- a/types/src/v20/mod.rs +++ b/types/src/v20/mod.rs @@ -160,7 +160,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | @@ -238,41 +238,44 @@ pub use self::{ generating::GenerateToDescriptor, network::{Banned, ListBanned}, util::CreateMultisig, - wallet::{GetAddressInfo, GetAddressInfoEmbedded, GetTransaction, GetTransactionDetail}, + wallet::{ + AddMultisigAddress, GetAddressInfo, GetAddressInfoEmbedded, GetTransaction, + GetTransactionDetail, + }, }; #[doc(inline)] pub use crate::{ v17::{ - AbortRescan, AddMultisigAddress, AddMultisigAddressError, AddedNode, AddedNodeAddress, - AddressInformation, Bip125Replaceable, BumpFee, BumpFeeError, ChainTips, ChainTipsError, - ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, - CreatePsbt, CreateRawTransaction, CreateWallet, DecodePsbt, DecodePsbtError, - DecodeRawTransaction, DecodeScript, DecodeScriptError, 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, GetRawMempoolVerbose, GetRawTransaction, GetRawTransactionVerbose, - GetRawTransactionVerboseError, GetReceivedByAddress, GetTransactionDetailError, - GetTransactionError, GetTxOut, GetTxOutError, GetTxOutSetInfo, GetTxOutSetInfoError, - GetUnconfirmedBalance, GetWalletInfo, GetWalletInfoError, GetZmqNotifications, - ListAddressGroupings, ListAddressGroupingsError, ListAddressGroupingsItem, ListLabels, - ListLockUnspent, ListLockUnspentItem, ListLockUnspentItemError, ListReceivedByAddress, - ListReceivedByAddressError, ListReceivedByAddressItem, ListSinceBlock, ListSinceBlockError, - ListSinceBlockTransaction, ListSinceBlockTransactionError, ListTransactions, - ListTransactionsItem, ListTransactionsItemError, ListUnspentItemError, ListWallets, - LoadWallet, LockUnspent, Locked, PruneBlockchain, RawTransactionError, RawTransactionInput, - RawTransactionOutput, RescanBlockchain, ScriptType, SendMany, SendRawTransaction, - SendToAddress, SetNetworkActive, SetTxFee, SignMessage, SignMessageWithPrivKey, - SignRawTransaction, SignRawTransactionError, SoftforkReject, TestMempoolAccept, - TransactionCategory, UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, - VerifyMessage, VerifyTxOutProof, WalletCreateFundedPsbt, WalletCreateFundedPsbtError, - WalletProcessPsbt, WitnessUtxo, + AbortRescan, AddMultisigAddressError, AddedNode, AddedNodeAddress, AddressInformation, + Bip125Replaceable, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, + CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, + CreateRawTransaction, CreateWallet, DecodePsbt, DecodePsbtError, DecodeRawTransaction, + DecodeScript, DecodeScriptError, 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, GetRawMempoolVerbose, GetRawTransaction, + GetRawTransactionVerbose, GetRawTransactionVerboseError, GetReceivedByAddress, + GetTransactionDetailError, GetTransactionError, GetTxOut, GetTxOutError, GetTxOutSetInfo, + GetTxOutSetInfoError, GetUnconfirmedBalance, GetWalletInfo, GetWalletInfoError, + GetZmqNotifications, ListAddressGroupings, ListAddressGroupingsError, + ListAddressGroupingsItem, ListLabels, ListLockUnspent, ListLockUnspentItem, + ListLockUnspentItemError, ListReceivedByAddress, ListReceivedByAddressError, + ListReceivedByAddressItem, ListSinceBlock, ListSinceBlockError, ListSinceBlockTransaction, + ListSinceBlockTransactionError, ListTransactions, ListTransactionsItem, + ListTransactionsItemError, ListUnspentItemError, ListWallets, LoadWallet, LockUnspent, + Locked, PruneBlockchain, RawTransactionError, RawTransactionInput, RawTransactionOutput, + RescanBlockchain, ScriptType, SendMany, SendRawTransaction, SendToAddress, + SetNetworkActive, SetTxFee, SignMessage, SignMessageWithPrivKey, SignRawTransaction, + SignRawTransactionError, SoftforkReject, TestMempoolAccept, TransactionCategory, + UploadTarget, ValidateAddress, ValidateAddressError, VerifyChain, VerifyMessage, + VerifyTxOutProof, WalletCreateFundedPsbt, WalletCreateFundedPsbtError, WalletProcessPsbt, + WitnessUtxo, }, v18::{ ActiveCommand, AnalyzePsbt, AnalyzePsbtError, AnalyzePsbtInput, AnalyzePsbtInputMissing, diff --git a/types/src/v20/wallet/into.rs b/types/src/v20/wallet/into.rs index 9cefc736..198cd93b 100644 --- a/types/src/v20/wallet/into.rs +++ b/types/src/v20/wallet/into.rs @@ -9,11 +9,29 @@ use bitcoin::{ }; use super::{ - GetAddressInfo, GetAddressInfoEmbedded, GetAddressInfoEmbeddedError, GetAddressInfoError, - GetTransaction, GetTransactionDetail, GetTransactionDetailError, GetTransactionError, + AddMultisigAddress, AddMultisigAddressError, GetAddressInfo, GetAddressInfoEmbedded, + GetAddressInfoEmbeddedError, GetAddressInfoError, GetTransaction, GetTransactionDetail, + GetTransactionDetailError, GetTransactionError, }; use crate::model; +impl AddMultisigAddress { + /// Converts version specific type to a version nonspecific, more strongly typed type. + pub fn into_model(self) -> Result { + use AddMultisigAddressError as E; + + let address = self.address.parse::>().map_err(E::Address)?; + let redeem_script = ScriptBuf::from_hex(&self.redeem_script).map_err(E::RedeemScript)?; + + Ok(model::AddMultisigAddress { + address, + redeem_script, + descriptor: Some(self.descriptor), + warnings: None, // v23 and later only. + }) + } +} + impl GetAddressInfo { /// Converts version specific type to a version nonspecific, more strongly typed type. pub fn into_model(self) -> Result { diff --git a/types/src/v20/wallet/mod.rs b/types/src/v20/wallet/mod.rs index bcd7e0ad..ff15b8f8 100644 --- a/types/src/v20/wallet/mod.rs +++ b/types/src/v20/wallet/mod.rs @@ -10,10 +10,35 @@ use bitcoin::Transaction; use serde::{Deserialize, Serialize}; pub use super::{ - Bip125Replaceable, GetAddressInfoEmbeddedError, GetAddressInfoError, GetTransactionDetailError, - GetTransactionError, ScriptType, TransactionCategory, + AddMultisigAddressError, Bip125Replaceable, GetAddressInfoEmbeddedError, GetAddressInfoError, + GetTransactionDetailError, GetTransactionError, ScriptType, TransactionCategory, }; +/// Result of the JSON-RPC method `addmultisigaddress`. +/// +/// > addmultisigaddress nrequired ["key",...] ( "label" "address_type" ) +/// > +/// > Add a nrequired-to-sign multisignature address to the wallet. Requires a new wallet backup. +/// > Each key is a Bitcoin address or hex-encoded public key. +/// > This functionality is only intended for use with non-watchonly addresses. +/// > See `importaddress` for watchonly p2sh address support. +/// > If 'label' is specified, assign address to that label. +/// +/// > Arguments: +/// > 1. nrequired (numeric, required) The number of required signatures out of the n keys or addresses. +/// > 2. "keys" (string, required) A json array of bitcoin addresses or hex-encoded public keys +#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] +#[serde(deny_unknown_fields)] +pub struct AddMultisigAddress { + /// The value of the new multisig address. + pub address: String, + /// The string value of the hex-encoded redemption script. + #[serde(rename = "redeemScript")] + pub redeem_script: String, + /// The descriptor for this multisig. + pub descriptor: String, +} + /// Result of the JSON-RPC method `getaddressinfo`. /// /// > getaddressinfo "address" diff --git a/types/src/v21/mod.rs b/types/src/v21/mod.rs index e2a7e16e..ef13b487 100644 --- a/types/src/v21/mod.rs +++ b/types/src/v21/mod.rs @@ -162,7 +162,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | @@ -260,9 +260,9 @@ pub use self::{ #[doc(inline)] pub use crate::{ v17::{ - AbortRescan, AddMultisigAddress, AddMultisigAddressError, AddedNode, AddedNodeAddress, - AddressInformation, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, - CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, + AbortRescan, AddMultisigAddressError, AddedNode, AddedNodeAddress, AddressInformation, + BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, + CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, CreateWallet, DecodePsbt, DecodePsbtError, DecodeRawTransaction, DecodeScript, DecodeScriptError, DumpPrivKey, DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, @@ -304,7 +304,7 @@ pub use crate::{ MempoolEntryFees, MempoolEntryFeesError, SetWalletFlag, }, v20::{ - Banned, CreateMultisig, GenerateToDescriptor, GetAddressInfo, GetAddressInfoEmbedded, - GetTransaction, GetTransactionDetail, ListBanned, Logging, + AddMultisigAddress, Banned, CreateMultisig, GenerateToDescriptor, GetAddressInfo, + GetAddressInfoEmbedded, GetTransaction, GetTransactionDetail, ListBanned, Logging, }, }; diff --git a/types/src/v22/mod.rs b/types/src/v22/mod.rs index c412551d..d79b3b24 100644 --- a/types/src/v22/mod.rs +++ b/types/src/v22/mod.rs @@ -171,7 +171,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | @@ -265,9 +265,9 @@ pub use self::{ #[doc(inline)] pub use crate::{ v17::{ - AbortRescan, AddMultisigAddress, AddMultisigAddressError, AddedNode, AddedNodeAddress, - AddressInformation, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, - CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, + AbortRescan, AddMultisigAddressError, AddedNode, AddedNodeAddress, AddressInformation, + 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, @@ -308,7 +308,10 @@ pub use crate::{ GetChainTxStats, GetDescriptorInfo, GetRpcInfo, MapMempoolEntryError, MempoolEntryError, MempoolEntryFees, MempoolEntryFeesError, SetWalletFlag, }, - v20::{CreateMultisig, GenerateToDescriptor, GetTransaction, GetTransactionDetail}, + v20::{ + AddMultisigAddress, CreateMultisig, GenerateToDescriptor, GetTransaction, + GetTransactionDetail, + }, v21::{ Bip9SoftforkInfo, GenerateBlock, GetBlockchainInfo, GetIndexInfo, GetIndexInfoName, GetMempoolAncestors, GetMempoolAncestorsVerbose, GetMempoolDescendants, diff --git a/types/src/v23/mod.rs b/types/src/v23/mod.rs index 7ac92a75..39b67db6 100644 --- a/types/src/v23/mod.rs +++ b/types/src/v23/mod.rs @@ -162,7 +162,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | @@ -258,17 +258,17 @@ pub use self::{ PsbtInput, PsbtOutput, }, util::CreateMultisig, - wallet::{GetTransaction, GetTransactionError, RestoreWallet}, + wallet::{AddMultisigAddress, GetTransaction, GetTransactionError, RestoreWallet}, }; #[doc(inline)] pub use crate::{ v17::{ - AbortRescan, AddMultisigAddress, AddMultisigAddressError, AddedNode, AddedNodeAddress, - AddressInformation, Bip125Replaceable, BumpFee, BumpFeeError, ChainTips, ChainTipsError, - ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, - CreatePsbt, CreateRawTransaction, CreateWallet, DecodeRawTransaction, DumpPrivKey, - DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, - FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, + AbortRescan, AddMultisigAddressError, AddedNode, AddedNodeAddress, AddressInformation, + Bip125Replaceable, 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, diff --git a/types/src/v23/wallet/into.rs b/types/src/v23/wallet/into.rs index 5b925cff..eca06854 100644 --- a/types/src/v23/wallet/into.rs +++ b/types/src/v23/wallet/into.rs @@ -1,11 +1,28 @@ // SPDX-License-Identifier: CC0-1.0 use bitcoin::consensus::encode; -use bitcoin::{BlockHash, SignedAmount, Transaction, Txid}; +use bitcoin::{Address, BlockHash, ScriptBuf, SignedAmount, Transaction, Txid}; -use super::{GetTransaction, GetTransactionError}; +use super::{AddMultisigAddress, AddMultisigAddressError, GetTransaction, GetTransactionError}; use crate::model; +impl AddMultisigAddress { + /// Converts version specific type to a version nonspecific, more strongly typed type. + pub fn into_model(self) -> Result { + use AddMultisigAddressError as E; + + let address = self.address.parse::>().map_err(E::Address)?; + let redeem_script = ScriptBuf::from_hex(&self.redeem_script).map_err(E::RedeemScript)?; + + Ok(model::AddMultisigAddress { + address, + redeem_script, + descriptor: Some(self.descriptor), + warnings: self.warnings, + }) + } +} + impl GetTransaction { /// Converts version specific type to a version nonspecific, more strongly typed type. pub fn into_model(self) -> Result { diff --git a/types/src/v23/wallet/mod.rs b/types/src/v23/wallet/mod.rs index a4a942ab..e6145c9d 100644 --- a/types/src/v23/wallet/mod.rs +++ b/types/src/v23/wallet/mod.rs @@ -11,7 +11,36 @@ use bitcoin::Transaction; use serde::{Deserialize, Serialize}; pub use self::error::GetTransactionError; -pub use super::{Bip125Replaceable, GetTransactionDetail, GetTransactionDetailError}; +pub use super::{ + AddMultisigAddressError, Bip125Replaceable, GetTransactionDetail, GetTransactionDetailError, +}; + +/// Result of the JSON-RPC method `addmultisigaddress`. +/// +/// > addmultisigaddress nrequired ["key",...] ( "label" "address_type" ) +/// > +/// > Add a nrequired-to-sign multisignature address to the wallet. Requires a new wallet backup. +/// > Each key is a Bitcoin address or hex-encoded public key. +/// > This functionality is only intended for use with non-watchonly addresses. +/// > See `importaddress` for watchonly p2sh address support. +/// > If 'label' is specified, assign address to that label. +/// +/// > Arguments: +/// > 1. nrequired (numeric, required) The number of required signatures out of the n keys or addresses. +/// > 2. "keys" (string, required) A json array of bitcoin addresses or hex-encoded public keys +#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] +#[serde(deny_unknown_fields)] +pub struct AddMultisigAddress { + /// The value of the new multisig address. + pub address: String, + /// The string value of the hex-encoded redemption script. + #[serde(rename = "redeemScript")] + pub redeem_script: String, + /// The descriptor for this multisig. + pub descriptor: String, + /// Any warnings resulting from the creation of this multisig. + pub warnings: Option>, +} /// Result of the JSON-RPC method `gettransaction`. /// diff --git a/types/src/v24/mod.rs b/types/src/v24/mod.rs index d88ca766..ea7d6c98 100644 --- a/types/src/v24/mod.rs +++ b/types/src/v24/mod.rs @@ -163,7 +163,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | @@ -265,12 +265,12 @@ pub use self::{ #[doc(inline)] pub use crate::{ v17::{ - AbortRescan, AddMultisigAddress, AddMultisigAddressError, AddedNode, AddedNodeAddress, - AddressInformation, Bip125Replaceable, BumpFee, BumpFeeError, ChainTips, ChainTipsError, - ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, - CreatePsbt, CreateRawTransaction, CreateWallet, DecodeRawTransaction, DumpPrivKey, - DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, - FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, + AbortRescan, AddMultisigAddressError, AddedNode, AddedNodeAddress, AddressInformation, + Bip125Replaceable, 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, @@ -320,8 +320,8 @@ pub use crate::{ TestMempoolAccept, TestMempoolAcceptError, WalletDisplayAddress, }, v23::{ - Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, DecodeScriptError, DeploymentInfo, - GetBlockchainInfo, GetDeploymentInfo, GetDeploymentInfoError, Logging, RestoreWallet, - SaveMempool, + AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, + DecodeScriptError, DeploymentInfo, GetBlockchainInfo, GetDeploymentInfo, + GetDeploymentInfoError, Logging, RestoreWallet, SaveMempool, }, }; diff --git a/types/src/v25/mod.rs b/types/src/v25/mod.rs index 886d85a0..15bfeff1 100644 --- a/types/src/v25/mod.rs +++ b/types/src/v25/mod.rs @@ -164,7 +164,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | @@ -261,9 +261,9 @@ pub use self::{ #[doc(inline)] pub use crate::{ v17::{ - AbortRescan, AddMultisigAddress, AddMultisigAddressError, AddedNode, AddedNodeAddress, - AddressInformation, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, - CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, + AbortRescan, AddMultisigAddressError, AddedNode, AddedNodeAddress, AddressInformation, + BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, + CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, DecodeRawTransaction, DumpPrivKey, DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, @@ -314,8 +314,9 @@ pub use crate::{ WalletDisplayAddress, }, v23::{ - Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, DecodeScriptError, DeploymentInfo, - GetBlockchainInfo, GetDeploymentInfo, GetDeploymentInfoError, RestoreWallet, SaveMempool, + AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, + DecodeScriptError, DeploymentInfo, GetBlockchainInfo, GetDeploymentInfo, + GetDeploymentInfoError, RestoreWallet, SaveMempool, }, v24::{ DecodePsbt, DecodePsbtError, GetMempoolAncestors, GetMempoolAncestorsVerbose, diff --git a/types/src/v26/mod.rs b/types/src/v26/mod.rs index 9b888a21..71d771f0 100644 --- a/types/src/v26/mod.rs +++ b/types/src/v26/mod.rs @@ -172,7 +172,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | @@ -277,11 +277,11 @@ pub use self::{ #[doc(inline)] pub use crate::{ v17::{ - AbortRescan, AddMultisigAddress, AddMultisigAddressError, AddedNode, AddedNodeAddress, - AddressInformation, Bip125Replaceable, BumpFee, BumpFeeError, ChainTips, ChainTipsError, - ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, - CreatePsbt, CreateRawTransaction, DecodeRawTransaction, DumpPrivKey, DumpWallet, - EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, + AbortRescan, AddMultisigAddressError, AddedNode, AddedNodeAddress, AddressInformation, + Bip125Replaceable, 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, @@ -329,8 +329,9 @@ pub use crate::{ WalletDisplayAddress, }, v23::{ - Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, DecodeScriptError, DeploymentInfo, - GetBlockchainInfo, GetDeploymentInfo, GetDeploymentInfoError, RestoreWallet, SaveMempool, + AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, + DecodeScriptError, DeploymentInfo, GetBlockchainInfo, GetDeploymentInfo, + GetDeploymentInfoError, RestoreWallet, SaveMempool, }, v24::{ DecodePsbt, DecodePsbtError, GetMempoolAncestors, GetMempoolAncestorsVerbose, diff --git a/types/src/v27/mod.rs b/types/src/v27/mod.rs index 7287f676..b40e3f60 100644 --- a/types/src/v27/mod.rs +++ b/types/src/v27/mod.rs @@ -172,7 +172,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | @@ -259,9 +259,9 @@ pub use self::{ #[doc(inline)] pub use crate::{ v17::{ - AbortRescan, AddMultisigAddress, AddMultisigAddressError, AddedNode, AddedNodeAddress, - AddressInformation, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, - CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, + AbortRescan, AddMultisigAddressError, AddedNode, AddedNodeAddress, AddressInformation, + BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, + CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, DecodeRawTransaction, DumpPrivKey, DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, @@ -310,8 +310,9 @@ pub use crate::{ WalletDisplayAddress, }, v23::{ - Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, DecodeScriptError, DeploymentInfo, - GetBlockchainInfo, GetDeploymentInfo, GetDeploymentInfoError, RestoreWallet, SaveMempool, + AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, + DecodeScriptError, DeploymentInfo, GetBlockchainInfo, GetDeploymentInfo, + GetDeploymentInfoError, RestoreWallet, SaveMempool, }, v24::{ DecodePsbt, DecodePsbtError, GetMempoolAncestors, GetMempoolAncestorsVerbose, diff --git a/types/src/v28/mod.rs b/types/src/v28/mod.rs index 76940669..e59650f1 100644 --- a/types/src/v28/mod.rs +++ b/types/src/v28/mod.rs @@ -172,7 +172,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | @@ -275,11 +275,11 @@ pub use self::{ #[doc(inline)] pub use crate::{ v17::{ - AbortRescan, AddMultisigAddress, AddMultisigAddressError, AddedNode, AddedNodeAddress, - AddressInformation, Bip125Replaceable, BumpFee, BumpFeeError, ChainTips, ChainTipsError, - ChainTipsStatus, CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, - CreatePsbt, CreateRawTransaction, DecodeRawTransaction, DumpPrivKey, DumpWallet, - EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, + AbortRescan, AddMultisigAddressError, AddedNode, AddedNodeAddress, AddressInformation, + Bip125Replaceable, 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, @@ -323,8 +323,9 @@ pub use crate::{ }, v22::{Banned, EnumerateSigners, ListBanned, ScriptPubkey, WalletDisplayAddress}, v23::{ - Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, DecodeScriptError, DeploymentInfo, - GetDeploymentInfo, GetDeploymentInfoError, RestoreWallet, SaveMempool, + AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, + DecodeScriptError, DeploymentInfo, GetDeploymentInfo, GetDeploymentInfoError, + RestoreWallet, SaveMempool, }, v24::{ DecodePsbt, DecodePsbtError, GetMempoolAncestors, GetMempoolAncestorsVerbose, diff --git a/types/src/v29/mod.rs b/types/src/v29/mod.rs index 2c26ee9d..47ef8f65 100644 --- a/types/src/v29/mod.rs +++ b/types/src/v29/mod.rs @@ -173,7 +173,7 @@ //! |:-----------------------------------|:---------------:|:--------------------------------------:| //! | abandontransaction | returns nothing | | //! | abortrescan | version | | -//! | addmultisigaddress | version + model | UNTESTED | +//! | addmultisigaddress | version + model | | //! | backupwallet | returns nothing | | //! | bumpfee | version + model | | //! | createwallet | version + model | | @@ -274,9 +274,9 @@ pub use self::{ #[doc(inline)] pub use crate::{ v17::{ - AbortRescan, AddMultisigAddress, AddMultisigAddressError, AddedNode, AddedNodeAddress, - AddressInformation, BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, - CombinePsbt, CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, + AbortRescan, AddMultisigAddressError, AddedNode, AddedNodeAddress, AddressInformation, + BumpFee, BumpFeeError, ChainTips, ChainTipsError, ChainTipsStatus, CombinePsbt, + CombineRawTransaction, ConvertToPsbt, CreateMultisigError, CreatePsbt, CreateRawTransaction, DecodeRawTransaction, DumpPrivKey, DumpWallet, EncryptWallet, EstimateSmartFee, FinalizePsbt, FinalizePsbtError, FundRawTransaction, FundRawTransactionError, Generate, GenerateToAddress, GetAddedNodeInfo, @@ -320,8 +320,9 @@ pub use crate::{ }, v22::{Banned, EnumerateSigners, ListBanned, ScriptPubkey, WalletDisplayAddress}, v23::{ - Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, DecodeScriptError, DeploymentInfo, - GetDeploymentInfo, GetDeploymentInfoError, RestoreWallet, SaveMempool, + AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, + DecodeScriptError, DeploymentInfo, GetDeploymentInfo, GetDeploymentInfoError, + RestoreWallet, SaveMempool, }, v24::{ DecodePsbt, DecodePsbtError, GetMempoolAncestors, GetMempoolAncestorsVerbose,