use amplify::Slice32;
use internet2::addr::NodeId;
use p2p::bolt::{ChannelFeatures, ChannelId, ShortChannelId};
#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug)]
#[derive(StrictEncode, StrictDecode)]
pub struct DirectionalInfo {
pub timestamp: u32,
pub message_flags: u8,
pub channel_flags: u8,
pub cltv_expiry_delta: u16,
pub htlc_minimum_msat: u64,
pub fee_base_msat: u32,
pub fee_proportional_millionths: u32,
pub htlc_maximum_msat: u64,
}
#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug, Display)]
#[derive(StrictEncode, StrictDecode)]
#[display("{short_channel_id}")]
pub struct GossipChannelInfo {
pub nodes: (NodeId, NodeId),
pub chain_hash: Slice32,
pub short_channel_id: ShortChannelId,
pub directions: (Option<DirectionalInfo>, Option<DirectionalInfo>),
pub capacity_sats: Option<u64>,
pub features: ChannelFeatures,
}
#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug, Display)]
#[derive(StrictEncode, StrictDecode)]
#[display("{channel_id}@{remote_node}")]
pub struct LocalChannelInfo {
pub remote_node: NodeId,
pub channel_id: ChannelId,
pub short_channel_id: ShortChannelId,
pub chain_hash: Slice32,
pub inbound_capacity_msat: u64,
pub outbound_capacity_msat: u64,
pub cltv_expiry: u16,
pub htlc_minimum_msat: u64,
pub htlc_maximum_msat: u64,
}