o
    BiFE                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZmZmZmZmZ d d	lmZmZmZmZmZ erVd d
lmZ d dlmZ G dd ded ed ZdS )    )CreateableAPIResource)ExpandableField)
ListObject)ListableAPIResource)RequestOptions)StripeObject)class_method_variantsanitize_id)ClassVarListOptionalcastoverload)LiteralNotRequired	TypedDictUnpackTYPE_CHECKING)Customer)Meterc                   @   s  e Zd ZU dZdZeed  ed< G dd deZ	G dd deZ
G dd	 d	eZG d
d deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZed ed< 	 ee	 ed< 	 eed< 	 eed< 	 ed ed< 	 eed  ed< 	 eed < 	 ee
 ed!< 	 eded"ed# d$d fd%d&Zeeded"ed# d$d fd'd(Zed"ed# d$d fd)d(Zed*d"ed# d$d fd+d(Zeded"ed# d$d fd,d-Zeeded"ed# d$d fd.d/Z ed"ed# d$d fd0d/Z ed1d"ed# d$d fd2d/Z eded"ed3 d$d fd4d5Z!eeded"ed3 d$d fd6d7Z"ed"ed3 d$d fd8d7Z"ed9d"ed3 d$d fd:d7Z"eded"ed3 d$d fd;d<Z#eeded"ed3 d$d fd=d>Z$ed"ed3 d$d fd?d>Z$ed@d"ed3 d$d fdAd>Z$ed"edB d$d fdCdDZ%ed"edB d$d fdEdFZ&eded"edG d$d fdHdIZ'eeded"edG d$d fdJdKZ(ed"edG d$d fdLdKZ(edMd"edG d$d fdNdKZ(eded"edG d$d fdOdPZ)eeded"edG d$d fdQdRZ*ed"edG d$d fdSdRZ*edTd"edG d$d fdUdRZ*ed"edV d$e+d  fdWdXZ,ed"edV d$e+d  fdYdZZ-eded"ed[ d$d fd\d]Z.eded"ed[ d$d fd^d_Z/e	e
d`Z0daS )bAlertz
    A billing alert is a resource that notifies you when a certain usage threshold on a meter is crossed. For example, you might create a billing alert to notify you when a certain user made 100 API requests.
    zbilling.alertOBJECT_NAMEc                   @   s   e Zd ZU eed  ed< dS )zAlert.Filterr   customerN)__name__
__module____qualname__r   r   __annotations__ r   r   U/var/www/html/Trade-python/venv/lib/python3.10/site-packages/stripe/billing/_alert.pyFilter      
 r   c                   @   s2   e Zd ZU eed< 	 ed ed< 	 ed ed< dS )zAlert.UsageThresholdConfiggter   meterone_time
recurrenceN)r   r   r   intr   r   r   r   r   r   r   UsageThresholdConfig%      
 r&   c                   @      e Zd ZU eee  ed< dS )Alert.ActivateParamsexpandNr   r   r   r   r   strr   r   r   r   r   ActivateParams3   r    r-   c                   @   r(   )Alert.ArchiveParamsr*   Nr+   r   r   r   r   ArchiveParams9   r    r/   c                   @   sR   e Zd ZU ed ed< 	 eee  ed< 	 ed ed< 	 eed< 	 ed ed< d	S )
Alert.CreateParamsusage_threshold
alert_typer*   Alert.CreateParamsFilterfiltertitle&Alert.CreateParamsUsageThresholdConfigusage_threshold_configN)r   r   r   r   r   r   r   r,   r   r   r   r   CreateParams?   s   
 r8   c                   @   s6   e Zd ZU ee ed< 	 ee ed< 	 ee ed< dS )r3   r   subscriptionsubscription_itemN)r   r   r   r   r,   r   r   r   r   r   CreateParamsFilterW   s   
 r;   c                   @   s2   e Zd ZU eed< 	 ee ed< 	 ed ed< dS )r6   r!   r"   r#   r$   N)r   r   r   r%   r   r   r,   r   r   r   r   r    CreateParamsUsageThresholdConfige   r'   r<   c                   @   r(   )Alert.DeactivateParamsr*   Nr+   r   r   r   r   DeactivateParamss   r    r>   c                   @   sh   e Zd ZU eed  ed< 	 ee ed< 	 eee  ed< 	 ee ed< 	 ee ed< 	 ee ed< dS )	Alert.ListParamsr1   r2   ending_beforer*   limitr"   starting_afterN)	r   r   r   r   r   r   r,   r   r%   r   r   r   r   
ListParamsy   s   
 rC   c                   @   r(   )Alert.RetrieveParamsr*   Nr+   r   r   r   r   RetrieveParams   r    rE   r1   r2   r4   idlivemodeobject)activearchivedinactivestatusr5   r7   paramsr)   returnc                 K   "   t d| jddjt|d|dS )G
        Reactivates this alert, allowing it to trigger again.
        r   post /v1/billing/alerts/{id}/activaterF   rM   r   _static_requestformatr	   clsrF   rM   r   r   r   _cls_activate      zAlert._cls_activatec                 K      dS rP   Nr   rF   rM   r   r   r   activate      zAlert.activatec                 K   r\   r]   r   selfrM   r   r   r   r_         rZ   c              	   K   (   t d| jddjt| dd|dS )rP   r   rQ   rR   rF   rS   rT   r   _requestrW   r	   getra   r   r   r   r_         c                    *   t d| jddjt|d|dI dH S )rP   r   rQ   rR   rS   rT   Nr   _static_request_asyncrW   r	   rX   r   r   r   _cls_activate_async      
zAlert._cls_activate_asyncc                       dS r]   r   r^   r   r   r   activate_async      zAlert.activate_asyncc                    rn   r]   r   ra   r   r   r   ro        rl   c              	      0   t d| jddjt| dd|dI dH S )rP   r   rQ   rR   rF   rS   rT   Nr   _request_asyncrW   r	   rg   ra   r   r   r   ro        
r.   c                 K   rO   )g
        Archives this alert, removing it from the list view and APIs. This is non-reversible.
        r   rQ   /v1/billing/alerts/{id}/archiverS   rT   rU   rX   r   r   r   _cls_archive   r[   zAlert._cls_archivec                 K   r\   rv   Nr   r^   r   r   r   archive0  r`   zAlert.archivec                 K   r\   ry   r   ra   r   r   r   rz   8  rc   rx   c              	   K   rd   )rv   r   rQ   rw   rF   rS   rT   re   ra   r   r   r   rz   ?  rh   c                    ri   )rv   r   rQ   rw   rS   rT   Nrj   rX   r   r   r   _cls_archive_asyncQ  rm   zAlert._cls_archive_asyncc                    rn   ry   r   r^   r   r   r   archive_asynca  rp   zAlert.archive_asyncc                    rn   ry   r   ra   r   r   r   r|   k  rq   r{   c              	      rr   )rv   r   rQ   rw   rF   rS   rT   Nrs   ra   r   r   r   r|   t  ru   r0   c                 K   s   t d| jd|  |dS ))
        Creates a billing alert
        r   rQ   rT   )r   rV   	class_urlrY   rM   r   r   r   create  s   zAlert.createc                    s"   t d| jd|  |dI dH S )r}   r   rQ   rT   N)r   rk   r~   r   r   r   r   create_async  s   
zAlert.create_asyncr=   c                 K   rO   )H
        Deactivates this alert, preventing it from triggering.
        r   rQ   "/v1/billing/alerts/{id}/deactivaterS   rT   rU   rX   r   r   r   _cls_deactivate  s   zAlert._cls_deactivatec                 K   r\   r   Nr   r^   r   r   r   
deactivate  s   zAlert.deactivatec                 K   r\   r   r   ra   r   r   r   r     s   r   c              	   K   rd   )r   r   rQ   r   rF   rS   rT   re   ra   r   r   r   r     rh   c                    ri   )r   r   rQ   r   rS   rT   Nrj   rX   r   r   r   _cls_deactivate_async  s   
zAlert._cls_deactivate_asyncc                    rn   r   r   r^   r   r   r   deactivate_async  rp   zAlert.deactivate_asyncc                    rn   r   r   ra   r   r   r   r     rq   r   c              	      rr   )r   r   rQ   r   rF   rS   rT   Nrs   ra   r   r   r   r      ru   r?   c                 K   s4   | j d|  |d}t|tstdt|j |S ):
        Lists billing active and inactive alerts
        rg   rT   %Expected list object from API, got %s)rV   r~   
isinstancer   	TypeErrortyper   rY   rM   resultr   r   r   list  s   
z
Alert.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )r   rg   rT   Nr   )rk   r~   r   r   r   r   r   r   r   r   r   
list_async$  s   
zAlert.list_asyncrD   c                 K   s   | |fi |}|   |S )7
        Retrieves a billing alert given an ID
        )refreshrY   rF   rM   instancer   r   r   retrieve8  s   zAlert.retrievec                    s$   | |fi |}|  I dH  |S )r   N)refresh_asyncr   r   r   r   retrieve_asyncC  s   zAlert.retrieve_async)r4   r7   N)1r   r   r   __doc__r   r
   r   r   r   r   r&   r   r-   r/   r8   r   r;   r<   r>   rC   rE   r   r,   boolclassmethodr   rZ   r   staticmethodr_   r   rl   ro   rx   rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r   _inner_class_typesr   r   r   r   r      s  
 

r   N) stripe._createable_api_resourcer   stripe._expandable_fieldr   stripe._list_objectr   stripe._listable_api_resourcer   stripe._request_optionsr   stripe._stripe_objectr   stripe._utilr   r	   typingr
   r   r   r   r   typing_extensionsr   r   r   r   r   stripe._customerr   stripe.billing._meterr   r   r   r   r   r   <module>   s   