use crate::Budget;
pub trait Quota {
type Budget<'a, Lane>: Budget
where
Self: 'a;
fn remaining(&self) -> usize;
fn share<const N: usize, const I: usize>(&self, cursor: usize) -> usize;
fn budget<Lane>(&self, limit: usize) -> Self::Budget<'_, Lane>;
fn refund(self);
}