a
    gQ                     @   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rd 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)MeterEventSummaryZevent_summaryc                   @   sH  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ed/ d d0d1d2Zeed/ d d0d3d4Z eeed5 d d6d7d8Z!e"e#eed5 d d6d9d:Z$e"ed5 d d0d;d:Z$e%d<ed5 d d0d=d:Z$eeed5 d d6d>d?Z&e"e#eed5 d d6d@dAZ'e"ed5 d d0dBdAZ'e%dCed5 d d0dDdAZ'eedE e(d  d0dFdGZ)eedE e(d  d0dHdIZ*eeedJ d d6dKdLZ+eeedJ d d6dMdNZ,eeedO d d6dPdQZ-e"e#eedO d d6dRdSZ.e"edO d d0dTdSZ.e%dUedO d d0dVdSZ.eeedO d d6dWdXZ/e"e#eedO d d6dYdZZ0e"edO d d0d[dZZ0e%d\edO d d0d]dZZ0eeed^ d d6d_d`Z1eeed^ d d6dadbZ2eeedc e(dd d6dedfZ3eeedc e(dd d6dgdhZ4e	e
eediZ5djS )kMetera1  
    Meters specify how to aggregate meter events over a billing period. Meter events represent the actions that customers take in your system. Meters attach to prices and form the basis of the bill.

    Related guide: [Usage based billing](https://docs.stripe.com/billing/subscriptions/usage-based)
    zbilling.meterOBJECT_NAMEc                   @   s"   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!   c/var/www/staging/api/virtual_environments/venv/lib/python3.9/site-packages/stripe/billing/_meter.pyCustomerMapping&   s   
r#   c                   @   s   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"   DefaultAggregation0   s   
r)   c                   @   s   e Zd ZU ee ed< dS )zMeter.StatusTransitionsZdeactivated_atN)r   r   r   r   intr    r!   r!   r!   r"   StatusTransitions6   s   
r+   c                   @   s   e Zd ZU eed< dS )zMeter.ValueSettingsr   Nr   r   r   r   r    r!   r!   r!   r"   ValueSettings<   s   
r-   c                   @   s^   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"   CreateParamsB   s   
r<   c                   @   s"   e Zd ZU eed< ed ed< dS )r/   r   r   r   Nr   r!   r!   r!   r"   CreateParamsCustomerMapping`   s   
r=   c                   @   s   e Zd ZU ed ed< dS )r1   r$   r'   Nr(   r!   r!   r!   r"   CreateParamsDefaultAggregationj   s   
r>   c                   @   s   e Zd ZU eed< dS )r:   r   Nr,   r!   r!   r!   r"   CreateParamsValueSettingsp   s   
r?   c                   @   s   e Zd ZU eee  ed< dS )Meter.DeactivateParamsr9   Nr   r   r   r   r   r   r    r!   r!   r!   r"   DeactivateParamsv   s   
rB   c                   @   sj   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.ListEventSummariesParamsZcustomerend_timeending_beforer9   limit
start_timestarting_afterr5   Zvalue_grouping_windowN)	r   r   r   r   r    r*   r   r   r   r!   r!   r!   r"   ListEventSummariesParams|   s   
rI   c                   @   sR   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.ListParamsrE   r9   rF   rH   activeZinactivestatusN)	r   r   r   r   r   r    r   r*   r   r!   r!   r!   r"   
ListParams   s   
rN   c                   @   s*   e Zd ZU ee ed< eee  ed< dS )Meter.ModifyParamsr3   r9   N)r   r   r   r   r   r    r   r!   r!   r!   r"   ModifyParams   s   
rP   c                   @   s   e Zd ZU eee  ed< dS )Meter.ReactivateParamsr9   NrA   r!   r!   r!   r"   ReactivateParams   s   
rR   c                   @   s   e Zd ZU eee  ed< dS )Meter.RetrieveParamsr9   NrA   r!   r!   r!   r"   RetrieveParams   s   
rT   createdr0   r2   r3   r4   r5   r8   idZlivemodeobjectrK   rM   status_transitionsupdatedr;   r.   )paramsreturnc                 K   s   t d| jd|  |dS )*
        Creates a billing meter.
        r   postrZ   )r   _static_request	class_urlclsrZ   r!   r!   r"   create   s    zMeter.createc                    s    t d| jd|  |dI dH S )r\   r   r]   r^   N)r   _static_request_asyncr`   ra   r!   r!   r"   create_async  s    
zMeter.create_asyncr@   )rV   rZ   r[   c                 K   s"   t d| jddjt|d|dS )
        When a meter is deactivated, no more meter events will be accepted for this meter. You can't attach a deactivated meter to a price.
        r   r]   "/v1/billing/meters/{id}/deactivaterV   r^   r   r_   formatr
   rb   rV   rZ   r!   r!   r"   _cls_deactivate  s    zMeter._cls_deactivatec                 K   s   dS rf   Nr!   rV   rZ   r!   r!   r"   
deactivate#  s    zMeter.deactivatec                 K   s   dS rm   r!   selfrZ   r!   r!   r"   ro   -  s    rl   c              	   K   s(   t d| jddjt| dd|dS )rf   r   r]   rg   rV   rh   r^   r   _requestrj   r
   getrp   r!   r!   r"   ro   6  s    c                    s(   t d| jddjt|d|dI dH S )rf   r   r]   rg   rh   r^   Nr   rd   rj   r
   rk   r!   r!   r"   _cls_deactivate_asyncH  s    
zMeter._cls_deactivate_asyncc                    s   dS rm   r!   rn   r!   r!   r"   deactivate_asyncZ  s    zMeter.deactivate_asyncc                    s   dS rm   r!   rp   r!   r!   r"   rw   d  s    rv   c              	      s.   t d| jddjt| dd|dI dH S )rf   r   r]   rg   rV   rh   r^   Nr   Z_request_asyncrj   r
   rt   rp   r!   r!   r"   rw   m  s    
rJ   c                 K   s4   | j d|  |d}t|ts0tdt|j |S )4
        Retrieve a list of billing meters.
        rt   r^   %Expected list object from API, got %s)r_   r`   
isinstancer   	TypeErrorr   r   rb   rZ   resultr!   r!   r"   list  s    
z
Meter.listc                    s:   | j d|  |dI dH }t|ts6tdt|j |S )ry   rt   r^   Nrz   )rd   r`   r{   r   r|   r   r   r}   r!   r!   r"   
list_async  s    
zMeter.list_asyncrO   c                 K   s*   d|   t|f }td| jd||dS )*
        Updates a billing meter.
        %s/%sr   r]   r^   )r`   r
   r   r_   rb   rV   rZ   urlr!   r!   r"   modify  s    zMeter.modifyc                    s0   d|   t|f }td| jd||dI dH S )r   r   r   r]   r^   N)r`   r
   r   rd   r   r!   r!   r"   modify_async  s    
zMeter.modify_asyncrQ   c                 K   s"   t d| jddjt|d|dS )}
        When a meter is reactivated, events for this meter can be accepted and you can attach the meter to a price.
        r   r]   "/v1/billing/meters/{id}/reactivaterh   r^   ri   rk   r!   r!   r"   _cls_reactivate  s    zMeter._cls_reactivatec                 K   s   dS r   Nr!   rn   r!   r!   r"   
reactivate  s    zMeter.reactivatec                 K   s   dS r   r!   rp   r!   r!   r"   r     s    r   c              	   K   s(   t d| jddjt| dd|dS )r   r   r]   r   rV   rh   r^   rr   rp   r!   r!   r"   r     s    c                    s(   t d| jddjt|d|dI dH S )r   r   r]   r   rh   r^   Nru   rk   r!   r!   r"   _cls_reactivate_async  s    
zMeter._cls_reactivate_asyncc                    s   dS r   r!   rn   r!   r!   r"   reactivate_async  s    zMeter.reactivate_asyncc                    s   dS r   r!   rp   r!   r!   r"   r     s    r   c              	      s.   t d| jddjt| dd|dI dH S )r   r   r]   r   rV   rh   r^   Nrx   rp   r!   r!   r"   r   #  s    
rS   c                 K   s   | |fi |}|   |S )8
        Retrieves a billing meter given an ID.
        )refreshrb   rV   rZ   instancer!   r!   r"   retrieve5  s    zMeter.retrievec                    s"   | |fi |}|  I dH  |S )r   N)Zrefresh_asyncr   r!   r!   r"   retrieve_async@  s    zMeter.retrieve_asyncrC   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   rt   '/v1/billing/meters/{id}/event_summariesrh   r^   )r   r   r_   rj   r
   rk   r!   r!   r"   list_event_summariesK  s    zMeter.list_event_summariesc                    s,   t td | jddjt|d|dI dH S )r   r   rt   r   rh   r^   N)r   r   rd   rj   r
   rk   r!   r!   r"   list_event_summaries_async]  s    
z Meter.list_event_summaries_async)r0   r2   rX   r;   N)6r   r   r   __doc__r   r   r   r    r   r#   r)   r+   r-   r   r<   r   r=   r>   r?   rB   rI   rN   rP   rR   rT   r*   r   r   boolclassmethodr   rc   re   rl   r   staticmethodro   r	   rv   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   Z_inner_class_typesr!   r!   r!   r"   r      s  


"


r   N) Zstripe._createable_api_resourcer   Zstripe._list_objectr   Zstripe._listable_api_resourcer   Z%stripe._nested_resource_class_methodsr   Zstripe._request_optionsr   Zstripe._stripe_objectr   Zstripe._updateable_api_resourcer   Zstripe._utilr	   r
   typingr   r   r   r   r   Ztyping_extensionsr   r   r   r   r   Z#stripe.billing._meter_event_summaryr   r   r!   r!   r!   r"   <module>   s"   
