o
    Bi0                     @   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mZ er:d dlmZ G dd	 d	ed	 Zd
S )    )CreateableAPIResource)ExpandableField)RequestOptions)StripeObject)ClassVarListOptionalcast)LiteralNotRequired	TypedDictUnpackTYPE_CHECKING)Customerc                   @   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eed< 	 ee	 ed< 	 eed< 	 ed ed< 	 eed< 	 eed< 	 ed ed< 	 eded dd fddZeded dd fdd Zde	iZd!S )"CustomerSessiona  
    A Customer Session allows you to grant Stripe's frontend SDKs (like Stripe.js) client-side access
    control over a Customer.

    Related guides: [Customer Session with the Payment Element](https://stripe.com/payments/accept-a-payment-deferred?platform=web&type=payment#save-payment-methods),
    [Customer Session with the Pricing Table](https://stripe.com/payments/checkout/pricing-table#customer-session),
    [Customer Session with the Buy Button](https://stripe.com/payment-links/buy-button#pass-an-existing-customer).
    customer_sessionOBJECT_NAMEc                   @   sh   e Zd ZU 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ed
ZdS )zCustomerSession.Componentsc                   @      e Zd ZU eed< dS )z$CustomerSession.Components.BuyButtonenabledN__name__
__module____qualname__bool__annotations__ r   r   X/var/www/html/Trade-python/venv/lib/python3.10/site-packages/stripe/_customer_session.py	BuyButton!      
 r   c                   @   s>   e Zd ZU G dd deZeed< 	 ee ed< 	 deiZdS )z)CustomerSession.Components.PaymentElementc                   @   sh   e Zd ZU eed  ed< 	 ed ed< 	 ee ed< 	 ed ed< 	 ed ed< 	 eed  ed	< d
S )z2CustomerSession.Components.PaymentElement.Featuresalwayslimitedunspecified&payment_method_allow_redisplay_filtersdisabledr   payment_method_redisplaypayment_method_redisplay_limitpayment_method_removepayment_method_saveoff_session
on_sessionpayment_method_save_usageN)r   r   r   r   r
   r   r   intr   r   r   r   Features(   s"   
 r/   r   featuresN)	r   r   r   r   r/   r   r   r   _inner_class_typesr   r   r   r   PaymentElement'   s   
 &r2   c                   @   r   )z'CustomerSession.Components.PricingTabler   Nr   r   r   r   r   PricingTableX   r   r3   
buy_buttonpayment_elementpricing_table)r4   r5   r6   N)	r   r   r   r   r   r2   r3   r   r1   r   r   r   r   
Components    s   
 1
r7   c                   @   s2   e Zd ZU ded< 	 eed< 	 eee  ed< dS )CustomerSession.CreateParams&CustomerSession.CreateParamsComponents
componentscustomerexpandN)r   r   r   r   strr   r   r   r   r   r   CreateParamsp   s   
 r>   c                   @   s6   e Zd ZU ed ed< 	 ed ed< 	 ed ed< dS )r9   /CustomerSession.CreateParamsComponentsBuyButtonr4   4CustomerSession.CreateParamsComponentsPaymentElementr5   2CustomerSession.CreateParamsComponentsPricingTabler6   N)r   r   r   r   r   r   r   r   r   CreateParamsComponents~   s   
 rB   c                   @   r   )r?   r   Nr   r   r   r   r   CreateParamsComponentsBuyButton   r   rC   c                   @   s$   e Zd ZU eed< 	 ed ed< dS )r@   r   <CustomerSession.CreateParamsComponentsPaymentElementFeaturesr0   N)r   r   r   r   r   r   r   r   r   r   $CreateParamsComponentsPaymentElement   s   
 rE   c                   @   sx   e Zd ZU eeed   ed< 	 eed  ed< 	 ee ed< 	 eed  ed< 	 eed  ed< 	 eed  ed	< d
S )rD   r   r#   r$   r&   r'   r(   r)   r*   r-   N)r   r   r   r   r   r
   r   r.   r   r   r   r   ,CreateParamsComponentsPaymentElementFeatures   s"   
 
rF   c                   @   r   )rA   r   Nr   r   r   r   r   "CreateParamsComponentsPricingTable   r   rG   client_secretr:   createdr   r;   
expires_atlivemodeobjectparamsr8   returnc                 K   s   t d| jd|  |dS )
        Creates a Customer Session object that includes a single-use client secret that you can use on your front-end to grant client-side API access for certain customer resources.
        r   postrM   )r	   _static_request	class_urlclsrM   r   r   r   create   s   zCustomerSession.createc                    s"   t d| jd|  |dI dH S )rO   r   rP   rQ   N)r	   _static_request_asyncrS   rT   r   r   r   create_async   s   
zCustomerSession.create_asyncN)r   r   r   __doc__r   r   r
   r   r   r7   r   r>   r   rB   rC   rE   rF   rG   r=   r   r.   r   r   classmethodr   rV   rX   r1   r   r   r   r   r      sJ   
 	P&r   N)stripe._createable_api_resourcer   stripe._expandable_fieldr   stripe._request_optionsr   stripe._stripe_objectr   typingr   r   r   r	   typing_extensionsr
   r   r   r   r   stripe._customerr   r   r   r   r   r   <module>   s   