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 ;
2827#[ cfg( not( target_arch = "wasm32" ) ) ]
2928use std:: time:: Duration ;
3029
@@ -33,8 +32,6 @@ use bitcoin::psbt::Psbt;
3332use bitcoin:: { Address , Amount , FeeRate , OutPoint , Script , TxOut , Txid } ;
3433pub ( crate ) use error:: InternalSessionError ;
3534pub use error:: SessionError ;
36- use serde:: de:: Deserializer ;
37- use serde:: { Deserialize , Serialize } ;
3835pub use session:: { replay_event_log, SessionEvent , SessionHistory , SessionOutcome , SessionStatus } ;
3936use url:: Url ;
4037#[ cfg( target_arch = "wasm32" ) ]
@@ -66,9 +63,10 @@ const SUPPORTED_VERSIONS: &[Version] = &[Version::One, Version::Two];
6663
6764static TWENTY_FOUR_HOURS_DEFAULT_EXPIRATION : Duration = Duration :: from_secs ( 60 * 60 * 24 ) ;
6865
69- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize ) ]
66+ #[ derive( Debug , Clone , PartialEq , Eq ) ]
67+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
7068pub struct SessionContext {
71- #[ serde( deserialize_with = "deserialize_address_assume_checked" ) ]
69+ #[ cfg_attr ( feature = " serde" , serde ( deserialize_with = "deserialize_address_assume_checked" ) ) ]
7270 address : Address ,
7371 directory : url:: Url ,
7472 ohttp_keys : OhttpKeys ,
@@ -110,10 +108,14 @@ impl SessionContext {
110108 }
111109}
112110
111+ #[ cfg( feature = "serde" ) ]
113112fn deserialize_address_assume_checked < ' de , D > ( deserializer : D ) -> Result < Address , D :: Error >
114113where
115- D : Deserializer < ' de > ,
114+ D : serde :: de :: Deserializer < ' de > ,
116115{
116+ use std:: str:: FromStr ;
117+
118+ use serde:: Deserialize ;
117119 let s = String :: deserialize ( deserializer) ?;
118120 let address = Address :: from_str ( & s) . map_err ( serde:: de:: Error :: custom) ?;
119121 Ok ( address. assume_checked ( ) )
@@ -265,7 +267,7 @@ pub trait State: sealed::State {}
265267/// various functions to accomplish the goals of the typestate, and one or more functions which
266268/// will commit the changes/checks in the current typestate and move to the next one. For more
267269/// information on the typestate pattern, see [The Typestate Pattern in Rust](https://cliffle.com/blog/rust-typestate/).
268- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize ) ]
270+ #[ derive( Debug , Clone , PartialEq , Eq ) ]
269271pub struct Receiver < State > {
270272 /// Data associated with the current state of the receiver.
271273 pub ( crate ) state : State ,
@@ -342,7 +344,7 @@ impl ReceiverBuilder {
342344 }
343345}
344346
345- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize ) ]
347+ #[ derive( Debug , Clone , PartialEq , Eq ) ]
346348pub struct Initialized { }
347349
348350impl Receiver < Initialized > {
@@ -1214,7 +1216,7 @@ impl Receiver<HasReplyableError> {
12141216 }
12151217}
12161218
1217- #[ derive( Debug , Clone , PartialEq , Serialize , Deserialize ) ]
1219+ #[ derive( Debug , Clone , PartialEq , Eq ) ]
12181220pub struct Monitor {
12191221 psbt_context : PsbtContext ,
12201222}
0 commit comments