hopr_api/chain/
values.rs

1use std::{error::Error, time::Duration};
2
3use hopr_crypto_types::prelude::Hash;
4pub use hopr_internal_types::prelude::WinningProbability;
5pub use hopr_primitive_types::balance::HoprBalance;
6
7/// Contains domain separator information.
8#[derive(Clone, Copy, Debug, PartialEq, Eq)]
9pub struct DomainSeparators {
10    /// HOPR Ledger smart contract domain separator.
11    pub ledger: Hash,
12    /// HOPR Node Safe Registry smart contract domain separator.
13    pub safe_registry: Hash,
14    /// HOPR Channels smart contract domain separator.
15    pub channel: Hash,
16}
17
18/// Retrieves various on-chain information.
19#[async_trait::async_trait]
20pub trait ChainValues {
21    type Error: Error + Send + Sync + 'static;
22    /// Retrieves the domain separators of HOPR smart contracts.
23    async fn domain_separators(&self) -> Result<DomainSeparators, Self::Error>;
24
25    /// Retrieves the network-set minimum incoming ticket winning probability.
26    async fn minimum_incoming_ticket_win_prob(&self) -> Result<WinningProbability, Self::Error>;
27    /// Retrieves the network-set minimum ticket price.
28    async fn minimum_ticket_price(&self) -> Result<HoprBalance, Self::Error>;
29
30    /// Gets the grace period for channel closure finalization.
31    async fn channel_closure_notice_period(&self) -> Result<Duration, Self::Error>;
32}