o
    BiK                     @   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 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 edG dd ded ed ed ZdS )    )CreateableAPIResource)
ListObject)ListableAPIResource)nested_resource_class_methods)RequestOptions)StripeObject)UpdateableAPIResource)class_method_variantsanitize_id)ClassVarListOptionalcastoverload)LiteralNotRequired	TypedDictUnpackTYPE_CHECKING)MeterEventSummaryevent_summaryc                   @   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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ed < 	 e	ed!< e
ed"< eed#< 	 eed$< 	 eed%  ed&< 	 eed'< 	 eed(< 	 ed ed)< 	 ed* ed+< 	 eed,< eed-< 	 eed.< ed/ed0 d1d fd2d3Zed/ed0 d1d fd4d5Z ed'ed/ed6 d1d fd7d8Z!e"e#d'ed/ed6 d1d fd9d:Z$e"d/ed6 d1d fd;d:Z$e%d<d/ed6 d1d fd=d:Z$ed'ed/ed6 d1d fd>d?Z&e"e#d'ed/ed6 d1d fd@dAZ'e"d/ed6 d1d fdBdAZ'e%dCd/ed6 d1d fdDdAZ'ed/edE d1e(d  fdFdGZ)ed/edE d1e(d  fdHdIZ*ed'ed/edJ d1d fdKdLZ+ed'ed/edJ d1d fdMdNZ,ed'ed/edO d1d fdPdQZ-e"e#d'ed/edO d1d fdRdSZ.e"d/edO d1d fdTdSZ.e%dUd/edO d1d fdVdSZ.ed'ed/edO d1d fdWdXZ/e"e#d'ed/edO d1d fdYdZZ0e"d/edO d1d fd[dZZ0e%d\d/edO d1d fd]dZZ0ed'ed/ed^ d1d fd_d`Z1ed'ed/ed^ d1d fdadbZ2ed'ed/edc d1e(dd fdedfZ3ed'ed/edc d1e(dd fdgdhZ4e	e
eediZ5djS )kMeteraY  
    A billing meter is a resource that allows you to track usage of a particular event. For example, you might create a billing meter to track the number of API calls made by a particular user. You can then attach the billing meter to a price and attach the price to a subscription to charge the user for the number of API calls they make.
    zbilling.meterOBJECT_NAMEc                   @   $   e Zd ZU eed< 	 ed ed< dS )zMeter.CustomerMappingevent_payload_keyby_idtypeN__name__
__module____qualname__str__annotations__r    r#   r#   U/var/www/html/Trade-python/venv/lib/python3.10/site-packages/stripe/billing/_meter.pyCustomerMapping$   
   
 r%   c                   @      e Zd ZU ed ed< dS )zMeter.DefaultAggregationcountsumformulaNr   r   r    r   r"   r#   r#   r#   r$   DefaultAggregation.      
 r-   c                   @   s   e Zd ZU ee ed< dS )zMeter.StatusTransitionsdeactivated_atN)r   r   r    r   intr"   r#   r#   r#   r$   StatusTransitions4   r.   r1   c                   @      e Zd ZU eed< dS )zMeter.ValueSettingsr   Nr   r   r    r!   r"   r#   r#   r#   r$   ValueSettings:      
 r4   c                   @   sj   e Zd ZU ed ed< 	 ded< 	 eed< 	 eed< 	 eed  ed< 	 eee  ed	< 	 ed
 ed< dS )Meter.CreateParams!Meter.CreateParamsCustomerMappingcustomer_mapping$Meter.CreateParamsDefaultAggregationdefault_aggregationdisplay_name
event_namedayhourevent_time_windowexpandMeter.CreateParamsValueSettingsvalue_settingsN)r   r   r    r   r"   r!   r   r   r#   r#   r#   r$   CreateParams@   s   
 rD   c                   @   r   )r7   r   r   r   Nr   r#   r#   r#   r$   CreateParamsCustomerMapping^   r&   rE   c                   @   r'   )r9   r(   r+   Nr,   r#   r#   r#   r$   CreateParamsDefaultAggregationh   r.   rF   c                   @   r2   )rB   r   Nr3   r#   r#   r#   r$   CreateParamsValueSettingsn   r5   rG   c                   @      e Zd ZU eee  ed< dS )Meter.DeactivateParamsrA   Nr   r   r    r   r   r!   r"   r#   r#   r#   r$   DeactivateParamst      
 rK   c                   @   sx   e Zd ZU eed< 	 eed< 	 ee ed< 	 eee  ed< 	 ee ed< 	 eed< 	 ee ed< 	 eed  ed	< d
S )Meter.ListEventSummariesParamscustomerend_timeending_beforerA   limit
start_timestarting_afterr=   value_grouping_windowN)	r   r   r    r!   r"   r0   r   r   r   r#   r#   r#   r$   ListEventSummariesParamsz   s"   
 rU   c                   @   sZ   e Zd ZU ee ed< 	 eee  ed< 	 ee ed< 	 ee ed< 	 eed  ed< dS )Meter.ListParamsrP   rA   rQ   rS   activeinactivestatusN)	r   r   r    r   r!   r"   r   r0   r   r#   r#   r#   r$   
ListParams   s   
 r[   c                   @   s,   e Zd ZU ee ed< 	 eee  ed< dS )Meter.ModifyParamsr;   rA   N)r   r   r    r   r!   r"   r   r#   r#   r#   r$   ModifyParams   s
   
 r]   c                   @   rH   )Meter.ReactivateParamsrA   NrJ   r#   r#   r#   r$   ReactivateParams   rL   r_   c                   @   rH   )Meter.RetrieveParamsrA   NrJ   r#   r#   r#   r$   RetrieveParams   rL   ra   createdr8   r:   r;   r<   r=   r@   idlivemodeobjectrW   rZ   status_transitionsupdatedrC   paramsr6   returnc                 K   s   t d| jd|  |dS ))
        Creates a billing meter
        r   postrh   )r   _static_request	class_urlclsrh   r#   r#   r$   create   s   zMeter.createc                    s"   t d| jd|  |dI dH S )rj   r   rk   rl   N)r   _static_request_asyncrn   ro   r#   r#   r$   create_async   s   
zMeter.create_asyncrI   c                 K   "   t d| jddjt|d|dS )-
        Deactivates a billing meter
        r   rk   "/v1/billing/meters/{id}/deactivaterc   rl   r   rm   formatr
   rp   rc   rh   r#   r#   r$   _cls_deactivate     zMeter._cls_deactivatec                 K      dS ru   Nr#   rc   rh   r#   r#   r$   
deactivate!     zMeter.deactivatec                 K   r}   r~   r#   selfrh   r#   r#   r$   r   +     r{   c              	   K   (   t d| jddjt| dd|dS )ru   r   rk   rv   rc   rw   rl   r   _requestry   r
   getr   r#   r#   r$   r   4     c                    *   t d| jddjt|d|dI dH S )ru   r   rk   rv   rw   rl   Nr   rr   ry   r
   rz   r#   r#   r$   _cls_deactivate_asyncF     
zMeter._cls_deactivate_asyncc                       dS r~   r#   r   r#   r#   r$   deactivate_asyncX     zMeter.deactivate_asyncc                    r   r~   r#   r   r#   r#   r$   r   b     r   c              	      0   t d| jddjt| dd|dI dH S )ru   r   rk   rv   rc   rw   rl   Nr   _request_asyncry   r
   r   r   r#   r#   r$   r   k     
rV   c                 K   s4   | j d|  |d}t|tstdt|j |S )4
        Retrieve a list of billing meters.
        r   rl   %Expected list object from API, got %s)rm   rn   
isinstancer   	TypeErrorr   r   rp   rh   resultr#   r#   r$   list}  s   
z
Meter.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )r   r   rl   Nr   )rr   rn   r   r   r   r   r   r   r#   r#   r$   
list_async  s   
zMeter.list_asyncr\   c                 K   s*   d|   t|f }td| jd||dS ))
        Updates a billing meter
        %s/%sr   rk   rl   )rn   r
   r   rm   rp   rc   rh   urlr#   r#   r$   modify  s   zMeter.modifyc                    s2   d|   t|f }td| jd||dI dH S )r   r   r   rk   rl   N)rn   r
   r   rr   r   r#   r#   r$   modify_async  s   
zMeter.modify_asyncr^   c                 K   rt   )-
        Reactivates a billing meter
        r   rk   "/v1/billing/meters/{id}/reactivaterw   rl   rx   rz   r#   r#   r$   _cls_reactivate  r|   zMeter._cls_reactivatec                 K   r}   r   Nr#   r   r#   r#   r$   
reactivate  r   zMeter.reactivatec                 K   r}   r   r#   r   r#   r#   r$   r     r   r   c              	   K   r   )r   r   rk   r   rc   rw   rl   r   r   r#   r#   r$   r     r   c                    r   )r   r   rk   r   rw   rl   Nr   rz   r#   r#   r$   _cls_reactivate_async  r   zMeter._cls_reactivate_asyncc                    r   r   r#   r   r#   r#   r$   reactivate_async  r   zMeter.reactivate_asyncc                    r   r   r#   r   r#   r#   r$   r     r   r   c              	      r   )r   r   rk   r   rc   rw   rl   Nr   r   r#   r#   r$   r   !  r   r`   c                 K   s   | |fi |}|   |S )7
        Retrieves a billing meter given an ID
        )refreshrp   rc   rh   instancer#   r#   r$   retrieve3  s   zMeter.retrievec                    s$   | |fi |}|  I dH  |S )r   N)refresh_asyncr   r#   r#   r$   retrieve_async>  s   zMeter.retrieve_asyncrM   r   c                 K   s&   t td | jddjt|d|dS )C
        Retrieve a list of billing meter event summaries.
        r   r   '/v1/billing/meters/{id}/event_summariesrw   rl   )r   r   rm   ry   r
   rz   r#   r#   r$   list_event_summariesI  s   zMeter.list_event_summariesc                    s.   t td | jddjt|d|dI dH S )r   r   r   r   rw   rl   N)r   r   rr   ry   r
   rz   r#   r#   r$   list_event_summaries_async[  s   
z Meter.list_event_summaries_async)r8   r:   rf   rC   N)6r   r   r    __doc__r   r   r   r"   r   r%   r-   r1   r4   r   rD   r   rE   rF   rG   rK   rU   r[   r]   r_   ra   r0   r!   r   boolclassmethodr   rq   rs   r{   r   staticmethodr   r	   r   r   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._list_objectr   stripe._listable_api_resourcer   %stripe._nested_resource_class_methodsr   stripe._request_optionsr   stripe._stripe_objectr   stripe._updateable_api_resourcer   stripe._utilr	   r
   typingr   r   r   r   r   typing_extensionsr   r   r   r   r   #stripe.billing._meter_event_summaryr   r   r#   r#   r#   r$   <module>   s$   

