o
    Bi8,                     @   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	 d dl
mZ d dlmZmZmZ d dlmZmZmZ G d	d
 d
eZdS )    )
ListObject)RequestOptions)StripeService)Transfer)TransferReversalService)sanitize_id)DictListcast)LiteralNotRequired	TypedDictc                	       s`  e Zd Z fdd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	i i fddde
dee fddZi i fddde
dee fddZi fddde
defddZi fddde
defddZi i fdeddde
defddZi i fdeddde
defddZi i fdedd de
defd!d"Zi i fdedd de
defd#d$Z  ZS )%TransferServicec                    s   t  | t| j| _d S )N)super__init__r   
_requestor	reversals)self	requestor	__class__ X/var/www/html/Trade-python/venv/lib/python3.10/site-packages/stripe/_transfer_service.pyr      s   zTransferService.__init__c                   @   s   e Zd ZU ee ed< 	 eed< 	 ee ed< 	 eed< 	 eee  ed< 	 eeeef  ed< 	 ee ed< 	 ee	d  ed	< 	 ee ed
< dS )TransferService.CreateParamsamountcurrencydescriptiondestinationexpandmetadatasource_transaction)bank_accountcardfpxsource_typetransfer_groupN)
__name__
__module____qualname__r   int__annotations__strr	   r   r   r   r   r   r   CreateParams   s&   
 r,   c                   @   sr   e Zd ZU ed ed< 	 ee ed< 	 ee ed< 	 eee  ed< 	 ee ed< 	 ee ed< 	 ee ed< d	S )
TransferService.ListParamsz%TransferService.ListParamsCreated|intcreatedr   ending_beforer   limitstarting_afterr%   N)r&   r'   r(   r   r*   r+   r	   r)   r   r   r   r   
ListParams8   s   
 r2   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!TransferService.ListParamsCreatedgtgteltlteN)r&   r'   r(   r   r)   r*   r   r   r   r   ListParamsCreatedV   s   
 r7   c                   @   s   e Zd ZU eee  ed< dS )TransferService.RetrieveParamsr   N)r&   r'   r(   r   r	   r+   r*   r   r   r   r   RetrieveParamsh   s   
 r9   c                   @   s:   e Zd ZU ee ed< 	 eee  ed< 	 ed ed< dS )TransferService.UpdateParamsr   r   zLiteral['']|Dict[str, str]r   N)r&   r'   r(   r   r+   r*   r	   r   r   r   r   UpdateParamsn   s   
 r;   paramsr-   optionsreturnc              	   C   s   t tt | jddd||dS )
        Returns a list of existing transfers sent to connected accounts. The transfers are returned in sorted order, with the most recently created transfers appearing first.
        get/v1/transfersapibase_addressr<   r=   )r
   r   r   _requestr   r<   r=   r   r   r   list|   s   zTransferService.listc              	      s&   t tt | jddd||dI dH S )r?   r@   rA   rB   rC   N)r
   r   r   _request_asyncrF   r   r   r   
list_async   s   
zTransferService.list_asyncr   c              	   C   s   t t| jddd||dS )  
        To send funds from your Stripe account to a connected account, you create a new transfer object. Your [Stripe balance](https://stripe.com/docs/api#balance) must be able to cover the transfer amount, or you'll receive an “Insufficient Funds” error.
        postrA   rB   rC   )r
   r   rE   rF   r   r   r   create   s   zTransferService.createc              	      s"   t t| jddd||dI dH S )rJ   rK   rA   rB   rC   N)r
   r   rH   rF   r   r   r   create_async   s   
zTransferService.create_asynctransferr8   c              	   C   &   t t| jddjt|dd||dS )
        Retrieves the details of an existing transfer. Supply the unique transfer ID from either a transfer creation request or the transfer list, and Stripe will return the corresponding transfer information.
        r@   /v1/transfers/{transfer}rN   rB   rC   r
   r   rE   formatr   r   rN   r<   r=   r   r   r   retrieve   s   	zTransferService.retrievec              	      .   t t| jddjt|dd||dI dH S )rP   r@   rQ   rR   rB   rC   Nr
   r   rH   rT   r   rU   r   r   r   retrieve_async   s   	
zTransferService.retrieve_asyncr:   c              	   C   rO   )
        Updates the specified transfer by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

        This request accepts only metadata as an argument.
        rK   rQ   rR   rB   rC   rS   rU   r   r   r   update   s   zTransferService.updatec              	      rW   )rZ   rK   rQ   rR   rB   rC   NrX   rU   r   r   r   update_async  s   
zTransferService.update_async)r&   r'   r(   r   r   r,   r2   r7   r9   r;   r   r   r   rG   rI   rL   rM   r+   rV   rY   r[   r\   __classcell__r   r   r   r   r      s    &






r   N)stripe._list_objectr   stripe._request_optionsr   stripe._stripe_servicer   stripe._transferr   !stripe._transfer_reversal_servicer   stripe._utilr   typingr   r	   r
   typing_extensionsr   r   r   r   r   r   r   r   <module>   s   