
    (&jp9                    8   d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZ dddZ ed	           ed
          fZe
d         Zd4dZd5dZedd6dZd7dZd8dZd9d Zd:d"Z ed#$           G d% d&                      Zed'd(d'd'd)d;d/Zed(d'd0d<d2Zd3S )=    )annotations)	dataclass)Path)IterableMappingAnyLiteral)AccountzMainnet.envTestnet.env)mainnettestnetz/agent/.hermesz/home/agent/.hermes)readonlysignedvalue
str | Nonereturnc                    | sd S |                      d          r+t          |           dk    r| d d         dz   | dd          z   ndS )N0x      z...z<masked>)
startswithlen)r   s    P/home/agent/projects/CryptoTradingBot/Crypto_Agent/src/config/hyperliquid_env.pymask_addressr      sW     t-2-=-=d-C-CgE

UW5!9uuRSSz))]gg    envstrc                    |                                                                  } | t          vrt          d|            | S )Nzunsupported hyperliquid env: )lowerstripSUPPORTED_ENVS
ValueError)r   s    r   _normalize_envr$      sB    
))++



C
.  >>>???Jr   search_dirsr&   Iterable[str | Path]Path | Nonec                   t          |           } t          |          }|D ]P}t          |                                          |z  }|                                r|                                c S Qd S N)r$   r"   r   
expanduserexistsresolve)r   r&   namebasepaths        r   find_env_filer1      sr    


C#D " "Dzz$$&&-;;== 	"<<>>!!!	"4r   r0   r   dict[str, str]c                   i }|                      dd                                          D ]}|                                }|r|                    d          r.d|vr3|                    dd          \  }}|                                }|                                                    d                              d          }|||<   |S )	Nzutf-8replace)encodingerrors#=   "')	read_text
splitlinesr!   r   split)r0   datarawlinekeyr   s         r   parse_env_filerC   %   s    D~~wy~AALLNN 	 	yy{{ 	ts++ 	d??ZZQ''
Uiikk##C((..s33S		Kr   r@   Mapping[str, str]c                :   |                      dd                                          p|                      dd                                          p|                      dd                                          p|                      dd                                          pw|                      dd                                          pO|                      dd                                          p'|                      dd                                          }|pd S )	NHL_AGENT_WALLET_ADDRESS Mainnet_API_KeyTestnet_API_KeyAPI_Wallet_AdressAPI_Wallet_AddressAPI KeyAPI_KEY)getr!   )r@   r   s     r   _api_keyrO   4   s	   )2..4466 	*77$b))//11	*77$b))//11	* 77&++1133	* 77',,2244		*
 779b!!''))	* 779b!!'')) 
 =Dr   boolc                     h d}h d}t           fd|D                       o'|                                                                S )N>   rM   rH   rI   rJ   HL_WALLET_ADDRESSrK   HL_API_PRIVATE_KEYMainnet_Private_KeyTestnet_Private_KeyMainnet_Account_AddressTestnet_Account_AddressrL   >   HL_ACCOUNT_ADDRESSHL_AGENT_PRIVATE_KEYrF   c              3      K   | ]}|v V  	d S r*    ).0rB   r@   s     r   	<genexpr>z)_uses_legacy_env_names.<locals>.<genexpr>D   s'      11cscz111111r   )anyissubsetkeys)r@   legacy_keysmodern_keyss   `  r   _uses_legacy_env_namesrc   A   sc     I  I  IK[[[K1111[11111Z+:N:Nsxxzz:Z:Z6ZZr   private_keyc                `    | sd S 	 t          j        |           j        S # t          $ r Y d S w xY wr*   )r
   from_keyaddress	Exception)rd   s    r   derive_address_from_private_keyri   G   sJ     t,,44   tts    
--T)frozenc                     e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   dZded<   dZded<   dZded<   dZded<   ed)d            Z	ed)d            Z
ed)d            Zed)d            Zed)d            Zed*d            Zed*d            Zed*d            Zed+d             Zed*d!            Zed)d"            Zed)d#            Zed)d$            Zed*d%            Zd,d'Zd(S )-HyperliquidEnvConfigr   r   r   env_file_pathrD   r@   account_addressr   api_private_keyapi_wallet_address_from_envapi_wallet_address_derivedztuple[str, ...]r6   r[   warningsr   ValidationModevalidation_modeFrP   (allow_api_key_mismatch_for_testnet_probeallow_mainnet_signed_validationr   c                    | j         r| j        sdS | j                                         | j                                        k    S )NF)rp   rq   r    selfs    r   "api_wallet_key_matches_private_keyz7HyperliquidEnvConfig.api_wallet_key_matches_private_key_   sE    / 	t7V 	5/55774;Z;`;`;b;bbbr   c                    | j         S r*   )rz   rx   s    r   $agent_wallet_key_matches_private_keyz9HyperliquidEnvConfig.agent_wallet_key_matches_private_keye   s    66r   c                    t          | j                  o3| j                                        | j                                        k    S r*   )rP   rp   rn   r    rx   s    r   )account_address_equals_api_wallet_addressz>HyperliquidEnvConfig.account_address_equals_api_wallet_addressi   sU    D455  C$:N:T:T:V:VZ^Zz  [A  [A  [C  [C  ;C  	Cr   c                    | j         S r*   )r~   rx   s    r   +account_address_equals_agent_wallet_addressz@HyperliquidEnvConfig.account_address_equals_agent_wallet_addressm   s    ==r   c                    t          | j                  o3| j                                        | j                                        k    S r*   )rP   rq   rn   r    rx   s    r   -account_address_equals_derived_signer_addresszBHyperliquidEnvConfig.account_address_equals_derived_signer_addressq   sM    D344  A9M9S9S9U9UY]YxY~Y~  ZA  ZA  :A  	Ar   c                    | j         S r*   )ro   rx   s    r   agent_private_keyz&HyperliquidEnvConfig.agent_private_keyu       ##r   c                    | j         S r*   )rp   rx   s    r   agent_wallet_address_from_envz2HyperliquidEnvConfig.agent_wallet_address_from_envy   s    //r   c                    | j         S r*   )rq   rx   s    r   agent_wallet_address_derivedz1HyperliquidEnvConfig.agent_wallet_address_derived}   s    ..r   c                    | j         S r*   )rn   rx   s    r   sdk_account_addressz(HyperliquidEnvConfig.sdk_account_address   r   r   c                2    | j         sd S d| j        j         S )NzHL_API_PRIVATE_KEY in )ro   rm   r.   rx   s    r   sdk_secret_key_sourcez*HyperliquidEnvConfig.sdk_secret_key_source   s&    # 	4A(:(?AAAr   c                8    | j         dk    o| j        j        dk    S )Nr   r   )r   rm   r.   rx   s    r   will_use_mainnet_keyz)HyperliquidEnvConfig.will_use_mainnet_key   s    x9$Q);)@M)QQr   c                P    | j         dk    ot          | j                  o| j         S )Nr   )rt   rP   rn   r6   rx   s    r   safe_for_readonlyz&HyperliquidEnvConfig.safe_for_readonly   s,    #z1dd4;O6P6PdY]YdUddr   c                v    | j         dk    o.| j        dk    o#| j         o| j         ot	          | j                  S )Nr   r   )r   rt   r6   r   rP   ro   rx   s    r   safe_to_run_testnet_smokesz/HyperliquidEnvConfig.safe_to_run_testnet_smokes   sh    x9$  _)=)I  _RVR]o  _fjfb  _  EI  JN  J^  E_  E_  	_r   c                *    dD ]}|| j         v r|c S d S )N)api_key_private_key_mismatch!agent_wallet_private_key_mismatchinvalid_HL_AGENT_PRIVATE_KEYinvalid_HL_API_PRIVATE_KEYr   )rr   )ry   	preferreds     r   credential_warningz'HyperliquidEnvConfig.credential_warning   s7     N 	! 	!IDM))     *tr   dict[str, Any]c                8   i d| j         dt          | j                  ddd| j        dt	          | j                  dt	          | j                  dt	          | j                  d	t	          | j                  d
t	          | j	                  d| j
        d| j        d| j        d| j        d| j        dt	          | j                  d| j        d| j        | j        | j        | j        t+          | j                  t+          | j                  dS )Nr   rm   env_file_foundTrt   account_address_masked"api_wallet_address_from_env_masked$agent_wallet_address_from_env_masked2api_wallet_address_derived_from_private_key_masked4agent_wallet_address_derived_from_private_key_maskedrz   r|   r~   r   r   sdk_account_address_will_ber   r   r   r   r   rr   r6   )r   r   rm   rt   r   rn   rp   r   rq   r   rz   r|   r~   r   r   r   r   r   r   r   r   listrr   r6   rx   s    r   maskedzHyperliquidEnvConfig.masked   s{   
48
S!344
 d
 t3	

 %l43G&H&H
 1,t?_2`2`
 3LAc4d4d
 A,tOnBoBo
 CLQUQrDsDs
 1$2Y
 3D4]
 89g
 :4;k
 <T=o
 *<8P+Q+Q
  $T%?!
" #D$=#
$ "&!7*.*I"&"9T]++4;''-
 
 
 	
r   N)r   rP   )r   r   )r   r   )r   r   )__name__
__module____qualname____annotations__rr   rt   ru   rv   propertyrz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r[   r   r   rl   rl   P   s        HHH++++**** "H""""&.O....5:,::::,1#1111c c c Xc
 7 7 7 X7 C C C XC > > > X> A A A XA $ $ $ X$ 0 0 0 X0 / / / X/ $ $ $ X$ B B B XB
 R R R XR e e e Xe _ _ _ X_    X
 
 
 
 
 
r   rl   Fr   )r&   allow_errorsrt   ru   rv   r   rt   rs   ru   rv   c               L	   t          |           } |dvrt          d|           t          | |          }|t          dt          |                     t          |          }g }g }	t          |          }
|j        |
k    r|                    d           |                    dd          	                                pw|                    dd          	                                pO|                    d	d          	                                p'|                    d
d          	                                }|                    dd          	                                py|                    dd          	                                pQ|                    dd          	                                p)|                    dd          	                                pd }t          |          }t          |          r|	                    d           |s|                    ddg           t          |          }|dk    r| dk    r|s|                    d           |s|                    ddg           n|s|                    ddg           |rc|ra|                                |                                k    r7| dk    r|r|	                    ddg           n|                    ddg           |s|	                    ddg           nc|r|s|	                    ddg           |rC|rA|                                |                                k    r|	                    ddg           |s	 |rC|rA|                                |                                k    r|                    ddg           |r]|r[|                                |                                k    r1|dk    r|                    d            n|	                    d            t          | ||||||t!          t"                              |                    t!          t"                              |	                    |||!          }|j        r)|s't          d"                    |j                            |S )#N>   r   r   zunsupported validation_mode: r%   zmissing_env_file:wrong_env_file_loadedrX   rG   rV   rW   rR   rY   rT   rU   rS   legacy_env_names_usedmissing_HL_ACCOUNT_ADDRESSmissing_HL_WALLET_ADDRESSr   r   mainnet_signed_actions_blockedmissing_HL_AGENT_PRIVATE_KEYmissing_HL_API_PRIVATE_KEYr   r   r   r   r   missing_HL_AGENT_WALLET_ADDRESSmissing_API_Keyr   r~   r   )r   rm   r@   rn   ro   rp   rq   r6   rr   rt   ru   rv   ;)r$   r#   r1   FileNotFoundErrorr"   rC   r.   appendrN   r!   rO   rc   extendri   r    rl   tupledictfromkeysr6   join)r   r&   r   rt   ru   rv   r0   r@   r6   rr   expected_namern   rd   api_keyderivedcfgs                   r   load_hyperliquid_envr      s    

C444JJJKKK+666D| IN34G I IJJJ


CFH"3'MyM!!-...ww3R88>>@@  QCGGLegiDjDjDpDpDrDr  Qvyv}v}  X  Z\  w]  w]  wc  wc  we  we  Q  il  ip  ip  qD  FH  iI  iI  iO  iO  iQ  iQO771266<<>>  P#''J_acBdBdBjBjBlBl  Ppspwpw  yN  PR  qS  qS  qY  qY  q[  q[  P  _b  _f  _f  g{  }  _@  _@  _F  _F  _H  _H  P  LPKsmmGc"" 1/000 S35PQRRR-k::G("")$CMM:;;; 	ZMM9;WXYYYY 	ZMM9;WXYYY 	ew 	e7==??gmmoo#E#Ei$L!DFd effffBDbcddd 	TOO>@QRSSS 	\w 	\OO;=YZ[[[ 	cw 	c7==??gmmoo#E#EOO@B`abbb 	 t7 t'<'<'>'>'--//'Q'QDFqrsss M7 M'<'<'>'>'--//'Q'Qh&&MMIJJJJOOKLLL
'#$+#*T]]6**++t}}X..//'1Y(G  C z /, /#*--...Jr   )r&   rt   ru   r   c          	        t          |           } t          |          }t          | |          }|i d| dt          t	          |r|d         nt
          d                                                   t          |          z            ddd|d	d d
d dd dd dd dddddddddddd dd d| dk    ddd g dgdS 	 t          | |d||          	                                S # t          $ rv}i d| dt          |          ddd|d	d d
d dd dd dd dddddddddddd dd d| dk    o
|j        dk    ddd g t          |          j        gdcY d }~S d }~ww xY w)Nr%   r   rm   r   r   Frt   r   r   r   r   r   rz   r|   r~   r   r   r   r   r   r   missing_env_filer   T)r&   r   rt   ru   r   )r$   r   r1   r   r   DEFAULT_SEARCH_DIRSr+   r"   r   r   rh   r.   typer   )r   r&   rt   ru   search_dirs_tupler0   excs          r   diagnose_hyperliquid_envr     s    

Ck***;<<<D|
3
S>O&l&7&:&:UhikUl!m!m!x!x!z!z  ~L  MP  ~Q  "Q  R  R
 e
 	

 %d
 1$
 3D
 A$
 CD
 1%
 3E
 8
 :5
 <U
 *4
  $T!
" #C9$4#
$ "'*/"&)*-
 
 
 	
0 
#)+5]
 
 
 &((	  
 
 

3
SYY
 d
 	

 %d
 1$
 3D
 A$
 CD
 1%
 3E
 8
 :5
 <U
 *4
  $T!
" #C9$4$Sm9S#
$ "'*/"&Cyy)*-
 
 
 	
 	
 	
 	
 	
 	

s   %C* *
E*4A+E%E*%E*N)r   r   r   r   )r   r   r   r   )r   r   r&   r'   r   r(   )r0   r   r   r2   )r@   rD   r   r   )r@   rD   r   rP   )rd   r   r   r   )r   r   r&   r'   r   rP   rt   rs   ru   rP   rv   rP   r   rl   )
r   r   r&   r'   rt   rs   ru   rP   r   r   )
__future__r   dataclassesr   pathlibr   typingr   r   r   r	   eth_accountr
   r"   r   rs   r   r$   r1   rC   rO   rc   ri   rl   r   r   r[   r   r   <module>r      s   " " " " " " ! ! ! ! ! !       2 2 2 2 2 2 2 2 2 2 2 2      *}EEt,--tt4I/J/JK -.h h h h    DW         
 
 
 
[ [ [ [    $e
 e
 e
 e
 e
 e
 e
 e
V )<&.5:,1O O O O O Oj )<&.5:C
 C
 C
 C
 C
 C
 C
 C
r   