use crate::error::Result;
use crate::types::PaginationParams;
use crate::wami::credentials::AccessKey;
use async_trait::async_trait;
#[async_trait]
pub trait AccessKeyStore: Send + Sync {
async fn create_access_key(&mut self, access_key: AccessKey) -> Result<AccessKey>;
async fn get_access_key(&self, access_key_id: &str) -> Result<Option<AccessKey>>;
async fn update_access_key(&mut self, access_key: AccessKey) -> Result<AccessKey>;
async fn delete_access_key(&mut self, access_key_id: &str) -> Result<()>;
async fn list_access_keys(
&self,
user_name: &str,
pagination: Option<&PaginationParams>,
) -> Result<(Vec<AccessKey>, bool, Option<String>)>;
}