use async_trait::async_trait;
use axum::http::HeaderMap;
use crate::config::auth::SecurityScheme;
use crate::error::Result;
#[async_trait]
pub trait AuthStrategy: Send + Sync {
async fn get_keys(&self, scheme: &SecurityScheme) -> Result<serde_json::Value>;
fn get_token(&self, headers: &HeaderMap) -> Result<String>;
fn validate_token(&self, token: &str, keys: &serde_json::Value) -> Result<serde_json::Value>;
}