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 d dlmZmZmZmZ er6d dlmZ G dd	 d	ed	 Zd
S )    )APIResource)ExpandableField)RequestOptions)StripeObject)ClassVarListOptional)LiteralNotRequiredUnpackTYPE_CHECKING)PaymentMethodc                   @   sB  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e	ed< eed< 	 eed< 	 ee
 ed< ed ed< 	 ee ed< 	 ed ed< 	 eed< ee ed< ed ed< 	 ed ed< 	 ededed dd fdd Zededed dd fd!d"Ze	e
eed#Zd$S )%Mandatezm
    A Mandate is a record of the permission that your customer gives you to debit their payment method.
    mandateOBJECT_NAMEc                   @   sl   e Zd ZU 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	d ed	< 	 eedZ
d
S )zMandate.CustomerAcceptancec                   @      e Zd ZdS )z"Mandate.CustomerAcceptance.OfflineN__name__
__module____qualname__ r   r   O/var/www/html/Trade-python/venv/lib/python3.10/site-packages/stripe/_mandate.pyOffline       r   c                   @   (   e Zd ZU ee ed< 	 ee ed< dS )z!Mandate.CustomerAcceptance.Online
ip_address
user_agentNr   r   r   r   str__annotations__r   r   r   r   Online   
   
 r    accepted_atofflineonline)r#   r$   typeN)r   r   r   r   r   r    r   intr   r	   _inner_class_typesr   r   r   r   CustomerAcceptance   s   
 
r(   c                   @   r   )zMandate.MultiUseNr   r   r   r   r   MultiUse/   r   r)   c                   @   sh  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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e ed< 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e ed < eed!< 	 ee ed"< eeeeee	e
eeeed#Zd$S )%zMandate.PaymentMethodDetailsc                   @   sL   e Zd ZU eeed   ed< 	 ee ed< 	 ed ed< 	 ed ed< dS )	z&Mandate.PaymentMethodDetails.AcssDebit)invoicesubscriptiondefault_forinterval_description)combinedintervalsporadicpayment_schedule)businesspersonaltransaction_typeN)r   r   r   r   r   r	   r   r   r   r   r   r   	AcssDebit3   s   
 r5   c                   @   r   )z&Mandate.PaymentMethodDetails.AmazonPayNr   r   r   r   r   	AmazonPayE   r   r6   c                   @   s   e Zd ZU eed< dS )z(Mandate.PaymentMethodDetails.AuBecsDebiturlNr   r   r   r   r   r   r   r   r   AuBecsDebitH   s   
 r9   c                   @   s@   e Zd ZU ed ed< 	 eed< 	 eed  ed< 	 eed< dS )z&Mandate.PaymentMethodDetails.BacsDebit)acceptedpendingrefusedrevokednetwork_status	reference)account_closedbank_account_restrictedbank_ownership_changedcould_not_processdebit_not_authorizedrevocation_reasonr7   N)r   r   r   r	   r   r   r   r   r   r   r   	BacsDebitN   s   
 	rF   c                   @   r   )z!Mandate.PaymentMethodDetails.CardNr   r   r   r   r   Cardj   r   rG   c                   @   r   )z$Mandate.PaymentMethodDetails.CashappNr   r   r   r   r   Cashappm   r   rH   c                   @   r   )z!Mandate.PaymentMethodDetails.LinkNr   r   r   r   r   Linkp   r   rI   c                   @   r   )z#Mandate.PaymentMethodDetails.Paypalbilling_agreement_idpayer_idNr   r   r   r   r   Paypals   r!   rL   c                   @   r   )z'Mandate.PaymentMethodDetails.RevolutPayNr   r   r   r   r   
RevolutPay}   r   rM   c                   @   s    e Zd ZU eed< 	 eed< dS )z&Mandate.PaymentMethodDetails.SepaDebitr?   r7   Nr8   r   r   r   r   	SepaDebit   
   
 rN   c                   @   s   e Zd ZU eed  ed< dS )z*Mandate.PaymentMethodDetails.UsBankAccountpapercollection_methodN)r   r   r   r   r	   r   r   r   r   r   UsBankAccount      
 rR   
acss_debit
amazon_payau_becs_debit
bacs_debitcardcashapplinkpaypalrevolut_pay
sepa_debitr%   us_bank_account)rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   N)r   r   r   r   r5   r6   r9   rF   rG   rH   rI   rL   rM   rN   rR   r   r   r   r'   r   r   r   r   PaymentMethodDetails2   sJ   
 


r_   c                   @   s    e Zd ZU eed< 	 eed< dS )zMandate.SingleUseamountcurrencyN)r   r   r   r&   r   r   r   r   r   r   	SingleUse   rO   rb   c                   @   s   e Zd ZU eee  ed< dS )Mandate.RetrieveParamsexpandN)r   r   r   r
   r   r   r   r   r   r   r   RetrieveParams   rS   re   customer_acceptanceidlivemode	multi_useobjecton_behalf_ofr   payment_methodpayment_method_details
single_use)activeinactiver;   status)ri   rn   r%   paramsrc   returnc                 K   s   | |fi |}|   |S )-
        Retrieves a Mandate object.
        )refreshclsrg   rr   instancer   r   r   retrieve   s   zMandate.retrievec                    s$   | |fi |}|  I dH  |S )rt   N)refresh_asyncrv   r   r   r   retrieve_async   s   zMandate.retrieve_async)rf   ri   rm   rn   N)r   r   r   __doc__r   r   r	   r   r   r(   r)   r_   rb   r   re   r   boolr   r   classmethodr   ry   r{   r'   r   r   r   r   r      s^   
 {


r   N)stripe._api_resourcer   stripe._expandable_fieldr   stripe._request_optionsr   stripe._stripe_objectr   typingr   r   r   typing_extensionsr	   r
   r   r   stripe._payment_methodr   r   r   r   r   r   <module>   s   