o
    Âi`<  ã                   @   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$   úu/var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/env/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|  d¡ƒd|dƒS )rO   r   rE   rP   r9   rQ   rF   ©r   Ú_requestrS   r	   Ú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                 Ë   rh   rX   r$   r\   r$   r$   r%   ri   â   ó   €rf   c              	   Ë   ó0   t d| jddjt|  d¡ƒd|dI dH ƒS )rO   r   rE   rP   r9   rQ   rF   N©r   Ú_request_asyncrS   r	   rb   r\   r$   r$   r%   ri   ë   ó   €ÿ
ûþr   c                 K   s4   | j d|  ¡ |d}t|tƒstdt|ƒj ƒ‚|S )ú4
        Retrieve a list of billing meters.
        rb   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 )rp   rb   rF   Nrq   )rL   rH   rr   r   rs   r   r   rt   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 )rx   ry   r   rE   rF   N)rH   r	   r   rL   rz   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  rc   c                 Ë   rd   )r~   r   rE   r   rQ   rF   Nre   rT   r$   r$   r%   Ú_cls_reactivate_asyncx  rg   zMeter._cls_reactivate_asyncc                 Ë   rh   r   r$   rY   r$   r$   r%   Úreactivate_asyncŠ  rj   zMeter.reactivate_asyncc                 Ë   rh   r   r$   r\   r$   r$   r%   r„   ”  rk   rƒ   c              	   Ë   rl   )r~   r   rE   r   r9   rQ   rF   Nrm   r\   r$   r$   r%   r„     ro   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   rb   ú'/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   rb   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   rf   ri   r   rv   rw   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   

ý