@@ -36,6 +36,60 @@ use crate::sign::{EntropySource, NodeSigner};
36
36
use crate :: sync:: Mutex ;
37
37
use crate :: util:: logger:: { Logger , WithContext } ;
38
38
39
+ /// A trivial trait which describes any [`OffersMessageFlow`].
40
+ ///
41
+ /// This is not exported to bindings users as general cover traits aren't useful in other
42
+ /// languages.
43
+ pub trait AnOffersMessageFlow {
44
+ /// A type implementing [`EntropySource`].
45
+ type EntropySource : EntropySource + ?Sized ;
46
+ /// A type that may be dereferenced to [`Self::EntropySource`].
47
+ type ES : Deref < Target = Self :: EntropySource > ;
48
+
49
+ /// A type implementing [`OffersMessageCommons`].
50
+ type OffersMessageCommons : OffersMessageCommons + ?Sized ;
51
+ /// A type that may be dereferenced to [`Self::OffersMessageCommons`].
52
+ type OMC : Deref < Target = Self :: OffersMessageCommons > ;
53
+
54
+ /// A type implementing [`NodeSigner`].
55
+ type NodeSigner : NodeSigner + ?Sized ;
56
+ /// A type that may be dereferenced to [`Self::NodeSigner`].
57
+ type NS : Deref < Target = Self :: NodeSigner > ;
58
+
59
+ /// A type implementing [`Logger`].
60
+ type Logger : Logger + ?Sized ;
61
+ /// A type that may be dereferenced to [`Self::Logger`].
62
+ type L : Deref < Target = Self :: Logger > ;
63
+
64
+ /// Returns a reference to the actual [`OffersMessageFlow`] object.
65
+ fn get_omf ( & self ) -> & OffersMessageFlow < Self :: ES , Self :: OMC , Self :: NS , Self :: L > ;
66
+ }
67
+
68
+ impl < ES : Deref , OMC : Deref , NS : Deref , L : Deref > AnOffersMessageFlow
69
+ for OffersMessageFlow < ES , OMC , NS , L >
70
+ where
71
+ ES :: Target : EntropySource ,
72
+ OMC :: Target : OffersMessageCommons ,
73
+ NS :: Target : NodeSigner ,
74
+ L :: Target : Logger ,
75
+ {
76
+ type EntropySource = ES :: Target ;
77
+ type ES = ES ;
78
+
79
+ type OffersMessageCommons = OMC :: Target ;
80
+ type OMC = OMC ;
81
+
82
+ type NodeSigner = NS :: Target ;
83
+ type NS = NS ;
84
+
85
+ type Logger = L :: Target ;
86
+ type L = L ;
87
+
88
+ fn get_omf ( & self ) -> & OffersMessageFlow < ES , OMC , NS , L > {
89
+ self
90
+ }
91
+ }
92
+
39
93
/// TODO
40
94
pub struct OffersMessageFlow < ES : Deref , OMC : Deref , NS : Deref , L : Deref >
41
95
where
0 commit comments