@@ -2,6 +2,7 @@ use crate::bitcoin::{
22 Address , Amount , BlockHash , DescriptorId , HashableOutPoint , OutPoint , Script , Transaction ,
33 TxOut , Txid ,
44} ;
5+ use crate :: descriptor:: Descriptor ;
56use crate :: error:: { CreateTxError , RequestBuilderError } ;
67
78use bdk_core:: bitcoin:: absolute:: LockTime as BdkLockTime ;
@@ -902,3 +903,69 @@ impl From<TxGraphChangeSet> for bdk_wallet::chain::tx_graph::ChangeSet<BdkConfir
902903 }
903904 }
904905}
906+
907+ #[ derive( Debug , Clone , uniffi:: Record ) ]
908+ pub struct ChangeSet {
909+ pub descriptor : Option < Arc < Descriptor > > ,
910+ pub change_descriptor : Option < Arc < Descriptor > > ,
911+ pub network : Option < bdk_wallet:: bitcoin:: Network > ,
912+ pub local_chain : LocalChainChangeSet ,
913+ pub tx_graph : TxGraphChangeSet ,
914+ pub indexer : IndexerChangeSet ,
915+ }
916+
917+ impl From < ChangeSet > for bdk_wallet:: ChangeSet {
918+ fn from ( value : ChangeSet ) -> Self {
919+ let descriptor = value. descriptor . map ( |d| {
920+ let str_repr = d. to_string ( ) ;
921+ str_repr. parse :: < bdk_wallet:: miniscript:: Descriptor < bdk_wallet:: miniscript:: DescriptorPublicKey > > ( ) . unwrap ( )
922+ } ) ;
923+ let change_descriptor = value. change_descriptor . map ( |d| {
924+ let str_repr = d. to_string ( ) ;
925+ str_repr. parse :: < bdk_wallet:: miniscript:: Descriptor < bdk_wallet:: miniscript:: DescriptorPublicKey > > ( ) . unwrap ( )
926+ } ) ;
927+ let network = value. network ;
928+ let local_chain = value. local_chain . into ( ) ;
929+ let tx_graph = value. tx_graph . into ( ) ;
930+ let indexer = value. indexer . into ( ) ;
931+ Self {
932+ descriptor,
933+ change_descriptor,
934+ network,
935+ local_chain,
936+ tx_graph,
937+ indexer,
938+ }
939+ }
940+ }
941+
942+ impl From < bdk_wallet:: ChangeSet > for ChangeSet {
943+ fn from ( value : bdk_wallet:: ChangeSet ) -> Self {
944+ let descriptor = value. descriptor . map ( |d| {
945+ Arc :: new ( Descriptor {
946+ extended_descriptor : d,
947+ key_map : BTreeMap :: new ( ) ,
948+ } )
949+ } ) ;
950+ let change_descriptor = value
951+ . change_descriptor
952+ . map ( |d| {
953+ Arc :: new ( Descriptor {
954+ extended_descriptor : d,
955+ key_map : BTreeMap :: new ( ) ,
956+ } )
957+ } ) ;
958+ let network = value. network ;
959+ let local_chain = value. local_chain . into ( ) ;
960+ let tx_graph = value. tx_graph . into ( ) ;
961+ let indexer = value. indexer . into ( ) ;
962+ Self {
963+ descriptor,
964+ change_descriptor,
965+ network,
966+ local_chain,
967+ tx_graph,
968+ indexer,
969+ }
970+ }
971+ }
0 commit comments