use rs_matter::dm::clusters::net_comm::Networks as RsNetworks;
use rs_matter::pairing::DiscoveryCapabilities;
use rs_matter::utils::init::{init_from_closure, Init};
use crate::private::Sealed;
pub trait Embedding {
const INIT: Self;
fn init() -> impl Init<Self>;
}
impl Embedding for () {
const INIT: Self = ();
fn init() -> impl Init<Self> {
unsafe { init_from_closure(|_| Ok(())) }
}
}
pub trait Network: Sealed {
const INIT: Self;
type Embedding<'a>: Embedding
where
Self: 'a;
type Networks: RsNetworks;
const NETWORKS: Self::Networks;
fn init() -> impl Init<Self>;
fn init_networks() -> impl Init<Self::Networks>;
fn discovery_capabilities(&self) -> DiscoveryCapabilities;
fn embedding(&self) -> &Self::Embedding<'_>;
}