o
    êia                     @   sX   d Z ddlmZ ddlmZmZmZmZ ddlm	Z	m
Z
 G dd dZG dd	 d	Zd
S )z1Account namespace client for billing and credits.    )Optional   )OMITAsyncClientWrapperClientWrapperRequestOptions)CreditsPackagec                   @   `   e Zd ZdZdefddZedddee dee	 d	e
fd
dZdddee	 d	efddZdS )AccountClientzSynchronous account operations.client_wrapperc                 C   
   || _ d S N_clientselfr    r   O/home/ubuntu/.local/lib/python3.10/site-packages/fishaudio/resources/account.py__init__      
zAccountClient.__init__Ncheck_free_creditrequest_optionsr   r   returnc                C   s6   i }|t ur
||d< | jjdd||d}t| S )a  
        Get API credit balance.

        Args:
            check_free_credit: Whether to check free credit availability
            request_options: Request-level overrides

        Returns:
            Credits information

        Example:
            ```python
            client = FishAudio(api_key="...")
            credits = client.account.get_credits()
            print(f"Available credits: {float(credits.credit)}")

            # Check free credit availability
            credits = client.account.get_credits(check_free_credit=True)
            if credits.has_free_credit:
                print("Free credits available!")
            ```
        r   GET/wallet/self/api-creditparamsr   r   r   requestr   model_validatejsonr   r   r   r   responser   r   r   get_credits   s   zAccountClient.get_creditsr   c                C   s    | j jdd|d}t| S )az  
        Get package information.

        Args:
            request_options: Request-level overrides

        Returns:
            Package information

        Example:
            ```python
            client = FishAudio(api_key="...")
            package = client.account.get_package()
            print(f"Balance: {package.balance}/{package.total}")
            ```
        r   /wallet/self/packager&   r   r    r	   r!   r"   r   r   r$   r   r   r   get_package7   s   zAccountClient.get_package)__name__
__module____qualname____doc__r   r   r   r   boolr   r   r%   r	   r*   r   r   r   r   r   	   $    
+r   c                   @   r
   )AsyncAccountClientz Asynchronous account operations.r   c                 C   r   r   r   r   r   r   r   r   W   r   zAsyncAccountClient.__init__Nr   r   r   r   c                   s>   i }|t ur||d< | jjdd||dI dH }t| S )a  
        Get API credit balance (async).

        Args:
            check_free_credit: Whether to check free credit availability
            request_options: Request-level overrides

        Returns:
            Credits information

        Example:
            ```python
            client = AsyncFishAudio(api_key="...")
            credits = await client.account.get_credits()
            print(f"Available credits: {float(credits.credit)}")

            # Check free credit availability
            credits = await client.account.get_credits(check_free_credit=True)
            if credits.has_free_credit:
                print("Free credits available!")
            ```
        r   r   r   r   Nr   r#   r   r   r   r%   Z   s   zAsyncAccountClient.get_creditsr&   c                   s(   | j jdd|dI dH }t| S )a  
        Get package information (async).

        Args:
            request_options: Request-level overrides

        Returns:
            Package information

        Example:
            ```python
            client = AsyncFishAudio(api_key="...")
            package = await client.account.get_package()
            print(f"Balance: {package.balance}/{package.total}")
            ```
        r   r'   r&   Nr(   r)   r   r   r   r*      s   zAsyncAccountClient.get_package)r+   r,   r-   r.   r   r   r   r   r/   r   r   r%   r	   r*   r   r   r   r   r1   T   r0   r1   N)r.   typingr   corer   r   r   r   typesr   r	   r   r1   r   r   r   r   <module>   s    K