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	 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mZ d dlmZmZmZm Z m!Z!m"Z" e"r~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, G dd ded ed e	d ed Z-e-e-j._/dS )    )CreateableAPIResource)DeletableAPIResource)ExpandableField)
ListObject)ListableAPIResource)RequestOptions)StripeObject)APIResourceTestHelpers)UpdateableAPIResource)class_method_variantsanitize_id)ClassVarDictListOptionalcastoverload)LiteralNotRequiredType	TypedDictUnpackTYPE_CHECKING)Charge)PaymentIntent)Refund)SetupIntent)Locationc                   @   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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	 ed,< 	 ee  ed-< 	 ed. ed/< 	 e ed0< 	 ee  ed1< 	 e ed2< 	 e!ed3< 	 ee"d4  ed5< 	 e#e e f ed6< 	 ed ed7< 	 e ed8< 	 eed9  ed:< 	 eed;  ed<< 	 e$d=e d>e%d? d@d fdAdBZ&e'e(d=e d>e%d? d@d fdCdDZ)e'd>e%d? d@d fdEdDZ)e*dFd>e%d? d@d fdGdDZ)e$d=e d>e%d? d@d fdHdIZ+e'e(d=e d>e%d? d@d fdJdKZ,e'd>e%d? d@d fdLdKZ,e*dMd>e%d? d@d fdNdKZ,e$d>e%dO d@d fdPdQZ-e$d>e%dO d@d fdRdSZ.e$dTe d>e%dU d@d fdVdWZ/e'e(dTe d>e%dU d@d fdXdYZ0e'd>e%dU d@d fdZdYZ0e*d[d>e%dU d@d fd\dYZ0e$dTe d>e%dU d@d fd]d^Z1e'e(dTe d>e%dU d@d fd_d`Z2e'd>e%dU d@d fdad`Z2e*dbd>e%dU d@d fdcd`Z2e$d>e%dd d@e3d  fdedfZ4e$d>e%dd d@e3d  fdgdhZ5e$d0e d>e%di d@d fdjdkZ6e$d0e d>e%di d@d fdldmZ7e$d=e d>e%dn d@d fdodpZ8e'e(d=e d>e%dn d@d fdqdrZ9e'd>e%dn d@d fdsdrZ9e*dtd>e%dn d@d fdudrZ9e$d=e d>e%dn d@d fdvdwZ:e'e(d=e d>e%dn d@d fdxdyZ;e'd>e%dn d@d fdzdyZ;e*d{d>e%dn d@d fd|dyZ;e$d=e d>e%d} d@d fd~dZ<e'e(d=e d>e%d} d@d fddZ=e'd>e%d} d@d fddZ=e*dd>e%d} d@d fddZ=e$d=e d>e%d} d@d fddZ>e'e(d=e d>e%d} d@d fddZ?e'd>e%d} d@d fddZ?e*dd>e%d} d@d fddZ?e$d=e d>e%d d@d fddZ@e'e(d=e d>e%d d@d fddZAe'd>e%d d@d fddZAe*dd>e%d d@d fddZAe$d=e d>e%d d@d fddZBe'e(d=e d>e%d d@d fddZCe'd>e%d d@d fddZCe*dd>e%d d@d fddZCe$d0e d>e%d d@d fddZDe$d0e d>e%d d@d fddZEe$d=e d>e%d d@d fddZFe'e(d=e d>e%d d@d fddZGe'd>e%d d@d fddZGe*dd>e%d d@d fddZGe$d=e d>e%d d@d fddZHe'e(d=e d>e%d d@d fddZIe'd>e%d d@d fddZIe*dd>e%d d@d fddZIG dd deJd  ZKeLdd ZMd,e	iZNdS )Readerz
    A Reader represents a physical device for accepting payment details.

    Related guide: [Connecting to a reader](https://stripe.com/docs/terminal/payments/connect-reader)
    zterminal.readerOBJECT_NAMEc                   @   s   e Zd ZU 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	 e
d	< 	 ee	 e
d
< 	 ee e
d< 	 ee e
d< 	 ee e
d< 	 ee e
d< 	 ed e
d< 	 ed e
d< 	 eeeedZdS )zReader.Actionc                   @   sB   e Zd ZU G dd deZed ed< 	 ee ed< 	 deiZdS )z"Reader.Action.ProcessPaymentIntentc                   @   sP   e Zd ZU G dd deZee ed< 	 ee ed< 	 ee ed< 	 deiZdS )z0Reader.Action.ProcessPaymentIntent.ProcessConfigc                   @      e Zd ZU ee ed< dS )z8Reader.Action.ProcessPaymentIntent.ProcessConfig.Tippingamount_eligibleN)__name__
__module____qualname__r   int__annotations__ r'   r'   W/var/www/html/Trade-python/venv/lib/python3.10/site-packages/stripe/terminal/_reader.pyTipping0      
 r)   enable_customer_cancellationskip_tippingtippingN)	r"   r#   r$   r   r)   r   boolr&   _inner_class_typesr'   r'   r'   r(   ProcessConfig/      
 r0   r   payment_intentprocess_configN)	r"   r#   r$   r   r0   r   r&   r   r/   r'   r'   r'   r(   ProcessPaymentIntent.   s   
 r4   c                   @   sP   e Zd ZU G dd deZee ed< 	 ee ed< 	 ed ed< 	 deiZ	dS )z Reader.Action.ProcessSetupIntentc                   @   r    )z.Reader.Action.ProcessSetupIntent.ProcessConfigr+   Nr"   r#   r$   r   r.   r&   r'   r'   r'   r(   r0   O   r*   r0   generated_cardr3   r   setup_intentN)
r"   r#   r$   r   r0   r   strr&   r   r/   r'   r'   r'   r(   ProcessSetupIntentN   r1   r9   c                   @   s   e Zd ZU G dd deZee ed< 	 eed  ed< 	 ee	e
e
f  ed< 	 eed  ed< 	 eed	  ed
< 	 eed  ed< 	 ee ed< 	 ee ed< 	 ee ed< 	 deiZdS )zReader.Action.RefundPaymentc                   @   r    )z/Reader.Action.RefundPayment.RefundPaymentConfigr+   Nr5   r'   r'   r'   r(   RefundPaymentConfigd   r*   r:   amountr   chargemetadatar   r2   )	duplicate
fraudulentrequested_by_customerreasonr   refundrefund_application_feerefund_payment_configreverse_transferN)r"   r#   r$   r   r:   r   r%   r&   r   r   r8   r   r.   r/   r'   r'   r'   r(   RefundPaymentc   s.   
 rF   c                   @   sB   e Zd ZU G dd deZee ed< 	 ed ed< 	 deiZdS )zReader.Action.SetReaderDisplayc                   @   sV   e Zd ZU G dd deZeed< 	 ee ed< 	 ee	 ed< 	 e	ed< 	 deiZ
dS )z#Reader.Action.SetReaderDisplay.Cartc                   @   *   e Zd ZU eed< 	 eed< 	 eed< dS )z,Reader.Action.SetReaderDisplay.Cart.LineItemr;   descriptionquantityNr"   r#   r$   r%   r&   r8   r'   r'   r'   r(   LineItem      
 rK   currency
line_itemstaxtotalN)r"   r#   r$   r   rK   r8   r&   r   r   r%   r/   r'   r'   r'   r(   Cart   s   
 rQ   carttypeN)	r"   r#   r$   r   rQ   r   r&   r   r/   r'   r'   r'   r(   SetReaderDisplay   s   
 !rT   failure_codefailure_messageprocess_payment_intentprocess_setup_intentrefund_paymentset_reader_display)failedin_progress	succeededstatus)rW   rX   rY   rZ   rS   N)r"   r#   r$   r   r4   r9   rF   rT   r   r8   r&   r   r/   r'   r'   r'   r(   Action-   s8   
  /,
r_   c                   @      e Zd ZU eee  ed< dS )Reader.CancelActionParamsexpandNr"   r#   r$   r   r   r8   r&   r'   r'   r'   r(   CancelActionParams      
 rd   c                   @   sR   e Zd ZU eee  ed< 	 ee ed< 	 ee ed< 	 ed ed< 	 eed< dS )Reader.CreateParamsrb   labellocationLiteral['']|Dict[str, str]r=   registration_codeNrc   r'   r'   r'   r(   CreateParams   s   
 rk   c                   @   s   e Zd ZdS )Reader.DeleteParamsN)r"   r#   r$   r'   r'   r'   r(   DeleteParams  s    rm   c                   @   s   e Zd ZU eed  ed< 	 ee ed< 	 eee  ed< 	 ee ed< 	 ee ed< 	 ee ed< 	 ee ed< 	 eed	  ed
< dS )Reader.ListParamsbbpos_chipper2xbbpos_wisepad3bbpos_wisepos_emobile_phone_readersimulated_wisepos_e	stripe_m2stripe_s700verifone_P400device_typeending_beforerb   limitrh   serial_numberstarting_afterofflineonliner^   N)	r"   r#   r$   r   r   r&   r8   r   r%   r'   r'   r'   r(   
ListParams	  s*   
 r   c                   @   s:   e Zd ZU eee  ed< 	 ed ed< 	 ed ed< dS )Reader.ModifyParamsrb   zLiteral['']|strrg   ri   r=   Nrc   r'   r'   r'   r(   ModifyParams6  s   
 r   c                   @   sZ   e Zd ZU ee ed< 	 ed ed< 	 eee  ed< 	 ed ed< 	 eed  ed< d	S )
!Reader.PresentPaymentMethodParams
amount_tip,Reader.PresentPaymentMethodParamsCardPresentcard_presentrb   /Reader.PresentPaymentMethodParamsInteracPresentinterac_present)r   r   rS   N)	r"   r#   r$   r   r%   r&   r   r8   r   r'   r'   r'   r(   PresentPaymentMethodParamsD  s   
 r   c                   @   r    )r   numberNr"   r#   r$   r   r8   r&   r'   r'   r'   r(   %PresentPaymentMethodParamsCardPresent^  r*   r   c                   @   r    )r   r   Nr   r'   r'   r'   r(   (PresentPaymentMethodParamsInteracPresentd  r*   r   c                   @   s6   e Zd ZU eee  ed< 	 eed< 	 ed ed< dS )!Reader.ProcessPaymentIntentParamsrb   r2   .Reader.ProcessPaymentIntentParamsProcessConfigr3   Nrc   r'   r'   r'   r(   ProcessPaymentIntentParamsj  s   
 r   c                   @   s6   e Zd ZU ee ed< 	 ee ed< 	 ed ed< dS )r   r+   r,   5Reader.ProcessPaymentIntentParamsProcessConfigTippingr-   Nr"   r#   r$   r   r.   r&   r'   r'   r'   r(   'ProcessPaymentIntentParamsProcessConfigz  s   
 r   c                   @   r    )r   r!   N)r"   r#   r$   r   r%   r&   r'   r'   r'   r(   .ProcessPaymentIntentParamsProcessConfigTipping  r*   r   c                   @   sD   e Zd ZU ee ed< 	 eee  ed< 	 ed ed< 	 eed< dS )Reader.ProcessSetupIntentParamscustomer_consent_collectedrb   ,Reader.ProcessSetupIntentParamsProcessConfigr3   r7   N)r"   r#   r$   r   r.   r&   r   r8   r'   r'   r'   r(   ProcessSetupIntentParams  s   
 r   c                   @   r    )r   r+   Nr   r'   r'   r'   r(   %ProcessSetupIntentParamsProcessConfig  r*   r   c                   @   s   e Zd ZU ee ed< 	 ee ed< 	 eee  ed< 	 eeeef  ed< 	 ee ed< 	 ee	 ed< 	 ed ed< 	 ee	 ed	< d
S )Reader.RefundPaymentParamsr;   r<   rb   r=   r2   rC   -Reader.RefundPaymentParamsRefundPaymentConfigrD   rE   N)
r"   r#   r$   r   r%   r&   r8   r   r   r.   r'   r'   r'   r(   RefundPaymentParams  s&   
 r   c                   @   r    )r   r+   Nr   r'   r'   r'   r(   &RefundPaymentParamsRefundPaymentConfig  r*   r   c                   @   r`   )Reader.RetrieveParamsrb   Nrc   r'   r'   r'   r(   RetrieveParams  re   r   c                   @   s:   e Zd ZU ed ed< 	 eee  ed< 	 ed ed< dS )Reader.SetReaderDisplayParams!Reader.SetReaderDisplayParamsCartrR   rb   rS   N)r"   r#   r$   r   r&   r   r8   r   r'   r'   r'   r(   SetReaderDisplayParams  s   
 r   c                   @   s<   e Zd ZU eed< 	 ed ed< 	 ee ed< 	 eed< dS )r   rM   )Reader.SetReaderDisplayParamsCartLineItemrN   rO   rP   N)r"   r#   r$   r8   r&   r   r   r%   r'   r'   r'   r(   SetReaderDisplayParamsCart  s   
 r   c                   @   rG   )r   r;   rH   rI   NrJ   r'   r'   r'   r(   "SetReaderDisplayParamsCartLineItem  rL   r   actiondevice_sw_versionro   rx   id
ip_addressrg   livemoder   rh   r=   objectr{   r}   r^   Tdeletedreaderparamsra   returnc                 K   "   t d| jddjt|d|dS )4
        Cancels the current reader action.
        r   post+/v1/terminal/readers/{reader}/cancel_actionr   r   r   _static_requestformatr   clsr   r   r'   r'   r(   _cls_cancel_actionF     zReader._cls_cancel_actionc                 K      dS r   Nr'   r   r   r'   r'   r(   cancel_actionX     zReader.cancel_actionc                 K   r   r   r'   selfr   r'   r'   r(   r   b     r   c              	   K   (   t d| jddjt| dd|dS )r   r   r   r   r   r   r   r   _requestr   r   getr   r'   r'   r(   r   k     c                    *   t d| jddjt|d|dI dH S )r   r   r   r   r   r   Nr   _static_request_asyncr   r   r   r'   r'   r(   _cls_cancel_action_async}     
zReader._cls_cancel_action_asyncc                       dS r   r'   r   r'   r'   r(   cancel_action_async     zReader.cancel_action_asyncc                    r   r   r'   r   r'   r'   r(   r        r   c              	      0   t d| jddjt| dd|dI dH S )r   r   r   r   r   r   r   Nr   _request_asyncr   r   r   r   r'   r'   r(   r        
rf   c                 K   s   t d| jd|  |dS ).
        Creates a new Reader object.
        r   r   r   )r   r   	class_urlr   r   r'   r'   r(   create  s   zReader.createc                    s"   t d| jd|  |dI dH S )r   r   r   r   N)r   r   r   r   r'   r'   r(   create_async  s   
zReader.create_asyncsidrl   c                 K   *   d|   t|f }td| jd||dS )*
        Deletes a Reader object.
        %s/%sr   deleter   r   r   r   r   r   r   r   urlr'   r'   r(   _cls_delete     zReader._cls_deletec                 K   r   r   Nr'   r   r   r'   r'   r(   r     s   zReader.deletec                 K   r   r   r'   r   r'   r'   r(   r     s   r   c                 K   s   | j d|  |dS )r   r   r   )_request_and_refreshinstance_urlr   r'   r'   r(   r     s
   c                    2   d|   t|f }td| jd||dI dH S )r   r   r   r   r   Nr   r   r   r   r   r'   r'   r(   _cls_delete_async     
zReader._cls_delete_asyncc                    r   r   r'   r   r'   r'   r(   delete_async  r   zReader.delete_asyncc                    r   r   r'   r   r'   r'   r(   r     r   r   c                    s   | j d|  |dI dH S )r   r   r   N)_request_and_refresh_asyncr   r   r'   r'   r(   r   #  s   rn   c                 K   s4   | j d|  |d}t|tstdt|j |S )3
        Returns a list of Reader objects.
        r   r   %Expected list object from API, got %s)r   r   
isinstancer   	TypeErrorrS   r"   r   r   resultr'   r'   r(   list0  s   
zReader.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )r   r   r   Nr   )r   r   r   r   r   rS   r"   r   r'   r'   r(   
list_asyncD  s   
zReader.list_asyncr   c                 K   r   )
        Updates a Reader object by setting the values of the parameters passed. Any parameters not provided will be left unchanged.
        r   r   r   r   r   r   r   r   r   r'   r'   r(   modifyX  r   zReader.modifyc                    r   )r   r   r   r   r   Nr   r   r'   r'   r(   modify_asynci  r   zReader.modify_asyncr   c                 K   r   )7
        Initiates a payment flow on a Reader.
        r   r   4/v1/terminal/readers/{reader}/process_payment_intentr   r   r   r   r'   r'   r(   _cls_process_payment_intentz  r   z"Reader._cls_process_payment_intentc                 K   r   r   Nr'   r   r'   r'   r(   rW     r   zReader.process_payment_intentc                 K   r   r   r'   r   r'   r'   r(   rW     r   r   c              	   K   r   )r   r   r   r   r   r   r   r   r   r'   r'   r(   rW     r   c                    r   )r   r   r   r   r   r   Nr   r   r'   r'   r(   !_cls_process_payment_intent_async  r   z(Reader._cls_process_payment_intent_asyncc                    r   r   r'   r   r'   r'   r(   process_payment_intent_async  r   z#Reader.process_payment_intent_asyncc                    r   r   r'   r   r'   r'   r(   r    r   r   c              	      r   )r   r   r   r   r   r   r   Nr   r   r'   r'   r(   r    r   r   c                 K   r   )<
        Initiates a setup intent flow on a Reader.
        r   r   2/v1/terminal/readers/{reader}/process_setup_intentr   r   r   r   r'   r'   r(   _cls_process_setup_intent  r   z Reader._cls_process_setup_intentc                 K   r   r  Nr'   r   r'   r'   r(   rX     r   zReader.process_setup_intentc                 K   r   r  r'   r   r'   r'   r(   rX     r   r  c              	   K   r   )r  r   r   r  r   r   r   r   r   r'   r'   r(   rX     r   c                    r   )r  r   r   r  r   r   Nr   r   r'   r'   r(   _cls_process_setup_intent_async  r   z&Reader._cls_process_setup_intent_asyncc                    r   r  r'   r   r'   r'   r(   process_setup_intent_async1  r   z!Reader.process_setup_intent_asyncc                    r   r  r'   r   r'   r'   r(   r  ;  r   r  c              	      r   )r  r   r   r  r   r   r   Nr   r   r'   r'   r(   r  D  r   r   c                 K   r   )0
        Initiates a refund on a Reader
        r   r   ,/v1/terminal/readers/{reader}/refund_paymentr   r   r   r   r'   r'   r(   _cls_refund_paymentV  r   zReader._cls_refund_paymentc                 K   r   r  Nr'   r   r'   r'   r(   rY   h  r   zReader.refund_paymentc                 K   r   r  r'   r   r'   r'   r(   rY   r  r   r
  c              	   K   r   )r  r   r   r	  r   r   r   r   r   r'   r'   r(   rY   {  r   c                    r   )r  r   r   r	  r   r   Nr   r   r'   r'   r(   _cls_refund_payment_async  r   z Reader._cls_refund_payment_asyncc                    r   r  r'   r   r'   r'   r(   refund_payment_async  r   zReader.refund_payment_asyncc                    r   r  r'   r   r'   r'   r(   r    r   r  c              	      r   )r  r   r   r	  r   r   r   Nr   r   r'   r'   r(   r    r   r   c                 K   s   | |fi |}|   |S ),
        Retrieves a Reader object.
        )refreshr   r   r   instancer'   r'   r(   retrieve  s   zReader.retrievec                    s$   | |fi |}|  I dH  |S )r  N)refresh_asyncr  r'   r'   r(   retrieve_async  s   zReader.retrieve_asyncr   c                 K   r   );
        Sets reader display to show cart details.
        r   r   0/v1/terminal/readers/{reader}/set_reader_displayr   r   r   r   r'   r'   r(   _cls_set_reader_display  r   zReader._cls_set_reader_displayc                 K   r   r  Nr'   r   r'   r'   r(   rZ     r   zReader.set_reader_displayc                 K   r   r  r'   r   r'   r'   r(   rZ     r   r  c              	   K   r   )r  r   r   r  r   r   r   r   r   r'   r'   r(   rZ     r   c                    r   )r  r   r   r  r   r   Nr   r   r'   r'   r(   _cls_set_reader_display_async  r   z$Reader._cls_set_reader_display_asyncc                    r   r  r'   r   r'   r'   r(   set_reader_display_async#  r   zReader.set_reader_display_asyncc                    r   r  r'   r   r'   r'   r(   r  -  r   r  c              	      r   )r  r   r   r  r   r   r   Nr   r   r'   r'   r(   r  6  r   c                   @   s
  e Zd ZU ed ed< 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ddZdS )zReader.TestHelpersr   _resource_clsr   r   r   r   c                 K   r   )
            Presents a payment method on a simulated reader. Can be used to simulate accepting a payment, saving a card or refunding a transaction.
            r   r   A/v1/test_helpers/terminal/readers/{reader}/present_payment_methodr   r   r   r   r'   r'   r(   _cls_present_payment_methodK  s   	z.Reader.TestHelpers._cls_present_payment_methodc                 K   r   r  Nr'   r   r'   r'   r(   present_payment_method_  r   z)Reader.TestHelpers.present_payment_methodc                 K   r   r  r'   r   r'   r'   r(   r   i  r   r  c              	   K   s,   t d| jjddjt| jdd|dS )r  r   r   r  r   r   r   )r   resourcer   r   r   r   r   r'   r'   r(   r   r  s   c                    r   )r  r   r   r  r   r   Nr   r   r'   r'   r(   !_cls_present_payment_method_async  s   	
z4Reader.TestHelpers._cls_present_payment_method_asyncc                    r   r  r'   r   r'   r'   r(   present_payment_method_async  r   z/Reader.TestHelpers.present_payment_method_asyncc                    r   r  r'   r   r'   r'   r(   r#    r   r"  c              	      s4   t d| jjddjt| jdd|dI dH S )r  r   r   r  r   r   r   N)r   r!  r   r   r   r   r   r'   r'   r(   r#    s   
N)r"   r#   r$   r   r&   classmethodr8   r   r  r   staticmethodr   r   r"  r#  r'   r'   r'   r(   TestHelpersH  sx   
 r&  c                 C   s
   |  | S )N)r&  )r   r'   r'   r(   test_helpers  s   
zReader.test_helpersN)Or"   r#   r$   __doc__r   r   r   r&   r   r_   r   rd   rk   rm   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   r.   r   r   r$  r   r   r   r%  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rW   r   r  r  rX   r  r  r
  rY   r  r  r  r  r  rZ   r  r  r	   r&  propertyr'  r/   r'   r'   r'   r(   r      s|  
  >-$


u
r   N)0stripe._createable_api_resourcer   stripe._deletable_api_resourcer   stripe._expandable_fieldr   stripe._list_objectr   stripe._listable_api_resourcer   stripe._request_optionsr   stripe._stripe_objectr   stripe._test_helpersr	   stripe._updateable_api_resourcer
   stripe._utilr   r   typingr   r   r   r   r   r   typing_extensionsr   r   r   r   r   r   stripe._charger   stripe._payment_intentr   stripe._refundr   stripe._setup_intentr   stripe.terminal._locationr   r   r&  r  r'   r'   r'   r(   <module>   sH     	
           0