bright_lightning/lnd/models/
onchain.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
4pub struct LndListAddressesResponse {
5    pub account_with_addresses: Vec<AccountWithAddresses>,
6}
7impl LndListAddressesResponse {
8    #[must_use] pub fn find_addresses(
9        &self,
10        account_name: &str,
11        address_type: &OnchainAddressType,
12    ) -> Vec<LndAddressProperty> {
13        self.account_with_addresses
14            .iter()
15            .find(|account| account.name == account_name && &account.address_type == address_type)
16            .unwrap()
17            .addresses
18            .clone()
19    }
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
23pub struct AccountWithAddresses {
24    pub name: String,
25    pub address_type: OnchainAddressType,
26    pub derivation_path: String,
27    pub addresses: Vec<LndAddressProperty>,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
31pub enum OnchainAddressType {
32    #[serde(rename = "UNKNOWN")]
33    Unknown = 0,
34    #[serde(rename = "WITNESS_PUBKEY_HASH")]
35    WitnessPubkeyHash = 1,
36    #[serde(rename = "NESTED_WITNESS_PUBKEY_HASH")]
37    NestedWitnessPubkeyHash = 2,
38    #[serde(rename = "HYBRID_NESTED_WITNESS_PUBKEY_HASH")]
39    HybridNestedWitnessPubkeyHash = 3,
40    #[serde(rename = "TAPROOT_PUBKEY")]
41    TaprootPubkey = 4,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
45pub struct LndAddressProperty {
46    pub address: String,
47    pub is_internal: bool,
48    pub balance: String,
49    pub derivation_path: String,
50    pub public_key: String,
51}