pub mod error;
pub mod types;
#[cfg(feature = "zigbee")]
pub mod zigbee;
#[cfg(feature = "zwave")]
pub mod zwave;
#[cfg(feature = "thread")]
pub mod thread;
#[cfg(feature = "matter")]
pub mod matter;
pub use error::{HomeAutoError, HomeAutoResult};
pub use types::{AttributeValue, Capability, HomeAutoEvent, HomeDevice, Protocol};
#[cfg(feature = "zigbee")]
pub use zigbee::ezsp::EzspCoordinator;
#[cfg(feature = "zigbee")]
pub use zigbee::znp::ZnpCoordinator;
#[cfg(feature = "zigbee")]
pub use zigbee::{
ZigbeeAddr, ZigbeeAttrId, ZigbeeClusterId, ZigbeeCoordinator, ZigbeeDevice, ZigbeeDeviceKind,
};
#[cfg(feature = "zwave")]
pub use zwave::serial_api::ZWaveSerialController;
#[cfg(feature = "zwave")]
pub use zwave::{CommandClass, NodeId, ZWaveController, ZWaveNode, ZWaveNodeKind};
#[cfg(feature = "thread")]
pub use thread::border_router::ThreadBorderRouter;
#[cfg(feature = "thread")]
pub use thread::types::{ThreadNeighbor, ThreadNetworkDataset, ThreadNodeInfo};
#[cfg(feature = "matter")]
pub use matter::controller::MatterController;
#[cfg(feature = "matter")]
pub use matter::server::MatterDeviceServer;
#[cfg(feature = "matter")]
pub use matter::types::{MatterDevice, MatterDeviceConfig, MatterEndpoint};
pub type BoxStream<'a, T> = std::pin::Pin<Box<dyn futures::Stream<Item = T> + Send + 'a>>;