use std::collections::HashMap;
use std::str::FromStr;
use serde::{Deserialize, Serialize};
pub type Amount = bitcoin::Amount;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct AnalyzePsbtInput {
pub has_utxo: bool,
pub is_final: bool,
pub missing: Option<AnalyzePsbtMissing>,
pub next: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct AnalyzePsbtMissing {
#[serde(rename = "pubkeys")]
pub pub_keys: Option<Vec<String>>,
pub signatures: Option<Vec<String>>,
#[serde(rename = "redeemscript")]
pub redeem_script: Option<bitcoin::ScriptBuf>,
#[serde(rename = "witnessscript")]
pub witness_script: Option<bitcoin::ScriptBuf>,
}
pub type BlockHash = bitcoin::BlockHash;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtBip32Derivs {
pub pubkey: String,
pub master_fingerprint: String,
pub path: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtFinalScriptSig {
pub asm: String,
pub hex: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtGlobalXpubs {
pub xpub: String,
pub master_fingerprint: String,
pub path: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtHash160Preimages {
pub hash: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtHash256Preimages {
pub hash: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtInput {
pub non_witness_utxo: Option<DecodePsbtNonWitnessUtxo>,
pub witness_utxo: Option<DecodePsbtWitnessUtxo>,
pub partial_signatures: Option<DecodePsbtPartialSignatures>,
#[serde(rename = "sighash")]
pub sig_hash: Option<String>,
pub redeem_script: Option<DecodePsbtRedeemScript>,
pub witness_script: Option<DecodePsbtWitnessScript>,
pub bip32_derivs: Option<Vec<DecodePsbtBip32Derivs>>,
#[serde(rename = "final_scriptSig")]
pub final_script_sig: Option<DecodePsbtFinalScriptSig>,
#[serde(rename = "final_scriptwitness")]
pub final_script_witness: Option<Vec<String>>,
pub ripemd160_preimages: Option<DecodePsbtRipemd160Preimages>,
pub sha256_preimages: Option<DecodePsbtSha256Preimages>,
pub hash160_preimages: Option<DecodePsbtHash160Preimages>,
pub hash256_preimages: Option<DecodePsbtHash256Preimages>,
pub taproot_key_path_sig: Option<String>,
pub taproot_script_path_sigs: Option<Vec<DecodePsbtSignature>>,
pub taproot_scripts: Option<Vec<DecodePsbtTaprootScripts>>,
pub taproot_bip32_derivs: Option<Vec<DecodePsbtTaprootBip32Derivs>>,
pub taproot_internal_key: Option<String>,
pub taproot_merkle_root: Option<String>,
pub musig2_participant_pubkeys: Option<Vec<DecodePsbtMusig2ParticipantPubkeys>>,
pub musig2_pubnonces: Option<Vec<DecodePsbtMusig2PubNonces>>,
pub musig2_partial_sigs: Option<Vec<DecodePsbtMusig2PartialSigs>>,
pub unknown: Option<DecodePsbtUnknown>,
pub proprietary: Option<Vec<DecodePsbtProprietary>>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtMusig2PartialSigs {
pub participant_pubkey: String,
pub aggregate_pubkey: String,
pub leaf_hash: Option<String>,
pub partial_sig: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtMusig2ParticipantPubkeys {
pub aggregate_pubkey: String,
pub participant_pubkeys: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtMusig2PubNonces {
pub participant_pubkey: String,
pub aggregate_pubkey: String,
pub leaf_hash: Option<String>,
#[serde(rename = "pubnonce")]
pub pub_nonce: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtNonWitnessUtxo {}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtOutput {
pub redeem_script: Option<DecodePsbtRedeemScript>,
pub witness_script: Option<DecodePsbtWitnessScript>,
pub bip32_derivs: Option<Vec<DecodePsbtBip32Derivs>>,
pub taproot_internal_key: Option<String>,
pub taproot_tree: Option<Vec<DecodePsbtTuple>>,
pub taproot_bip32_derivs: Option<Vec<DecodePsbtTaprootBip32Derivs>>,
pub musig2_participant_pubkeys: Option<Vec<DecodePsbtMusig2ParticipantPubkeys>>,
pub unknown: Option<DecodePsbtUnknown>,
pub proprietary: Option<Vec<DecodePsbtProprietary>>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtPartialSignatures {
pub pubkey: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtProprietary {
pub identifier: String,
#[serde(rename = "subtype")]
pub sub_type: u64,
pub key: String,
pub value: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtRedeemScript {
pub asm: String,
pub hex: String,
#[serde(rename = "type")]
pub r#type: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtRipemd160Preimages {
pub hash: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtSha256Preimages {
pub hash: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtSignature {
pub pubkey: String,
pub leaf_hash: String,
pub sig: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtTaprootBip32Derivs {
pub pubkey: String,
pub master_fingerprint: String,
pub path: String,
pub leaf_hashes: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtTaprootScripts {
pub script: bitcoin::ScriptBuf,
pub leaf_ver: u64,
pub control_blocks: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtTuple {
pub depth: u64,
pub leaf_ver: u64,
pub script: bitcoin::ScriptBuf,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtTx {}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtUnknown {
pub key: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtWitnessScript {
pub asm: String,
pub hex: String,
#[serde(rename = "type")]
pub r#type: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodePsbtWitnessUtxo {
#[serde(deserialize_with = "amount_from_btc_float")]
pub amount: bitcoin::Amount,
#[serde(rename = "scriptPubKey")]
pub script_pubkey: DecodedScriptPubKey,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodeScriptSegwit {
pub asm: String,
pub hex: String,
#[serde(rename = "type")]
pub r#type: String,
pub address: Option<String>,
pub desc: String,
#[serde(rename = "p2sh-segwit")]
pub p2sh_segwit: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodedScriptPubKey {
pub asm: String,
pub desc: String,
pub hex: String,
#[serde(rename = "type")]
pub r#type: String,
pub address: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct EnumerateSignersSigners {
pub fingerprint: String,
pub name: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct EstimateRawFeeFail {}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct EstimateRawFeeLong {}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct EstimateRawFeeMedium {}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct EstimateRawFeePass {
#[serde(rename = "startrange")]
pub start_range: u64,
#[serde(rename = "endrange")]
pub end_range: u64,
#[serde(rename = "withintarget")]
pub within_target: u64,
#[serde(rename = "totalconfirmed")]
pub total_confirmed: u64,
#[serde(rename = "inmempool")]
pub in_mempool: u64,
#[serde(rename = "leftmempool")]
pub left_mempool: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct EstimateRawFeeShort {
#[serde(rename = "feerate")]
pub fee_rate: Option<f64>,
pub decay: u64,
pub scale: u64,
pub pass: Option<EstimateRawFeePass>,
pub fail: Option<EstimateRawFeeFail>,
pub errors: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetAddedNodeInfoAddresses {
pub address: String,
pub connected: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetAddedNodeInfoElement {
#[serde(rename = "addednode")]
pub added_node: String,
pub connected: bool,
pub addresses: Vec<GetAddedNodeInfoAddresses>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetAddrManInfoNetwork {
pub new: u64,
pub tried: u64,
pub total: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetAddressInfoEmbedded {}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetAddressesByLabelAddress {
pub purpose: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetBalancesLastProcessedBlock {
pub hash: String,
pub height: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetBalancesMine {
#[serde(deserialize_with = "amount_from_btc_float")]
pub trusted: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub untrusted_pending: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub immature: bitcoin::Amount,
#[serde(deserialize_with = "option_amount_from_btc_float")]
pub used: Option<bitcoin::Amount>,
}
pub type GetBlockCoinbase = String;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetBlockCoinbaseTx {
pub version: u32,
#[serde(rename = "locktime")]
pub lock_time: u32,
pub sequence: u64,
pub coinbase: String,
pub witness: Option<String>,
}
pub type GetBlockStatsFeerate = String;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetBlockStatsFeeratePercentiles {
#[serde(rename = "10th_percentile_feerate")]
pub field_10th_percentile_feerate: u64,
#[serde(rename = "25th_percentile_feerate")]
pub field_25th_percentile_feerate: u64,
#[serde(rename = "50th_percentile_feerate")]
pub field_50th_percentile_feerate: u64,
#[serde(rename = "75th_percentile_feerate")]
pub field_75th_percentile_feerate: u64,
#[serde(rename = "90th_percentile_feerate")]
pub field_90th_percentile_feerate: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetBlockTemplateCoinbaseaux {
pub key: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetBlockTemplateTransactions {
pub data: String,
pub txid: bitcoin::Txid,
pub hash: String,
pub depends: Vec<String>,
pub fee: f64,
#[serde(rename = "sigops")]
pub sig_ops: u64,
pub weight: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetBlockTemplateVbavailable {
#[serde(rename = "rulename")]
pub rule_name: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetBlockTx {
pub fee: Option<f64>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetChainStatesChainstates {
pub blocks: u64,
#[serde(rename = "bestblockhash")]
pub best_block_hash: String,
pub bits: String,
pub target: String,
pub difficulty: f64,
#[serde(rename = "verificationprogress")]
pub verification_progress: f64,
pub snapshot_blockhash: Option<String>,
pub coins_db_cache_bytes: u64,
pub coins_tip_cache_bytes: u64,
pub validated: bool,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetDeploymentInfoBip9 {
pub bit: Option<u64>,
pub start_time: u64,
pub timeout: u64,
pub min_activation_height: u64,
pub status: String,
pub since: u64,
pub status_next: String,
pub statistics: Option<GetDeploymentInfoStatistics>,
pub signalling: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetDeploymentInfoDeployments {
pub xxxx: GetDeploymentInfoXxxx,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetDeploymentInfoStatistics {
pub period: u64,
pub threshold: Option<u64>,
pub elapsed: u64,
pub count: u64,
pub possible: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetDeploymentInfoXxxx {
#[serde(rename = "type")]
pub r#type: String,
pub height: Option<u64>,
pub active: bool,
pub bip9: Option<GetDeploymentInfoBip9>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetDescriptorActivityActivity {
#[serde(rename = "type")]
pub r#type: String,
#[serde(deserialize_with = "amount_from_btc_float")]
pub amount: bitcoin::Amount,
#[serde(rename = "blockhash")]
pub block_hash: Option<bitcoin::BlockHash>,
pub height: Option<u64>,
pub spend_txid: String,
pub spend_vin: u64,
pub prevout_txid: String,
pub prevout_vout: u64,
pub prevout_spk: GetDescriptorActivityPrevoutSpk,
}
pub type GetDescriptorActivityOutput = String;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetDescriptorActivityOutputSpk {
pub asm: String,
pub desc: String,
pub hex: String,
pub address: Option<String>,
#[serde(rename = "type")]
pub r#type: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetDescriptorActivityPrevoutSpk {
pub asm: String,
pub desc: String,
pub hex: String,
pub address: Option<String>,
#[serde(rename = "type")]
pub r#type: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetHdKeysDescriptors {
pub desc: String,
pub active: bool,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetIndexInfoName {
pub synced: bool,
pub best_block_height: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetMemoryInfoLocked {
pub used: u64,
pub free: u64,
pub total: u64,
pub locked: u64,
pub chunks_used: u64,
pub chunks_free: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetMempoolAncestorsFees {
#[serde(deserialize_with = "amount_from_btc_float")]
pub base: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub modified: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub ancestor: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub descendant: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub chunk: bitcoin::Amount,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetMempoolAncestorsTransactionid {
#[serde(rename = "vsize")]
pub v_size: u64,
pub weight: u64,
pub time: u64,
pub height: u64,
#[serde(rename = "descendantcount")]
pub descendant_count: u64,
#[serde(rename = "descendantsize")]
pub descendant_size: u64,
#[serde(rename = "ancestorcount")]
pub ancestor_count: u64,
#[serde(rename = "ancestorsize")]
pub ancestor_size: u64,
#[serde(rename = "chunkweight")]
pub chunk_weight: u64,
#[serde(rename = "wtxid")]
pub w_txid: String,
pub fees: GetMempoolAncestorsFees,
pub depends: Vec<String>,
#[serde(rename = "spentby")]
pub spent_by: Vec<String>,
#[serde(rename = "bip125-replaceable")]
pub bip125_replaceable: bool,
pub unbroadcast: bool,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetMempoolDescendantsFees {
#[serde(deserialize_with = "amount_from_btc_float")]
pub base: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub modified: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub ancestor: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub descendant: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub chunk: bitcoin::Amount,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetMempoolDescendantsTransactionid {
#[serde(rename = "vsize")]
pub v_size: u64,
pub weight: u64,
pub time: u64,
pub height: u64,
#[serde(rename = "descendantcount")]
pub descendant_count: u64,
#[serde(rename = "descendantsize")]
pub descendant_size: u64,
#[serde(rename = "ancestorcount")]
pub ancestor_count: u64,
#[serde(rename = "ancestorsize")]
pub ancestor_size: u64,
#[serde(rename = "chunkweight")]
pub chunk_weight: u64,
#[serde(rename = "wtxid")]
pub w_txid: String,
pub fees: GetMempoolDescendantsFees,
pub depends: Vec<String>,
#[serde(rename = "spentby")]
pub spent_by: Vec<String>,
#[serde(rename = "bip125-replaceable")]
pub bip125_replaceable: bool,
pub unbroadcast: bool,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetMempoolEntryFees {
#[serde(deserialize_with = "amount_from_btc_float")]
pub base: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub modified: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub ancestor: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub descendant: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub chunk: bitcoin::Amount,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetMiningInfoNext {
pub height: u64,
pub bits: String,
pub difficulty: f64,
pub target: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetNetTotalsUploadTarget {
pub timeframe: u64,
pub target: u64,
pub target_reached: bool,
pub serve_historical_blocks: bool,
pub bytes_left_in_cycle: u64,
pub time_left_in_cycle: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetNetworkInfoLocalAddresses {
pub address: String,
pub port: u16,
pub score: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetNetworkInfoNetworks {
pub name: String,
pub limited: bool,
pub reachable: bool,
pub proxy: String,
pub proxy_randomize_credentials: bool,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetNodeAddressesElement {
pub time: u64,
pub services: u64,
pub address: String,
pub port: u16,
pub network: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetPeerInfoBytesRecvPerMsg {
pub msg: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetPeerInfoBytesSentPerMsg {
pub msg: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetPeerInfoElement {
pub id: u64,
pub addr: String,
#[serde(rename = "addrbind")]
pub addr_bind: Option<String>,
#[serde(rename = "addrlocal")]
pub addr_local: Option<String>,
pub network: String,
pub mapped_as: Option<u64>,
pub services: String,
#[serde(rename = "servicesnames")]
pub services_names: Vec<String>,
#[serde(rename = "relaytxes")]
pub relay_txes: bool,
pub last_inv_sequence: u64,
pub inv_to_send: u64,
#[serde(rename = "lastsend")]
pub last_send: u64,
#[serde(rename = "lastrecv")]
pub last_recv: u64,
pub last_transaction: u64,
pub last_block: u64,
#[serde(rename = "bytessent")]
pub bytes_sent: u64,
#[serde(rename = "bytesrecv")]
pub bytes_recv: u64,
#[serde(rename = "conntime")]
pub conn_time: u64,
#[serde(rename = "timeoffset")]
pub time_offset: u64,
#[serde(rename = "pingtime")]
pub ping_time: Option<u64>,
#[serde(rename = "minping")]
pub min_ping: Option<u64>,
#[serde(rename = "pingwait")]
pub ping_wait: Option<u64>,
pub version: u32,
pub subver: String,
pub inbound: bool,
pub bip152_hb_to: bool,
pub bip152_hb_from: bool,
#[serde(rename = "startingheight")]
pub starting_height: Option<u64>,
pub presynced_headers: u64,
pub synced_headers: u64,
pub synced_blocks: u64,
#[serde(rename = "inflight")]
pub in_flight: Vec<String>,
pub addr_relay_enabled: bool,
pub addr_processed: u64,
pub addr_rate_limited: u64,
pub permissions: Vec<String>,
#[serde(rename = "minfeefilter")]
pub min_fee_filter: u64,
#[serde(rename = "bytessent_per_msg")]
pub bytes_sent_per_msg: std::collections::HashMap<String, u64>,
#[serde(rename = "bytesrecv_per_msg")]
pub bytes_recv_per_msg: std::collections::HashMap<String, u64>,
pub connection_type: String,
pub transport_protocol_type: String,
pub session_id: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetPrioritisedTransactionsTransactionId {
pub fee_delta: u64,
pub in_mempool: bool,
pub modified_fee: Option<u64>,
}
pub type GetRawAddrManBucket = String;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetRawAddrManBucketPosition {
pub address: String,
pub mapped_as: Option<u64>,
pub port: u16,
pub network: String,
pub services: u64,
pub time: u64,
pub source: String,
pub source_network: String,
pub source_mapped_as: Option<u64>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetRawAddrManTable {
#[serde(rename = "bucket/position")]
pub bucket_position: GetRawAddrManBucketPosition,
}
pub type GetRpcInfoActive = String;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetRpcInfoActiveCommands {
pub method: String,
pub duration: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetTransactionDecoded {
pub txid: bitcoin::Txid,
pub hash: String,
pub size: u64,
#[serde(rename = "vsize")]
pub v_size: u64,
pub weight: u64,
pub version: u32,
#[serde(rename = "locktime")]
pub lock_time: u64,
pub vin: Vec<DecodedVin>,
pub vout: Vec<DecodedVout>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetTransactionDetails {
pub address: Option<String>,
pub category: String,
#[serde(deserialize_with = "amount_from_btc_float")]
pub amount: bitcoin::Amount,
pub label: Option<String>,
pub vout: u64,
#[serde(deserialize_with = "option_amount_from_btc_float")]
pub fee: Option<bitcoin::Amount>,
pub abandoned: bool,
pub parent_descs: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetTransactionLastProcessedBlock {
pub hash: String,
pub height: u64,
}
pub type GetTxOutSetInfoBlock = String;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetTxOutSetInfoBlockInfo {
#[serde(deserialize_with = "amount_from_btc_float")]
pub prevout_spent: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub coinbase: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub new_outputs_ex_coinbase: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub unspendable: bitcoin::Amount,
pub unspendables: GetTxOutSetInfoUnspendables,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetTxOutSetInfoUnspendables {
#[serde(deserialize_with = "amount_from_btc_float")]
pub genesis_block: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub bip30: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub scripts: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub unclaimed_rewards: bitcoin::Amount,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetWalletInfoLastProcessedBlock {
pub hash: String,
pub height: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetWalletInfoScanning {
pub duration: u64,
pub progress: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ImportDescriptorsError {}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ListBannedElement {
pub address: String,
pub ban_created: u64,
pub banned_until: u64,
pub ban_duration: u64,
pub time_remaining: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ListDescriptorsDescriptors {
pub desc: String,
pub timestamp: u64,
pub active: bool,
pub internal: Option<bool>,
pub range: Option<ListDescriptorsRange>,
pub next: Option<u64>,
pub next_index: Option<u64>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ListDescriptorsRange {
pub field_0: u64,
pub field_1: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ListLockUnspentElement {
pub txid: bitcoin::Txid,
pub vout: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ListReceivedByAddressElement {
pub address: String,
#[serde(deserialize_with = "amount_from_btc_float")]
pub amount: bitcoin::Amount,
pub confirmations: i64,
pub label: String,
pub txids: Vec<bitcoin::Txid>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ListReceivedByLabelElement {
#[serde(deserialize_with = "amount_from_btc_float")]
pub amount: bitcoin::Amount,
pub confirmations: i64,
pub label: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ListSinceBlockTransactions {
pub address: Option<String>,
pub category: String,
#[serde(deserialize_with = "amount_from_btc_float")]
pub amount: bitcoin::Amount,
pub vout: u64,
#[serde(deserialize_with = "option_amount_from_btc_float")]
pub fee: Option<bitcoin::Amount>,
pub confirmations: i64,
pub generated: Option<bool>,
pub trusted: Option<bool>,
#[serde(rename = "blockhash")]
pub block_hash: Option<bitcoin::BlockHash>,
#[serde(rename = "blockheight")]
pub block_height: Option<u64>,
#[serde(rename = "blockindex")]
pub block_index: Option<u64>,
#[serde(rename = "blocktime")]
pub block_time: Option<u64>,
pub txid: bitcoin::Txid,
#[serde(rename = "wtxid")]
pub w_txid: String,
#[serde(rename = "walletconflicts")]
pub wallet_conflicts: Vec<String>,
pub replaced_by_txid: Option<String>,
pub replaces_txid: Option<String>,
#[serde(rename = "mempoolconflicts")]
pub mempool_conflicts: Vec<String>,
pub to: Option<String>,
pub time: u64,
#[serde(rename = "timereceived")]
pub time_received: u64,
pub comment: Option<String>,
#[serde(rename = "bip125-replaceable")]
pub bip125_replaceable: String,
pub parent_descs: Option<Vec<String>>,
pub abandoned: bool,
pub label: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ListTransactionsElement {
pub address: Option<String>,
pub category: String,
#[serde(deserialize_with = "amount_from_btc_float")]
pub amount: bitcoin::Amount,
pub label: Option<String>,
pub vout: u64,
#[serde(deserialize_with = "option_amount_from_btc_float")]
pub fee: Option<bitcoin::Amount>,
pub confirmations: i64,
pub generated: Option<bool>,
pub trusted: Option<bool>,
#[serde(rename = "blockhash")]
pub block_hash: Option<bitcoin::BlockHash>,
#[serde(rename = "blockheight")]
pub block_height: Option<u64>,
#[serde(rename = "blockindex")]
pub block_index: Option<u64>,
#[serde(rename = "blocktime")]
pub block_time: Option<u64>,
pub txid: bitcoin::Txid,
#[serde(rename = "wtxid")]
pub w_txid: String,
#[serde(rename = "walletconflicts")]
pub wallet_conflicts: Vec<String>,
pub replaced_by_txid: Option<String>,
pub replaces_txid: Option<String>,
#[serde(rename = "mempoolconflicts")]
pub mempool_conflicts: Vec<String>,
pub to: Option<String>,
pub time: u64,
#[serde(rename = "timereceived")]
pub time_received: u64,
pub comment: Option<String>,
#[serde(rename = "bip125-replaceable")]
pub bip125_replaceable: String,
pub parent_descs: Option<Vec<String>>,
pub abandoned: bool,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ListUnspentElement {
pub txid: bitcoin::Txid,
pub vout: u64,
pub address: Option<String>,
pub label: Option<String>,
#[serde(rename = "scriptPubKey")]
pub script_pubkey: bitcoin::ScriptBuf,
#[serde(deserialize_with = "amount_from_btc_float")]
pub amount: bitcoin::Amount,
pub confirmations: i64,
#[serde(rename = "ancestorcount")]
pub ancestor_count: Option<u64>,
#[serde(rename = "ancestorsize")]
pub ancestor_size: Option<u64>,
#[serde(rename = "ancestorfees")]
#[serde(deserialize_with = "option_amount_from_btc_float")]
pub ancestor_fees: Option<bitcoin::Amount>,
#[serde(rename = "redeemScript")]
pub redeem_script: Option<bitcoin::ScriptBuf>,
#[serde(rename = "witnessScript")]
pub witness_script: Option<bitcoin::ScriptBuf>,
pub spendable: bool,
pub solvable: bool,
pub reused: Option<bool>,
pub desc: Option<String>,
pub parent_descs: Vec<String>,
pub safe: bool,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ListWalletDirWallets {
pub name: String,
pub warnings: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ScanTxOutSetUnspents {
pub txid: bitcoin::Txid,
pub vout: u64,
#[serde(rename = "scriptPubKey")]
pub script_pubkey: bitcoin::ScriptBuf,
pub desc: String,
#[serde(deserialize_with = "amount_from_btc_float")]
pub amount: bitcoin::Amount,
pub coinbase: bool,
pub height: u64,
#[serde(rename = "blockhash")]
pub block_hash: bitcoin::BlockHash,
pub confirmations: i64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct SignRawTransactionWithKeyErrors {
pub txid: bitcoin::Txid,
pub vout: u64,
pub witness: Vec<String>,
#[serde(rename = "scriptSig")]
pub script_sig: String,
pub sequence: u64,
pub error: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct SignRawTransactionWithWalletErrors {
pub txid: bitcoin::Txid,
pub vout: u64,
pub witness: Vec<String>,
#[serde(rename = "scriptSig")]
pub script_sig: String,
pub sequence: u64,
pub error: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct SubmitPackageFees {
#[serde(deserialize_with = "amount_from_btc_float")]
pub base: bitcoin::Amount,
#[serde(rename = "effective-feerate")]
#[serde(deserialize_with = "option_amount_from_btc_float")]
pub effective_feerate: Option<bitcoin::Amount>,
#[serde(rename = "effective-includes")]
pub effective_includes: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct SubmitPackageTxResults {
#[serde(rename = "wtxid")]
pub w_txid: SubmitPackageWtxid,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct SubmitPackageWtxid {
pub txid: bitcoin::Txid,
#[serde(rename = "other-wtxid")]
pub other_wtxid: Option<String>,
#[serde(rename = "vsize")]
pub v_size: Option<u64>,
pub fees: Option<SubmitPackageFees>,
pub error: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct TestMempoolAcceptFees {
#[serde(deserialize_with = "amount_from_btc_float")]
pub base: bitcoin::Amount,
#[serde(rename = "effective-feerate")]
#[serde(deserialize_with = "amount_from_btc_float")]
pub effective_feerate: bitcoin::Amount,
#[serde(rename = "effective-includes")]
pub effective_includes: Vec<String>,
}
pub type Txid = bitcoin::Txid;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodedScriptSig {
pub asm: String,
pub hex: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodedPrevout {
pub generated: bool,
pub height: i64,
#[serde(rename = "scriptPubKey")]
pub script_pubkey: DecodedScriptPubKey,
pub value: f64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodedVin {
pub txid: String,
pub vout: u32,
#[serde(rename = "scriptSig", default, skip_serializing_if = "Option::is_none")]
pub script_sig: Option<DecodedScriptSig>,
pub sequence: u64,
#[serde(rename = "txinwitness", default, skip_serializing_if = "Option::is_none")]
pub tx_in_witness: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub prevout: Option<DecodedPrevout>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodedVout {
pub value: f64,
pub n: u32,
#[serde(rename = "scriptPubKey")]
pub script_pubkey: DecodedScriptPubKey,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DecodedTxDetails {
pub txid: String,
pub hash: String,
pub version: i32,
pub size: u32,
pub vsize: u32,
pub weight: u32,
pub locktime: u32,
pub vin: Vec<DecodedVin>,
pub vout: Vec<DecodedVout>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fee: Option<f64>,
pub hex: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetBlockV0 {
pub hex: String,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetBlockWithTxsResponse {
pub base: GetBlockResponse,
pub decoded_txs: Vec<DecodedTxDetails>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetBlockWithPrevoutResponse {
pub inner: GetBlockWithTxsResponse,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetBlockTemplateTransaction {
pub data: String,
pub depends: Vec<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fee: Option<i64>,
pub hash: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sigops: Option<i64>,
pub txid: String,
pub weight: i64,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct AbandonTransactionResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for AbandonTransactionResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = AbandonTransactionResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AbandonTransactionResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AbandonTransactionResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AbandonTransactionResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AbandonTransactionResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AbandonTransactionResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AbandonTransactionResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AbandonTransactionResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(AbandonTransactionResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for AbandonTransactionResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for AbandonTransactionResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for AbandonTransactionResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for AbandonTransactionResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<AbandonTransactionResponse> for () {
fn from(wrapper: AbandonTransactionResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct AbortRescanResponse {
pub value: bool,
}
impl<'de> serde::Deserialize<'de> for AbortRescanResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = AbortRescanResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AbortRescanResponse { value: v != 0 })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AbortRescanResponse { value: v != 0 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AbortRescanResponse { value: v != 0.0 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<bool>().map_err(de::Error::custom)?;
Ok(AbortRescanResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AbortRescanResponse { value: v })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(AbortRescanResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for AbortRescanResponse {
type Target = bool;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for AbortRescanResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<bool> for AbortRescanResponse {
fn as_ref(&self) -> &bool { &self.value }
}
impl From<bool> for AbortRescanResponse {
fn from(value: bool) -> Self { Self { value } }
}
impl From<AbortRescanResponse> for bool {
fn from(wrapper: AbortRescanResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct AddConnectionResponse {
pub address: String,
pub connection_type: String,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct AddNodeResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for AddNodeResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = AddNodeResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AddNodeResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AddNodeResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AddNodeResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AddNodeResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AddNodeResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AddNodeResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(AddNodeResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(AddNodeResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for AddNodeResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for AddNodeResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for AddNodeResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for AddNodeResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<AddNodeResponse> for () {
fn from(wrapper: AddNodeResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct AddPeerAddressResponse {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct AnalyzePsbtResponse {
pub inputs: Option<Vec<AnalyzePsbtInput>>,
pub estimated_vsize: Option<u64>,
pub estimated_feerate: Option<f64>,
#[serde(default)]
#[serde(deserialize_with = "option_amount_from_btc_float")]
pub fee: Option<bitcoin::Amount>,
pub next: String,
pub error: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct BackupWalletResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for BackupWalletResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = BackupWalletResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(BackupWalletResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(BackupWalletResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(BackupWalletResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(BackupWalletResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(BackupWalletResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(BackupWalletResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(BackupWalletResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(BackupWalletResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for BackupWalletResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for BackupWalletResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for BackupWalletResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for BackupWalletResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<BackupWalletResponse> for () {
fn from(wrapper: BackupWalletResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct BumpFeeResponse {
pub txid: bitcoin::Txid,
#[serde(rename = "origfee")]
#[serde(deserialize_with = "amount_from_btc_float")]
pub orig_fee: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub fee: bitcoin::Amount,
pub errors: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ClearBannedResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for ClearBannedResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = ClearBannedResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ClearBannedResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ClearBannedResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ClearBannedResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ClearBannedResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ClearBannedResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ClearBannedResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ClearBannedResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(ClearBannedResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for ClearBannedResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for ClearBannedResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for ClearBannedResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for ClearBannedResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<ClearBannedResponse> for () {
fn from(wrapper: ClearBannedResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct CombinePsbtResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for CombinePsbtResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = CombinePsbtResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CombinePsbtResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CombinePsbtResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CombinePsbtResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CombinePsbtResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CombinePsbtResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(CombinePsbtResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for CombinePsbtResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for CombinePsbtResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for CombinePsbtResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for CombinePsbtResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<CombinePsbtResponse> for String {
fn from(wrapper: CombinePsbtResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct CombineRawTransactionResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for CombineRawTransactionResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = CombineRawTransactionResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CombineRawTransactionResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CombineRawTransactionResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CombineRawTransactionResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CombineRawTransactionResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CombineRawTransactionResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(CombineRawTransactionResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for CombineRawTransactionResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for CombineRawTransactionResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for CombineRawTransactionResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for CombineRawTransactionResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<CombineRawTransactionResponse> for String {
fn from(wrapper: CombineRawTransactionResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ConvertToPsbtResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for ConvertToPsbtResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = ConvertToPsbtResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ConvertToPsbtResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ConvertToPsbtResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ConvertToPsbtResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ConvertToPsbtResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ConvertToPsbtResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(ConvertToPsbtResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for ConvertToPsbtResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for ConvertToPsbtResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for ConvertToPsbtResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for ConvertToPsbtResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<ConvertToPsbtResponse> for String {
fn from(wrapper: ConvertToPsbtResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct CreateMultisigResponse {
pub address: String,
#[serde(rename = "redeemScript")]
pub redeem_script: bitcoin::ScriptBuf,
pub descriptor: String,
pub warnings: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct CreatePsbtResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for CreatePsbtResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = CreatePsbtResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CreatePsbtResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CreatePsbtResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CreatePsbtResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CreatePsbtResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CreatePsbtResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(CreatePsbtResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for CreatePsbtResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for CreatePsbtResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for CreatePsbtResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for CreatePsbtResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<CreatePsbtResponse> for String {
fn from(wrapper: CreatePsbtResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct CreateRawTransactionResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for CreateRawTransactionResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = CreateRawTransactionResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CreateRawTransactionResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CreateRawTransactionResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CreateRawTransactionResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CreateRawTransactionResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(CreateRawTransactionResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(CreateRawTransactionResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for CreateRawTransactionResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for CreateRawTransactionResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for CreateRawTransactionResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for CreateRawTransactionResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<CreateRawTransactionResponse> for String {
fn from(wrapper: CreateRawTransactionResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct CreateWalletResponse {
pub name: String,
pub warnings: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct CreateWalletDescriptorResponse {
pub descs: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct DecodePsbtResponse {
pub tx: DecodePsbtTx,
pub global_xpubs: Vec<DecodePsbtGlobalXpubs>,
pub psbt_version: u64,
pub proprietary: Vec<DecodePsbtProprietary>,
pub unknown: DecodePsbtUnknown,
pub inputs: Vec<DecodePsbtInput>,
pub outputs: Vec<DecodePsbtOutput>,
#[serde(deserialize_with = "option_amount_from_btc_float")]
pub fee: Option<bitcoin::Amount>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct DecodeRawTransactionResponse {
pub txid: bitcoin::Txid,
pub hash: String,
pub size: u64,
#[serde(rename = "vsize")]
pub v_size: u64,
pub weight: u64,
pub version: u32,
#[serde(rename = "locktime")]
pub lock_time: u64,
pub vin: Vec<DecodedVin>,
pub vout: Vec<DecodedVout>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct DecodeScriptResponse {
pub asm: String,
pub desc: String,
#[serde(rename = "type")]
pub r#type: String,
pub address: Option<String>,
pub p2sh: Option<String>,
pub segwit: Option<DecodeScriptSegwit>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct DeriveAddressesResponse {
pub value: Vec<String>,
}
impl<'de> serde::Deserialize<'de> for DeriveAddressesResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<String>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<String>> for DeriveAddressesResponse {
fn from(value: Vec<String>) -> Self { Self { value } }
}
impl From<DeriveAddressesResponse> for Vec<String> {
fn from(wrapper: DeriveAddressesResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct DescriptorProcessPsbtResponse {
pub psbt: String,
pub complete: bool,
pub hex: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct DisconnectNodeResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for DisconnectNodeResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = DisconnectNodeResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(DisconnectNodeResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(DisconnectNodeResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(DisconnectNodeResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(DisconnectNodeResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(DisconnectNodeResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(DisconnectNodeResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(DisconnectNodeResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(DisconnectNodeResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for DisconnectNodeResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for DisconnectNodeResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for DisconnectNodeResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for DisconnectNodeResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<DisconnectNodeResponse> for () {
fn from(wrapper: DisconnectNodeResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct DumpTxOutSetResponse {
pub coins_written: u64,
pub base_hash: String,
pub base_height: u64,
pub path: String,
pub txoutset_hash: String,
#[serde(rename = "nchaintx")]
pub n_chain_tx: u64,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct EchoResponse {
pub value: serde_json::Value,
}
impl<'de> serde::Deserialize<'de> for EchoResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = serde_json::Value::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<serde_json::Value> for EchoResponse {
fn from(value: serde_json::Value) -> Self { Self { value } }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct EchoipcResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for EchoipcResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = EchoipcResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(EchoipcResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(EchoipcResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(EchoipcResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(EchoipcResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(EchoipcResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(EchoipcResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for EchoipcResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for EchoipcResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for EchoipcResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for EchoipcResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<EchoipcResponse> for String {
fn from(wrapper: EchoipcResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct EchojsonResponse {
pub value: serde_json::Value,
}
impl<'de> serde::Deserialize<'de> for EchojsonResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = serde_json::Value::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<serde_json::Value> for EchojsonResponse {
fn from(value: serde_json::Value) -> Self { Self { value } }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct EncryptWalletResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for EncryptWalletResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = EncryptWalletResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(EncryptWalletResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(EncryptWalletResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(EncryptWalletResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(EncryptWalletResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(EncryptWalletResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(EncryptWalletResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for EncryptWalletResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for EncryptWalletResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for EncryptWalletResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for EncryptWalletResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<EncryptWalletResponse> for String {
fn from(wrapper: EncryptWalletResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct EnumerateSignersResponse {
pub signers: Vec<EnumerateSignersSigners>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct EstimateRawFeeResponse {
pub short: Option<EstimateRawFeeShort>,
pub medium: Option<EstimateRawFeeMedium>,
pub long: Option<EstimateRawFeeLong>,
}
impl<'de> serde::Deserialize<'de> for EstimateRawFeeResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct ConditionalResponseVisitor;
#[allow(clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for ConditionalResponseVisitor {
type Value = EstimateRawFeeResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string or object")
}
fn visit_str<E>(self, _v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(EstimateRawFeeResponse { short: None, medium: None, long: None })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut short = None;
let mut medium = None;
let mut long = None;
while let Some(key) = map.next_key::<String>()? {
if key == "short" {
if short.is_some() {
return Err(de::Error::duplicate_field("short"));
}
short = Some(map.next_value::<EstimateRawFeeShort>()?);
}
if key == "medium" {
if medium.is_some() {
return Err(de::Error::duplicate_field("medium"));
}
medium = Some(map.next_value::<EstimateRawFeeMedium>()?);
}
if key == "long" {
if long.is_some() {
return Err(de::Error::duplicate_field("long"));
}
long = Some(map.next_value::<EstimateRawFeeLong>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
Ok(EstimateRawFeeResponse { short, medium, long })
}
}
deserializer.deserialize_any(ConditionalResponseVisitor)
}
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct EstimateSmartFeeResponse {
#[serde(rename = "feerate")]
pub fee_rate: Option<f64>,
pub errors: Option<Vec<String>>,
pub blocks: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct FinalizePsbtResponse {
pub psbt: Option<String>,
pub hex: Option<String>,
pub complete: bool,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct FundRawTransactionResponse {
pub hex: String,
#[serde(deserialize_with = "amount_from_btc_float")]
pub fee: bitcoin::Amount,
pub changepos: i64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GenerateResponse;
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GenerateBlockResponse {
pub hash: String,
pub hex: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GenerateToAddressResponse {
pub value: Vec<serde_json::Value>,
}
impl<'de> serde::Deserialize<'de> for GenerateToAddressResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<serde_json::Value>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<serde_json::Value>> for GenerateToAddressResponse {
fn from(value: Vec<serde_json::Value>) -> Self { Self { value } }
}
impl From<GenerateToAddressResponse> for Vec<serde_json::Value> {
fn from(wrapper: GenerateToAddressResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GenerateToDescriptorResponse {
pub value: Vec<serde_json::Value>,
}
impl<'de> serde::Deserialize<'de> for GenerateToDescriptorResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<serde_json::Value>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<serde_json::Value>> for GenerateToDescriptorResponse {
fn from(value: Vec<serde_json::Value>) -> Self { Self { value } }
}
impl From<GenerateToDescriptorResponse> for Vec<serde_json::Value> {
fn from(wrapper: GenerateToDescriptorResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetAddedNodeInfoResponse {
pub value: Vec<GetAddedNodeInfoElement>,
}
impl<'de> serde::Deserialize<'de> for GetAddedNodeInfoResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<GetAddedNodeInfoElement>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<GetAddedNodeInfoElement>> for GetAddedNodeInfoResponse {
fn from(value: Vec<GetAddedNodeInfoElement>) -> Self { Self { value } }
}
impl From<GetAddedNodeInfoResponse> for Vec<GetAddedNodeInfoElement> {
fn from(wrapper: GetAddedNodeInfoResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetAddressesByLabelResponse {
pub address: GetAddressesByLabelAddress,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetAddressInfoResponse {
pub address: String,
#[serde(rename = "scriptPubKey")]
pub script_pubkey: bitcoin::ScriptBuf,
#[serde(rename = "ismine")]
pub is_mine: bool,
#[serde(rename = "iswatchonly")]
pub is_watch_only: bool,
pub solvable: bool,
pub desc: Option<String>,
pub parent_desc: Option<String>,
#[serde(rename = "isscript")]
pub is_script: Option<bool>,
pub ischange: bool,
#[serde(rename = "iswitness")]
pub is_witness: bool,
pub witness_version: Option<u64>,
pub witness_program: Option<String>,
pub script: Option<bitcoin::ScriptBuf>,
pub hex: Option<String>,
#[serde(rename = "pubkeys")]
pub pub_keys: Option<Vec<String>>,
#[serde(rename = "sigsrequired")]
pub sigs_required: Option<u64>,
pub pubkey: Option<String>,
pub embedded: Option<GetAddressInfoEmbedded>,
#[serde(rename = "iscompressed")]
pub is_compressed: Option<bool>,
pub timestamp: Option<u64>,
#[serde(rename = "hdkeypath")]
pub hd_key_path: Option<String>,
#[serde(rename = "hdseedid")]
pub hd_seed_id: Option<String>,
#[serde(rename = "hdmasterfingerprint")]
pub hd_master_fingerprint: Option<String>,
pub labels: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetAddrManInfoResponse {
#[serde(default)]
pub network: Option<GetAddrManInfoNetwork>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetBalanceResponse {
pub value: bitcoin::Amount,
}
impl<'de> serde::Deserialize<'de> for GetBalanceResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetBalanceResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBalanceResponse { value: bitcoin::Amount::from_sat(v) })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
if v < 0 {
return Err(de::Error::custom(format!("Amount cannot be negative: {}", v)));
}
Ok(GetBalanceResponse { value: bitcoin::Amount::from_sat(v as u64) })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
let amount = bitcoin::Amount::from_btc(v)
.map_err(|e| de::Error::custom(format!("Invalid BTC amount: {}", e)))?;
Ok(GetBalanceResponse { value: amount })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<bitcoin::Amount>().map_err(de::Error::custom)?;
Ok(GetBalanceResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Err(de::Error::custom("cannot convert bool to bitcoin::Amount"))
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetBalanceResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetBalanceResponse {
type Target = bitcoin::Amount;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetBalanceResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<bitcoin::Amount> for GetBalanceResponse {
fn as_ref(&self) -> &bitcoin::Amount { &self.value }
}
impl From<bitcoin::Amount> for GetBalanceResponse {
fn from(value: bitcoin::Amount) -> Self { Self { value } }
}
impl From<GetBalanceResponse> for bitcoin::Amount {
fn from(wrapper: GetBalanceResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetBalancesResponse {
pub mine: GetBalancesMine,
#[serde(rename = "lastprocessedblock")]
pub last_processed_block: GetBalancesLastProcessedBlock,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetBestBlockHashResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for GetBestBlockHashResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetBestBlockHashResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBestBlockHashResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBestBlockHashResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBestBlockHashResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBestBlockHashResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBestBlockHashResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetBestBlockHashResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetBestBlockHashResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetBestBlockHashResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for GetBestBlockHashResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for GetBestBlockHashResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<GetBestBlockHashResponse> for String {
fn from(wrapper: GetBestBlockHashResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetBlockResponse {
pub hash: String,
pub confirmations: i64,
pub size: u64,
#[serde(rename = "strippedsize")]
pub stripped_size: u64,
pub weight: u64,
pub coinbase_tx: GetBlockCoinbaseTx,
pub height: u64,
pub version: u32,
#[serde(rename = "versionHex")]
pub version_hex: String,
#[serde(rename = "merkleroot")]
pub merkle_root: String,
pub tx: Vec<bitcoin::Txid>,
pub time: u64,
#[serde(rename = "mediantime")]
pub median_time: u64,
pub nonce: u64,
pub bits: String,
pub target: String,
pub difficulty: f64,
#[serde(rename = "chainwork")]
pub chain_work: String,
pub nTx: u64,
#[serde(rename = "previousblockhash")]
pub previous_block_hash: Option<String>,
#[serde(rename = "nextblockhash")]
pub next_block_hash: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetBlockchainInfoResponse {
pub chain: String,
pub blocks: u64,
pub headers: u64,
#[serde(rename = "bestblockhash")]
pub best_block_hash: String,
pub bits: String,
pub target: String,
pub difficulty: f64,
pub time: u64,
#[serde(rename = "mediantime")]
pub median_time: u64,
#[serde(rename = "verificationprogress")]
pub verification_progress: f64,
#[serde(rename = "initialblockdownload")]
pub initial_block_download: bool,
#[serde(rename = "chainwork")]
pub chain_work: String,
pub size_on_disk: u64,
pub pruned: bool,
#[serde(rename = "pruneheight")]
pub prune_height: Option<u64>,
pub automatic_pruning: Option<bool>,
pub prune_target_size: Option<u64>,
pub signet_challenge: Option<String>,
pub warnings: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetBlockCountResponse {
pub value: u64,
}
impl<'de> serde::Deserialize<'de> for GetBlockCountResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetBlockCountResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBlockCountResponse { value: v })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBlockCountResponse { value: v as u64 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBlockCountResponse { value: v as u64 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<u64>().map_err(de::Error::custom)?;
Ok(GetBlockCountResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBlockCountResponse { value: v as u64 })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetBlockCountResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetBlockCountResponse {
type Target = u64;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetBlockCountResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<u64> for GetBlockCountResponse {
fn as_ref(&self) -> &u64 { &self.value }
}
impl From<u64> for GetBlockCountResponse {
fn from(value: u64) -> Self { Self { value } }
}
impl From<GetBlockCountResponse> for u64 {
fn from(wrapper: GetBlockCountResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetBlockFilterResponse {
pub filter: String,
pub header: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct GetBlockFromPeerResponse;
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetBlockHashResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for GetBlockHashResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetBlockHashResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBlockHashResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBlockHashResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBlockHashResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBlockHashResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetBlockHashResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetBlockHashResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetBlockHashResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetBlockHashResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for GetBlockHashResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for GetBlockHashResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<GetBlockHashResponse> for String {
fn from(wrapper: GetBlockHashResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetBlockHeaderResponse {
pub hash: String,
pub confirmations: i64,
pub height: u64,
pub version: u32,
#[serde(rename = "versionHex")]
pub version_hex: String,
#[serde(rename = "merkleroot")]
pub merkle_root: String,
pub time: u64,
#[serde(rename = "mediantime")]
pub median_time: u64,
pub nonce: u64,
pub bits: String,
pub target: String,
pub difficulty: f64,
#[serde(rename = "chainwork")]
pub chain_work: String,
pub nTx: u64,
#[serde(rename = "previousblockhash")]
pub previous_block_hash: Option<String>,
#[serde(rename = "nextblockhash")]
pub next_block_hash: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetBlockStatsResponse {
pub avgfee: Option<u64>,
#[serde(rename = "avgfeerate")]
pub avg_fee_rate: Option<u64>,
#[serde(rename = "avgtxsize")]
pub avg_tx_size: Option<u64>,
#[serde(rename = "blockhash")]
pub block_hash: Option<bitcoin::BlockHash>,
pub feerate_percentiles: Option<GetBlockStatsFeeratePercentiles>,
pub height: Option<u64>,
pub ins: Option<u64>,
#[serde(rename = "maxfee")]
pub max_fee: Option<u64>,
#[serde(rename = "maxfeerate")]
pub max_fee_rate: Option<f64>,
#[serde(rename = "maxtxsize")]
pub max_tx_size: Option<u64>,
pub medianfee: Option<u64>,
#[serde(rename = "mediantime")]
pub median_time: Option<u64>,
#[serde(rename = "mediantxsize")]
pub median_tx_size: Option<u64>,
#[serde(rename = "minfee")]
pub min_fee: Option<u64>,
#[serde(rename = "minfeerate")]
pub min_fee_rate: Option<u64>,
#[serde(rename = "mintxsize")]
pub min_tx_size: Option<u64>,
pub outs: Option<u64>,
pub subsidy: Option<u64>,
#[serde(rename = "swtotal_size")]
pub sw_total_size: Option<u64>,
#[serde(rename = "swtotal_weight")]
pub sw_total_weight: Option<u64>,
#[serde(rename = "swtxs")]
pub sw_txs: Option<u64>,
pub time: Option<u64>,
pub total_out: Option<u64>,
pub total_size: Option<u64>,
pub total_weight: Option<u64>,
#[serde(rename = "totalfee")]
pub total_fee: Option<u64>,
pub txs: Option<u64>,
pub utxo_increase: Option<u64>,
pub utxo_size_inc: Option<u64>,
pub utxo_increase_actual: Option<u64>,
pub utxo_size_inc_actual: Option<u64>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetBlockTemplateResponse {
pub field_0_1: (),
pub version: u32,
pub rules: Vec<String>,
#[serde(rename = "vbavailable")]
pub vb_available: HashMap<String, u32>,
pub capabilities: Vec<String>,
#[serde(rename = "vbrequired")]
pub vb_required: u64,
#[serde(rename = "previousblockhash")]
pub previous_block_hash: String,
pub transactions: Vec<GetBlockTemplateTransaction>,
#[serde(rename = "coinbaseaux")]
pub coinbase_aux: HashMap<String, String>,
#[serde(rename = "coinbasevalue")]
pub coinbase_value: u64,
#[serde(rename = "longpollid")]
pub longpoll_id: String,
pub target: String,
pub mintime: u64,
pub mutable: Vec<String>,
#[serde(rename = "noncerange")]
pub nonce_range: String,
#[serde(rename = "sigoplimit")]
pub sigop_limit: u64,
#[serde(rename = "sizelimit")]
pub size_limit: u64,
#[serde(rename = "weightlimit")]
pub weight_limit: Option<u64>,
#[serde(rename = "curtime")]
pub cur_time: u64,
pub bits: String,
pub height: u64,
pub signet_challenge: Option<String>,
pub default_witness_commitment: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetChainStatesResponse {
pub headers: u64,
pub chainstates: Vec<GetChainStatesChainstates>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetChainTipsResponse {
pub field: serde_json::Value,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetChainTxStatsResponse {
pub time: u64,
#[serde(rename = "txcount")]
pub tx_count: Option<u64>,
pub window_final_block_hash: String,
pub window_final_block_height: u64,
pub window_block_count: u64,
pub window_interval: Option<u64>,
pub window_tx_count: Option<u64>,
#[serde(rename = "txrate")]
pub tx_rate: Option<u64>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetConnectionCountResponse {
pub value: u64,
}
impl<'de> serde::Deserialize<'de> for GetConnectionCountResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetConnectionCountResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetConnectionCountResponse { value: v })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetConnectionCountResponse { value: v as u64 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetConnectionCountResponse { value: v as u64 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<u64>().map_err(de::Error::custom)?;
Ok(GetConnectionCountResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetConnectionCountResponse { value: v as u64 })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetConnectionCountResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetConnectionCountResponse {
type Target = u64;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetConnectionCountResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<u64> for GetConnectionCountResponse {
fn as_ref(&self) -> &u64 { &self.value }
}
impl From<u64> for GetConnectionCountResponse {
fn from(value: u64) -> Self { Self { value } }
}
impl From<GetConnectionCountResponse> for u64 {
fn from(wrapper: GetConnectionCountResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetDeploymentInfoResponse {
pub hash: String,
pub height: u64,
pub script_flags: Vec<String>,
pub deployments: GetDeploymentInfoDeployments,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetDescriptorActivityResponse {
pub activity: serde_json::Value,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetDescriptorInfoResponse {
pub descriptor: String,
pub multipath_expansion: Option<Vec<String>>,
pub checksum: String,
#[serde(rename = "isrange")]
pub is_range: bool,
#[serde(rename = "issolvable")]
pub is_solvable: bool,
#[serde(rename = "hasprivatekeys")]
pub has_private_keys: bool,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetDifficultyResponse {
pub value: u64,
}
impl<'de> serde::Deserialize<'de> for GetDifficultyResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetDifficultyResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetDifficultyResponse { value: v })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetDifficultyResponse { value: v as u64 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetDifficultyResponse { value: v as u64 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<u64>().map_err(de::Error::custom)?;
Ok(GetDifficultyResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetDifficultyResponse { value: v as u64 })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetDifficultyResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetDifficultyResponse {
type Target = u64;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetDifficultyResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<u64> for GetDifficultyResponse {
fn as_ref(&self) -> &u64 { &self.value }
}
impl From<u64> for GetDifficultyResponse {
fn from(value: u64) -> Self { Self { value } }
}
impl From<GetDifficultyResponse> for u64 {
fn from(wrapper: GetDifficultyResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetHdKeysResponse {
pub field: serde_json::Value,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetIndexInfoResponse {
#[serde(default)]
pub name: Option<GetIndexInfoName>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetMemoryInfoResponse {
pub locked: GetMemoryInfoLocked,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetMempoolAncestorsResponse {
pub field_0: Vec<String>,
#[serde(rename = "transactionid")]
pub transaction_id: bitcoin::Txid,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetMempoolDescendantsResponse {
pub field_0: Vec<String>,
#[serde(rename = "transactionid")]
pub transaction_id: bitcoin::Txid,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetMempoolEntryResponse {
#[serde(rename = "vsize")]
pub v_size: u64,
pub weight: u64,
pub time: u64,
pub height: u64,
#[serde(rename = "descendantcount")]
pub descendant_count: u64,
#[serde(rename = "descendantsize")]
pub descendant_size: u64,
#[serde(rename = "ancestorcount")]
pub ancestor_count: u64,
#[serde(rename = "ancestorsize")]
pub ancestor_size: u64,
#[serde(rename = "chunkweight")]
pub chunk_weight: u64,
#[serde(rename = "wtxid")]
pub w_txid: String,
pub fees: GetMempoolEntryFees,
pub depends: Vec<String>,
#[serde(rename = "spentby")]
pub spent_by: Vec<String>,
#[serde(rename = "bip125-replaceable")]
pub bip125_replaceable: bool,
pub unbroadcast: bool,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetMempoolInfoResponse {
pub loaded: bool,
pub size: u64,
pub bytes: u64,
pub usage: u64,
pub total_fee: f64,
#[serde(rename = "maxmempool")]
pub max_mempool: u64,
#[serde(rename = "mempoolminfee")]
pub mempool_min_fee: f64,
#[serde(rename = "minrelaytxfee")]
pub min_relay_tx_fee: f64,
#[serde(rename = "incrementalrelayfee")]
pub incremental_relay_fee: f64,
#[serde(rename = "unbroadcastcount")]
pub unbroadcast_count: u64,
#[serde(rename = "fullrbf")]
pub full_rbf: bool,
#[serde(rename = "permitbaremultisig")]
pub permit_bare_multisig: Option<bool>,
#[serde(rename = "maxdatacarriersize")]
pub max_data_carrier_size: Option<u64>,
#[serde(rename = "limitclustercount")]
pub limit_cluster_count: Option<u64>,
#[serde(rename = "limitclustersize")]
pub limit_cluster_size: Option<u64>,
pub optimal: bool,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetMiningInfoResponse {
pub blocks: u64,
#[serde(rename = "currentblockweight")]
pub current_block_weight: Option<u64>,
#[serde(rename = "currentblocktx")]
pub current_block_tx: Option<u64>,
pub bits: String,
pub difficulty: f64,
pub target: String,
#[serde(rename = "networkhashps")]
pub network_hashps: f64,
#[serde(rename = "pooledtx")]
pub pooled_tx: u64,
#[serde(rename = "blockmintxfee")]
pub block_min_tx_fee: Option<f64>,
pub chain: String,
pub signet_challenge: Option<String>,
pub next: GetMiningInfoNext,
pub warnings: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetNetTotalsResponse {
#[serde(rename = "totalbytesrecv")]
pub total_bytes_recv: u64,
#[serde(rename = "totalbytessent")]
pub total_bytes_sent: u64,
#[serde(rename = "timemillis")]
pub time_millis: u64,
#[serde(rename = "uploadtarget")]
pub upload_target: GetNetTotalsUploadTarget,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetNetworkHashPsResponse {
pub value: u64,
}
impl<'de> serde::Deserialize<'de> for GetNetworkHashPsResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetNetworkHashPsResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetNetworkHashPsResponse { value: v })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetNetworkHashPsResponse { value: v as u64 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetNetworkHashPsResponse { value: v as u64 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<u64>().map_err(de::Error::custom)?;
Ok(GetNetworkHashPsResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetNetworkHashPsResponse { value: v as u64 })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetNetworkHashPsResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetNetworkHashPsResponse {
type Target = u64;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetNetworkHashPsResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<u64> for GetNetworkHashPsResponse {
fn as_ref(&self) -> &u64 { &self.value }
}
impl From<u64> for GetNetworkHashPsResponse {
fn from(value: u64) -> Self { Self { value } }
}
impl From<GetNetworkHashPsResponse> for u64 {
fn from(wrapper: GetNetworkHashPsResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetNetworkInfoResponse {
pub version: u32,
pub subversion: String,
#[serde(rename = "protocolversion")]
pub protocol_version: u64,
#[serde(rename = "localservices")]
pub local_services: String,
#[serde(rename = "localservicesnames")]
pub local_services_names: Vec<String>,
#[serde(rename = "localrelay")]
pub local_relay: bool,
#[serde(rename = "timeoffset")]
pub time_offset: u64,
pub connections: u64,
pub connections_in: u64,
pub connections_out: u64,
#[serde(rename = "networkactive")]
pub network_active: bool,
pub networks: Vec<GetNetworkInfoNetworks>,
#[serde(rename = "relayfee")]
pub relay_fee: f64,
#[serde(rename = "incrementalfee")]
pub incremental_fee: f64,
#[serde(rename = "localaddresses")]
pub local_addresses: Vec<GetNetworkInfoLocalAddresses>,
pub warnings: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetNewAddressResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for GetNewAddressResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetNewAddressResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetNewAddressResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetNewAddressResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetNewAddressResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetNewAddressResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetNewAddressResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetNewAddressResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetNewAddressResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetNewAddressResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for GetNewAddressResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for GetNewAddressResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<GetNewAddressResponse> for String {
fn from(wrapper: GetNewAddressResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetNodeAddressesResponse {
pub value: Vec<GetNodeAddressesElement>,
}
impl<'de> serde::Deserialize<'de> for GetNodeAddressesResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<GetNodeAddressesElement>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<GetNodeAddressesElement>> for GetNodeAddressesResponse {
fn from(value: Vec<GetNodeAddressesElement>) -> Self { Self { value } }
}
impl From<GetNodeAddressesResponse> for Vec<GetNodeAddressesElement> {
fn from(wrapper: GetNodeAddressesResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetOrphanTxsResponse {
pub value: Vec<String>,
}
impl<'de> serde::Deserialize<'de> for GetOrphanTxsResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<String>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<String>> for GetOrphanTxsResponse {
fn from(value: Vec<String>) -> Self { Self { value } }
}
impl From<GetOrphanTxsResponse> for Vec<String> {
fn from(wrapper: GetOrphanTxsResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetPeerInfoResponse {
pub value: Vec<GetPeerInfoElement>,
}
impl<'de> serde::Deserialize<'de> for GetPeerInfoResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<GetPeerInfoElement>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<GetPeerInfoElement>> for GetPeerInfoResponse {
fn from(value: Vec<GetPeerInfoElement>) -> Self { Self { value } }
}
impl From<GetPeerInfoResponse> for Vec<GetPeerInfoElement> {
fn from(wrapper: GetPeerInfoResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetPrioritisedTransactionsResponse {
#[serde(rename = "<transactionid>")]
pub transactionid: GetPrioritisedTransactionsTransactionId,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetRawAddrManResponse {
#[serde(default)]
pub table: Option<GetRawAddrManTable>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetRawChangeAddressResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for GetRawChangeAddressResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetRawChangeAddressResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetRawChangeAddressResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetRawChangeAddressResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetRawChangeAddressResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetRawChangeAddressResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetRawChangeAddressResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetRawChangeAddressResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetRawChangeAddressResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetRawChangeAddressResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for GetRawChangeAddressResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for GetRawChangeAddressResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<GetRawChangeAddressResponse> for String {
fn from(wrapper: GetRawChangeAddressResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetRawMempoolResponse {
pub value: Vec<String>,
}
impl<'de> serde::Deserialize<'de> for GetRawMempoolResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<String>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<String>> for GetRawMempoolResponse {
fn from(value: Vec<String>) -> Self { Self { value } }
}
impl From<GetRawMempoolResponse> for Vec<String> {
fn from(wrapper: GetRawMempoolResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetRawTransactionResponse {
pub data: Option<String>,
pub in_active_chain: Option<bool>,
#[serde(rename = "blockhash")]
pub block_hash: Option<bitcoin::BlockHash>,
pub confirmations: Option<i64>,
#[serde(rename = "blocktime")]
pub block_time: Option<u64>,
pub time: Option<u64>,
pub hex: Option<String>,
pub txid: Option<bitcoin::Txid>,
pub hash: Option<String>,
pub size: Option<u64>,
#[serde(rename = "vsize")]
pub v_size: Option<u64>,
pub weight: Option<u64>,
pub version: Option<u32>,
#[serde(rename = "locktime")]
pub lock_time: Option<u64>,
pub vin: Option<Vec<DecodedVin>>,
pub vout: Option<Vec<DecodedVout>>,
pub fee: Option<f64>,
pub vin_1: Option<Vec<DecodedVin>>,
}
impl<'de> serde::Deserialize<'de> for GetRawTransactionResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct ConditionalResponseVisitor;
#[allow(clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for ConditionalResponseVisitor {
type Value = GetRawTransactionResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string or object")
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let data = v.to_string();
Ok(GetRawTransactionResponse {
data: Some(data),
in_active_chain: None,
block_hash: None,
confirmations: None,
block_time: None,
time: None,
hex: None,
txid: None,
hash: None,
size: None,
v_size: None,
weight: None,
version: None,
lock_time: None,
vin: None,
vout: None,
fee: None,
vin_1: None,
})
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut data = None;
let mut in_active_chain = None;
let mut block_hash = None;
let mut confirmations = None;
let mut block_time = None;
let mut time = None;
let mut hex = None;
let mut txid = None;
let mut hash = None;
let mut size = None;
let mut v_size = None;
let mut weight = None;
let mut version = None;
let mut lock_time = None;
let mut vin = None;
let mut vout = None;
let mut fee = None;
let mut vin_1 = None;
while let Some(key) = map.next_key::<String>()? {
if key == "data" {
if data.is_some() {
return Err(de::Error::duplicate_field("data"));
}
data = Some(map.next_value::<String>()?);
}
if key == "in_active_chain" {
if in_active_chain.is_some() {
return Err(de::Error::duplicate_field("in_active_chain"));
}
in_active_chain = Some(map.next_value::<bool>()?);
}
if key == "blockhash" {
if block_hash.is_some() {
return Err(de::Error::duplicate_field("blockhash"));
}
block_hash = Some(map.next_value::<bitcoin::BlockHash>()?);
}
if key == "confirmations" {
if confirmations.is_some() {
return Err(de::Error::duplicate_field("confirmations"));
}
confirmations = Some(map.next_value::<i64>()?);
}
if key == "blocktime" {
if block_time.is_some() {
return Err(de::Error::duplicate_field("blocktime"));
}
block_time = Some(map.next_value::<u64>()?);
}
if key == "time" {
if time.is_some() {
return Err(de::Error::duplicate_field("time"));
}
time = Some(map.next_value::<u64>()?);
}
if key == "hex" {
if hex.is_some() {
return Err(de::Error::duplicate_field("hex"));
}
hex = Some(map.next_value::<String>()?);
}
if key == "txid" {
if txid.is_some() {
return Err(de::Error::duplicate_field("txid"));
}
txid = Some(map.next_value::<bitcoin::Txid>()?);
}
if key == "hash" {
if hash.is_some() {
return Err(de::Error::duplicate_field("hash"));
}
hash = Some(map.next_value::<String>()?);
}
if key == "size" {
if size.is_some() {
return Err(de::Error::duplicate_field("size"));
}
size = Some(map.next_value::<u64>()?);
}
if key == "vsize" {
if v_size.is_some() {
return Err(de::Error::duplicate_field("vsize"));
}
v_size = Some(map.next_value::<u64>()?);
}
if key == "weight" {
if weight.is_some() {
return Err(de::Error::duplicate_field("weight"));
}
weight = Some(map.next_value::<u64>()?);
}
if key == "version" {
if version.is_some() {
return Err(de::Error::duplicate_field("version"));
}
version = Some(map.next_value::<u32>()?);
}
if key == "locktime" {
if lock_time.is_some() {
return Err(de::Error::duplicate_field("locktime"));
}
lock_time = Some(map.next_value::<u64>()?);
}
if key == "vin" {
if vin.is_some() {
return Err(de::Error::duplicate_field("vin"));
}
vin = Some(map.next_value::<Vec<DecodedVin>>()?);
}
if key == "vout" {
if vout.is_some() {
return Err(de::Error::duplicate_field("vout"));
}
vout = Some(map.next_value::<Vec<DecodedVout>>()?);
}
if key == "fee" {
if fee.is_some() {
return Err(de::Error::duplicate_field("fee"));
}
fee = Some(map.next_value::<f64>()?);
}
if key == "vin_1" {
if vin_1.is_some() {
return Err(de::Error::duplicate_field("vin_1"));
}
vin_1 = Some(map.next_value::<Vec<DecodedVin>>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
Ok(GetRawTransactionResponse {
data,
in_active_chain,
block_hash,
confirmations,
block_time,
time,
hex,
txid,
hash,
size,
v_size,
weight,
version,
lock_time,
vin,
vout,
fee,
vin_1,
})
}
}
deserializer.deserialize_any(ConditionalResponseVisitor)
}
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetReceivedByAddressResponse {
pub value: bitcoin::Amount,
}
impl<'de> serde::Deserialize<'de> for GetReceivedByAddressResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetReceivedByAddressResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetReceivedByAddressResponse { value: bitcoin::Amount::from_sat(v) })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
if v < 0 {
return Err(de::Error::custom(format!("Amount cannot be negative: {}", v)));
}
Ok(GetReceivedByAddressResponse { value: bitcoin::Amount::from_sat(v as u64) })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
let amount = bitcoin::Amount::from_btc(v)
.map_err(|e| de::Error::custom(format!("Invalid BTC amount: {}", e)))?;
Ok(GetReceivedByAddressResponse { value: amount })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<bitcoin::Amount>().map_err(de::Error::custom)?;
Ok(GetReceivedByAddressResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Err(de::Error::custom("cannot convert bool to bitcoin::Amount"))
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetReceivedByAddressResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetReceivedByAddressResponse {
type Target = bitcoin::Amount;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetReceivedByAddressResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<bitcoin::Amount> for GetReceivedByAddressResponse {
fn as_ref(&self) -> &bitcoin::Amount { &self.value }
}
impl From<bitcoin::Amount> for GetReceivedByAddressResponse {
fn from(value: bitcoin::Amount) -> Self { Self { value } }
}
impl From<GetReceivedByAddressResponse> for bitcoin::Amount {
fn from(wrapper: GetReceivedByAddressResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetReceivedByLabelResponse {
pub value: bitcoin::Amount,
}
impl<'de> serde::Deserialize<'de> for GetReceivedByLabelResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetReceivedByLabelResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetReceivedByLabelResponse { value: bitcoin::Amount::from_sat(v) })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
if v < 0 {
return Err(de::Error::custom(format!("Amount cannot be negative: {}", v)));
}
Ok(GetReceivedByLabelResponse { value: bitcoin::Amount::from_sat(v as u64) })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
let amount = bitcoin::Amount::from_btc(v)
.map_err(|e| de::Error::custom(format!("Invalid BTC amount: {}", e)))?;
Ok(GetReceivedByLabelResponse { value: amount })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<bitcoin::Amount>().map_err(de::Error::custom)?;
Ok(GetReceivedByLabelResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Err(de::Error::custom("cannot convert bool to bitcoin::Amount"))
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetReceivedByLabelResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetReceivedByLabelResponse {
type Target = bitcoin::Amount;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetReceivedByLabelResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<bitcoin::Amount> for GetReceivedByLabelResponse {
fn as_ref(&self) -> &bitcoin::Amount { &self.value }
}
impl From<bitcoin::Amount> for GetReceivedByLabelResponse {
fn from(value: bitcoin::Amount) -> Self { Self { value } }
}
impl From<GetReceivedByLabelResponse> for bitcoin::Amount {
fn from(wrapper: GetReceivedByLabelResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetRpcInfoResponse {
pub active_commands: Vec<GetRpcInfoActiveCommands>,
pub logpath: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetTransactionResponse {
#[serde(deserialize_with = "amount_from_btc_float")]
pub amount: bitcoin::Amount,
#[serde(deserialize_with = "option_amount_from_btc_float")]
pub fee: Option<bitcoin::Amount>,
pub confirmations: i64,
pub generated: Option<bool>,
pub trusted: Option<bool>,
#[serde(rename = "blockhash")]
pub block_hash: Option<bitcoin::BlockHash>,
#[serde(rename = "blockheight")]
pub block_height: Option<u64>,
#[serde(rename = "blockindex")]
pub block_index: Option<u64>,
#[serde(rename = "blocktime")]
pub block_time: Option<u64>,
pub txid: bitcoin::Txid,
#[serde(rename = "wtxid")]
pub w_txid: String,
#[serde(rename = "walletconflicts")]
pub wallet_conflicts: Vec<String>,
pub replaced_by_txid: Option<String>,
pub replaces_txid: Option<String>,
#[serde(rename = "mempoolconflicts")]
pub mempool_conflicts: Vec<String>,
pub to: Option<String>,
pub time: u64,
#[serde(rename = "timereceived")]
pub time_received: u64,
pub comment: Option<String>,
#[serde(rename = "bip125-replaceable")]
pub bip125_replaceable: String,
pub parent_descs: Option<Vec<String>>,
pub details: Vec<GetTransactionDetails>,
pub hex: String,
pub decoded: Option<GetTransactionDecoded>,
#[serde(rename = "lastprocessedblock")]
pub last_processed_block: GetTransactionLastProcessedBlock,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetTxOutResponse {
pub field_0_1: (),
#[serde(rename = "bestblock")]
pub best_block: String,
pub confirmations: i64,
#[serde(deserialize_with = "amount_from_btc_float")]
pub value: bitcoin::Amount,
#[serde(rename = "scriptPubKey")]
pub script_pubkey: DecodedScriptPubKey,
pub coinbase: bool,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct GetTxOutProofResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for GetTxOutProofResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = GetTxOutProofResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetTxOutProofResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetTxOutProofResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetTxOutProofResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetTxOutProofResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(GetTxOutProofResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(GetTxOutProofResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for GetTxOutProofResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for GetTxOutProofResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for GetTxOutProofResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for GetTxOutProofResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<GetTxOutProofResponse> for String {
fn from(wrapper: GetTxOutProofResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetTxOutSetInfoResponse {
pub height: u64,
#[serde(rename = "bestblock")]
pub best_block: String,
pub txouts: u64,
#[serde(rename = "bogosize")]
pub bogo_size: u64,
pub hash_serialized_3: Option<String>,
pub muhash: Option<String>,
pub transactions: Option<u64>,
pub disk_size: Option<u64>,
#[serde(deserialize_with = "amount_from_btc_float")]
pub total_amount: bitcoin::Amount,
#[serde(default)]
#[serde(deserialize_with = "option_amount_from_btc_float")]
pub total_unspendable_amount: Option<bitcoin::Amount>,
pub block_info: Option<GetTxOutSetInfoBlockInfo>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetTxSpendingPrevOutResponse {
pub field: serde_json::Value,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct GetWalletInfoResponse {
#[serde(rename = "walletname")]
pub wallet_name: String,
#[serde(rename = "walletversion")]
pub wallet_version: u64,
pub format: String,
#[serde(rename = "txcount")]
pub tx_count: u64,
#[serde(rename = "keypoolsize")]
pub key_pool_size: u64,
pub keypoolsize_hd_internal: Option<u64>,
pub unlocked_until: Option<u64>,
pub private_keys_enabled: bool,
pub avoid_reuse: bool,
pub scanning: GetWalletInfoScanning,
pub descriptors: bool,
pub external_signer: bool,
pub blank: bool,
#[serde(rename = "birthtime")]
pub birth_time: Option<u64>,
pub flags: Vec<String>,
#[serde(rename = "lastprocessedblock")]
pub last_processed_block: GetWalletInfoLastProcessedBlock,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct HelpResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for HelpResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = HelpResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(HelpResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(HelpResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(HelpResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(HelpResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(HelpResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(HelpResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for HelpResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for HelpResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for HelpResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for HelpResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<HelpResponse> for String {
fn from(wrapper: HelpResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct ImportDescriptorsResponse {
pub field: serde_json::Value,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ImportMempoolResponse;
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ImportPrunedFundsResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for ImportPrunedFundsResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = ImportPrunedFundsResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ImportPrunedFundsResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ImportPrunedFundsResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ImportPrunedFundsResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ImportPrunedFundsResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ImportPrunedFundsResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ImportPrunedFundsResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ImportPrunedFundsResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(ImportPrunedFundsResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for ImportPrunedFundsResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for ImportPrunedFundsResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for ImportPrunedFundsResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for ImportPrunedFundsResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<ImportPrunedFundsResponse> for () {
fn from(wrapper: ImportPrunedFundsResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct InvalidateBlockResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for InvalidateBlockResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = InvalidateBlockResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(InvalidateBlockResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(InvalidateBlockResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(InvalidateBlockResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(InvalidateBlockResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(InvalidateBlockResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(InvalidateBlockResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(InvalidateBlockResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(InvalidateBlockResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for InvalidateBlockResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for InvalidateBlockResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for InvalidateBlockResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for InvalidateBlockResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<InvalidateBlockResponse> for () {
fn from(wrapper: InvalidateBlockResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct JoinPsbtsResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for JoinPsbtsResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = JoinPsbtsResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(JoinPsbtsResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(JoinPsbtsResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(JoinPsbtsResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(JoinPsbtsResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(JoinPsbtsResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(JoinPsbtsResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for JoinPsbtsResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for JoinPsbtsResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for JoinPsbtsResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for JoinPsbtsResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<JoinPsbtsResponse> for String {
fn from(wrapper: JoinPsbtsResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct KeypoolRefillResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for KeypoolRefillResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = KeypoolRefillResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(KeypoolRefillResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(KeypoolRefillResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(KeypoolRefillResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(KeypoolRefillResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(KeypoolRefillResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(KeypoolRefillResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(KeypoolRefillResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(KeypoolRefillResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for KeypoolRefillResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for KeypoolRefillResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for KeypoolRefillResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for KeypoolRefillResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<KeypoolRefillResponse> for () {
fn from(wrapper: KeypoolRefillResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ListAddressGroupingsResponse {
pub value: Vec<serde_json::Value>,
}
impl<'de> serde::Deserialize<'de> for ListAddressGroupingsResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<serde_json::Value>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<serde_json::Value>> for ListAddressGroupingsResponse {
fn from(value: Vec<serde_json::Value>) -> Self { Self { value } }
}
impl From<ListAddressGroupingsResponse> for Vec<serde_json::Value> {
fn from(wrapper: ListAddressGroupingsResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ListBannedResponse {
pub value: Vec<ListBannedElement>,
}
impl<'de> serde::Deserialize<'de> for ListBannedResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<ListBannedElement>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<ListBannedElement>> for ListBannedResponse {
fn from(value: Vec<ListBannedElement>) -> Self { Self { value } }
}
impl From<ListBannedResponse> for Vec<ListBannedElement> {
fn from(wrapper: ListBannedResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct ListDescriptorsResponse {
pub wallet_name: String,
pub descriptors: Vec<ListDescriptorsDescriptors>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ListLabelsResponse {
pub value: Vec<serde_json::Value>,
}
impl<'de> serde::Deserialize<'de> for ListLabelsResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<serde_json::Value>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<serde_json::Value>> for ListLabelsResponse {
fn from(value: Vec<serde_json::Value>) -> Self { Self { value } }
}
impl From<ListLabelsResponse> for Vec<serde_json::Value> {
fn from(wrapper: ListLabelsResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ListLockUnspentResponse {
pub value: Vec<ListLockUnspentElement>,
}
impl<'de> serde::Deserialize<'de> for ListLockUnspentResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<ListLockUnspentElement>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<ListLockUnspentElement>> for ListLockUnspentResponse {
fn from(value: Vec<ListLockUnspentElement>) -> Self { Self { value } }
}
impl From<ListLockUnspentResponse> for Vec<ListLockUnspentElement> {
fn from(wrapper: ListLockUnspentResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ListReceivedByAddressResponse {
pub value: Vec<ListReceivedByAddressElement>,
}
impl<'de> serde::Deserialize<'de> for ListReceivedByAddressResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<ListReceivedByAddressElement>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<ListReceivedByAddressElement>> for ListReceivedByAddressResponse {
fn from(value: Vec<ListReceivedByAddressElement>) -> Self { Self { value } }
}
impl From<ListReceivedByAddressResponse> for Vec<ListReceivedByAddressElement> {
fn from(wrapper: ListReceivedByAddressResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ListReceivedByLabelResponse {
pub value: Vec<ListReceivedByLabelElement>,
}
impl<'de> serde::Deserialize<'de> for ListReceivedByLabelResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<ListReceivedByLabelElement>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<ListReceivedByLabelElement>> for ListReceivedByLabelResponse {
fn from(value: Vec<ListReceivedByLabelElement>) -> Self { Self { value } }
}
impl From<ListReceivedByLabelResponse> for Vec<ListReceivedByLabelElement> {
fn from(wrapper: ListReceivedByLabelResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct ListSinceBlockResponse {
pub transactions: Vec<ListSinceBlockTransactions>,
pub removed: Option<Vec<String>>,
#[serde(rename = "lastblock")]
pub last_block: String,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ListTransactionsResponse {
pub value: Vec<ListTransactionsElement>,
}
impl<'de> serde::Deserialize<'de> for ListTransactionsResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<ListTransactionsElement>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<ListTransactionsElement>> for ListTransactionsResponse {
fn from(value: Vec<ListTransactionsElement>) -> Self { Self { value } }
}
impl From<ListTransactionsResponse> for Vec<ListTransactionsElement> {
fn from(wrapper: ListTransactionsResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ListUnspentResponse {
pub value: Vec<ListUnspentElement>,
}
impl<'de> serde::Deserialize<'de> for ListUnspentResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<ListUnspentElement>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<ListUnspentElement>> for ListUnspentResponse {
fn from(value: Vec<ListUnspentElement>) -> Self { Self { value } }
}
impl From<ListUnspentResponse> for Vec<ListUnspentElement> {
fn from(wrapper: ListUnspentResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct ListWalletDirResponse {
pub wallets: Vec<ListWalletDirWallets>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ListWalletsResponse {
pub value: Vec<serde_json::Value>,
}
impl<'de> serde::Deserialize<'de> for ListWalletsResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<serde_json::Value>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<serde_json::Value>> for ListWalletsResponse {
fn from(value: Vec<serde_json::Value>) -> Self { Self { value } }
}
impl From<ListWalletsResponse> for Vec<serde_json::Value> {
fn from(wrapper: ListWalletsResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct LoadTxOutSetResponse {
pub coins_loaded: u64,
pub tip_hash: String,
pub base_height: u64,
pub path: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct LoadWalletResponse {
pub name: String,
pub warnings: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct LockUnspentResponse {
pub value: bool,
}
impl<'de> serde::Deserialize<'de> for LockUnspentResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = LockUnspentResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(LockUnspentResponse { value: v != 0 })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(LockUnspentResponse { value: v != 0 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(LockUnspentResponse { value: v != 0.0 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<bool>().map_err(de::Error::custom)?;
Ok(LockUnspentResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(LockUnspentResponse { value: v })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(LockUnspentResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for LockUnspentResponse {
type Target = bool;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for LockUnspentResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<bool> for LockUnspentResponse {
fn as_ref(&self) -> &bool { &self.value }
}
impl From<bool> for LockUnspentResponse {
fn from(value: bool) -> Self { Self { value } }
}
impl From<LockUnspentResponse> for bool {
fn from(wrapper: LockUnspentResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct LoggingResponse {
#[serde(default)]
pub category: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct MigrateWalletResponse {
pub wallet_name: String,
pub watchonly_name: Option<String>,
pub solvables_name: Option<String>,
pub backup_path: String,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct MockSchedulerResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for MockSchedulerResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = MockSchedulerResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(MockSchedulerResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(MockSchedulerResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(MockSchedulerResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(MockSchedulerResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(MockSchedulerResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(MockSchedulerResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(MockSchedulerResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(MockSchedulerResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for MockSchedulerResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for MockSchedulerResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for MockSchedulerResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for MockSchedulerResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<MockSchedulerResponse> for () {
fn from(wrapper: MockSchedulerResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct PingResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for PingResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = PingResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PingResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PingResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PingResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PingResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PingResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PingResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PingResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(PingResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for PingResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for PingResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for PingResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for PingResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<PingResponse> for () {
fn from(wrapper: PingResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct PreciousBlockResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for PreciousBlockResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = PreciousBlockResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PreciousBlockResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PreciousBlockResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PreciousBlockResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PreciousBlockResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PreciousBlockResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PreciousBlockResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PreciousBlockResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(PreciousBlockResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for PreciousBlockResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for PreciousBlockResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for PreciousBlockResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for PreciousBlockResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<PreciousBlockResponse> for () {
fn from(wrapper: PreciousBlockResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct PrioritiseTransactionResponse {
pub value: bool,
}
impl<'de> serde::Deserialize<'de> for PrioritiseTransactionResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = PrioritiseTransactionResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PrioritiseTransactionResponse { value: v != 0 })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PrioritiseTransactionResponse { value: v != 0 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PrioritiseTransactionResponse { value: v != 0.0 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<bool>().map_err(de::Error::custom)?;
Ok(PrioritiseTransactionResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PrioritiseTransactionResponse { value: v })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(PrioritiseTransactionResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for PrioritiseTransactionResponse {
type Target = bool;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for PrioritiseTransactionResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<bool> for PrioritiseTransactionResponse {
fn as_ref(&self) -> &bool { &self.value }
}
impl From<bool> for PrioritiseTransactionResponse {
fn from(value: bool) -> Self { Self { value } }
}
impl From<PrioritiseTransactionResponse> for bool {
fn from(wrapper: PrioritiseTransactionResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct PruneBlockchainResponse {
pub value: u64,
}
impl<'de> serde::Deserialize<'de> for PruneBlockchainResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = PruneBlockchainResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PruneBlockchainResponse { value: v })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PruneBlockchainResponse { value: v as u64 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PruneBlockchainResponse { value: v as u64 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<u64>().map_err(de::Error::custom)?;
Ok(PruneBlockchainResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(PruneBlockchainResponse { value: v as u64 })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(PruneBlockchainResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for PruneBlockchainResponse {
type Target = u64;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for PruneBlockchainResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<u64> for PruneBlockchainResponse {
fn as_ref(&self) -> &u64 { &self.value }
}
impl From<u64> for PruneBlockchainResponse {
fn from(value: u64) -> Self { Self { value } }
}
impl From<PruneBlockchainResponse> for u64 {
fn from(wrapper: PruneBlockchainResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct PsbtBumpFeeResponse {
pub psbt: String,
#[serde(rename = "origfee")]
#[serde(deserialize_with = "amount_from_btc_float")]
pub orig_fee: bitcoin::Amount,
#[serde(deserialize_with = "amount_from_btc_float")]
pub fee: bitcoin::Amount,
pub errors: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ReconsiderBlockResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for ReconsiderBlockResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = ReconsiderBlockResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ReconsiderBlockResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ReconsiderBlockResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ReconsiderBlockResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ReconsiderBlockResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ReconsiderBlockResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ReconsiderBlockResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(ReconsiderBlockResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(ReconsiderBlockResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for ReconsiderBlockResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for ReconsiderBlockResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for ReconsiderBlockResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for ReconsiderBlockResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<ReconsiderBlockResponse> for () {
fn from(wrapper: ReconsiderBlockResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct RemovePrunedFundsResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for RemovePrunedFundsResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = RemovePrunedFundsResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(RemovePrunedFundsResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(RemovePrunedFundsResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(RemovePrunedFundsResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(RemovePrunedFundsResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(RemovePrunedFundsResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(RemovePrunedFundsResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(RemovePrunedFundsResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(RemovePrunedFundsResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for RemovePrunedFundsResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for RemovePrunedFundsResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for RemovePrunedFundsResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for RemovePrunedFundsResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<RemovePrunedFundsResponse> for () {
fn from(wrapper: RemovePrunedFundsResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct RescanBlockchainResponse {
pub start_height: u64,
pub stop_height: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct RestoreWalletResponse {
pub name: String,
pub warnings: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct SaveMempoolResponse {
pub filename: String,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct ScanBlocksResponse {
pub field_0_1: (),
pub from_height: u64,
pub to_height: u64,
pub relevant_blocks: Vec<String>,
pub completed: bool,
pub progress: u64,
pub current_height: u64,
pub success: bool,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct ScanTxOutSetResponse {
pub success: bool,
pub txouts: u64,
pub height: u64,
#[serde(rename = "bestblock")]
pub best_block: String,
pub unspents: Vec<ScanTxOutSetUnspents>,
#[serde(deserialize_with = "amount_from_btc_float")]
pub total_amount: bitcoin::Amount,
pub success_1: bool,
pub progress: u64,
pub field_3_1: (),
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct SendResponse {
pub complete: bool,
pub txid: Option<bitcoin::Txid>,
pub hex: Option<String>,
pub psbt: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct SendAllResponse {
pub complete: bool,
pub txid: Option<bitcoin::Txid>,
pub hex: Option<String>,
pub psbt: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SendManyResponse {
pub txid: Option<bitcoin::Txid>,
pub fee_reason: Option<String>,
}
impl<'de> serde::Deserialize<'de> for SendManyResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct ConditionalResponseVisitor;
#[allow(clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for ConditionalResponseVisitor {
type Value = SendManyResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string or object")
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let txid = bitcoin::Txid::from_str(v).map_err(de::Error::custom)?;
Ok(SendManyResponse { txid: Some(txid), fee_reason: None })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut txid = None;
let mut fee_reason = None;
while let Some(key) = map.next_key::<String>()? {
if key == "txid" {
if txid.is_some() {
return Err(de::Error::duplicate_field("txid"));
}
txid = Some(map.next_value::<bitcoin::Txid>()?);
}
if key == "fee_reason" {
if fee_reason.is_some() {
return Err(de::Error::duplicate_field("fee_reason"));
}
fee_reason = Some(map.next_value::<String>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
Ok(SendManyResponse { txid, fee_reason })
}
}
deserializer.deserialize_any(ConditionalResponseVisitor)
}
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct SendMsgToPeerResponse;
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SendRawTransactionResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for SendRawTransactionResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = SendRawTransactionResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SendRawTransactionResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SendRawTransactionResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SendRawTransactionResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SendRawTransactionResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SendRawTransactionResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(SendRawTransactionResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for SendRawTransactionResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for SendRawTransactionResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for SendRawTransactionResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for SendRawTransactionResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<SendRawTransactionResponse> for String {
fn from(wrapper: SendRawTransactionResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SendToAddressResponse {
pub txid: Option<bitcoin::Txid>,
pub fee_reason: Option<String>,
}
impl<'de> serde::Deserialize<'de> for SendToAddressResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct ConditionalResponseVisitor;
#[allow(clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for ConditionalResponseVisitor {
type Value = SendToAddressResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string or object")
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let txid = bitcoin::Txid::from_str(v).map_err(de::Error::custom)?;
Ok(SendToAddressResponse { txid: Some(txid), fee_reason: None })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut txid = None;
let mut fee_reason = None;
while let Some(key) = map.next_key::<String>()? {
if key == "txid" {
if txid.is_some() {
return Err(de::Error::duplicate_field("txid"));
}
txid = Some(map.next_value::<bitcoin::Txid>()?);
}
if key == "fee_reason" {
if fee_reason.is_some() {
return Err(de::Error::duplicate_field("fee_reason"));
}
fee_reason = Some(map.next_value::<String>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
Ok(SendToAddressResponse { txid, fee_reason })
}
}
deserializer.deserialize_any(ConditionalResponseVisitor)
}
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SetBanResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for SetBanResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = SetBanResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetBanResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetBanResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetBanResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetBanResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetBanResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetBanResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetBanResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(SetBanResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for SetBanResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for SetBanResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for SetBanResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for SetBanResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<SetBanResponse> for () {
fn from(wrapper: SetBanResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SetLabelResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for SetLabelResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = SetLabelResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetLabelResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetLabelResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetLabelResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetLabelResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetLabelResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetLabelResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetLabelResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(SetLabelResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for SetLabelResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for SetLabelResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for SetLabelResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for SetLabelResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<SetLabelResponse> for () {
fn from(wrapper: SetLabelResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SetMockTimeResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for SetMockTimeResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = SetMockTimeResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetMockTimeResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetMockTimeResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetMockTimeResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetMockTimeResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetMockTimeResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetMockTimeResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetMockTimeResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(SetMockTimeResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for SetMockTimeResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for SetMockTimeResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for SetMockTimeResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for SetMockTimeResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<SetMockTimeResponse> for () {
fn from(wrapper: SetMockTimeResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SetNetworkActiveResponse {
pub value: bool,
}
impl<'de> serde::Deserialize<'de> for SetNetworkActiveResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = SetNetworkActiveResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetNetworkActiveResponse { value: v != 0 })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetNetworkActiveResponse { value: v != 0 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetNetworkActiveResponse { value: v != 0.0 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<bool>().map_err(de::Error::custom)?;
Ok(SetNetworkActiveResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SetNetworkActiveResponse { value: v })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(SetNetworkActiveResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for SetNetworkActiveResponse {
type Target = bool;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for SetNetworkActiveResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<bool> for SetNetworkActiveResponse {
fn as_ref(&self) -> &bool { &self.value }
}
impl From<bool> for SetNetworkActiveResponse {
fn from(value: bool) -> Self { Self { value } }
}
impl From<SetNetworkActiveResponse> for bool {
fn from(wrapper: SetNetworkActiveResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct SetWalletFlagResponse {
pub flag_name: String,
pub flag_state: bool,
pub warnings: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SignMessageResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for SignMessageResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = SignMessageResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SignMessageResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SignMessageResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SignMessageResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SignMessageResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SignMessageResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(SignMessageResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for SignMessageResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for SignMessageResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for SignMessageResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for SignMessageResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<SignMessageResponse> for String {
fn from(wrapper: SignMessageResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SignMessageWithPrivKeyResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for SignMessageWithPrivKeyResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = SignMessageWithPrivKeyResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SignMessageWithPrivKeyResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SignMessageWithPrivKeyResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SignMessageWithPrivKeyResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SignMessageWithPrivKeyResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SignMessageWithPrivKeyResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(SignMessageWithPrivKeyResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for SignMessageWithPrivKeyResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for SignMessageWithPrivKeyResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for SignMessageWithPrivKeyResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for SignMessageWithPrivKeyResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<SignMessageWithPrivKeyResponse> for String {
fn from(wrapper: SignMessageWithPrivKeyResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct SignRawTransactionWithKeyResponse {
pub hex: String,
pub complete: bool,
pub errors: Option<Vec<SignRawTransactionWithKeyErrors>>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct SignRawTransactionWithWalletResponse {
pub hex: String,
pub complete: bool,
pub errors: Option<Vec<SignRawTransactionWithWalletErrors>>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct SimulateRawTransactionResponse {
#[serde(deserialize_with = "amount_from_btc_float")]
pub balance_change: bitcoin::Amount,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct StopResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for StopResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = StopResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(StopResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(StopResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(StopResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(StopResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(StopResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(StopResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for StopResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for StopResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for StopResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for StopResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<StopResponse> for String {
fn from(wrapper: StopResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct SubmitBlockResponse {
pub field_0_1: (),
pub field_1_1: String,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SubmitHeaderResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for SubmitHeaderResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = SubmitHeaderResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SubmitHeaderResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SubmitHeaderResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SubmitHeaderResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SubmitHeaderResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SubmitHeaderResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SubmitHeaderResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SubmitHeaderResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(SubmitHeaderResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for SubmitHeaderResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for SubmitHeaderResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for SubmitHeaderResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for SubmitHeaderResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<SubmitHeaderResponse> for () {
fn from(wrapper: SubmitHeaderResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct SubmitPackageResponse {
pub package_msg: String,
#[serde(rename = "tx-results")]
pub tx_results: SubmitPackageTxResults,
#[serde(rename = "replaced-transactions")]
pub replaced_transactions: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SyncWithValidationInterfaceQueueResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for SyncWithValidationInterfaceQueueResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = SyncWithValidationInterfaceQueueResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SyncWithValidationInterfaceQueueResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SyncWithValidationInterfaceQueueResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SyncWithValidationInterfaceQueueResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SyncWithValidationInterfaceQueueResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SyncWithValidationInterfaceQueueResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SyncWithValidationInterfaceQueueResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(SyncWithValidationInterfaceQueueResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(SyncWithValidationInterfaceQueueResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for SyncWithValidationInterfaceQueueResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for SyncWithValidationInterfaceQueueResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for SyncWithValidationInterfaceQueueResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for SyncWithValidationInterfaceQueueResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<SyncWithValidationInterfaceQueueResponse> for () {
fn from(wrapper: SyncWithValidationInterfaceQueueResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct TestMempoolAcceptResponse {
pub field: serde_json::Value,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct UnloadWalletResponse {
pub warnings: Option<Vec<String>>,
}
impl<'de> serde::Deserialize<'de> for UnloadWalletResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct ConditionalResponseVisitor;
#[allow(clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for ConditionalResponseVisitor {
type Value = UnloadWalletResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string or object")
}
fn visit_str<E>(self, _v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(UnloadWalletResponse { warnings: None })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut warnings = None;
while let Some(key) = map.next_key::<String>()? {
if key == "warnings" {
if warnings.is_some() {
return Err(de::Error::duplicate_field("warnings"));
}
warnings = Some(map.next_value::<Vec<String>>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
Ok(UnloadWalletResponse { warnings })
}
}
deserializer.deserialize_any(ConditionalResponseVisitor)
}
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct UptimeResponse {
pub value: u64,
}
impl<'de> serde::Deserialize<'de> for UptimeResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = UptimeResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(UptimeResponse { value: v })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(UptimeResponse { value: v as u64 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(UptimeResponse { value: v as u64 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<u64>().map_err(de::Error::custom)?;
Ok(UptimeResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(UptimeResponse { value: v as u64 })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(UptimeResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for UptimeResponse {
type Target = u64;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for UptimeResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<u64> for UptimeResponse {
fn as_ref(&self) -> &u64 { &self.value }
}
impl From<u64> for UptimeResponse {
fn from(value: u64) -> Self { Self { value } }
}
impl From<UptimeResponse> for u64 {
fn from(wrapper: UptimeResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct UtxoUpdatePsbtResponse {
pub value: String,
}
impl<'de> serde::Deserialize<'de> for UtxoUpdatePsbtResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = UtxoUpdatePsbtResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(UtxoUpdatePsbtResponse { value: v.to_string() })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(UtxoUpdatePsbtResponse { value: v.to_string() })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(UtxoUpdatePsbtResponse { value: v.to_string() })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(UtxoUpdatePsbtResponse { value: v.to_string() })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(UtxoUpdatePsbtResponse { value: v.to_string() })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(UtxoUpdatePsbtResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for UtxoUpdatePsbtResponse {
type Target = String;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for UtxoUpdatePsbtResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<String> for UtxoUpdatePsbtResponse {
fn as_ref(&self) -> &String { &self.value }
}
impl From<String> for UtxoUpdatePsbtResponse {
fn from(value: String) -> Self { Self { value } }
}
impl From<UtxoUpdatePsbtResponse> for String {
fn from(wrapper: UtxoUpdatePsbtResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct ValidateAddressResponse {
pub isvalid: bool,
pub address: Option<String>,
#[serde(rename = "scriptPubKey")]
pub script_pubkey: Option<bitcoin::ScriptBuf>,
#[serde(rename = "isscript")]
pub is_script: Option<bool>,
#[serde(rename = "iswitness")]
pub is_witness: Option<bool>,
pub witness_version: Option<u64>,
pub witness_program: Option<String>,
pub error: Option<String>,
pub error_locations: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct VerifyChainResponse {
pub value: bool,
}
impl<'de> serde::Deserialize<'de> for VerifyChainResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = VerifyChainResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(VerifyChainResponse { value: v != 0 })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(VerifyChainResponse { value: v != 0 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(VerifyChainResponse { value: v != 0.0 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<bool>().map_err(de::Error::custom)?;
Ok(VerifyChainResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(VerifyChainResponse { value: v })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(VerifyChainResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for VerifyChainResponse {
type Target = bool;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for VerifyChainResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<bool> for VerifyChainResponse {
fn as_ref(&self) -> &bool { &self.value }
}
impl From<bool> for VerifyChainResponse {
fn from(value: bool) -> Self { Self { value } }
}
impl From<VerifyChainResponse> for bool {
fn from(wrapper: VerifyChainResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct VerifyMessageResponse {
pub value: bool,
}
impl<'de> serde::Deserialize<'de> for VerifyMessageResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = VerifyMessageResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(VerifyMessageResponse { value: v != 0 })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(VerifyMessageResponse { value: v != 0 })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(VerifyMessageResponse { value: v != 0.0 })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
let value = v.parse::<bool>().map_err(de::Error::custom)?;
Ok(VerifyMessageResponse { value })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(VerifyMessageResponse { value: v })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
let value = value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(VerifyMessageResponse { value })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for VerifyMessageResponse {
type Target = bool;
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for VerifyMessageResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<bool> for VerifyMessageResponse {
fn as_ref(&self) -> &bool { &self.value }
}
impl From<bool> for VerifyMessageResponse {
fn from(value: bool) -> Self { Self { value } }
}
impl From<VerifyMessageResponse> for bool {
fn from(wrapper: VerifyMessageResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct VerifyTxOutProofResponse {
pub value: Vec<serde_json::Value>,
}
impl<'de> serde::Deserialize<'de> for VerifyTxOutProofResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Vec::<serde_json::Value>::deserialize(deserializer)?;
Ok(Self { value })
}
}
impl From<Vec<serde_json::Value>> for VerifyTxOutProofResponse {
fn from(value: Vec<serde_json::Value>) -> Self { Self { value } }
}
impl From<VerifyTxOutProofResponse> for Vec<serde_json::Value> {
fn from(wrapper: VerifyTxOutProofResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct WaitForBlockResponse {
pub hash: String,
pub height: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct WaitForBlockHeightResponse {
pub hash: String,
pub height: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct WaitForNewBlockResponse {
pub hash: String,
pub height: u64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct WalletCreateFundedPsbtResponse {
pub psbt: String,
#[serde(deserialize_with = "amount_from_btc_float")]
pub fee: bitcoin::Amount,
pub changepos: i64,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct WalletDisplayAddressResponse {
pub address: String,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct WalletLockResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for WalletLockResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = WalletLockResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletLockResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletLockResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletLockResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletLockResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletLockResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletLockResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletLockResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(WalletLockResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for WalletLockResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for WalletLockResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for WalletLockResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for WalletLockResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<WalletLockResponse> for () {
fn from(wrapper: WalletLockResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct WalletPassphraseResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for WalletPassphraseResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = WalletPassphraseResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(WalletPassphraseResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for WalletPassphraseResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for WalletPassphraseResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for WalletPassphraseResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for WalletPassphraseResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<WalletPassphraseResponse> for () {
fn from(wrapper: WalletPassphraseResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct WalletPassphraseChangeResponse {
pub value: (),
}
impl<'de> serde::Deserialize<'de> for WalletPassphraseChangeResponse {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct PrimitiveWrapperVisitor;
#[allow(unused_variables, clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for PrimitiveWrapperVisitor {
type Value = WalletPassphraseChangeResponse;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a primitive value or an object with 'value' field")
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseChangeResponse { value: () })
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseChangeResponse { value: () })
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseChangeResponse { value: () })
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseChangeResponse { value: () })
}
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseChangeResponse { value: () })
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseChangeResponse { value: () })
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(WalletPassphraseChangeResponse { value: () })
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
M: de::MapAccess<'de>,
{
let mut value = None;
while let Some(key) = map.next_key::<String>()? {
if key == "value" {
if value.is_some() {
return Err(de::Error::duplicate_field("value"));
}
value = Some(map.next_value::<()>()?);
} else {
let _ = map.next_value::<de::IgnoredAny>()?;
}
}
value.ok_or_else(|| de::Error::missing_field("value"))?;
Ok(WalletPassphraseChangeResponse { value: () })
}
}
deserializer.deserialize_any(PrimitiveWrapperVisitor)
}
}
impl std::ops::Deref for WalletPassphraseChangeResponse {
type Target = ();
fn deref(&self) -> &Self::Target { &self.value }
}
impl std::ops::DerefMut for WalletPassphraseChangeResponse {
fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value }
}
impl AsRef<()> for WalletPassphraseChangeResponse {
fn as_ref(&self) -> &() { &self.value }
}
impl From<()> for WalletPassphraseChangeResponse {
fn from(value: ()) -> Self { Self { value } }
}
impl From<WalletPassphraseChangeResponse> for () {
fn from(wrapper: WalletPassphraseChangeResponse) -> Self { wrapper.value }
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct WalletProcessPsbtResponse {
pub psbt: String,
pub complete: bool,
pub hex: Option<String>,
}
fn amount_from_btc_float<'de, D>(deserializer: D) -> Result<bitcoin::Amount, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct AmountVisitor;
impl Visitor<'_> for AmountVisitor {
type Value = bitcoin::Amount;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a number (float BTC or integer satoshis)")
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
bitcoin::Amount::from_btc(v)
.map_err(|e| E::custom(format!("Invalid BTC amount: {}", e)))
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(bitcoin::Amount::from_sat(v))
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
if v < 0 {
return Err(E::custom(format!("Amount cannot be negative: {}", v)));
}
Ok(bitcoin::Amount::from_sat(v as u64))
}
}
deserializer.deserialize_any(AmountVisitor)
}
fn option_amount_from_btc_float<'de, D>(
deserializer: D,
) -> Result<Option<bitcoin::Amount>, D::Error>
where
D: serde::Deserializer<'de>,
{
use std::fmt;
use serde::de::{self, Visitor};
struct OptionAmountVisitor;
#[allow(clippy::needless_lifetimes)]
impl<'de> Visitor<'de> for OptionAmountVisitor {
type Value = Option<bitcoin::Amount>;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("an optional number (float BTC or integer satoshis)")
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(None)
}
fn visit_some<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
where
D: serde::Deserializer<'de>,
{
amount_from_btc_float(deserializer).map(Some)
}
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where
E: de::Error,
{
bitcoin::Amount::from_btc(v)
.map_err(|e| E::custom(format!("Invalid BTC amount: {}", e)))
.map(Some)
}
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(Some(bitcoin::Amount::from_sat(v)))
}
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where
E: de::Error,
{
if v < 0 {
return Err(E::custom(format!("Amount cannot be negative: {}", v)));
}
Ok(Some(bitcoin::Amount::from_sat(v as u64)))
}
}
deserializer.deserialize_any(OptionAmountVisitor)
}