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
23/// Duplicate default fedimint module setup
24pub 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}