use crate::types::{PluginError, PluginMetadata, ResolutionContext};
use async_trait::async_trait;
#[async_trait]
pub trait TokenResolver: Send + Sync {
fn can_resolve(&self, token: &str) -> bool;
async fn resolve_token(
&self,
token: &str,
context: &ResolutionContext,
) -> Result<String, PluginError>;
fn get_metadata(&self) -> PluginMetadata;
fn validate(&self) -> Result<(), PluginError> {
Ok(())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_trait_definition() {
let _ = std::marker::PhantomData::<&dyn TokenResolver>;
}
}