a
    !fm                    @   s  d dl mZ d dlmZmZmZmZmZmZ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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% d dl&m'Z' e%rnd dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z? d dl@mAZA e	de	de	de	dG dd ded ed ed ed ed ZBeBeBjC_DdS )     )util)APIResourceTestHelpersCreateableAPIResourceDeletableAPIResourceListableAPIResourceSearchableAPIResourceUpdateableAPIResourcenested_resource_class_methods)ExpandableField)
ListObject)SearchResultObject)RequestOptions)StripeObject)class_method_variant)ClassVarDictIteratorListOptionalUnioncastoverload)LiteralNotRequiredType	TypedDictUnpackTYPE_CHECKING)
quote_plus)Account)BankAccount)Card)CashBalance)CustomerBalanceTransaction)CustomerCashBalanceTransaction)Discount)FundingInstructions)PaymentMethod)Source)Subscription)TaxId)	TestClockZbalance_transactionZcash_balance_transactionsourceZtax_idc                   @   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G d,d- d-eZG d.d/ d/eZ G d0d1 d1eZ!G d2d3 d3eZ"G d4d5 d5eZ#G d6d7 d7eZ$G d8d9 d9eZ%G d:d; d;eZ&G d<d= d=eZ'G d>d? d?eZ(G d@dA dAeZ)G dBdC dCeZ*G dDdE dEeZ+G dFdG dGeZ,G dHdI dIeZ-G dJdK dKeZ.G dLdM dMeZ/G dNdO dOeZ0G dPdQ dQeZ1G dRdS dSeZ2G dTdU dUeZ3G dVdW dWeZ4G dXdY dYeZ5G dZd[ d[eZ6G d\d] d]eZ7G d^d_ d_eZ8G d`da daeZ9G dbdc dceZ:G ddde deeZ;G dfdg dgeZ<G dhdi dieZ=G djdk dkeZ>G dldm dmeZ?G dndo doeZ@G dpdq dqeZAG drds dseZBG dtdu dueZCeDe	 edv< eDeE edw< eDdx edy< eEedz< eDeF ed{< eDeGeHd|   ed}< eDeI ed~< eDeF ed< eDd ed< eDeF ed< eFed< eDeJeFeEf  ed< eDeF ed< eDe
 ed< eIed< eDeJeFeFf  ed< eDeF ed< eDeE ed< ed ed< eDeF ed< eDeKeF  ed< eDe ed< eDeLeHd|   ed< eDeLd  ed< eDe ed< eDed  ed< eDeLd  ed< eDeGd  ed< eDed  ed< eMdeDeF eDeF eDeF eDeF eNd d dddZOeMdeFeDeF eDeF eDeF eNd ddddZPeQeRdeFeDeF eDeF eDeF eNd ddddZSeQd eDeF eNd ddddZSeTdd!eDeF eNd ddddZSeMeFeNd d dddZUeQeReFeNd d dddZVeQeNd d dddZVeTdeNd d dddZVeMd"eFeDeF eDeF eDeF eNd ddddZWeQeRd#eFeDeF eDeF eDeF eNd ddddZXeQd$eDeF eNd ddddZXeTdd%eDeF eNd ddddZXeMd&eDeF eDeF eDeF eNd eLd  dddZYeMd'eFeDeF eDeF eDeF eNd eLd dddĄZZeQeRd(eFeDeF eDeF eDeF eNd eLd dddƄZ[eQd)eDeF eNd eLd dddƄZ[eTdȃd*eDeF eNd eLd dddƄZ[eMeFeNd d d˜dd̈́Z\eMeFeNd d d˜ddЄZ]eMd+eFeFeDeF eDeF eDeF eNd ddҜddԄZ^eQeRd,eFeFeDeF eDeF eDeF eNd ddҜddքZ_eQd-eFeDeF eNd ddלddքZ_eTdكd.eFeDeF eNd ddלddքZ_eMeNd e`d  dܜddބZaeMeNd ebd  dܜddZceMd/eFeDeF eDeF eDeF eNd ddddZdeMd0eFeFeDeF eDeF eDeF eNd ddddZeeMd1eFeFeDeF eDeF eDeF eNd ddddZfeMd2eFeDeF eDeF eDeF eNd eLd dddZgeMd3eFeFeDeF eDeF eDeF eNd ddddZheMd4eFeDeF eDeF eDeF eNd eLd dddZieMd5eFeDeF eDeF eDeF eNd eHd| dddZjeMd6eFeFeDeF eDeF eDeF eNd eHd| dddZkeMd7eFeFeDeF eDeF eDeF eNd eHd| dddZleMd8eFeFeDeF eDeF eDeF eNd  eHd| dddZmeMd9eFeDeF eDeF eDeF eNd eLeHd|  dddZneMd:eFeDeF eDeF eDeF eNd ddddZoeMd;eFeFeDeF eDeF eDeF eNd	 ddd
dZpeMd<eFeFeDeF eDeF eDeF eNd ddddZqeMd=eFeDeF eDeF eDeF eNd eLd dddZreMd>eFeDeF eDeF eDeF eNd dxdddZseMd?eFeDeF eDeF eDeF eNd dxdddZtG dd deud  Zvewdd Zxe	e
eedZydS (@  Customerz
    This object represents a customer of your business. Use it to create recurring charges and track payments that belong to the same customer.

    Related guide: [Save a card during payment](https://stripe.com/docs/payments/save-during-payment)
    customerOBJECT_NAMEc                   @   sV   e Zd ZU ee ed< ee ed< ee ed< ee ed< ee ed< ee ed< dS )zCustomer.Addresscitycountryline1line2postal_codestateN__name__
__module____qualname__r   str__annotations__ r<   r<   ^/var/www/html/python-backend/venv/lib/python3.9/site-packages/stripe/api_resources/customer.pyAddressN   s   
r>   c                   @   sp   e Zd ZU G dd deZG dd deZeee  ed< ee	d  ed< ee
 ed< ee ed	< eed
ZdS )zCustomer.InvoiceSettingsc                   @   s   e Zd ZU eed< eed< dS )z$Customer.InvoiceSettings.CustomFieldnamevalueNr7   r8   r9   r:   r;   r<   r<   r<   r=   CustomFieldi   s   
rB   c                   @   s   e Zd ZU ee ed< dS )z)Customer.InvoiceSettings.RenderingOptionsamount_tax_displayNr6   r<   r<   r<   r=   RenderingOptionss   s   
rD   custom_fieldsr'   default_payment_methodfooterrendering_options)rE   rH   N)r7   r8   r9   r   rB   rD   r   r   r;   r
   r:   _inner_class_typesr<   r<   r<   r=   InvoiceSettingsh   s   

rJ   c                   @   sb   e Zd ZU 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< deiZdS )	zCustomer.Shippingc                   @   sV   e Zd ZU ee ed< ee ed< ee ed< ee ed< ee ed< ee ed< dS )zCustomer.Shipping.Addressr0   r1   r2   r3   r4   r5   Nr6   r<   r<   r<   r=   r>      s   
r>   addressZcarrierr?   phoneZtracking_numberN)	r7   r8   r9   r   r>   r   r;   r:   rI   r<   r<   r<   r=   Shipping   s   
rM   c                   @   sJ   e Zd ZU G dd deZed ed< ee ed< ee ed< deiZ	dS )zCustomer.Taxc                   @   s.   e Zd ZU eed< ed ed< ee ed< dS )zCustomer.Tax.Locationr1   )Zbilling_address
ip_addresspayment_methodZshipping_destinationr,   r5   N)r7   r8   r9   r:   r;   r   r   r<   r<   r<   r=   Location   s   
	rP   )failedZnot_collecting	supportedZunrecognized_locationZautomatic_taxrN   locationN)
r7   r8   r9   r   rP   r   r;   r   r:   rI   r<   r<   r<   r=   Tax   s   
rT   c                   @   s"  e Zd ZU ed ed< ed ed< ed ed< ed ed< ed ed	< ed ed
< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed < ed ed!< ed" ed#< d$S )%Customer.CreateParamsz(Literal['']|Customer.CreateParamsAddressrK   intbalance Customer.CreateParamsCashBalancecash_balancer:   coupondescriptionemail	List[str]expandinvoice_prefix$Customer.CreateParamsInvoiceSettingsinvoice_settingsLiteral['']|Dict[str, str]metadatar?   next_invoice_sequencerO   rL   preferred_localespromotion_codez)Literal['']|Customer.CreateParamsShippingshippingr,   Customer.CreateParamsTaxtax0Literal['']|Literal['exempt', 'none', 'reverse']
tax_exemptz%List[Customer.CreateParamsTaxIdDatum]Ztax_id_data
test_clockboolvalidateNr7   r8   r9   r   r;   r<   r<   r<   r=   CreateParams   s2   
rp   c                   @   s"   e Zd ZU ed ed< eed< dS )zCustomer.CreateParamsTaxIdDatumBZad_nrtZae_trnZar_cuitZau_abnZau_arnZbg_uicZbo_tinZbr_cnpjZbr_cpfZca_bnZ
ca_gst_hstZ	ca_pst_bcZ	ca_pst_mbZ	ca_pst_skZca_qstZch_vatZcl_tinZcn_tinZco_nitZcr_tinZdo_rcnZec_rucZeg_tinZes_cifZ
eu_oss_vatZeu_vatZgb_vatZge_vatZhk_brZhu_tinZid_npwpZil_vatZin_gstZis_vatZjp_cnZjp_rnZjp_trnZke_pinZkr_brnZli_uidZmx_rfcZmy_frpZmy_itnZmy_sstZno_vatZnz_gstZpe_rucZph_tinZro_tinZrs_pibZru_innZru_kppZsa_vatZsg_gstZsg_uenZsi_tinZsv_nitZth_vatZtr_tinZtw_vatZua_vatZus_einZuy_rucZve_rifZvn_tinZza_vattyper@   N)r7   r8   r9   r   r;   r:   r<   r<   r<   r=   CreateParamsTaxIdDatum4  s
   
Grs   c                   @   s&   e Zd ZU ed ed< ed ed< dS )rh   Literal['']|strrN   "Literal['deferred', 'immediately']validate_locationNro   r<   r<   r<   r=   CreateParamsTax  s   
rw   c                   @   s*   e Zd ZU ded< eed< ed ed< dS )zCustomer.CreateParamsShipping$Customer.CreateParamsShippingAddressrK   r?   r:   rL   Nr7   r8   r9   r;   r:   r   r<   r<   r<   r=   CreateParamsShipping  s   
rz   c                   @   sV   e Zd ZU ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< dS )	rx   r:   r0   r1   r2   r3   r4   r5   Nro   r<   r<   r<   r=   CreateParamsShippingAddress  s   
r{   c                   @   s>   e Zd ZU ed ed< ed ed< ed ed< ed ed< dS )	r`   zALiteral['']|List[Customer.CreateParamsInvoiceSettingsCustomField]rE   r:   rF   rG   z@Literal['']|Customer.CreateParamsInvoiceSettingsRenderingOptionsrH   Nro   r<   r<   r<   r=   CreateParamsInvoiceSettings  s   
r|   c                   @   s   e Zd ZU ed ed< dS )z4Customer.CreateParamsInvoiceSettingsRenderingOptions;Literal['']|Literal['exclude_tax', 'include_inclusive_tax']rC   Nro   r<   r<   r<   r=   +CreateParamsInvoiceSettingsRenderingOptions  s   
r~   c                   @   s   e Zd ZU eed< eed< dS )z/Customer.CreateParamsInvoiceSettingsCustomFieldr?   r@   NrA   r<   r<   r<   r=   &CreateParamsInvoiceSettingsCustomField  s   
r   c                   @   s   e Zd ZU ed ed< dS )rX   (Customer.CreateParamsCashBalanceSettingssettingsNro   r<   r<   r<   r=   CreateParamsCashBalance  s   
r   c                   @   s   e Zd ZU ed ed< dS )r   2Literal['automatic', 'manual', 'merchant_default']reconciliation_modeNro   r<   r<   r<   r=   CreateParamsCashBalanceSettings  s   
r   c                   @   sV   e Zd ZU ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< dS )	zCustomer.CreateParamsAddressr:   r0   r1   r2   r3   r4   r5   Nro   r<   r<   r<   r=   CreateParamsAddress  s   
r   c                   @   s6   e Zd ZU ded< eed< ed ed< ed ed< dS )(Customer.CreateFundingInstructionsParams4Customer.CreateFundingInstructionsParamsBankTransferZbank_transfercurrencyr]   r^   Zfunding_typeN)r7   r8   r9   r;   r:   r   r   r<   r<   r<   r=   CreateFundingInstructionsParams  s
   
r   c                   @   s2   e Zd ZU ed ed< ed ed< ed ed< dS )r   BCustomer.CreateFundingInstructionsParamsBankTransferEuBankTransfereu_bank_transferz4List[Literal['iban', 'sort_code', 'spei', 'zengin']]Zrequested_address_types)r   Zgb_bank_transferZjp_bank_transferZmx_bank_transferZus_bank_transferrr   N)r7   r8   r9   r   r;   r   r<   r<   r<   r=   +CreateFundingInstructionsParamsBankTransfer  s   
r   c                   @   s   e Zd ZU eed< dS )r   r1   NrA   r<   r<   r<   r=   9CreateFundingInstructionsParamsBankTransferEuBankTransfer0  s   
r   c                   @   s   e Zd ZdS )Customer.DeleteParamsNr7   r8   r9   r<   r<   r<   r=   DeleteParams6  s   r   c                   @   s   e Zd ZdS )Customer.DeleteDiscountParamsNr   r<   r<   r<   r=   DeleteDiscountParams9  s   r   c                   @   sb   e Zd ZU ed ed< ed ed< ed ed< ed ed< ed ed	< ed ed
< ed ed< dS )Customer.ListParamszCustomer.ListParamsCreated|intcreatedr:   r\   ending_beforer]   r^   rV   limitstarting_afterrl   Nro   r<   r<   r<   r=   
ListParams<  s   
r   c                   @   s>   e Zd ZU ed ed< ed ed< ed ed< ed ed< dS )zCustomer.ListParamsCreatedrV   gtZgteltZlteNro   r<   r<   r<   r=   ListParamsCreatedW  s
   
r   c                   @   sJ   e Zd ZU ed ed< ed ed< ed ed< ed ed< ed ed	< d
S )!Customer.ListPaymentMethodsParamsr:   r   r]   r^   rV   r   r   at  Literal['acss_debit', 'affirm', 'afterpay_clearpay', 'alipay', 'au_becs_debit', 'bacs_debit', 'bancontact', 'blik', 'boleto', 'card', 'cashapp', 'customer_balance', 'eps', 'fpx', 'giropay', 'grabpay', 'ideal', 'klarna', 'konbini', 'link', 'oxxo', 'p24', 'paynow', 'paypal', 'pix', 'promptpay', 'revolut_pay', 'sepa_debit', 'sofort', 'us_bank_account', 'wechat_pay', 'zip']rr   Nro   r<   r<   r<   r=   ListPaymentMethodsParamsi  s   
r   c                   @   s
  e Zd ZU ed ed< ed ed< ed ed< ed ed< ed ed	< ed ed
< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed < d!S )"Customer.ModifyParamsz(Literal['']|Customer.ModifyParamsAddressrK   rV   rW    Customer.ModifyParamsCashBalancerY   r:   rZ   default_sourcer[   r\   r]   r^   r_   $Customer.ModifyParamsInvoiceSettingsra   rb   rc   r?   rd   rL   re   rf   z)Literal['']|Customer.ModifyParamsShippingrg   r,   Customer.ModifyParamsTaxri   rj   rk   rm   rn   Nro   r<   r<   r<   r=   ModifyParams  s.   
r   c                   @   s&   e Zd ZU ed ed< ed ed< dS )r   rt   rN   ru   rv   Nro   r<   r<   r<   r=   ModifyParamsTax  s   
r   c                   @   s*   e Zd ZU ded< eed< ed ed< dS )zCustomer.ModifyParamsShipping$Customer.ModifyParamsShippingAddressrK   r?   r:   rL   Nry   r<   r<   r<   r=   ModifyParamsShipping  s   
r   c                   @   sV   e Zd ZU ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< dS )	r   r:   r0   r1   r2   r3   r4   r5   Nro   r<   r<   r<   r=   ModifyParamsShippingAddress  s   
r   c                   @   s>   e Zd ZU ed ed< ed ed< ed ed< ed ed< dS )	r   zALiteral['']|List[Customer.ModifyParamsInvoiceSettingsCustomField]rE   r:   rF   rG   z@Literal['']|Customer.ModifyParamsInvoiceSettingsRenderingOptionsrH   Nro   r<   r<   r<   r=   ModifyParamsInvoiceSettings  s   
r   c                   @   s   e Zd ZU ed ed< dS )z4Customer.ModifyParamsInvoiceSettingsRenderingOptionsr}   rC   Nro   r<   r<   r<   r=   +ModifyParamsInvoiceSettingsRenderingOptions  s   
r   c                   @   s   e Zd ZU eed< eed< dS )z/Customer.ModifyParamsInvoiceSettingsCustomFieldr?   r@   NrA   r<   r<   r<   r=   &ModifyParamsInvoiceSettingsCustomField$  s   
r   c                   @   s   e Zd ZU ed ed< dS )r   (Customer.ModifyParamsCashBalanceSettingsr   Nro   r<   r<   r<   r=   ModifyParamsCashBalance.  s   
r   c                   @   s   e Zd ZU ed ed< dS )r   r   r   Nro   r<   r<   r<   r=   ModifyParamsCashBalanceSettings5  s   
r   c                   @   sV   e Zd ZU ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< dS )	zCustomer.ModifyParamsAddressr:   r0   r1   r2   r3   r4   r5   Nro   r<   r<   r<   r=   ModifyParamsAddress=  s   
r   c                   @   s   e Zd ZU ed ed< dS )Customer.RetrieveParamsr]   r^   Nro   r<   r<   r<   r=   RetrieveParamsW  s   
r   c                   @   s   e Zd ZU ed ed< dS )$Customer.RetrievePaymentMethodParamsr]   r^   Nro   r<   r<   r<   r=   RetrievePaymentMethodParams]  s   
r   c                   @   s:   e Zd ZU ed ed< ed ed< ed ed< eed< dS )	Customer.SearchParamsr]   r^   rV   r   r:   pagequeryNr7   r8   r9   r   r;   r:   r<   r<   r<   r=   SearchParamsc  s
   
r   c                   @   s&   e Zd ZU ed ed< ed ed< dS ) Customer.ModifyCashBalanceParamsr]   r^   (Customer.ModifyCashBalanceParamsSettingsr   Nro   r<   r<   r<   r=   ModifyCashBalanceParamsu  s   
r   c                   @   s   e Zd ZU ed ed< dS )r   r   r   Nro   r<   r<   r<   r=   ModifyCashBalanceParamsSettings  s   
r   c                   @   s   e Zd ZU ed ed< dS )"Customer.RetrieveCashBalanceParamsr]   r^   Nro   r<   r<   r<   r=   RetrieveCashBalanceParams  s   
r   c                   @   s6   e Zd ZU eed< eed< ed ed< ed ed< dS )Customer.FundCashBalanceParamsamountr   r]   r^   r:   	referenceNr7   r8   r9   rV   r;   r:   r   r<   r<   r<   r=   FundCashBalanceParams  s
   
r   c                   @   sB   e Zd ZU eed< eed< ed ed< ed ed< ed ed< d	S )
'Customer.CreateBalanceTransactionParamsr   r   r:   r[   r]   r^   rb   rc   Nr   r<   r<   r<   r=   CreateBalanceTransactionParams  s   
r   c                   @   s   e Zd ZU ed ed< dS ))Customer.RetrieveBalanceTransactionParamsr]   r^   Nro   r<   r<   r<   r=    RetrieveBalanceTransactionParams  s   
r   c                   @   s2   e Zd ZU ed ed< ed ed< ed ed< dS )'Customer.ModifyBalanceTransactionParamsr:   r[   r]   r^   rb   rc   Nro   r<   r<   r<   r=   ModifyBalanceTransactionParams  s   
r   c                   @   s>   e Zd ZU ed ed< ed ed< ed ed< ed ed< dS )	&Customer.ListBalanceTransactionsParamsr:   r   r]   r^   rV   r   r   Nro   r<   r<   r<   r=   ListBalanceTransactionsParams  s
   
r   c                   @   s   e Zd ZU ed ed< dS )-Customer.RetrieveCashBalanceTransactionParamsr]   r^   Nro   r<   r<   r<   r=   $RetrieveCashBalanceTransactionParams  s   
r   c                   @   s>   e Zd ZU ed ed< ed ed< ed ed< ed ed< dS )	*Customer.ListCashBalanceTransactionsParamsr:   r   r]   r^   rV   r   r   Nro   r<   r<   r<   r=   !ListCashBalanceTransactionsParams  s
   
r   c                   @   s:   e Zd ZU ed ed< ed ed< eed< ed ed< dS )	Customer.CreateSourceParamsr]   r^   zDict[str, str]rc   r,   rm   rn   Nr   r<   r<   r<   r=   CreateSourceParams  s   
r   c                   @   s   e Zd ZU ed ed< dS )Customer.RetrieveSourceParamsr]   r^   Nro   r<   r<   r<   r=   RetrieveSourceParams  s   
r   c                   @   s   e Zd ZU ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed	< ed ed
< ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< dS )Customer.ModifySourceParamsr:   Zaccount_holder_namez Literal['company', 'individual']Zaccount_holder_typeZaddress_cityZaddress_countryZaddress_line1Zaddress_line2Zaddress_stateZaddress_zipZ	exp_monthZexp_yearr]   r^   rb   rc   r?    Customer.ModifySourceParamsOwnerownerNro   r<   r<   r<   r=   ModifySourceParams  s   
r   c                   @   s>   e Zd ZU ed ed< ed ed< ed ed< ed ed< dS )r   'Customer.ModifySourceParamsOwnerAddressrK   r:   r\   r?   rL   Nro   r<   r<   r<   r=   ModifySourceParamsOwner?  s
   
r   c                   @   sV   e Zd ZU ed ed< ed ed< ed ed< ed ed< ed ed< ed ed< dS )	r   r:   r0   r1   r2   r3   r4   r5   Nro   r<   r<   r<   r=   ModifySourceParamsOwnerAddressQ  s   
r   c                   @   s   e Zd ZU ed ed< dS )Customer.DeleteSourceParamsr]   r^   Nro   r<   r<   r<   r=   DeleteSourceParamsk  s   
r   c                   @   sJ   e Zd ZU ed ed< ed ed< ed ed< ed ed< ed ed< d	S )
Customer.ListSourcesParamsr:   r   r]   r^   rV   r   objectr   Nro   r<   r<   r<   r=   ListSourcesParamsq  s   
r   c                   @   s.   e Zd ZU ed ed< ed ed< eed< dS )Customer.CreateTaxIdParamsr]   r^   rq   rr   r@   N)r7   r8   r9   r   r;   r   r:   r<   r<   r<   r=   CreateTaxIdParams  s   
Gr   c                   @   s   e Zd ZU ed ed< dS )Customer.RetrieveTaxIdParamsr]   r^   Nro   r<   r<   r<   r=   RetrieveTaxIdParams  s   
r   c                   @   s   e Zd ZdS )Customer.DeleteTaxIdParamsNr   r<   r<   r<   r=   DeleteTaxIdParams  s   r   c                   @   s>   e Zd ZU ed ed< ed ed< ed ed< ed ed< dS )	Customer.ListTaxIdsParamsr:   r   r]   r^   rV   r   r   Nro   r<   r<   r<   r=   ListTaxIdsParams  s
   
r   rK   rW   r"   rY   r   r   r   r    r!   r(   r   Z
delinquentr[   r%   Zdiscountr\   idZinvoice_credit_balancer_   ra   Zlivemoderc   r?   rd   r   rL   re   rg   sourcesr)   Zsubscriptionsri   )Zexemptnonereverserk   r*   Ztax_idsr+   rl   TZdeletedNrU   )api_keyidempotency_keystripe_versionstripe_accountparamsreturnc                 K   s    t d| d|  |||||S )z0
        Creates a new customer object.
        r-   post)r   _static_request	class_url)clsr   r   r   r   r   r<   r<   r=   createl  s    zCustomer.creater   r&   r.   r   r   r   r   r   c              
   K   s*   t d| jddjt|d||||dS )  
        Retrieve funding instructions for a customer cash balance. If funding instructions do not yet exist for the customer, new
        funding instructions will be created. If funding instructions have already been created for a given customer, the same
        funding instructions will be retrieved. In other words, we will return the same funding instructions each time.
        r&   r   -/v1/customers/{customer}/funding_instructionsr.   r   r   r   r   r   r   formatr   sanitize_idr   r.   r   r   r   r   r<   r<   r=    _cls_create_funding_instructions  s    z)Customer._cls_create_funding_instructionsc                 K   s   dS r   Nr<   r.   r   r   r   r   r<   r<   r=   create_funding_instructions  s    z$Customer.create_funding_instructionsr   r   r   c                 K   s   dS r  r<   selfr   r   r<   r<   r=   r    s    r  c              
   K   s,   t d| jddjt| dd||dS )r   r&   r   r   r   r   r   r   r   _requestr   r   r   getr  r<   r<   r=   r    s    r   )sidr   r   c                 K   s*   d|   t|f }td| jd||dS )
        Permanently deletes a customer. It cannot be undone. Also immediately cancels any active subscriptions on the customer.
        %s/%sr-   deleter   r   r   r   r   )r   r  r   urlr<   r<   r=   _cls_delete  s
    zCustomer._cls_deletec                 K   s   dS r  Nr<   )r  r   r<   r<   r=   r    s    zCustomer.delete)r   r   c                 K   s   dS r  r<   r  r   r<   r<   r=   r    s    r  c                 K   s   | j d|  |dS )r  r  r  )Z_request_and_refreshZinstance_urlr  r<   r<   r=   r    s
    r   c              
   K   s*   t d| jddjt|d||||dS )G
        Removes the currently applied discount on a customer.
        r%   r  !/v1/customers/{customer}/discountr   r   r   r   r<   r<   r=   _cls_delete_discount
  s    zCustomer._cls_delete_discountc                 K   s   dS r  Nr<   r  r<   r<   r=   delete_discount&  s    zCustomer.delete_discountc                 K   s   dS r  r<   r  r<   r<   r=   r  6  s    r  c              
   K   s,   t d| jddjt| dd||dS )r  r%   r  r  r   r   r  r	  r  r<   r<   r=   r  C  s    r   )r   r   r   r   r   c                 K   s:   | j d|  ||||d}t|ts6tdt|j |S )z
        Returns a list of your customers. The customers are returned sorted by creation date, with the most recent customers appearing first.
        r  r   z%Expected list object from API, got %s)r   r   
isinstancer   	TypeErrorrr   r7   )r   r   r   r   r   resultr<   r<   r=   listZ  s    
zCustomer.listr   r'   c              
   K   s.   t td | jddjt|d||||dS )G
        Returns a list of PaymentMethods for a given Customer
        r'   r  (/v1/customers/{customer}/payment_methodsr   r   r   r   r   r   r   r   r   r<   r<   r=   _cls_list_payment_methodsx  s    z"Customer._cls_list_payment_methodsc                 K   s   dS r  Nr<   r  r<   r<   r=   list_payment_methods  s    zCustomer.list_payment_methodsc                 K   s   dS r#  r<   r  r<   r<   r=   r$    s    r"  c              
   K   s0   t td | jddjt| dd||dS )r  r'   r  r   r   r   r  )r   r   r
  r   r   r   r  r  r<   r<   r=   r$    s    r   )r   r   r   c                 K   s*   d|   t|f }td| jd||dS )aw  
        Updates the specified customer by setting the values of the parameters passed. Any parameters not provided will be left unchanged. For example, if you pass the source parameter, that becomes the customer's active source (e.g., a card) to be used for all charges in the future. When you update a customer to a new valid card source by passing the source parameter: for each of the customer's current subscriptions, if the subscription bills automatically and is in the past_due state, then the latest open invoice for the subscription with automatic collection enabled will be retried. This retry will not count as an automatic retry, and will not affect the next regularly scheduled payment for the invoice. Changing the default_source for a customer will not trigger this behavior.

        This request accepts mostly the same arguments as the customer creation call.
        r  r-   r   r  r  )r   r   r   r  r<   r<   r=   modify  s
    	zCustomer.modifyr   c                 K   s   | |fi |}|   |S )z.
        Retrieves a Customer object.
        )refresh)r   r   r   instancer<   r<   r=   retrieve  s    zCustomer.retriever   )r.   rO   r   r   r   r   r   c              
   K   s2   t d| jddjt|t|d||||dS )H
        Retrieves a PaymentMethod object for a given Customer.
        r'   r  9/v1/customers/{customer}/payment_methods/{payment_method}r.   rO   r   r   )r   r.   rO   r   r   r   r   r<   r<   r=   _cls_retrieve_payment_method  s    z%Customer._cls_retrieve_payment_methodc                 K   s   dS r)  Nr<   )r.   rO   r   r   r   r   r<   r<   r=   retrieve_payment_method   s    z Customer.retrieve_payment_method)rO   r   r   r   c                 K   s   dS r-  r<   r  rO   r   r   r<   r<   r=   r.    s    r,  c              
   K   s4   t d| jddjt| dt|d||dS )r)  r'   r  r*  r   r+  r  r	  r/  r<   r<   r=   r.    s    r   )kwargsr   c                 O   s   | j |ddi|S )a  
        Search for customers you've previously created using Stripe's [Search Query Language](https://stripe.com/docs/search#search-query-language).
        Don't use search in read-after-write flows where strict consistency is necessary. Under normal operating
        conditions, data is searchable in less than a minute. Occasionally, propagation of new or updated data can be up
        to an hour behind during outages. Search functionality is not available to merchants in India.
        Z
search_urlz/v1/customers/search)Z_searchr   argsr0  r<   r<   r=   search8  s    
zCustomer.searchc                 O   s   | j |i | S N)r3  Zauto_paging_iterr1  r<   r<   r=   search_auto_paging_iterD  s    z Customer.search_auto_paging_iterr   r#   c              
   K   s*   t d| jddjt|d||||dS )z
        Creates an immutable transaction that updates the customer's credit [balance](https://stripe.com/docs/billing/customer/balance).
        r#   r   -/v1/customers/{customer}/balance_transactionsr   r   r   r   r<   r<   r=   create_balance_transactionJ  s    z#Customer.create_balance_transactionr   )r.   transactionr   r   r   r   r   c              
   K   s2   t d| jddjt|t|d||||dS )z
        Retrieves a specific customer balance transaction that updated the customer's [balances](https://stripe.com/docs/billing/customer/balance).
        r#   r  ;/v1/customers/{customer}/balance_transactions/{transaction}r.   r8  r   r   r   r.   r8  r   r   r   r   r<   r<   r=   retrieve_balance_transactionf  s    z%Customer.retrieve_balance_transactionr   c              
   K   s2   t d| jddjt|t|d||||dS )zx
        Most credit balance transaction fields are immutable, but you may update its description and metadata.
        r#   r   r9  r:  r   r   r;  r<   r<   r=   modify_balance_transaction  s    z#Customer.modify_balance_transactionr   c              
   K   s.   t td | jddjt|d||||dS )z
        Returns a list of transactions that updated the customer's [balances](https://stripe.com/docs/billing/customer/balance).
        r#   r  r6  r   r   r!  r   r<   r<   r=   list_balance_transactions  s    z"Customer.list_balance_transactionsr   r$   c              
   K   s2   t d| jddjt|t|d||||dS )z
        Retrieves a specific cash balance transaction, which updated the customer's [cash balance](https://stripe.com/docs/payments/customer-balance).
        r$   r  z@/v1/customers/{customer}/cash_balance_transactions/{transaction}r:  r   r   r;  r<   r<   r=   !retrieve_cash_balance_transaction  s    z*Customer.retrieve_cash_balance_transactionr   c              
   K   s.   t td | jddjt|d||||dS )z
        Returns a list of transactions that modified the customer's [cash balance](https://stripe.com/docs/payments/customer-balance).
        r$   r  z2/v1/customers/{customer}/cash_balance_transactionsr   r   r!  r   r<   r<   r=   list_cash_balance_transactions  s    z'Customer.list_cash_balance_transactionsr   c              
   K   s.   t td | jddjt|d||||dS )a  
        When you create a new credit card, you must specify a customer or recipient on which to create it.

        If the card's owner has no default card, then the new card will become the default.
        However, if the owner already has a default, then it will not change.
        To change the default, you should [update the customer](https://stripe.com/docs/api#update_customer) to have a new default_source.
        r   r    /v1/customers/{customer}/sourcesr   r   r   r   r   r   r   r   r   r<   r<   r=   create_source  s    zCustomer.create_sourcer   )r.   r   r   r   r   r   r   c              
   K   s6   t td | jddjt|t|d||||dS )zC
        Retrieve a specified source for a given customer.
        r   r  %/v1/customers/{customer}/sources/{id}r.   r   r   rB  r   r.   r   r   r   r   r   r<   r<   r=   retrieve_source  s    zCustomer.retrieve_sourcer   c              
   K   s6   t td | jddjt|t|d||||dS )zA
        Update a specified source for a given customer.
        r   r   rD  rE  r   rB  rF  r<   r<   r=   modify_source6  s    zCustomer.modify_sourcer   c              
   K   s6   t td | jddjt|t|d||||dS )zA
        Delete a specified source for a given customer.
        r   r  rD  rE  r   rB  rF  r<   r<   r=   delete_sourceT  s    zCustomer.delete_sourcer   c              
   K   s2   t ttd  | jddjt|d||||dS )z8
        List sources for a specified customer.
        r   r  rA  r   r   )r   r   r   r   r   r   r   r   r<   r<   r=   list_sourcesr  s    
zCustomer.list_sourcesr   c              
   K   s*   t d| jddjt|d||||dS )z=
        Creates a new tax_id object for a customer.
        r*   r    /v1/customers/{customer}/tax_idsr   r   r   r   r<   r<   r=   create_tax_id  s    zCustomer.create_tax_idr   c              
   K   s2   t d| jddjt|t|d||||dS )zH
        Retrieves the tax_id object with the given identifier.
        r*   r  %/v1/customers/{customer}/tax_ids/{id}rE  r   r   rF  r<   r<   r=   retrieve_tax_id  s    zCustomer.retrieve_tax_idr   c              
   K   s2   t d| jddjt|t|d||||dS )z4
        Deletes an existing tax_id object.
        r*   r  rM  rE  r   r   rF  r<   r<   r=   delete_tax_id  s    zCustomer.delete_tax_idr   c              
   K   s.   t td | jddjt|d||||dS )z;
        Returns a list of tax IDs for a customer.
        r*   r  rK  r   r   r!  r   r<   r<   r=   list_tax_ids  s    zCustomer.list_tax_idsr   c              
   K   s*   t d| jddjt|d||||dS )zD
        Changes the settings on a customer's cash balance.
        r"   r   %/v1/customers/{customer}/cash_balancer   r   r   r   r<   r<   r=   modify_cash_balance	  s    zCustomer.modify_cash_balancer   c              
   K   s*   t d| jddjt|d||||dS )z6
        Retrieves a customer's cash balance.
        r"   r  rQ  r   r   r   r   r<   r<   r=   retrieve_cash_balance	  s    zCustomer.retrieve_cash_balancec                
   @   s   e Zd ZU ed ed< edeee ee ee ed ddddZ	e
edeee ee ee ed ddd	d
Ze
dee ed dddd
Zeddee ed dddd
ZdS )zCustomer.TestHelpersr-   _resource_clsNr   r$   r   c              
   K   s*   t d| jddjt|d||||dS )C
            Create an incoming testmode bank transfer
            r$   r   7/v1/test_helpers/customers/{customer}/fund_cash_balancer   r   r   r   r<   r<   r=   _cls_fund_cash_balance=	  s    z+Customer.TestHelpers._cls_fund_cash_balancec                 K   s   dS rU  Nr<   r  r<   r<   r=   fund_cash_balanceY	  s    z&Customer.TestHelpers.fund_cash_balancer  c                 K   s   dS rX  r<   r  r<   r<   r=   rY  i	  s    rW  c              
   K   s0   t d| jjddjt| jdd||dS )rU  r$   r   rV  r   r   r  )r   resourcer
  r   r   r   r  r  r<   r<   r=   rY  v	  s    )NNN)NNN)N)N)r7   r8   r9   r   r;   classmethodr:   r   r   rW  r   staticmethodrY  r   r<   r<   r<   r=   TestHelpers:	  s`   
        r]  c                 C   s
   |  | S r4  )r]  )r  r<   r<   r=   test_helpers	  s    zCustomer.test_helpers)rK   ra   rg   ri   )NNNN)NNN)NNN)N)N)NNN)NNN)N)N)NNN)NNN)NNN)N)N)NNN)NNN)N)N)NNN)NNN)NNN)NNN)NNN)NNN)NNN)NNN)NNN)NNN)NNN)NNN)NNN)NNN)NNN)NNN)NNN)zr7   r8   r9   __doc__r/   r   r   r;   r   r>   rJ   rM   rT   r   rp   r   rs   rw   rz   r{   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rV   r:   r
   r   rm   r   r   r   r[  r   r   r  r   r\  r  r   r  r  r  r  r  r"  r$  r%  r(  r,  r.  r   r3  r   r5  r7  r<  r=  r>  r?  r@  rC  rG  rH  rI  rJ  rL  rN  rO  rP  rR  rS  r   r]  propertyr^  rI   r<   r<   r<   r=   r-   ;   s  
&.$TM

S


7Q

                 
                          
            Sr-   N)EZstriper   Zstripe.api_resources.abstractr   r   r   r   r   r   r	   Z%stripe.api_resources.expandable_fieldr
   Z stripe.api_resources.list_objectr   Z)stripe.api_resources.search_result_objectr   Zstripe.request_optionsr   Zstripe.stripe_objectr   Zstripe.utilr   typingr   r   r   r   r   r   r   r   Ztyping_extensionsr   r   r   r   r   r   urllib.parser   Zstripe.api_resources.accountr   Z!stripe.api_resources.bank_accountr    Zstripe.api_resources.cardr!   Z!stripe.api_resources.cash_balancer"   Z1stripe.api_resources.customer_balance_transactionr#   Z6stripe.api_resources.customer_cash_balance_transactionr$   Zstripe.api_resources.discountr%   Z)stripe.api_resources.funding_instructionsr&   Z#stripe.api_resources.payment_methodr'   Zstripe.api_resources.sourcer(   Z!stripe.api_resources.subscriptionr)   Zstripe.api_resources.tax_idr*   Z,stripe.api_resources.test_helpers.test_clockr+   r-   r]  rT  r<   r<   r<   r=   <module>   sl   $	(
 
                  l