a
    y¹bj  ã                   @   s¤  U d Z ddlZddlZddlZddlmZ ddlmZ ddlZddl	m
Z
 ddlmZ e
dƒ dZd	Ze d
¡Ze d¡Zdaee ed< edœdd„Zeeedœdd„Zd)eee edœdd„Zedœdd„Zedœdd„Zedœdd„Zedk�r ddlZedƒ ee�r"dedd… › d �nd!ƒ ed"ƒ eƒ Zeej ed#d$�ƒ ed%ƒ eƒ Z!eej e!d#d$�dd&… ƒ ed'ƒ eƒ Z"eej e"d#d$�dd&… ƒ ed(ƒ dS )*uF  
Polymarket US API â€” authentication (Phase 1, read-only).

Ed25519 request signing per docs.polymarket.us/api-reference/authentication:
  headers: X-PM-Access-Key (key id), X-PM-Timestamp (unix ms),
           X-PM-Signature (base64 Ed25519 sig of `{timestamp}{METHOD}{path}`)
  secret key: base64-decoded, first 32 bytes used as the Ed25519 seed.

This is a SEPARATE platform from polymarket.com (different company, different
market catalog, different auth) -- see project_soccer_pipeline memory. Nothing
here talks to gamma-api.polymarket.com / the existing polymarket_live.py.
é    N)ÚPath)ÚOptional)Úload_dotenv)ÚEd25519PrivateKeyzE:\soccer\.envzhttps://api.polymarket.uszhttps://gateway.polymarket.usZPOLYUS_API_KEYZPOLYUS_SECRET_KEYÚ_priv_key_cache)Úreturnc                  C   s8   t d urt S tstdƒ‚t t¡d d… } t | ¡a t S )Nz!POLYUS_SECRET_KEY not set in .envé    )r   Ú
SECRET_KEYÚRuntimeErrorÚbase64Z	b64decoder   Zfrom_private_bytes)Úraw© r   úE:\soccer\main\poly_us_auth.pyÚ_load_private_key"   s    
r   )ÚmethodÚpathr   c                 C   sd   t stdƒ‚ttt ¡ d ƒƒ}|› |  ¡ › |› �}tƒ }t | 	| 
d¡¡¡ d¡}t ||ddœS )NzPOLYUS_API_KEY not set in .envéè  zutf-8zapplication/json)zX-PM-Access-KeyzX-PM-TimestampzX-PM-SignatureZAccept)ÚAPI_KEYr
   ÚstrÚintÚtimeÚupperr   r   Z	b64encodeZsignÚencodeÚdecode)r   r   ZtsÚmessageÚkeyZsigr   r   r   Ú_auth_headers-   s    ür   )r   Úparamsr   c                 C   sP   t d| ƒ}tjt|  ||dd�}|jdkrHtd| › d|j› d|j› �ƒ‚| ¡ S )NZGETé   )Úheadersr   ZtimeoutéÈ   zGET z -> z: )r   ÚrequestsÚgetÚAPI_BASEZstatus_coder
   ÚtextÚjson)r   r   r   Úrr   r   r   Ú_get<   s
    

r'   c                   C   s   t dƒS )Nz/v1/account/balances©r'   r   r   r   r   Úget_account_balancesD   s    r)   c                   C   s   t dƒS )Nz/v1/orders/openr(   r   r   r   r   Úget_open_ordersH   s    r*   c                   C   s   t dƒS )Nz/v1/portfolio/positionsr(   r   r   r   r   Úget_positionsL   s    r+   Ú__main__z)=== Phase 1: Polymarket US auth check ===z	API key: é   z...zAPI key: MISSINGz<
[1/3] Checking account balances (Ed25519 signed request)...é   )Úindentz
[2/3] Checking open orders...r   z
[3/3] Checking positions...z9
Phase 1 OK -- read-only auth verified. No orders placed.)N)#Ú__doc__Úosr   r   Úpathlibr   Útypingr   r!   Zdotenvr   Z1cryptography.hazmat.primitives.asymmetric.ed25519r   r#   ZGATEWAY_BASEÚgetenvr   r	   r   Ú__annotations__r   r   Údictr   r'   r)   r*   r+   Ú__name__r%   ÚprintZbalÚdumpsZordersÚposr   r   r   r   Ú<module>   sD   


"