bitceptron_retriever/explorer/
explorer_setting.rs

1use getset::Getters;
2use serde::{Deserialize, Serialize};
3use zeroize::{Zeroize, ZeroizeOnDrop};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Getters)]
6#[get = "pub with_prefix"]
7pub struct ExplorerSetting {
8    mnemonic: String,
9    passphrase: String,
10    base_derivation_paths: Vec<String>,
11    exploration_path: String,
12    exploration_depth: u32,
13    network: bitcoin::Network,
14    sweep: bool,
15}
16
17impl Default for ExplorerSetting {
18    fn default() -> Self {
19        Self {
20            mnemonic: Default::default(),
21            passphrase: Default::default(),
22            base_derivation_paths: Default::default(),
23            exploration_path: Default::default(),
24            exploration_depth: Default::default(),
25            network: bitcoin::Network::Bitcoin,
26            sweep: Default::default(),
27        }
28    }
29}
30
31impl ExplorerSetting {
32    pub fn new(
33        mnemonic: String,
34        passphrase: String,
35        base_derivation_paths: Vec<String>,
36        exploration_path: String,
37        exploration_depth: u32,
38        network: bitcoin::Network,
39        sweep: bool,
40    ) -> Self {
41        ExplorerSetting {
42            mnemonic,
43            passphrase,
44            base_derivation_paths,
45            exploration_path,
46            exploration_depth,
47            network,
48            sweep,
49        }
50    }
51}
52
53impl Zeroize for ExplorerSetting {
54    fn zeroize(&mut self) {
55        self.mnemonic.zeroize();
56        self.passphrase.zeroize();
57        self.base_derivation_paths.zeroize();
58        self.exploration_path.zeroize();
59        self.exploration_depth.zeroize();
60        self.network = bitcoin::Network::Regtest;
61        self.sweep.zeroize();
62    }
63}
64
65impl ZeroizeOnDrop for ExplorerSetting {}