use async_trait::async_trait;
use super::Credential;
use crate::{Error, Result};
#[async_trait]
pub trait CredentialProvider: Send + Sync {
fn name(&self) -> &str;
async fn resolve(&self) -> Result<Credential>;
async fn refresh(&self) -> Result<Credential> {
Err(Error::auth("Refresh not supported"))
}
fn supports_refresh(&self) -> bool {
false
}
}