use crate::backend::{Backend, Sink};
use crate::capability::{Family, Snapshot};
use crate::error::Result;
use crate::transport::Candidate;
pub(crate) type Open = fn(&Candidate, Sink) -> Result<(Box<dyn Backend>, Snapshot)>;
pub(crate) const PROBES: &[(Family, Open)] = &[
#[cfg(feature = "medius")]
(Family::Medius, medius::open),
#[cfg(feature = "makcu")]
(Family::MakcuV4, makcu::open),
#[cfg(feature = "ysc8k")]
(Family::Ysc, ysc8k::open),
#[cfg(feature = "ferrum")]
(Family::Ferrum, ferrum::open),
];
#[cfg(test)]
pub(crate) mod fake;
#[cfg(feature = "ferrum")]
pub(crate) mod ferrum;
#[cfg(feature = "makcu")]
pub(crate) mod makcu;
#[cfg(feature = "medius")]
pub(crate) mod medius;
#[cfg(feature = "ysc8k")]
pub(crate) mod ysc8k;