@@ -1731,6 +1731,111 @@ pub struct DecodeRawTransactionResult {
1731
1731
pub vout : Vec < GetRawTransactionResultVout > ,
1732
1732
}
1733
1733
1734
+ #[ derive( Clone , PartialEq , Eq , Debug , Deserialize , Serialize ) ]
1735
+ pub struct DecodePsbtResultTransaction {
1736
+ pub txid : bitcoin:: Txid ,
1737
+ pub hash : bitcoin:: Wtxid ,
1738
+ pub version : u32 ,
1739
+ pub size : u32 ,
1740
+ pub vsize : u32 ,
1741
+ pub weight : u32 ,
1742
+ pub locktime : u32 ,
1743
+ pub vin : Vec < GetRawTransactionResultVin > ,
1744
+ pub vout : Vec < GetRawTransactionResultVout > ,
1745
+ }
1746
+
1747
+ #[ derive( Clone , PartialEq , Eq , Debug , Deserialize , Serialize ) ]
1748
+ #[ serde( rename_all = "camelCase" ) ]
1749
+ pub struct DecodePsbtResultInputWitnessUtxo {
1750
+ #[ serde( with = "bitcoin::util::amount::serde::as_btc" ) ]
1751
+ pub amount : Amount ,
1752
+ pub script_pub_key : GetRawTransactionResultVoutScriptPubKey ,
1753
+ }
1754
+
1755
+ #[ derive( Clone , PartialEq , Eq , Debug , Deserialize , Serialize ) ]
1756
+ pub struct DecodePsbtResultScript {
1757
+ pub asm : String ,
1758
+ #[ serde( with = "crate::serde_hex" ) ]
1759
+ pub hex : Vec < u8 > ,
1760
+ #[ serde( rename = "type" ) ]
1761
+ pub type_ : String ,
1762
+ }
1763
+
1764
+ #[ derive( Clone , PartialEq , Eq , Debug , Deserialize , Serialize ) ]
1765
+ pub struct DecodePsbtResultBip32Derivs {
1766
+ pub master_fingerprint : String ,
1767
+ pub path : String ,
1768
+ pub pubkey : String ,
1769
+ }
1770
+
1771
+ #[ derive( Clone , PartialEq , Eq , Debug , Deserialize , Serialize ) ]
1772
+ pub struct DecodePsbtResultInput {
1773
+ pub non_witness_utxo : Option < DecodePsbtResultTransaction > ,
1774
+ pub witness_utxo : Option < DecodePsbtResultInputWitnessUtxo > ,
1775
+ pub partial_signatures : Option < HashMap < String , String > > ,
1776
+ pub sighash : Option < String > ,
1777
+ pub redeem_script : Option < DecodePsbtResultScript > ,
1778
+ pub witness_script : Option < DecodePsbtResultScript > ,
1779
+ pub bip32_derivs : Option < Vec < DecodePsbtResultBip32Derivs > > ,
1780
+ pub final_scriptsig : Option < GetRawTransactionResultVinScriptSig > ,
1781
+ pub final_scriptwitness : Option < Vec < String > > ,
1782
+ pub ripemd160_preimages : Option < HashMap < String , String > > ,
1783
+ pub sha256_preimages : Option < HashMap < String , String > > ,
1784
+ pub hash160_preimages : Option < HashMap < String , String > > ,
1785
+ pub hash256_preimages : Option < HashMap < String , String > > ,
1786
+ pub unknown : Option < HashMap < String , Vec < u8 > > > ,
1787
+ #[ serde( default ) ]
1788
+ pub proprietary : Vec < DecodePsbtResultProprietary > ,
1789
+ }
1790
+
1791
+ #[ derive( Clone , PartialEq , Eq , Debug , Deserialize , Serialize ) ]
1792
+ pub struct DecodePsbtResultOutput {
1793
+ pub redeem_script : Option < DecodePsbtResultScript > ,
1794
+ pub witness_script : Option < DecodePsbtResultScript > ,
1795
+ pub bip32_derivs : Option < Vec < DecodePsbtResultBip32Derivs > > ,
1796
+ pub unknown : Option < HashMap < String , Vec < u8 > > > ,
1797
+ #[ serde( default ) ]
1798
+ pub proprietary : Vec < DecodePsbtResultProprietary > ,
1799
+ }
1800
+
1801
+ #[ derive( Clone , PartialEq , Eq , Debug , Deserialize , Serialize ) ]
1802
+ pub struct DecodePsbtResultGlobalXpubs {
1803
+ pub xpub : String ,
1804
+ #[ serde( with = "crate::serde_hex" ) ]
1805
+ pub master_fingerprint : Vec < u8 > ,
1806
+ pub path : String ,
1807
+ }
1808
+
1809
+ #[ derive( Clone , PartialEq , Eq , Debug , Default , Deserialize , Serialize ) ]
1810
+ pub struct DecodePsbtResultProprietary {
1811
+ #[ serde( with = "crate::serde_hex" ) ]
1812
+ pub identifier : Vec < u8 > ,
1813
+ subtype : u32 ,
1814
+ #[ serde( with = "crate::serde_hex" ) ]
1815
+ key : Vec < u8 > ,
1816
+ #[ serde( with = "crate::serde_hex" ) ]
1817
+ value : Vec < u8 > ,
1818
+ }
1819
+
1820
+ /// Models the result of "decodepsbt"
1821
+ #[ derive( Clone , PartialEq , Eq , Debug , Deserialize , Serialize ) ]
1822
+ pub struct DecodePsbtResult {
1823
+ pub tx : DecodePsbtResultTransaction ,
1824
+ #[ serde( default ) ]
1825
+ pub global_xpubs : Vec < DecodePsbtResultGlobalXpubs > ,
1826
+ pub psbt_version : u32 ,
1827
+ pub proprietary : Vec < DecodePsbtResultProprietary > ,
1828
+ pub unknown : HashMap < String , String > ,
1829
+ pub inputs : Vec < DecodePsbtResultInput > ,
1830
+ pub outputs : Vec < DecodePsbtResultOutput > ,
1831
+ #[ serde(
1832
+ default ,
1833
+ with = "bitcoin::util::amount::serde::as_btc::opt" ,
1834
+ skip_serializing_if = "Option::is_none"
1835
+ ) ]
1836
+ pub fee : Option < Amount > ,
1837
+ }
1838
+
1734
1839
/// Models the result of "getchaintips"
1735
1840
pub type GetChainTipsResult = Vec < GetChainTipsResultTip > ;
1736
1841
0 commit comments