devimint/federation/
config.rs
1use bitcoincore_rpc::bitcoin::Network;
2use fedimint_core::config::{EmptyGenParams, ServerModuleConfigGenParamsRegistry};
3use fedimint_core::envs::{BitcoinRpcConfig, FM_USE_UNKNOWN_MODULE_ENV, is_env_var_set};
4use fedimint_ln_server::LightningInit;
5use fedimint_ln_server::common::config::{
6 LightningGenParams, LightningGenParamsConsensus, LightningGenParamsLocal,
7};
8use fedimint_meta_server::{MetaGenParams, MetaInit};
9use fedimint_mint_server::MintInit;
10use fedimint_mint_server::common::config::{MintGenParams, MintGenParamsConsensus};
11use fedimint_server::core::ServerModuleInit as _;
12use fedimint_unknown_server::UnknownInit;
13use fedimint_unknown_server::common::config::UnknownGenParams;
14use fedimint_wallet_client::config::{
15 WalletGenParams, WalletGenParamsConsensus, WalletGenParamsLocal,
16};
17use fedimint_wallet_server::WalletInit;
18use fedimintd::default_esplora_server;
19use fedimintd::envs::FM_DISABLE_META_MODULE_ENV;
20
21use crate::util::supports_lnv2;
22
23pub fn attach_default_module_init_params(
25 bitcoin_rpc: &BitcoinRpcConfig,
26 module_init_params: &mut ServerModuleConfigGenParamsRegistry,
27 network: Network,
28 finality_delay: u32,
29) {
30 module_init_params.attach_config_gen_params(
31 LightningInit::kind(),
32 LightningGenParams {
33 local: LightningGenParamsLocal {
34 bitcoin_rpc: bitcoin_rpc.clone(),
35 },
36 consensus: LightningGenParamsConsensus { network },
37 },
38 );
39
40 module_init_params.attach_config_gen_params(
41 MintInit::kind(),
42 MintGenParams {
43 local: EmptyGenParams::default(),
44 consensus: MintGenParamsConsensus::new(
45 2,
46 fedimint_mint_common::config::FeeConsensus::zero(),
47 ),
48 },
49 );
50
51 module_init_params.attach_config_gen_params(
52 WalletInit::kind(),
53 WalletGenParams {
54 local: WalletGenParamsLocal {
55 bitcoin_rpc: bitcoin_rpc.clone(),
56 },
57 consensus: WalletGenParamsConsensus {
58 network,
59 finality_delay,
60 client_default_bitcoin_rpc: default_esplora_server(network),
61 fee_consensus: fedimint_wallet_client::config::FeeConsensus::default(),
62 },
63 },
64 );
65
66 if supports_lnv2() {
67 module_init_params.attach_config_gen_params(
68 fedimint_lnv2_server::LightningInit::kind(),
69 fedimint_lnv2_common::config::LightningGenParams {
70 local: fedimint_lnv2_common::config::LightningGenParamsLocal {
71 bitcoin_rpc: bitcoin_rpc.clone(),
72 },
73 consensus: fedimint_lnv2_common::config::LightningGenParamsConsensus {
74 fee_consensus: fedimint_lnv2_common::config::FeeConsensus::new(1000)
75 .expect("Relative fee is within range"),
76 network,
77 },
78 },
79 );
80 }
81
82 if !is_env_var_set(FM_DISABLE_META_MODULE_ENV) {
83 module_init_params.attach_config_gen_params(MetaInit::kind(), MetaGenParams::default());
84 }
85
86 if is_env_var_set(FM_USE_UNKNOWN_MODULE_ENV) {
87 module_init_params
88 .attach_config_gen_params(UnknownInit::kind(), UnknownGenParams::default());
89 }
90}