o
    i                     @   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 er>d dlmZ d dlmZ d d	lmZ G d
d ded ZdS )    )APIResource)Customer)ExpandableField)sanitize_id)ClassVarDictOptional)LiteralTYPE_CHECKING)
CreditNote)Invoice)Sessionc                   @   s   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d ZedddZdS )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                 C   sB   | j }| j}t|tr|j }t }t|}t|}d|||f S )Nz%s/%s/balance_transactions/%s)r   r   
isinstancer   	class_urlr   )selftokenr   base	cust_extnextn r1   /var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/env/lib/python3.10/site-packages/stripe/_customer_balance_transaction.pyinstance_urlc   s   
z'CustomerBalanceTransaction.instance_urlreturnc                 K   s   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   paramsr1   r1   r2   retrievem   s   z#CustomerBalanceTransaction.retrieveN)r4   r   )__name__
__module____qualname____doc__r   r   r	   __annotations__intr   r   strboolr   r3   classmethodr8   r1   r1   r1   r2   r      sJ   
 

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   r1   r1   r1   r2   <module>   s   