@@ -22,7 +22,7 @@ use crate::prelude::*;
2222use crate :: util:: MsKeyBuilder ;
2323use crate :: {
2424 errstr, expression, script_num_size, AbsLockTime , Error , Miniscript , MiniscriptKey , Terminal ,
25- ToPublicKey , TranslateErr , TranslatePk , Translator ,
25+ ToPublicKey ,
2626} ;
2727
2828impl < Pk : MiniscriptKey , Ctx : ScriptContext > Terminal < Pk , Ctx > {
@@ -46,102 +46,7 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> Terminal<Pk, Ctx> {
4646 }
4747}
4848
49- impl < Pk , Q , Ctx > TranslatePk < Pk , Q > for Terminal < Pk , Ctx >
50- where
51- Pk : MiniscriptKey ,
52- Q : MiniscriptKey ,
53- Ctx : ScriptContext ,
54- {
55- type Output = Terminal < Q , Ctx > ;
56-
57- /// Converts an AST element with one public key type to one of another public key type.
58- fn translate_pk < T , E > ( & self , translate : & mut T ) -> Result < Self :: Output , TranslateErr < E > >
59- where
60- T : Translator < Pk , Q , E > ,
61- {
62- self . real_translate_pk ( translate)
63- }
64- }
65-
6649impl < Pk : MiniscriptKey , Ctx : ScriptContext > Terminal < Pk , Ctx > {
67- pub ( super ) fn real_translate_pk < Q , CtxQ , T , E > (
68- & self ,
69- t : & mut T ,
70- ) -> Result < Terminal < Q , CtxQ > , TranslateErr < E > >
71- where
72- Q : MiniscriptKey ,
73- CtxQ : ScriptContext ,
74- T : Translator < Pk , Q , E > ,
75- {
76- let frag: Terminal < Q , CtxQ > = match * self {
77- Terminal :: PkK ( ref p) => Terminal :: PkK ( t. pk ( p) ?) ,
78- Terminal :: PkH ( ref p) => Terminal :: PkH ( t. pk ( p) ?) ,
79- Terminal :: RawPkH ( ref p) => Terminal :: RawPkH ( * p) ,
80- Terminal :: After ( n) => Terminal :: After ( n) ,
81- Terminal :: Older ( n) => Terminal :: Older ( n) ,
82- Terminal :: Sha256 ( ref x) => Terminal :: Sha256 ( t. sha256 ( x) ?) ,
83- Terminal :: Hash256 ( ref x) => Terminal :: Hash256 ( t. hash256 ( x) ?) ,
84- Terminal :: Ripemd160 ( ref x) => Terminal :: Ripemd160 ( t. ripemd160 ( x) ?) ,
85- Terminal :: Hash160 ( ref x) => Terminal :: Hash160 ( t. hash160 ( x) ?) ,
86- Terminal :: True => Terminal :: True ,
87- Terminal :: False => Terminal :: False ,
88- Terminal :: Alt ( ref sub) => Terminal :: Alt ( Arc :: new ( sub. real_translate_pk ( t) ?) ) ,
89- Terminal :: Swap ( ref sub) => Terminal :: Swap ( Arc :: new ( sub. real_translate_pk ( t) ?) ) ,
90- Terminal :: Check ( ref sub) => Terminal :: Check ( Arc :: new ( sub. real_translate_pk ( t) ?) ) ,
91- Terminal :: DupIf ( ref sub) => Terminal :: DupIf ( Arc :: new ( sub. real_translate_pk ( t) ?) ) ,
92- Terminal :: Verify ( ref sub) => Terminal :: Verify ( Arc :: new ( sub. real_translate_pk ( t) ?) ) ,
93- Terminal :: NonZero ( ref sub) => Terminal :: NonZero ( Arc :: new ( sub. real_translate_pk ( t) ?) ) ,
94- Terminal :: ZeroNotEqual ( ref sub) => {
95- Terminal :: ZeroNotEqual ( Arc :: new ( sub. real_translate_pk ( t) ?) )
96- }
97- Terminal :: AndV ( ref left, ref right) => Terminal :: AndV (
98- Arc :: new ( left. real_translate_pk ( t) ?) ,
99- Arc :: new ( right. real_translate_pk ( t) ?) ,
100- ) ,
101- Terminal :: AndB ( ref left, ref right) => Terminal :: AndB (
102- Arc :: new ( left. real_translate_pk ( t) ?) ,
103- Arc :: new ( right. real_translate_pk ( t) ?) ,
104- ) ,
105- Terminal :: AndOr ( ref a, ref b, ref c) => Terminal :: AndOr (
106- Arc :: new ( a. real_translate_pk ( t) ?) ,
107- Arc :: new ( b. real_translate_pk ( t) ?) ,
108- Arc :: new ( c. real_translate_pk ( t) ?) ,
109- ) ,
110- Terminal :: OrB ( ref left, ref right) => Terminal :: OrB (
111- Arc :: new ( left. real_translate_pk ( t) ?) ,
112- Arc :: new ( right. real_translate_pk ( t) ?) ,
113- ) ,
114- Terminal :: OrD ( ref left, ref right) => Terminal :: OrD (
115- Arc :: new ( left. real_translate_pk ( t) ?) ,
116- Arc :: new ( right. real_translate_pk ( t) ?) ,
117- ) ,
118- Terminal :: OrC ( ref left, ref right) => Terminal :: OrC (
119- Arc :: new ( left. real_translate_pk ( t) ?) ,
120- Arc :: new ( right. real_translate_pk ( t) ?) ,
121- ) ,
122- Terminal :: OrI ( ref left, ref right) => Terminal :: OrI (
123- Arc :: new ( left. real_translate_pk ( t) ?) ,
124- Arc :: new ( right. real_translate_pk ( t) ?) ,
125- ) ,
126- Terminal :: Thresh ( k, ref subs) => {
127- let subs: Result < Vec < Arc < Miniscript < Q , _ > > > , _ > = subs
128- . iter ( )
129- . map ( |s| s. real_translate_pk ( t) . map ( Arc :: new) )
130- . collect ( ) ;
131- Terminal :: Thresh ( k, subs?)
132- }
133- Terminal :: Multi ( k, ref keys) => {
134- let keys: Result < Vec < Q > , _ > = keys. iter ( ) . map ( |k| t. pk ( k) ) . collect ( ) ;
135- Terminal :: Multi ( k, keys?)
136- }
137- Terminal :: MultiA ( k, ref keys) => {
138- let keys: Result < Vec < Q > , _ > = keys. iter ( ) . map ( |k| t. pk ( k) ) . collect ( ) ;
139- Terminal :: MultiA ( k, keys?)
140- }
141- } ;
142- Ok ( frag)
143- }
144-
14550 /// Substitutes raw public keys hashes with the public keys as provided by map.
14651 pub fn substitute_raw_pkh ( & self , pk_map : & BTreeMap < hash160:: Hash , Pk > ) -> Terminal < Pk , Ctx > {
14752 match self {
0 commit comments