o
    Bi                     @   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	m
Z
mZmZ d dlmZmZmZmZ er8d dlmZ G dd	 d	ed	 Zd
S )    )
ListObject)ListableAPIResource)RequestOptions)StripeObject)ClassVarDictListOptional)LiteralNotRequiredUnpackTYPE_CHECKING)Supplierc                   @   sD  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eed
< 	 eee	f ed< 	 ee ed< 	 eed< 	 eed< 	 eed< 	 eed< 	 ed ed< 	 ed ed< 	 eded ded  fddZeded ded  fddZededed dd fddZededed dd fddZde	iZd S )!Productz
    A Climate product represents a type of carbon removal unit available for reservation.
    You can retrieve it to see the current price and availability.
    zclimate.productOBJECT_NAMEc                   @   s*   e Zd ZU eed< 	 eed< 	 eed< dS )z!Product.CurrentPricesPerMetricTonamount_feesamount_subtotalamount_totalN)__name__
__module____qualname__int__annotations__ r   r   W/var/www/html/Trade-python/venv/lib/python3.10/site-packages/stripe/climate/_product.pyCurrentPricesPerMetricTon   s   
 r   c                   @   sH   e Zd ZU ee ed< 	 eee  ed< 	 ee ed< 	 ee ed< dS )Product.ListParamsending_beforeexpandlimitstarting_afterN)r   r   r   r   strr   r   r   r   r   r   r   
ListParams$   s   
 r"   c                   @   s   e Zd ZU eee  ed< dS )Product.RetrieveParamsr   N)r   r   r   r   r   r!   r   r   r   r   r   RetrieveParams6   s   
 r$   createdcurrent_prices_per_metric_tondelivery_yearidlivemodemetric_tons_availablenameobjectr   	suppliersparamsr   returnc                 K   s4   | j d|  |d}t|tstdt|j |S )>
        Lists all available Climate product objects.
        getr.   %Expected list object from API, got %s)_static_request	class_url
isinstancer   	TypeErrortyper   clsr.   resultr   r   r   listc   s   
zProduct.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )r0   r1   r2   Nr3   )_static_request_asyncr5   r6   r   r7   r8   r   r9   r   r   r   
list_asyncw   s   
zProduct.list_asyncr#   c                 K   s   | |fi |}|   |S )O
        Retrieves the details of a Climate product with the given ID.
        )refreshr:   r(   r.   instancer   r   r   retrieve   s   zProduct.retrievec                    s$   | |fi |}|  I dH  |S )r?   N)refresh_asyncrA   r   r   r   retrieve_async   s   zProduct.retrieve_asyncN)r   r   r   __doc__r   r   r
   r   r   r   r   r"   r$   r   r   r!   r	   boolr   classmethodr   r   r<   r>   rC   rE   _inner_class_typesr   r   r   r   r      sl   
 
r   N)stripe._list_objectr   stripe._listable_api_resourcer   stripe._request_optionsr   stripe._stripe_objectr   typingr   r   r   r	   typing_extensionsr
   r   r   r   stripe.climate._supplierr   r   r   r   r   r   <module>   s   