pub mod chain_events;
pub mod errors;
#[cfg(feature = "use-bindings")]
mod parser;
pub mod payload;
#[cfg(feature = "use-bindings")]
pub use {
hopr_bindings::{
ContractAddresses, exports, exports::alloy::primitives::Address as AlloyAddress,
},
parser::ParsedHoprChainAction,
};
pub mod prelude {
#[cfg(feature = "use-bindings")]
pub use super::payload::{BasicPayloadGenerator, SafePayloadGenerator, TransactionRequest};
pub use super::{
ContractAddresses,
chain_events::ChainEvent,
payload::{GasEstimation, PayloadGenerator, SignableTransaction},
};
}
#[cfg(not(feature = "use-bindings"))]
#[serde_with::serde_as]
#[derive(Clone, Copy, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize, Default)]
pub struct ContractAddresses {
#[serde_as(as = "serde_with::DisplayFromStr")]
pub token: crate::primitive::primitives::Address,
#[serde_as(as = "serde_with::DisplayFromStr")]
pub channels: crate::primitive::primitives::Address,
#[serde_as(as = "serde_with::DisplayFromStr")]
pub announcements: crate::primitive::primitives::Address,
#[serde_as(as = "serde_with::DisplayFromStr")]
pub node_safe_registry: crate::primitive::primitives::Address,
#[serde_as(as = "serde_with::DisplayFromStr")]
pub ticket_price_oracle: crate::primitive::primitives::Address,
#[serde_as(as = "serde_with::DisplayFromStr")]
pub winning_probability_oracle: crate::primitive::primitives::Address,
#[serde_as(as = "serde_with::DisplayFromStr")]
pub node_safe_migration: crate::primitive::primitives::Address,
#[serde_as(as = "serde_with::DisplayFromStr")]
pub node_stake_factory: crate::primitive::primitives::Address,
#[serde_as(as = "serde_with::DisplayFromStr")]
pub module_implementation: crate::primitive::primitives::Address,
}
#[cfg(not(feature = "use-bindings"))]
impl IntoIterator for &ContractAddresses {
type IntoIter = std::vec::IntoIter<crate::primitive::primitives::Address>;
type Item = crate::primitive::primitives::Address;
fn into_iter(self) -> Self::IntoIter {
vec![
self.token,
self.channels,
self.announcements,
self.node_safe_registry,
self.ticket_price_oracle,
self.winning_probability_oracle,
self.node_stake_factory,
self.module_implementation,
]
.into_iter()
}
}
#[cfg(feature = "use-bindings")]
pub fn contract_addresses_for_network(name: &str) -> Option<(u64, ContractAddresses)> {
hopr_bindings::config::NetworksWithContractAddresses::default()
.networks
.get(name)
.cloned()
.map(|n| (n.chain_id, n.addresses))
}
#[cfg(feature = "use-bindings")]
#[inline]
pub(in crate::chain) fn a2al(a: crate::primitive::prelude::Address) -> AlloyAddress {
AlloyAddress::from_slice(a.as_ref())
}