
    Ai                         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 erd dlmZ d dlmZ d d	lmZ  G d
 ded         Zy)    )APIResource)Customer)ExpandableField)sanitize_id)ClassVarDictOptional)LiteralTYPE_CHECKING)
CreditNote)Invoice)Sessionc                   8   e Zd ZU dZdZeed      ed<   eed<   	 e	e
d      ed<   	 eed<   	 e	e
d      ed	<   	 eed
<   	 e
d   ed<   	 e	e   ed<   	 eed<   	 eed<   	 e	e
d      ed<   	 eed<   	 e	eeef      ed<   	 ed   ed<   	 ed   ed<   	 d Zedd       Zy)CustomerBalanceTransactiona5  
    Each customer has a [Balance](https://stripe.com/docs/api/customers/object#customer_object-balance) value,
    which denotes a debit or credit that's automatically applied to their next invoice upon finalization.
    You may modify the value directly by using the [update customer API](https://stripe.com/docs/api/customers/update),
    or by creating a Customer Balance Transaction, which increments or decrements the customer's `balance` by the specified `amount`.

    Related guide: [Customer balance](https://stripe.com/docs/billing/customer/balance)
    customer_balance_transactionOBJECT_NAMEamountr   checkout_sessioncreatedr   credit_notecurrencyr   customerdescriptionending_balanceidr   invoicelivemodemetadataobject)
adjustmentapplied_to_invoice%checkout_session_subscription_payment.checkout_session_subscription_payment_canceledr   initialinvoice_overpaidinvoice_too_largeinvoice_too_small	migrationunapplied_from_invoiceunspent_receiver_credittypec                     | j                   }| j                  }t        |t              r|j                   }t        j                         }t        |      }t        |      }|d|d|S )N/z/balance_transactions/)r   r   
isinstancer   	class_urlr   )selftokenr   base	cust_extnextns         W/var/www/html/immo/lib/python3.12/site-packages/stripe/_customer_balance_transaction.pyinstance_urlz'CustomerBalanceTransaction.instance_urlc   sV    ==h){{H!!#)	5!26	4HH    c                     t        d      )NzCan't retrieve a Customer Balance Transaction without a Customer ID. Use Customer.retrieve_customer_balance_transaction('cus_123', 'cbtxn_123'))NotImplementedError)clsr   paramss      r5   retrievez#CustomerBalanceTransaction.retrievem   s    !Y
 	
r7   N)returnr   )__name__
__module____qualname____doc__r   r   r
   __annotations__intr	   r   strboolr   r6   classmethodr<    r7   r5   r   r      s4    	' '"@AB  K y9:: L /,788 M j)) #  	G oi011 N tCH~&& 233 	# I 
 
r7   r   N)stripe._api_resourcer   stripe._customerr   stripe._expandable_fieldr   stripe._utilr   typingr   r   r	   typing_extensionsr
   r   stripe._credit_noter   stripe._invoicer   stripe.checkout._sessionr   r   rG   r7   r5   <module>rQ      s<    - % 4 $ + + 4.'0b
-I!J b
r7   