
    (i                         d Z ddlmZmZmZ ddlmZmZ dZdZ	de
dedefd	Zd
e
de
fdZddee   dee
ef   fdZddee   dee
ef   fdZy)z
RFQ helper functions for the Polymarket CLOB API.

This module provides utility functions for RFQ operations including
query parameter parsing and unit conversion.
    )OptionalDictAny   )GetRfqRequestsParamsGetRfqQuotesParams   valuedecimalsreturnc                     d| v r7| j                  d      \  }}|d| j                  |d      }t        ||z         S t        |       d|z  z  S )a  
    Convert a decimal string to smallest units (like wei for ETH).

    Args:
        value: Decimal string (e.g., "1.5")
        decimals: Number of decimal places (e.g., 6 for USDC)

    Returns:
        Integer in smallest units (e.g., 1500000 for "1.5" with 6 decimals)

    Examples:
        >>> parse_units("1.5", 6)
        1500000
        >>> parse_units("100", 6)
        100000000
        >>> parse_units("0.000001", 6)
        1
    .N0
   )splitljustint)r
   r   integer_partdecimal_parts       O/var/www/br/venv/lib/python3.12/site-packages/py_clob_client/rfq/rfq_helpers.pyparse_unitsr      sZ    & e|%*[[%5"l#IX.44XsC<,.//5zR\**    	snake_strc                 f    | j                  d      }|d   dj                  d |dd D              z   S )ah  
    Convert snake_case string to camelCase.

    Args:
        snake_str: String in snake_case format

    Returns:
        String in camelCase format

    Examples:
        >>> to_camel_case("user_address")
        'userAddress'
        >>> to_camel_case("request_id")
        'requestId'
        >>> to_camel_case("size_usdc_min")
        'sizeUsdcMin'
    _r    c              3   <   K   | ]  }|j                           y wN)title).0xs     r   	<genexpr>z to_camel_case.<locals>.<genexpr>A   s     "E1779"Es   r   N)r   join)r   
componentss     r   to_camel_caser%   .   s6    $ %Ja=277"Ejn"EEEEr   Nparamsc                     | i S i }g d}|D ]  \  }}t        | |d      }||||<    | j                  r| j                  |d<   | j                  r| j                  |d<   |S )aV  
    Convert GetRfqRequestsParams to query string parameters.

    Arrays are kept as Python lists so the caller can serialize them with
    `urllib.parse.urlencode(..., doseq=True)` (repeated query params).

    Args:
        params: Optional filter parameters

    Returns:
        Dictionary of query parameters ready for HTTP request
    N)stater)   )size_minsizeMin)size_maxsizeMax)size_usdc_minsizeUsdcMin)size_usdc_maxsizeUsdcMax)	price_minpriceMin)	price_maxpriceMax)sort_bysortBy)sort_dirsortDir)limitr:   )offsetr;   
requestIdsmarkets)getattrrequest_idsr=   r&   resultsingle_fieldspython_nameapi_namer
   s         r   parse_rfq_requests_paramsrE   D   s     ~	FM "/ %XT2$F8% %11|~~"NNyMr   c                     | i S i }g d}|D ]  \  }}t        | |d      }||||<    | j                  r| j                  |d<   | j                  r| j                  |d<   | j                  r| j                  |d<   |S )aT  
    Convert GetRfqQuotesParams to query string parameters.

    Arrays are kept as Python lists so the caller can serialize them with
    `urllib.parse.urlencode(..., doseq=True)` (repeated query params).

    Args:
        params: Optional filter parameters

    Returns:
        Dictionary of query parameters ready for HTTP request
    Nr(   quoteIdsr<   r=   )r>   	quote_idsr?   r=   r@   s         r   parse_rfq_quotes_paramsrI   s   s     ~	FM "/ %XT2$F8% #--z%11|~~"NNyMr   r   )__doc__typingr   r   r   	rfq_typesr   r   COLLATERAL_TOKEN_DECIMALSCONDITIONAL_TOKEN_DECIMALSstrr   r   r%   rE   rI    r   r   <module>rQ      s    ' & ?   +s +c +c +8FS FS F,,h/C&D ,PTUXZ]U]P^ ,^.H-?$@ .DQTVYQYN .r   