1use std::{error::Error, time::Duration};
2
3pub use hopr_chain_types::ContractAddresses;
4use hopr_crypto_types::prelude::Hash;
5pub use hopr_internal_types::prelude::WinningProbability;
6pub use hopr_primitive_types::balance::HoprBalance;
7
8#[derive(Clone, Copy, Debug, PartialEq, Eq)]
10pub struct DomainSeparators {
11 pub ledger: Hash,
13 pub safe_registry: Hash,
15 pub channel: Hash,
17}
18
19#[derive(Clone, Debug, PartialEq, Eq)]
21pub struct ChainInfo {
22 pub chain_id: u64,
24 pub hopr_network_name: String,
26 pub contract_addresses: ContractAddresses,
28}
29
30#[async_trait::async_trait]
32#[auto_impl::auto_impl(&, Box, Arc)]
33pub trait ChainValues {
34 type Error: Error + Send + Sync + 'static;
35 async fn domain_separators(&self) -> Result<DomainSeparators, Self::Error>;
37 async fn minimum_incoming_ticket_win_prob(&self) -> Result<WinningProbability, Self::Error>;
39 async fn minimum_ticket_price(&self) -> Result<HoprBalance, Self::Error>;
41 async fn channel_closure_notice_period(&self) -> Result<Duration, Self::Error>;
43 async fn chain_info(&self) -> Result<ChainInfo, Self::Error>;
45}