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_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}