use std::collections::BTreeMap;
use martin_core::tiles::BoxedSource;
use crate::MartinResult;
use crate::config::file::ProcessConfig;
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub enum Version {
Tracked(u128),
Opaque,
}
pub trait Discovery: Send + Sync + 'static {
type Args: Clone + Send + Sync + 'static;
fn discover(
&self,
) -> impl Future<Output = MartinResult<BTreeMap<String, (Version, Self::Args)>>> + Send;
fn build(
&self,
id: &str,
args: &Self::Args,
) -> impl Future<Output = MartinResult<BoxedSource>> + Send;
fn process(&self) -> ProcessConfig;
}