use crate::error::Result;
use crate::models::metadata::JdkMetadata;
use crate::models::package::ChecksumType;
pub trait MetadataSource: Send + Sync {
fn id(&self) -> &str;
fn name(&self) -> &str;
fn is_available(&self) -> Result<bool>;
fn fetch_all(&self) -> Result<Vec<JdkMetadata>>;
fn fetch_distribution(&self, distribution: &str) -> Result<Vec<JdkMetadata>>;
fn fetch_package_details(&self, package_id: &str) -> Result<PackageDetails>;
fn last_updated(&self) -> Result<Option<chrono::DateTime<chrono::Utc>>>;
}
#[derive(Debug, Clone)]
pub struct PackageDetails {
pub download_url: String,
pub checksum: Option<String>,
pub checksum_type: Option<ChecksumType>,
}