use std::borrow::Cow;
use sciparse::{identifier::isd_asn::IsdAsn, segment::SegmentsPage};
use crate::underlays::Underlays;
pub mod underlays;
pub trait UnderlayDiscovery: Send + Sync {
fn list_underlays(&self, isd_as: IsdAsn) -> Underlays;
}
#[derive(Debug)]
pub enum SegmentsError {
InvalidArgument(Cow<'static, str>),
InternalError(Cow<'static, str>),
}
#[async_trait::async_trait]
pub trait SegmentsDiscovery: Send + Sync {
async fn list_segments(
&self,
src: IsdAsn,
dst: IsdAsn,
page_size: i32,
page_token: String,
) -> Result<SegmentsPage, SegmentsError>;
}