fedimint_meta_common/
config.rs

1use fedimint_core::core::ModuleKind;
2use fedimint_core::encoding::{Decodable, Encodable};
3use fedimint_core::plugin_types_trait_impl_config;
4use serde::{Deserialize, Serialize};
5
6use crate::MetaCommonInit;
7
8/// Parameters necessary to generate this module's configuration
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct MetaGenParams {
11    pub local: MetaGenParamsLocal,
12    pub consensus: MetaGenParamsConsensus,
13}
14
15/// Local parameters for config generation
16#[derive(Debug, Clone, Serialize, Deserialize, Default)]
17pub struct MetaGenParamsLocal;
18
19/// Consensus parameters for config generation
20#[derive(Debug, Clone, Serialize, Deserialize)]
21pub struct MetaGenParamsConsensus;
22
23impl Default for MetaGenParams {
24    fn default() -> Self {
25        Self {
26            local: MetaGenParamsLocal,
27            consensus: MetaGenParamsConsensus,
28        }
29    }
30}
31
32/// Contains all the configuration for the server
33#[derive(Clone, Debug, Serialize, Deserialize)]
34pub struct MetaConfig {
35    pub private: MetaConfigPrivate,
36    pub consensus: MetaConfigConsensus,
37}
38
39/// Contains all the configuration for the client
40#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, Encodable, Decodable, Hash)]
41pub struct MetaClientConfig;
42
43/// Locally unencrypted config unique to each member
44#[derive(Clone, Debug, Serialize, Deserialize, Decodable, Encodable)]
45pub struct MetaConfigLocal;
46
47/// Will be the same for every federation member
48#[derive(Clone, Debug, Serialize, Deserialize, Decodable, Encodable)]
49pub struct MetaConfigConsensus;
50
51/// Will be encrypted and not shared such as private key material
52#[derive(Clone, Debug, Serialize, Deserialize)]
53pub struct MetaConfigPrivate;
54
55// Wire together the configs for this module
56plugin_types_trait_impl_config!(
57    MetaCommonInit,
58    MetaGenParams,
59    MetaGenParamsLocal,
60    MetaGenParamsConsensus,
61    MetaConfig,
62    MetaConfigPrivate,
63    MetaConfigConsensus,
64    MetaClientConfig
65);