2424//! Note: Even fresh requests may be linkable via metadata (e.g. client IP, request timing),
2525//! but request reuse makes correlation trivial for the relay.
2626
27+ use std:: str:: FromStr ;
2728#[ cfg( not( target_arch = "wasm32" ) ) ]
2829use std:: time:: Duration ;
2930
@@ -32,6 +33,8 @@ use bitcoin::psbt::Psbt;
3233use bitcoin:: { Address , Amount , FeeRate , OutPoint , Script , TxOut , Txid } ;
3334pub ( crate ) use error:: InternalSessionError ;
3435pub use error:: SessionError ;
36+ use serde:: de:: Deserializer ;
37+ use serde:: { Deserialize , Serialize } ;
3538pub use session:: { replay_event_log, SessionEvent , SessionHistory , SessionOutcome , SessionStatus } ;
3639use url:: Url ;
3740#[ cfg( target_arch = "wasm32" ) ]
@@ -63,10 +66,9 @@ const SUPPORTED_VERSIONS: &[Version] = &[Version::One, Version::Two];
6366
6467static TWENTY_FOUR_HOURS_DEFAULT_EXPIRATION : Duration = Duration :: from_secs ( 60 * 60 * 24 ) ;
6568
66- #[ derive( Debug , Clone , PartialEq , Eq ) ]
67- #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
69+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize ) ]
6870pub struct SessionContext {
69- #[ cfg_attr ( feature = " serde" , serde ( deserialize_with = "deserialize_address_assume_checked" ) ) ]
71+ #[ serde( deserialize_with = "deserialize_address_assume_checked" ) ]
7072 address : Address ,
7173 directory : url:: Url ,
7274 ohttp_keys : OhttpKeys ,
@@ -108,14 +110,11 @@ impl SessionContext {
108110 }
109111}
110112
111- #[ cfg( feature = "serde" ) ]
112113fn deserialize_address_assume_checked < ' de , D > ( deserializer : D ) -> Result < Address , D :: Error >
113114where
114- D : serde :: de :: Deserializer < ' de > ,
115+ D : Deserializer < ' de > ,
115116{
116- use std:: str:: FromStr ;
117117
118- use serde:: Deserialize ;
119118 let s = String :: deserialize ( deserializer) ?;
120119 let address = Address :: from_str ( & s) . map_err ( serde:: de:: Error :: custom) ?;
121120 Ok ( address. assume_checked ( ) )
@@ -267,7 +266,7 @@ pub trait State: sealed::State {}
267266/// various functions to accomplish the goals of the typestate, and one or more functions which
268267/// will commit the changes/checks in the current typestate and move to the next one. For more
269268/// information on the typestate pattern, see [The Typestate Pattern in Rust](https://cliffle.com/blog/rust-typestate/).
270- #[ derive( Debug , Clone , PartialEq , Eq ) ]
269+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize ) ]
271270pub struct Receiver < State > {
272271 /// Data associated with the current state of the receiver.
273272 pub ( crate ) state : State ,
@@ -344,7 +343,7 @@ impl ReceiverBuilder {
344343 }
345344}
346345
347- #[ derive( Debug , Clone , PartialEq , Eq ) ]
346+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize ) ]
348347pub struct Initialized { }
349348
350349impl Receiver < Initialized > {
@@ -1216,7 +1215,7 @@ impl Receiver<HasReplyableError> {
12161215 }
12171216}
12181217
1219- #[ derive( Debug , Clone , PartialEq , Eq ) ]
1218+ #[ derive( Debug , Clone , PartialEq , Serialize , Deserialize ) ]
12201219pub struct Monitor {
12211220 psbt_context : PsbtContext ,
12221221}
0 commit comments