use crate::error::Result;
use crate::types::PaginationParams;
use crate::wami::policies::Policy;
use async_trait::async_trait;
#[async_trait]
pub trait PolicyStore: Send + Sync {
async fn create_policy(&mut self, policy: Policy) -> Result<Policy>;
async fn get_policy(&self, policy_arn: &str) -> Result<Option<Policy>>;
async fn update_policy(&mut self, policy: Policy) -> Result<Policy>;
async fn delete_policy(&mut self, policy_arn: &str) -> Result<()>;
async fn list_policies(
&self,
scope: Option<&str>,
pagination: Option<&PaginationParams>,
) -> Result<(Vec<Policy>, bool, Option<String>)>;
}