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