1use serde::Serialize;
2use serde_json::Value;
3use std::collections::HashMap;
4
5#[derive(Serialize)]
6#[serde(rename_all = "kebab-case")]
7pub enum DaemonIpfsConfigMode {
8 Bundled,
9 Remote,
10}
11
12#[derive(Serialize)]
13#[serde(rename_all = "kebab-case")]
14pub struct DaemonIpfsConfig {
15 #[serde(default, skip_serializing_if = "Option::is_none")]
16 pub mode: Option<DaemonIpfsConfigMode>,
17 #[serde(default, skip_serializing_if = "Option::is_none")]
18 pub host: Option<String>,
19 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub pinning_endpoints: Option<Vec<String>>,
21}
22
23#[derive(Serialize)]
24#[serde(rename_all = "kebab-case")]
25pub enum DaemonStateStoreMode {
26 S3,
27 File,
28}
29
30#[derive(Serialize)]
31#[serde(rename_all = "kebab-case")]
32pub struct DaemonStateStoreConfig {
33 #[serde(default, skip_serializing_if = "Option::is_none")]
34 pub mode: Option<DaemonStateStoreMode>,
35 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub local_directory: Option<String>,
37 #[serde(default, skip_serializing_if = "Option::is_none")]
38 pub s3_bucket: Option<String>,
39 #[serde(default, skip_serializing_if = "Option::is_none")]
40 pub s3_endpoint: Option<String>,
41}
42
43#[derive(Serialize)]
44#[serde(rename_all = "kebab-case")]
45pub struct DaemonHttpApiConfig {
46 #[serde(default, skip_serializing_if = "Option::is_none")]
47 pub hostname: Option<String>,
48 #[serde(default, skip_serializing_if = "Option::is_none")]
49 pub port: Option<u16>,
50 #[serde(default, skip_serializing_if = "Option::is_none")]
51 pub cors_allowed_origins: Option<Vec<String>>,
52 #[serde(default, skip_serializing_if = "Option::is_none")]
53 pub admin_dids: Option<Vec<String>>,
54}
55
56#[derive(Serialize)]
57#[serde(rename_all = "kebab-case")]
58pub struct DaemonNetworkConfig {
59 #[serde(default, skip_serializing_if = "Option::is_none")]
60 pub name: Option<String>,
61 #[serde(default, skip_serializing_if = "Option::is_none")]
62 pub pubsub_topic: Option<String>,
63}
64
65#[derive(Serialize)]
66#[serde(rename_all = "kebab-case")]
67pub struct DaemonAnchorConfig {
68 #[serde(default, skip_serializing_if = "Option::is_none")]
69 pub anchor_service_url: Option<String>,
70 #[serde(default, skip_serializing_if = "Option::is_none")]
71 pub auth_method: Option<String>,
72 #[serde(default, skip_serializing_if = "Option::is_none")]
73 pub ethereum_rpc_url: Option<String>,
74}
75
76#[derive(Serialize)]
77#[serde(rename_all = "kebab-case")]
78pub struct DaemonIndexingConfig {
79 #[serde(default, skip_serializing_if = "Option::is_none")]
80 pub db: Option<String>,
81 #[serde(default, skip_serializing_if = "Option::is_none")]
82 pub allow_queries_before_historical_sync: Option<bool>,
83 #[serde(default, skip_serializing_if = "Option::is_none")]
84 pub enable_historical_sync: Option<bool>,
85}
86
87#[derive(Serialize)]
88#[serde(rename_all = "kebab-case")]
89pub struct DaemonResolversConfig {
90 #[serde(default, skip_serializing_if = "Option::is_none")]
91 pub ethr_did_resolver: Option<HashMap<String, Value>>,
92}
93
94#[derive(Serialize)]
95#[serde(rename_all = "kebab-case")]
96pub struct DaemonNodeConfig {
97 #[serde(default, skip_serializing_if = "Option::is_none")]
98 pub gateway: Option<bool>,
99 #[serde(default, skip_serializing_if = "Option::is_none")]
100 pub sync_override: Option<String>,
101 #[serde(default, skip_serializing_if = "Option::is_none")]
102 pub stream_cache_limit: Option<usize>,
103 #[serde(default, skip_serializing_if = "Option::is_none")]
104 pub private_seed_url: Option<String>,
105}
106
107#[derive(Serialize)]
108#[serde(rename_all = "kebab-case")]
109pub struct DaemonLoggerConfig {
110 #[serde(default, skip_serializing_if = "Option::is_none")]
111 pub log_directory: Option<String>,
112 #[serde(default, skip_serializing_if = "Option::is_none")]
113 pub log_level: Option<u16>,
114 #[serde(default, skip_serializing_if = "Option::is_none")]
115 pub log_to_files: Option<bool>,
116}
117
118#[derive(Serialize)]
119#[serde(rename_all = "kebab-case")]
120pub struct DaemonMetricsConfig {
121 pub metrics_exporter_enabled: bool,
122 #[serde(default, skip_serializing_if = "Option::is_none")]
123 pub collector_host: Option<String>,
124}
125
126#[derive(Serialize)]
128#[serde(rename_all = "kebab-case")]
129pub struct DaemonConfig {
130 #[serde(default, skip_serializing_if = "Option::is_none")]
131 pub anchor: Option<DaemonAnchorConfig>,
132 #[serde(default, skip_serializing_if = "Option::is_none")]
133 pub http_api: Option<DaemonHttpApiConfig>,
134 #[serde(default, skip_serializing_if = "Option::is_none")]
135 pub ipfs: Option<DaemonIpfsConfig>,
136 #[serde(default, skip_serializing_if = "Option::is_none")]
137 pub logger: Option<DaemonLoggerConfig>,
138 #[serde(default, skip_serializing_if = "Option::is_none")]
139 pub metrics: Option<DaemonMetricsConfig>,
140 #[serde(default, skip_serializing_if = "Option::is_none")]
141 pub network: Option<DaemonNetworkConfig>,
142 #[serde(default, skip_serializing_if = "Option::is_none")]
143 pub node: Option<DaemonNodeConfig>,
144 #[serde(default, skip_serializing_if = "Option::is_none")]
145 pub state_store: Option<DaemonStateStoreConfig>,
146 #[serde(default, skip_serializing_if = "Option::is_none")]
147 pub did_resolvers: Option<DaemonResolversConfig>,
148 #[serde(default, skip_serializing_if = "Option::is_none")]
149 pub indexing: Option<DaemonIndexingConfig>,
150}