use std::sync::Arc;
use parking_lot::RwLock;
use raiden_blockchain::{
contracts::ContractsManager,
proxies::{
Account,
ProxyManager,
},
};
use raiden_network_messages::messages::TransportServiceMessage;
use raiden_pathfinding::{
config::PFSConfig,
PFS,
};
use raiden_primitives::types::{
AddressMetadata,
ChainID,
DefaultAddresses,
RevealTimeout,
SettleTimeout,
};
use raiden_state_machine::types::MediationFeeConfig;
use raiden_transition::manager::StateManager;
use tokio::sync::mpsc::UnboundedSender;
use web3::{
transports::Http,
Web3,
};
#[derive(Clone)]
pub struct RaidenConfig {
pub chain_id: ChainID,
pub account: Account<Http>,
pub mediation_config: MediationFeeConfig,
pub monitoring_enabled: bool,
pub pfs_config: PFSConfig,
pub metadata: AddressMetadata,
pub addresses: DefaultAddresses,
pub default_settle_timeout: SettleTimeout,
pub default_reveal_timeout: RevealTimeout,
}
pub struct Raiden {
pub web3: Web3<Http>,
pub config: RaidenConfig,
pub contracts_manager: Arc<ContractsManager>,
pub proxy_manager: Arc<ProxyManager>,
pub state_manager: Arc<RwLock<StateManager>>,
pub transport: UnboundedSender<TransportServiceMessage>,
pub pfs: Arc<PFS>,
}