o
    L)jz<                     @   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 d d	lmZmZmZ ertd 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' edG dd ded ed ed Z(dS )    )CreateableAPIResource)
ListObject)ListableAPIResource)nested_resource_class_methods)StripeObject)UpdateableAPIResource)class_method_variantsanitize_id)ClassVarOptionalcastoverload)LiteralUnpackTYPE_CHECKING)MeterEventSummary)MeterCreateParams)MeterDeactivateParams)MeterListEventSummariesParams)MeterListParams)MeterModifyParams)MeterReactivateParams)MeterRetrieveParams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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d dd fddZ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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d0d-Zeded1 ded  fd2d3Zeded1 ded  fd4d5Zededed6 dd fd7d8Zededed6 dd fd9d: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dAded; dd fdBd?Z"ededed; dd fdCdDZ#eededed; dd fdEdFZ$eded; dd fdGdFZ$edHded; dd fdIdFZ$edededJ dd fdKdLZ%edededJ dd fdMdNZ&edededO dedP fdQdRZ'edededO dedP fdSdTZ(e	e
eedUZ)dVS )W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$   z/var/www/html/finance-dev.cargoinsureonline.com/_shared/backend-venv/lib/python3.10/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lastsumformulaN)r   r    r!   r   r#   r$   r$   r$   r%   DefaultAggregation8      
 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%   StatusTransitions>   r,   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%   ValueSettingsD   s   
 r0   createdcustomer_mappingdefault_aggregationdisplay_name
event_name)dayhourevent_time_windowidlivemodeobject)activeinactivestatusstatus_transitionsupdatedvalue_settingsparamsr   returnc                 K   s   t d| jd|  |dS )*
        Creates a billing meter.
        r   postrB   )r   _static_request	class_urlclsrB   r$   r$   r%   creates   s   zMeter.createc                    s"   t d| jd|  |dI dH S )rD   r   rE   rF   N)r   _static_request_asyncrH   rI   r$   r$   r%   create_async   s   
zMeter.create_asyncr   c                 K   "   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   rE   "/v1/billing/meters/{id}/deactivater9   rF   r   rG   formatr	   rJ   r9   rB   r$   r$   r%   _cls_deactivate      zMeter._cls_deactivatec                 K      dS rO   Nr$   r9   rB   r$   r$   r%   
deactivate      zMeter.deactivatec                 K   rW   rX   r$   selfrB   r$   r$   r%   rZ         rU   c              	   K   *   t d| jddjt| jdd|dS )rO   r   rE   rP   r9   rQ   rF   r   _requestrS   r	   _datagetr\   r$   r$   r%   rZ         c                    *   t d| jddjt|d|dI dH S )rO   r   rE   rP   rQ   rF   Nr   rL   rS   r	   rT   r$   r$   r%   _cls_deactivate_async      
zMeter._cls_deactivate_asyncc                       dS rX   r$   rY   r$   r$   r%   deactivate_async      zMeter.deactivate_asyncc                    ri   rX   r$   r\   r$   r$   r%   rj         rg   c              	      2   t d| jddjt| jdd|dI dH S )rO   r   rE   rP   r9   rQ   rF   Nr   _request_asyncrS   r	   rb   rc   r\   r$   r$   r%   rj         
r   c                 K   s4   | j d|  |d}t|tstdt|j |S )4
        Retrieve a list of billing meters.
        rc   rF   %Expected list object from API, got %s)rG   rH   
isinstancer   	TypeErrorr   r   rJ   rB   resultr$   r$   r%   list   s   
z
Meter.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )rq   rc   rF   Nrr   )rL   rH   rs   r   rt   r   r   ru   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   rE   rF   )rH   r	   r   rG   rJ   r9   rB   urlr$   r$   r%   modify#  s   zMeter.modifyc                    s2   d|   t|f }td| jd||dI dH S )ry   rz   r   rE   rF   N)rH   r	   r   rL   r{   r$   r$   r%   modify_async2  s   
zMeter.modify_asyncr   c                 K   rN   )}
        When a meter is reactivated, events for this meter can be accepted and you can attach the meter to a price.
        r   rE   "/v1/billing/meters/{id}/reactivaterQ   rF   rR   rT   r$   r$   r%   _cls_reactivateC  rV   zMeter._cls_reactivatec                 K   rW   r   Nr$   rY   r$   r$   r%   
reactivateU  r[   zMeter.reactivatec                 K   rW   r   r$   r\   r$   r$   r%   r   _  r^   r   c              	   K   r_   )r   r   rE   r   r9   rQ   rF   r`   r\   r$   r$   r%   r   f  rd   c                    re   )r   r   rE   r   rQ   rF   Nrf   rT   r$   r$   r%   _cls_reactivate_asyncx  rh   zMeter._cls_reactivate_asyncc                    ri   r   r$   rY   r$   r$   r%   reactivate_async  rk   zMeter.reactivate_asyncc                    ri   r   r$   r\   r$   r$   r%   r     rl   r   c              	      rm   )r   r   rE   r   r9   rQ   rF   Nrn   r\   r$   r$   r%   r     rp   r   c                 K   s   | |fi |}|   |S )8
        Retrieves a billing meter given an ID.
        )refreshrJ   r9   rB   instancer$   r$   r%   retrieve  s   zMeter.retrievec                    s$   | |fi |}|  I dH  |S )r   N)refresh_asyncr   r$   r$   r%   retrieve_async  s   zMeter.retrieve_asyncr   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   rc   '/v1/billing/meters/{id}/event_summariesrQ   rF   )r   r   rG   rS   r	   rT   r$   r$   r%   list_event_summaries  s   zMeter.list_event_summariesc                    s.   t td | jddjt|d|dI dH S )r   r   rc   r   rQ   rF   N)r   r   rL   rS   r	   rT   r$   r$   r%   list_event_summaries_async  s   
z Meter.list_event_summaries_async)r2   r3   r?   rA   N)*r   r    r!   __doc__r   r
   r   r#   r   r&   r+   r/   r0   r.   r"   r   boolclassmethodr   rK   rM   rU   r   staticmethodrZ   r   rg   rj   r   rw   rx   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._stripe_objectr   stripe._updateable_api_resourcer   stripe._utilr   r	   typingr
   r   r   r   typing_extensionsr   r   r   #stripe.billing._meter_event_summaryr   *stripe.params.billing._meter_create_paramsr   .stripe.params.billing._meter_deactivate_paramsr   8stripe.params.billing._meter_list_event_summaries_paramsr   (stripe.params.billing._meter_list_paramsr   *stripe.params.billing._meter_modify_paramsr   .stripe.params.billing._meter_reactivate_paramsr   ,stripe.params.billing._meter_retrieve_paramsr   r   r$   r$   r$   r%   <module>   s0   

