bright_lightning/lnd/models/
onchain.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
pub struct LndListAddressesResponse {
    pub account_with_addresses: Vec<AccountWithAddresses>,
}
impl LndListAddressesResponse {
    pub fn find_addresses(
        &self,
        account_name: &str,
        address_type: OnchainAddressType,
    ) -> Vec<LndAddressProperty> {
        self.account_with_addresses
            .iter()
            .find(|account| account.name == account_name && account.address_type == address_type)
            .unwrap()
            .addresses
            .clone()
    }
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
pub struct AccountWithAddresses {
    pub name: String,
    pub address_type: OnchainAddressType,
    pub derivation_path: String,
    pub addresses: Vec<LndAddressProperty>,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
pub enum OnchainAddressType {
    #[serde(rename = "UNKNOWN")]
    Unknown = 0,
    #[serde(rename = "WITNESS_PUBKEY_HASH")]
    WitnessPubkeyHash = 1,
    #[serde(rename = "NESTED_WITNESS_PUBKEY_HASH")]
    NestedWitnessPubkeyHash = 2,
    #[serde(rename = "HYBRID_NESTED_WITNESS_PUBKEY_HASH")]
    HybridNestedWitnessPubkeyHash = 3,
    #[serde(rename = "TAPROOT_PUBKEY")]
    TaprootPubkey = 4,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
pub struct LndAddressProperty {
    pub address: String,
    pub is_internal: bool,
    pub balance: String,
    pub derivation_path: String,
    pub public_key: String,
}