o
    i9                     @   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mZ d dlmZmZmZmZmZ d dlmZmZmZ erpd 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$ d dl%m&Z& G dd ded ed Z'dS )    )CreateableAPIResource)ExpandableField)
ListObject)ListableAPIResource)StripeObject)class_method_variantsanitize_id)ClassVarListOptionalcastoverload)LiteralUnpackTYPE_CHECKING)Customer)Meter)AlertActivateParams)AlertArchiveParams)AlertCreateParams)AlertDeactivateParams)AlertListParams)AlertRetrieveParamsc                   @   s  e Zd ZU dZdZeed  ed< G dd deZ	ed 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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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d+d*Zed,ded dd fd-d*Zeded. dd fd/d0Zeded. dd fd1d2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e d  fdCdDZ!ededB de d  fdEdFZ"ede
dedG dd fdHdIZ#ede
dedG dd fdJdKZ$de	iZ%dLS )M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 G dd deZeee  ed< 	 eed< 	 e	d ed< 	 e
d ed< 	 deiZd	S )
zAlert.UsageThresholdc                   @   s,   e Zd ZU eed  ed< 	 ed ed< dS )zAlert.UsageThreshold.Filterr   customertypeN)__name__
__module____qualname__r   r   __annotations__r    r!   r!   u/var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/env/lib/python3.10/site-packages/stripe/billing/_alert.pyFilter%   s   
 r#   filtersgter   meterone_time
recurrenceN)r   r   r   r   r#   r   r
   r    intr   r   _inner_class_typesr!   r!   r!   r"   UsageThreshold$   s   
 r+   usage_threshold
alert_typeidlivemodeobject)activearchivedinactivestatustitle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r.   r6   r   _static_requestformatr   clsr.   r6   r!   r!   r"   _cls_activate[      zAlert._cls_activatec                 K      dS r9   Nr!   r.   r6   r!   r!   r"   activatek      zAlert.activatec                 K   rE   rF   r!   selfr6   r!   r!   r"   rH   s      rC   c              	   K   (   t d| jddjt| dd|dS )r9   r   r:   r;   r.   r<   r=   r   _requestr@   r   getrJ   r!   r!   r"   rH   z      c                    *   t d| jddjt|d|dI dH S )r9   r   r:   r;   r<   r=   Nr   _static_request_asyncr@   r   rA   r!   r!   r"   _cls_activate_async      
zAlert._cls_activate_asyncc                       dS rF   r!   rG   r!   r!   r"   activate_async      zAlert.activate_asyncc                    rW   rF   r!   rJ   r!   r!   r"   rX         rU   c              	      0   t d| jddjt| dd|dI dH S )r9   r   r:   r;   r.   r<   r=   Nr   _request_asyncr@   r   rP   rJ   r!   r!   r"   rX         
r   c                 K   r8   )g
        Archives this alert, removing it from the list view and APIs. This is non-reversible.
        r   r:   /v1/billing/alerts/{id}/archiver<   r=   r>   rA   r!   r!   r"   _cls_archive   rD   zAlert._cls_archivec                 K   rE   r_   Nr!   rG   r!   r!   r"   archive   rI   zAlert.archivec                 K   rE   rb   r!   rJ   r!   r!   r"   rc      rL   ra   c              	   K   rM   )r_   r   r:   r`   r.   r<   r=   rN   rJ   r!   r!   r"   rc      rQ   c                    rR   )r_   r   r:   r`   r<   r=   NrS   rA   r!   r!   r"   _cls_archive_async   rV   zAlert._cls_archive_asyncc                    rW   rb   r!   rG   r!   r!   r"   archive_async  rY   zAlert.archive_asyncc                    rW   rb   r!   rJ   r!   r!   r"   re     rZ   rd   c              	      r[   )r_   r   r:   r`   r.   r<   r=   Nr\   rJ   r!   r!   r"   re     r^   r   c                 K   s   t d| jd|  |dS ))
        Creates a billing alert
        r   r:   r=   )r   r?   	class_urlrB   r6   r!   r!   r"   create'  s   zAlert.createc                    s"   t d| jd|  |dI dH S )rf   r   r:   r=   N)r   rT   rg   rh   r!   r!   r"   create_async5  s   
zAlert.create_asyncr   c                 K   r8   )H
        Deactivates this alert, preventing it from triggering.
        r   r:   "/v1/billing/alerts/{id}/deactivater<   r=   r>   rA   r!   r!   r"   _cls_deactivateE  s   zAlert._cls_deactivatec                 K   rE   rk   Nr!   rG   r!   r!   r"   
deactivateW  s   zAlert.deactivatec                 K   rE   rn   r!   rJ   r!   r!   r"   ro   a  rL   rm   c              	   K   rM   )rk   r   r:   rl   r.   r<   r=   rN   rJ   r!   r!   r"   ro   h  rQ   c                    rR   )rk   r   r:   rl   r<   r=   NrS   rA   r!   r!   r"   _cls_deactivate_asyncz  s   
zAlert._cls_deactivate_asyncc                    rW   rn   r!   rG   r!   r!   r"   deactivate_async  rY   zAlert.deactivate_asyncc                    rW   rn   r!   rJ   r!   r!   r"   rq     rZ   rp   c              	      r[   )rk   r   r:   rl   r.   r<   r=   Nr\   rJ   r!   r!   r"   rq     r^   r   c                 K   s4   | j d|  |d}t|tstdt|j |S ):
        Lists billing active and inactive alerts
        rP   r=   %Expected list object from API, got %s)r?   rg   
isinstancer   	TypeErrorr   r   rB   r6   resultr!   r!   r"   list  s   
z
Alert.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )rr   rP   r=   Nrs   )rT   rg   rt   r   ru   r   r   rv   r!   r!   r"   
list_async  s   
zAlert.list_asyncr   c                 K   s   | |fi |}|   |S )7
        Retrieves a billing alert given an ID
        )refreshrB   r.   r6   instancer!   r!   r"   retrieve  s   zAlert.retrievec                    s$   | |fi |}|  I dH  |S )rz   N)refresh_asyncr|   r!   r!   r"   retrieve_async  s   zAlert.retrieve_asyncN)&r   r   r   __doc__r   r	   r   r    r   r+   strboolr   classmethodr   rC   r   staticmethodrH   r   rU   rX   ra   rc   rd   re   ri   rj   rm   ro   rp   rq   r   rx   ry   r~   r   r*   r!   r!   r!   r"   r      s  
 

r   N)(stripe._createable_api_resourcer   stripe._expandable_fieldr   stripe._list_objectr   stripe._listable_api_resourcer   stripe._stripe_objectr   stripe._utilr   r   typingr	   r
   r   r   r   typing_extensionsr   r   r   stripe._customerr   stripe.billing._meterr   ,stripe.params.billing._alert_activate_paramsr   +stripe.params.billing._alert_archive_paramsr   *stripe.params.billing._alert_create_paramsr   .stripe.params.billing._alert_deactivate_paramsr   (stripe.params.billing._alert_list_paramsr   ,stripe.params.billing._alert_retrieve_paramsr   r   r!   r!   r!   r"   <module>   s$   