use std::{future::Future, time::Duration};
use super::RateLimitError;
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum StoreErrorAction {
#[default]
Reject,
Allow,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Usage {
pub used: u64,
pub reset_after: Duration,
}
pub trait Store: Clone + Send + Sync + 'static {
type Future: Future<Output = Result<Usage, RateLimitError>> + Send + 'static;
fn increment(&self, key: &str, window: Duration) -> Self::Future;
}