bright_lightning/lnd/models/
onchain.rs1use 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}