@@ -62,9 +62,22 @@ pub struct TlsConfig {
6262
6363#[ derive( Debug , PartialEq , Eq ) ]
6464pub enum ChainSource {
65- Rpc { rpc_host : String , rpc_port : u16 , rpc_user : String , rpc_password : String } ,
66- Electrum { server_url : String } ,
67- Esplora { server_url : String } ,
65+ Rpc {
66+ rpc_host : String ,
67+ rpc_port : u16 ,
68+ rpc_user : String ,
69+ rpc_password : String ,
70+ } ,
71+ Electrum {
72+ server_url : String ,
73+ onchain_wallet_sync_interval_secs : Option < u64 > ,
74+ lightning_wallet_sync_interval_secs : Option < u64 > ,
75+ } ,
76+ Esplora {
77+ server_url : String ,
78+ onchain_wallet_sync_interval_secs : Option < u64 > ,
79+ lightning_wallet_sync_interval_secs : Option < u64 > ,
80+ } ,
6881}
6982
7083/// A builder for `Config`.
@@ -79,6 +92,8 @@ struct ConfigBuilder {
7992 storage_dir_path : Option < String > ,
8093 electrum_url : Option < String > ,
8194 esplora_url : Option < String > ,
95+ onchain_wallet_sync_interval_secs : Option < u64 > ,
96+ lightning_wallet_sync_interval_secs : Option < u64 > ,
8297 bitcoind_rpc_address : Option < String > ,
8398 bitcoind_rpc_user : Option < String > ,
8499 bitcoind_rpc_password : Option < String > ,
@@ -116,10 +131,22 @@ impl ConfigBuilder {
116131
117132 if let Some ( electrum) = toml. electrum {
118133 self . electrum_url = Some ( electrum. server_url ) ;
134+ self . onchain_wallet_sync_interval_secs = electrum
135+ . onchain_wallet_sync_interval_secs
136+ . or ( self . onchain_wallet_sync_interval_secs ) ;
137+ self . lightning_wallet_sync_interval_secs = electrum
138+ . lightning_wallet_sync_interval_secs
139+ . or ( self . lightning_wallet_sync_interval_secs ) ;
119140 }
120141
121142 if let Some ( esplora) = toml. esplora {
122143 self . esplora_url = Some ( esplora. server_url ) ;
144+ self . onchain_wallet_sync_interval_secs = esplora
145+ . onchain_wallet_sync_interval_secs
146+ . or ( self . onchain_wallet_sync_interval_secs ) ;
147+ self . lightning_wallet_sync_interval_secs = esplora
148+ . lightning_wallet_sync_interval_secs
149+ . or ( self . lightning_wallet_sync_interval_secs ) ;
123150 }
124151
125152 if let Some ( log) = toml. log {
@@ -269,9 +296,17 @@ impl ConfigBuilder {
269296
270297 ChainSource :: Rpc { rpc_host, rpc_port, rpc_user, rpc_password }
271298 } else if let Some ( url) = self . electrum_url {
272- ChainSource :: Electrum { server_url : url }
299+ ChainSource :: Electrum {
300+ server_url : url,
301+ onchain_wallet_sync_interval_secs : self . onchain_wallet_sync_interval_secs ,
302+ lightning_wallet_sync_interval_secs : self . lightning_wallet_sync_interval_secs ,
303+ }
273304 } else if let Some ( url) = self . esplora_url {
274- ChainSource :: Esplora { server_url : url }
305+ ChainSource :: Esplora {
306+ server_url : url,
307+ onchain_wallet_sync_interval_secs : self . onchain_wallet_sync_interval_secs ,
308+ lightning_wallet_sync_interval_secs : self . lightning_wallet_sync_interval_secs ,
309+ }
275310 } else {
276311 return Err ( io:: Error :: new ( io:: ErrorKind :: InvalidInput , "No valid Chain Source configured. Provide Bitcoind RPC, Electrum, or Esplora details." ) ) ;
277312 } ;
@@ -391,11 +426,15 @@ struct BitcoindConfig {
391426#[ derive( Deserialize , Serialize ) ]
392427struct ElectrumConfig {
393428 server_url : String ,
429+ onchain_wallet_sync_interval_secs : Option < u64 > ,
430+ lightning_wallet_sync_interval_secs : Option < u64 > ,
394431}
395432
396433#[ derive( Deserialize , Serialize ) ]
397434struct EsploraConfig {
398435 server_url : String ,
436+ onchain_wallet_sync_interval_secs : Option < u64 > ,
437+ lightning_wallet_sync_interval_secs : Option < u64 > ,
399438}
400439
401440#[ derive( Deserialize , Serialize ) ]
@@ -805,7 +844,7 @@ mod tests {
805844 fs:: write ( storage_path. join ( config_file_name) , toml_config) . unwrap ( ) ;
806845 let config = load_config ( & args_config) . unwrap ( ) ;
807846
808- let ChainSource :: Electrum { server_url } = config. chain_source else {
847+ let ChainSource :: Electrum { server_url, .. } = config. chain_source else {
809848 panic ! ( "unexpected chain source" ) ;
810849 } ;
811850
0 commit comments