1use bsv_wasm::ExtendedPrivateKey;
2
3pub struct Wallet {
4 seed: String,
5}
6
7impl Wallet {
8 pub fn new(seed: String) -> Wallet {
9 Wallet { seed }
10 }
11
12 pub fn xpriv(&self) -> Option<ExtendedPrivateKey> {
13 let xpriv = match ExtendedPrivateKey::from_mnemonic(self.seed.as_bytes(), None) {
14 Ok(v) => v,
15 Err(_) => return None,
16 };
17 Some(xpriv)
18 }
19
20 pub fn xpriv_account(&self) -> Option<ExtendedPrivateKey> {
21 let xpriv = match self.xpriv() {
22 Some(v) => v.derive_from_path("m/0/0").unwrap(),
23 None => return None,
24 };
25
26 Some(xpriv)
27 }
28
29 pub fn xpriv_wallet(&self) -> Option<ExtendedPrivateKey> {
30 let xpriv = match self.xpriv() {
31 Some(v) => v.derive_from_path("m/44'/0'/0'/0").unwrap(),
32 None => return None,
33 };
34
35 Some(xpriv)
36 }
37}