pub mod tc39;
pub mod w3c;
pub mod whatwg;
use crate::model::SpecInfo;
use anyhow::Result;
use async_trait::async_trait;
use chrono::{DateTime, Utc};
#[async_trait]
pub trait SpecProvider {
fn provider_name(&self) -> &str;
fn known_specs(&self) -> &[SpecInfo];
async fn fetch_html(&self, spec: &SpecInfo, sha: &str) -> Result<String>;
async fn fetch_latest_version(&self, spec: &SpecInfo) -> Result<(String, DateTime<Utc>)>;
fn resolve_url(&self, url: &str) -> Option<(String, String)>;
}