Skip to main content

cdk_mintd/env_vars/
bdk.rs

1//! BDK environment variables
2
3use std::env;
4
5use crate::config::Bdk;
6
7pub const BDK_MNEMONIC_ENV_VAR: &str = "CDK_MINTD_BDK_MNEMONIC";
8pub const BDK_NETWORK_ENV_VAR: &str = "CDK_MINTD_BDK_NETWORK";
9pub const BDK_BITCOIND_RPC_HOST_ENV_VAR: &str = "CDK_MINTD_BDK_BITCOIND_RPC_HOST";
10pub const BDK_BITCOIND_RPC_PORT_ENV_VAR: &str = "CDK_MINTD_BDK_BITCOIND_RPC_PORT";
11pub const BDK_BITCOIND_RPC_USER_ENV_VAR: &str = "CDK_MINTD_BDK_BITCOIND_RPC_USER";
12pub const BDK_BITCOIND_RPC_PASSWORD_ENV_VAR: &str = "CDK_MINTD_BDK_BITCOIND_RPC_PASSWORD";
13pub const BDK_CHAIN_SOURCE_TYPE_ENV_VAR: &str = "CDK_MINTD_BDK_CHAIN_SOURCE_TYPE";
14pub const BDK_ESPLORA_URL_ENV_VAR: &str = "CDK_MINTD_BDK_ESPLORA_URL";
15pub const BDK_ESPLORA_PARALLEL_REQUESTS_ENV_VAR: &str = "CDK_MINTD_BDK_ESPLORA_PARALLEL_REQUESTS";
16pub const BDK_NUM_CONFS_ENV_VAR: &str = "CDK_MINTD_BDK_NUM_CONFS";
17pub const BDK_FEE_PERCENT_ENV_VAR: &str = "CDK_MINTD_BDK_FEE_PERCENT";
18pub const BDK_RESERVE_FEE_MIN_ENV_VAR: &str = "CDK_MINTD_BDK_RESERVE_FEE_MIN";
19pub const BDK_MIN_RECEIVE_AMOUNT_SAT_ENV_VAR: &str = "CDK_MINTD_BDK_MIN_RECEIVE_AMOUNT_SAT";
20pub const BDK_MIN_SEND_AMOUNT_SAT_ENV_VAR: &str = "CDK_MINTD_BDK_MIN_SEND_AMOUNT_SAT";
21pub const BDK_SYNC_INTERVAL_SECS_ENV_VAR: &str = "CDK_MINTD_BDK_SYNC_INTERVAL_SECS";
22pub const BDK_TARGET_BLOCK_TIME_SECS_ENV_VAR: &str = "CDK_MINTD_BDK_TARGET_BLOCK_TIME_SECS";
23pub const BDK_BATCH_POLL_INTERVAL_SECS_ENV_VAR: &str = "CDK_MINTD_BDK_BATCH_POLL_INTERVAL_SECS";
24pub const BDK_BATCH_MAX_BATCH_SIZE_ENV_VAR: &str = "CDK_MINTD_BDK_BATCH_MAX_BATCH_SIZE";
25pub const BDK_BATCH_STANDARD_DEADLINE_SECS_ENV_VAR: &str =
26    "CDK_MINTD_BDK_BATCH_STANDARD_DEADLINE_SECS";
27pub const BDK_BATCH_ECONOMY_DEADLINE_SECS_ENV_VAR: &str =
28    "CDK_MINTD_BDK_BATCH_ECONOMY_DEADLINE_SECS";
29pub const BDK_FEE_OPTIONS_ENV_VAR: &str = "CDK_MINTD_BDK_FEE_OPTIONS";
30pub const BDK_FEE_FALLBACK_SAT_PER_VB_ENV_VAR: &str = "CDK_MINTD_BDK_FEE_FALLBACK_SAT_PER_VB";
31pub const BDK_FEE_CACHE_TTL_SECS_ENV_VAR: &str = "CDK_MINTD_BDK_FEE_CACHE_TTL_SECS";
32pub const BDK_QUOTE_MAX_INPUT_COUNT_ENV_VAR: &str = "CDK_MINTD_BDK_QUOTE_MAX_INPUT_COUNT";
33pub const BDK_QUOTE_FIXED_SAFETY_SAT_ENV_VAR: &str = "CDK_MINTD_BDK_QUOTE_FIXED_SAFETY_SAT";
34pub const BDK_QUOTE_SAFETY_MULTIPLIER_ENV_VAR: &str = "CDK_MINTD_BDK_QUOTE_SAFETY_MULTIPLIER";
35
36impl Bdk {
37    pub fn from_env(mut self) -> Self {
38        if let Ok(mnemonic) = env::var(BDK_MNEMONIC_ENV_VAR) {
39            self.mnemonic = Some(mnemonic);
40        }
41
42        if let Ok(network) = env::var(BDK_NETWORK_ENV_VAR) {
43            self.network = Some(network);
44        }
45
46        if let Ok(bitcoind_rpc_host) = env::var(BDK_BITCOIND_RPC_HOST_ENV_VAR) {
47            self.bitcoind_rpc_host = Some(bitcoind_rpc_host);
48        }
49
50        if let Ok(bitcoind_rpc_port) = env::var(BDK_BITCOIND_RPC_PORT_ENV_VAR) {
51            if let Ok(bitcoind_rpc_port) = bitcoind_rpc_port.parse::<u16>() {
52                self.bitcoind_rpc_port = Some(bitcoind_rpc_port);
53            }
54        }
55
56        if let Ok(bitcoind_rpc_user) = env::var(BDK_BITCOIND_RPC_USER_ENV_VAR) {
57            self.bitcoind_rpc_user = Some(bitcoind_rpc_user);
58        }
59
60        if let Ok(bitcoind_rpc_password) = env::var(BDK_BITCOIND_RPC_PASSWORD_ENV_VAR) {
61            self.bitcoind_rpc_password = Some(bitcoind_rpc_password);
62        }
63
64        if let Ok(chain_source_type) = env::var(BDK_CHAIN_SOURCE_TYPE_ENV_VAR) {
65            self.chain_source_type = Some(chain_source_type);
66        }
67
68        if let Ok(esplora_url) = env::var(BDK_ESPLORA_URL_ENV_VAR) {
69            self.esplora_url = Some(esplora_url);
70        }
71
72        if let Ok(esplora_parallel_requests) = env::var(BDK_ESPLORA_PARALLEL_REQUESTS_ENV_VAR) {
73            if let Ok(esplora_parallel_requests) = esplora_parallel_requests.parse::<usize>() {
74                self.esplora_parallel_requests = esplora_parallel_requests;
75            }
76        }
77
78        if let Ok(num_confs) = env::var(BDK_NUM_CONFS_ENV_VAR) {
79            if let Ok(num_confs) = num_confs.parse::<u32>() {
80                self.num_confs = num_confs;
81            }
82        }
83
84        if let Ok(fee_percent) = env::var(BDK_FEE_PERCENT_ENV_VAR) {
85            if let Ok(fee_percent) = fee_percent.parse::<f32>() {
86                self.fee_percent = fee_percent;
87            }
88        }
89
90        if let Ok(reserve_fee_min) = env::var(BDK_RESERVE_FEE_MIN_ENV_VAR) {
91            if let Ok(reserve_fee_min) = reserve_fee_min.parse::<u64>() {
92                self.reserve_fee_min = reserve_fee_min.into();
93            }
94        }
95
96        if let Ok(min_receive_amount_sat) = env::var(BDK_MIN_RECEIVE_AMOUNT_SAT_ENV_VAR) {
97            if let Ok(min_receive_amount_sat) = min_receive_amount_sat.parse::<u64>() {
98                self.min_receive_amount_sat = min_receive_amount_sat;
99            }
100        }
101
102        if let Ok(min_send_amount_sat) = env::var(BDK_MIN_SEND_AMOUNT_SAT_ENV_VAR) {
103            if let Ok(min_send_amount_sat) = min_send_amount_sat.parse::<u64>() {
104                self.min_send_amount_sat = min_send_amount_sat;
105            }
106        }
107
108        if let Ok(sync_interval_secs) = env::var(BDK_SYNC_INTERVAL_SECS_ENV_VAR) {
109            if let Ok(sync_interval_secs) = sync_interval_secs.parse::<u64>() {
110                self.sync_interval_secs = sync_interval_secs;
111            }
112        }
113
114        if let Ok(target_block_time_secs) = env::var(BDK_TARGET_BLOCK_TIME_SECS_ENV_VAR) {
115            if let Ok(target_block_time_secs) = target_block_time_secs.parse::<u64>() {
116                self.batch_config.target_block_time_secs = target_block_time_secs;
117            }
118        }
119
120        if let Ok(poll_interval_secs) = env::var(BDK_BATCH_POLL_INTERVAL_SECS_ENV_VAR) {
121            if let Ok(poll_interval_secs) = poll_interval_secs.parse::<u64>() {
122                self.batch_config.poll_interval_secs = poll_interval_secs;
123            }
124        }
125
126        if let Ok(max_batch_size) = env::var(BDK_BATCH_MAX_BATCH_SIZE_ENV_VAR) {
127            if let Ok(max_batch_size) = max_batch_size.parse::<usize>() {
128                self.batch_config.max_batch_size = max_batch_size;
129            }
130        }
131
132        if let Ok(standard_deadline_secs) = env::var(BDK_BATCH_STANDARD_DEADLINE_SECS_ENV_VAR) {
133            if let Ok(standard_deadline_secs) = standard_deadline_secs.parse::<u64>() {
134                self.batch_config.standard_deadline_secs = Some(standard_deadline_secs);
135            }
136        }
137
138        if let Ok(economy_deadline_secs) = env::var(BDK_BATCH_ECONOMY_DEADLINE_SECS_ENV_VAR) {
139            if let Ok(economy_deadline_secs) = economy_deadline_secs.parse::<u64>() {
140                self.batch_config.economy_deadline_secs = Some(economy_deadline_secs);
141            }
142        }
143
144        if let Ok(fee_options) = env::var(BDK_FEE_OPTIONS_ENV_VAR) {
145            self.batch_config.fee_options = fee_options
146                .split(',')
147                .map(|tier| tier.trim().to_string())
148                .collect();
149        }
150
151        if let Ok(fallback_sat_per_vb) = env::var(BDK_FEE_FALLBACK_SAT_PER_VB_ENV_VAR) {
152            if let Ok(fallback_sat_per_vb) = fallback_sat_per_vb.parse::<f64>() {
153                self.batch_config.fee_fallback_sat_per_vb = fallback_sat_per_vb;
154            }
155        }
156
157        if let Ok(cache_ttl_secs) = env::var(BDK_FEE_CACHE_TTL_SECS_ENV_VAR) {
158            if let Ok(cache_ttl_secs) = cache_ttl_secs.parse::<u64>() {
159                self.batch_config.fee_cache_ttl_secs = cache_ttl_secs;
160            }
161        }
162
163        if let Ok(max_input_count) = env::var(BDK_QUOTE_MAX_INPUT_COUNT_ENV_VAR) {
164            if let Ok(max_input_count) = max_input_count.parse::<usize>() {
165                self.batch_config.quote_max_input_count = max_input_count;
166            }
167        }
168
169        if let Ok(fixed_safety_sat) = env::var(BDK_QUOTE_FIXED_SAFETY_SAT_ENV_VAR) {
170            if let Ok(fixed_safety_sat) = fixed_safety_sat.parse::<u64>() {
171                self.batch_config.quote_fixed_safety_sat = fixed_safety_sat;
172            }
173        }
174
175        if let Ok(safety_multiplier) = env::var(BDK_QUOTE_SAFETY_MULTIPLIER_ENV_VAR) {
176            if let Ok(safety_multiplier) = safety_multiplier.parse::<f64>() {
177                self.batch_config.quote_safety_multiplier = safety_multiplier;
178            }
179        }
180
181        self
182    }
183}