o
    pj                     @  s>   d Z ddlmZ ddlmZ ddlmZmZ G dd dZdS )z6Compatibility facade for persistent quota enforcement.    )annotations)Any)consumeusage_snapshotc                   @  s,   e Zd ZdZddd	Zd
dddddZdS )
QuotaGuardz3Read effective limits and atomically consume usage.tenantdict[str, Any] | Noneapp_id
str | Nonereturndict[str, Any]c                C  s8   |pi  d||p
i  drt|pi d dS i dS )N	tenant_id)r   r	   usage)getr   )selfr   r	    r   %bridge_platform/quotas/quota_guard.pydescribe_limits   s   zQuotaGuard.describe_limitsrequests   )metricamountr   strr   floatc                C  s*   |pi  d}|stdt||||dS )Nr   z(Tenant is required for quota enforcement)r   r	   r   r   )r   
ValueErrorr   )r   r   r	   r   r   r   r   r   r   check   s   zQuotaGuard.checkN)r   r   r	   r
   r   r   )r   r   r	   r
   r   r   r   r   )__name__
__module____qualname____doc__r   r   r   r   r   r   r   
   s    
r   N)	r   
__future__r   typingr   bridge_platform.quotas.servicer   r   r   r   r   r   r   <module>   s
    