@@ -337,6 +337,18 @@ impl<L2C: Layer2Cache> WalletCache<L2C> {
337
337
res
338
338
}
339
339
340
+ pub fn sync_from_scratch < I : Indexer , K , D : Descriptor < K > , L2 : Layer2 < Cache = L2C > > (
341
+ & mut self ,
342
+ descriptor : & WalletDescr < K , D , L2 :: Descr > ,
343
+ indexer : & I ,
344
+ ) -> MayError < ( ) , Vec < I :: Error > > {
345
+ let res = indexer. create :: < K , D , L2 > ( descriptor) ;
346
+ let ( ok, err) = res. split ( ) ;
347
+ * self = ok;
348
+ self . mark_dirty ( ) ;
349
+ MayError { ok : ( ) , err }
350
+ }
351
+
340
352
pub fn addresses_on ( & self , keychain : Keychain ) -> & BTreeSet < WalletAddr > {
341
353
self . addr . get ( & keychain) . unwrap_or_else ( || {
342
354
panic ! ( "keychain #{keychain} is not supported by the wallet descriptor" )
@@ -547,6 +559,10 @@ impl<K, D: Descriptor<K>, L2: Layer2> Wallet<K, D, L2> {
547
559
self . cache . update :: < I , K , D , L2 > ( & self . descr , indexer) . map ( |_| ( ) )
548
560
}
549
561
562
+ pub fn sync_from_scratch < I : Indexer > ( & mut self , indexer : & I ) -> MayError < ( ) , Vec < I :: Error > > {
563
+ self . cache . sync_from_scratch :: < I , K , D , L2 > ( & self . descr , indexer) . map ( |_| ( ) )
564
+ }
565
+
550
566
pub fn to_deriver ( & self ) -> D
551
567
where
552
568
D : Clone ,
0 commit comments