o
    ie                     @   sJ  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 erd 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. d dl/m0Z0 d dl1m2Z2 G dd ded ed Z3e3e3j4_5dS )    )ExpandableField)
ListObject)ListableAPIResource)StripeObject)APIResourceTestHelpers)UpdateableAPIResource)class_method_variantsanitize_id)ClassVarDictListOptionalcastoverload)LiteralTypeUnpackTYPE_CHECKING)BalanceTransaction)Authorization)Card)
Cardholder)Dispute)Token)#TransactionCreateForceCaptureParams)%TransactionCreateUnlinkedRefundParams)TransactionListParams)TransactionModifyParams)TransactionRefundParams)TransactionRetrieveParamsc                   @   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eed< 	 ee	 ed< 	 eed  ed< 	 eed  ed< 	 ed ed< 	 eed  ed< 	 eed< 	 eed< 	 eed  ed< 	 eed< 	 eed< 	 eed< 	 eed< 	 e
ed < eeef ed!< 	 ee ed"< 	 ed ed#< 	 ee ed$< 	 eed%  ed&< 	 ee ed'< 	 ed( ed)< 	 eed*  ed+< 	 ed,ed- d.ed  fd/d0Zed,ed- d.ed  fd1d2Zeded,ed3 d.d fd4d5Zeded,ed3 d.d fd6d7Zeded,ed8 d.d fd9d:Zeded,ed8 d.d fd;d<ZG d=d> d>ed  Zed?d@ Z e	e
eeedAZ!dBS )CTransactionaO  
    Any use of an [issued card](https://stripe.com/docs/issuing) that results in funds entering or leaving
    your Stripe account, such as a completed purchase or refund, is represented by an Issuing
    `Transaction` object.

    Related guide: [Issued card transactions](https://stripe.com/docs/issuing/purchases/transactions)
    zissuing.transactionOBJECT_NAMEc                   @   (   e Zd ZU ee ed< 	 ee ed< dS )zTransaction.AmountDetailsatm_feecashback_amountN__name__
__module____qualname__r   int__annotations__ r+   r+   {/var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/env/lib/python3.10/site-packages/stripe/issuing/_transaction.pyAmountDetails8   
   
 r-   c                   @   s   e Zd ZU eed< 	 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d< 	 ee ed	< 	 ee ed
< 	 ee ed< dS )zTransaction.MerchantDatacategorycategory_codecitycountryname
network_idpostal_codestatetax_idterminal_idurlN)r&   r'   r(   strr*   r   r+   r+   r+   r,   MerchantDataB   s.   
 r;   c                   @   s6   e Zd ZU ee ed< 	 ee ed< 	 ee ed< dS )zTransaction.NetworkDataauthorization_codeprocessing_datetransaction_idNr&   r'   r(   r   r:   r*   r+   r+   r+   r,   NetworkDatap   s   
 r@   c                   @   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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  e
d< 	 e	e e
d< 	 eeeeedZdS )zTransaction.PurchaseDetailsc                   @   sp   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e ed< 	 eed	Z	d
S )z!Transaction.PurchaseDetails.Fleetc                   @   sR   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< dS )z6Transaction.PurchaseDetails.Fleet.CardholderPromptData	driver_idodometerunspecified_iduser_idvehicle_numberN)r&   r'   r(   r   r:   r*   r)   r+   r+   r+   r,   CardholderPromptData   s   
 rF   c                   @   st   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 ed< 	 ee ed< 	 ee ed	< 	 eeed
Z	dS )z3Transaction.PurchaseDetails.Fleet.ReportedBreakdownc                   @      e Zd ZU ee ed< dS )z8Transaction.PurchaseDetails.Fleet.ReportedBreakdown.Fuelgross_amount_decimalNr?   r+   r+   r+   r,   Fuel      
 rI   c                   @   rG   )z;Transaction.PurchaseDetails.Fleet.ReportedBreakdown.NonFuelrH   Nr?   r+   r+   r+   r,   NonFuel   rJ   rK   c                   @   r"   )z7Transaction.PurchaseDetails.Fleet.ReportedBreakdown.Taxlocal_amount_decimalnational_amount_decimalNr?   r+   r+   r+   r,   Tax   r.   rN   fuelnon_fueltax)rO   rP   rQ   N)
r&   r'   r(   r   rI   rK   rN   r   r*   _inner_class_typesr+   r+   r+   r,   ReportedBreakdown   s   
 

rS   cardholder_prompt_datapurchase_typereported_breakdownservice_type)rT   rV   N)
r&   r'   r(   r   rF   rS   r   r*   r:   rR   r+   r+   r+   r,   Fleet   s   
 )
rX   c                   @   sp   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  ed< 	 ee ed< 	 deiZdS )	z"Transaction.PurchaseDetails.Flightc                   @   s`   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*Transaction.PurchaseDetails.Flight.Segmentarrival_airport_codecarrierdeparture_airport_codeflight_numberservice_classstopover_allowedN)r&   r'   r(   r   r:   r*   boolr+   r+   r+   r,   Segment   s   
 r`   departure_atpassenger_name
refundablesegmentstravel_agencyN)r&   r'   r(   r   r`   r   r)   r*   r:   r_   r   rR   r+   r+   r+   r,   Flight   s   
 rf   c                   @   sF   e Zd ZU ee ed< 	 ee ed< 	 eed< 	 eed< 	 eed< dS )z Transaction.PurchaseDetails.Fuelindustry_product_codequantity_decimaltypeunitunit_cost_decimalNr?   r+   r+   r+   r,   rI     s   
 rI   c                   @   r"   )z#Transaction.PurchaseDetails.Lodgingcheck_in_atnightsNr%   r+   r+   r+   r,   Lodging  r.   rn   c                   @   sD   e Zd ZU ee ed< 	 ee ed< 	 ee ed< 	 ee ed< dS )z#Transaction.PurchaseDetails.Receiptdescriptionquantitytotal	unit_costN)r&   r'   r(   r   r:   r*   floatr)   r+   r+   r+   r,   Receipt%  s   
 rt   fleetflightrO   lodgingreceipt	reference)ru   rv   rO   rw   rx   N)r&   r'   r(   r   rX   rf   rI   rn   rt   r   r*   r   r:   rR   r+   r+   r+   r,   PurchaseDetails~   s0   
 U1

rz   c                   @   r"   )zTransaction.Treasuryreceived_creditreceived_debitNr?   r+   r+   r+   r,   TreasuryW  r.   r}   amountamount_detailsr   authorizationr   balance_transactionr   cardr   
cardholdercreatedcurrencyr   disputeidlivemodemerchant_amountmerchant_currencymerchant_datametadatanetwork_dataobjectpurchase_detailsr   tokentreasury)capturerefundri   )	apple_pay
google_paysamsung_paywalletparamsr   returnc                 K   s4   | j d|  |d}t|tstdt|j |S )
        Returns a list of Issuing Transaction objects. The objects are sorted in descending order by creation date, with the most recently created object appearing first.
        getr   %Expected list object from API, got %s)_static_request	class_url
isinstancer   	TypeErrorri   r&   clsr   resultr+   r+   r,   list  s   
zTransaction.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )r   r   r   Nr   )_static_request_asyncr   r   r   r   ri   r&   r   r+   r+   r,   
list_async  s   
zTransaction.list_asyncr   c                 K   s*   d|   t|f }td| jd||dS )
        Updates the specified Issuing Transaction object by setting the values of the parameters passed. Any parameters not provided will be left unchanged.
        %s/%sr    postr   )r   r	   r   r   r   r   r   r9   r+   r+   r,   modify  s   zTransaction.modifyc                    s2   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,   modify_async  s   
zTransaction.modify_asyncr   c                 K   s   | |fi |}|   |S ):
        Retrieves an Issuing Transaction object.
        )refreshr   r   r   instancer+   r+   r,   retrieve  s   zTransaction.retrievec                    s$   | |fi |}|  I dH  |S )r   N)refresh_asyncr   r+   r+   r,   retrieve_async  s   zTransaction.retrieve_asyncc                   @   sr  e Zd ZU ed ed< eded ddfddZeded ddfdd	Zeded
 ddfddZ	e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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Transaction.TestHelpersr    _resource_clsr   r   r   c                 K      t d| jdd|dS )i
            Allows the user to capture an arbitrary amount, also known as a forced capture.
            r    r   :/v1/test_helpers/issuing/transactions/create_force_capturer   r   r   r   r   r+   r+   r,   create_force_capture     z,Transaction.TestHelpers.create_force_capturec                       t d| jdd|dI dH S )r   r    r   r   r   Nr   r   r   r+   r+   r,   create_force_capture_async*     
z2Transaction.TestHelpers.create_force_capture_asyncr   c                 K   r   )i
            Allows the user to refund an arbitrary amount, also known as a unlinked refund.
            r    r   </v1/test_helpers/issuing/transactions/create_unlinked_refundr   r   r   r+   r+   r,   create_unlinked_refund:  r   z.Transaction.TestHelpers.create_unlinked_refundc                    r   )r   r    r   r   r   Nr   r   r+   r+   r,   create_unlinked_refund_asyncJ  r   z4Transaction.TestHelpers.create_unlinked_refund_asynctransactionr   c                 K   s"   t d| jddjt|d|dS )9
            Refund a test-mode Transaction.
            r    r   :/v1/test_helpers/issuing/transactions/{transaction}/refundr   r   )r   r   formatr	   r   r   r   r+   r+   r,   _cls_refundZ  s   z#Transaction.TestHelpers._cls_refundc                 K      dS r   Nr+   r   r   r+   r+   r,   r   l  s   zTransaction.TestHelpers.refundc                 K   r   r   r+   selfr   r+   r+   r,   r   v  s   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   resource_requestr   r	   r   r   r+   r+   r,   r     s   c                    s*   t d| jddjt|d|dI dH S )r   r    r   r   r   r   N)r   r   r   r	   r   r+   r+   r,   _cls_refund_async  s   
z)Transaction.TestHelpers._cls_refund_asyncc                       dS r   r+   r   r+   r+   r,   refund_async  s   z$Transaction.TestHelpers.refund_asyncc                    r   r   r+   r   r+   r+   r,   r     s   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   _request_asyncr   r	   r   r   r+   r+   r,   r     s   
N)r&   r'   r(   r   r*   classmethodr   r   r   r   r   r:   r   r   staticmethodr   r   r   r   r+   r+   r+   r,   TestHelpers  s   
 r   c                 C   s
   |  | S )N)r   )r   r+   r+   r,   test_helpers  s   
zTransaction.test_helpers)r   r   r   r   r   N)"r&   r'   r(   __doc__r!   r
   r   r*   r   r-   r;   r@   rz   r}   r)   r   r   r:   r_   r   r   r   r   r   r   r   r   r   r   r   r   propertyr   rR   r+   r+   r+   r,   r    (   s   
 	
. Z


 2

r    N)6stripe._expandable_fieldr   stripe._list_objectr   stripe._listable_api_resourcer   stripe._stripe_objectr   stripe._test_helpersr   stripe._updateable_api_resourcer   stripe._utilr   r	   typingr
   r   r   r   r   r   typing_extensionsr   r   r   r   stripe._balance_transactionr   stripe.issuing._authorizationr   stripe.issuing._cardr   stripe.issuing._cardholderr   stripe.issuing._disputer   stripe.issuing._tokenr   >stripe.params.issuing._transaction_create_force_capture_paramsr   @stripe.params.issuing._transaction_create_unlinked_refund_paramsr   .stripe.params.issuing._transaction_list_paramsr   0stripe.params.issuing._transaction_modify_paramsr   0stripe.params.issuing._transaction_refund_paramsr   2stripe.params.issuing._transaction_retrieve_paramsr   r    r   r   r+   r+   r+   r,   <module>   s@    
     2