
    x%j
                     v    d dl Zd dlmc mZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZ  G d d          Zd Zd ZdS )	    N)Decimal)HyperliquidAccountStateClientparse_account_state)HyperliquidMarketDatabuild_hyperliquid_info_urlsummarize_l2_bookc                       e Zd Zd ZddZdS )FakeTransportc                     g | _         d S )N)posts)selfs    ^/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_hyperliquid_readonly_adapters.py__init__zFakeTransport.__init__   s    


    
   c                 4   | j                             |||f           |d         dk    rdddddddgiS |d         d	k    rddddgid
diggS |d         dk    rddiS |d         dk    rdddgS |d         dk    rddddgdddggiS t          |          )NtypemetauniverseBTC   )name
szDecimalsETH   metaAndAssetCtxs	dayNtlVlm1allMids100000candleSnapshot   100)tcl2Booklevels99)pxsz1012)r   appendAssertionError)r   urlpayloadtimeouts       r   postzFakeTransport.post   s   
312226?f$$%q!A!AEabCcCc dee6?0005"B"B!CDUXGYFZ[[6?i''8$$6?...%(())6?h&&t3 7 78%s;S;S:TUVVW%%%r   N)r   )__name__
__module____qualname__r   r2    r   r   r
   r
      s7          & & & & & &r   r
   c                     t                      } t          d|           }d}t          |          }|j        }d} ||          }|sddt	          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          t          j        |          t          j        |          t          j        |          dz  }t          t          j
        |                    d x}x}x}x}}|j        }d} ||          }d}||k    }|st          j        d	|fd
||f          dt	          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          t          j        |          dz  }	dd|	iz  }
t          t          j
        |
                    d x}x}x}x}}|                                d         }d}t          |          }||k    }|st          j        d	|fd||f          t          j        |          dt	          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }dd|iz  }	t          t          j
        |	                    d x}x}x}}|j        }d}d}d}d} |||||          }t!          |          }d}||k    }|sdt          j        d	|fd||f          dt	          j                    v st          j        t                     rt          j        t                     nddt	          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j
        |                    d x}x}x}x}x}x}x}x}}|                    d          }t%          |          }|j        }d}t          |          }||k    }|st          j        d	|fd||f          dt	          j                    v st          j        |          rt          j        |          ndt          j        |          dt	          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          d z  }d!d"|iz  }t          t          j
        |                    d x}x}x}}|j        }d#}t          |          }||k    }|st          j        d	|fd$||f          dt	          j                    v st          j        |          rt          j        |          ndt          j        |          dt	          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          d z  }d!d"|iz  }t          t          j
        |                    d x}x}x}}|j        }d%}||k    }|st          j        d&|fd'||f          dt	          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          d(z  }d)d*|iz  }t          t          j
        |                    d x}x}}d+ | j        D             }t/          |          }|sd,d-t	          j                    v st          j        t.                    rt          j        t.                    nd-t          j        |          t          j        |          d.z  }t          t          j
        |                    d x}}d S )/Ntestnet)env	transportz/infozjassert %(py10)s
{%(py10)s = %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}.endswith
}(%(py8)s)
}r   )py0py2py4py6py8py10r   r   ==)zU%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_sz_decimals
}(%(py4)s)
} == %(py9)sclientr;   r<   r=   r>   py9assert %(py11)spy11r    )z0%(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}r   )py1py3py5py7zassert %(py9)srE   1mr"      )z%(py15)s
{%(py15)s = %(py0)s(%(py13)s
{%(py13)s = %(py3)s
{%(py3)s = %(py1)s.get_candles
}(%(py5)s, %(py7)s, %(py9)s, %(py11)s)
})
} == %(py18)slen)
r;   rH   rI   rJ   rK   rE   rG   py13py15py18zassert %(py20)spy20r(   )zN%(py2)s
{%(py2)s = %(py0)s.best_bid
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}summary)r;   r<   r=   r>   r?   zassert %(py10)sr@   r+   )zN%(py2)s
{%(py2)s = %(py0)s.best_ask
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   )>)z1%(py2)s
{%(py2)s = %(py0)s.spread_pct
} > %(py5)s)r;   r<   rJ   zassert %(py7)srK   c              3   :   K   | ]}|d          d         dk    V  dS )r"   r   orderNr6   ).0calls     r   	<genexpr>zStest_readonly_market_data_uses_info_endpoint_without_order_calls.<locals>.<genexpr>(   s/      FFdtAwv')FFFFFFr   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}all)r;   r<   r=   )r
   r   r   endswith@py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprr.   _format_explanationget_sz_decimals_call_reprcompareget_all_midsr   get_candlesrN   get_l2_bookr   best_bidbest_ask
spread_pctr   rZ   )r:   rC   @py_assert1@py_assert3@py_assert5@py_assert7@py_assert9@py_format11@py_assert8@py_format10@py_format12@py_assert0@py_assert4@py_assert6@py_assert2@py_format8@py_assert10@py_assert12@py_assert14@py_assert17@py_assert16@py_format19@py_format21bookrS   @py_format9@py_format6@py_format5s                               r   @test_readonly_market_data_uses_info_endpoint_without_order_callsr      sW	   I"yIFFFF&/B%i00B09B'B99'BBBBBBBBBBBBBBB%BBBBB%BBBBBBiBBBB0BBBB9BBBB'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB!-%-!!%((-A-(A----------(A------------6-----6------!----%----(----A-------------------------------  '<8<78+<+<<'+<<<<<<<<<<<'+<<<<<<'<<<<<<<<<<<7<<<<<7<<<<<<8<<<<+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<!:%::q:!:!!%q!44:3455::5::::::::::5::::::::::::3:::::3:::::::::::::v:::::v::::::!::::%::::::::q::::!::::4::::5:::::::::::::::::::::::::::::::::::::::::::e$$D%%G,t,wt}},},,,,,,,,,,},,,,,,,,,,,,7,,,,,7,,,,,,,,,,,,,,,,,w,,,,,w,,,,,,t,,,,},,,,,,,,,,,,,,,,,,,,,,,,,,,,,-u-wu~~-~----------~------------7-----7-----------------w-----w------u----~-----------------------------!!!!!!!!!!!!!!!!!!!!!!!!7!!!!!7!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!FFioFFFF3FFFFFFFFFFFFFFFF3FFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFr   c            
      r    G d d          } t           |                       }|                    d          }|                    d          }t          d||          }|                    d          d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          d	z  }d
d|iz  }	t          t          j	        |	                    d x}x}}|j
        }
d} |
|          }dddg}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |
          t          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}
x}x}x}}|j        }
d} |
|          }d}t          |          }||k    }|s+t          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |
          t          j        |          t          j        |          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}
x}x}x}x}}|j        }
d} |
|          }d}t          |          }||k    }|s+t          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |
          t          j        |          t          j        |          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}
x}x}x}x}}|j        }
d} |
|          }d}t          |          }||k    }|s+t          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |
          t          j        |          t          j        |          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}
x}x}x}x}}|j        d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          d	z  }d
d|iz  }	t          t          j	        |	                    d x}x}}d S )Nc                        e Zd Zd Zd Zd ZdS )Gtest_account_state_client_parses_readonly_info_client.<locals>.FakeInfoc                     dddddigddidS )	Npositionr   0.012.5)coinsziunrealizedPnlaccountValue502.5)assetPositionsmarginSummaryr6   r   addresss     r   
user_statezRtest_account_state_client_parses_readonly_info_client.<locals>.FakeInfo.user_state-   s?    (2U6di4j4j'k&l  AO  QX  @Y  Z  Z  Zr   c                     dddddgiS )NbalancesUSDC50050)r   totalholdr6   r   s     r   spot_user_statezWtest_account_state_client_parses_readonly_info_client.<locals>.FakeInfo.spot_user_state0   s    &5$!O!O PQQr   c                     dddgS )Nr   r"   r   oidr6   r   s     r   open_orderszStest_account_state_client_parses_readonly_info_client.<locals>.FakeInfo.open_orders3   s    "1--..r   N)r3   r4   r5   r   r   r   r6   r   r   FakeInfor   ,   sG        	Z 	Z 	Z	R 	R 	R	/ 	/ 	/ 	/ 	/r   r   0xabcr   r   r   rA   )z%(py1)s == %(py4)s)rH   r=   zassert %(py6)sr>   r"   r   )zU%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_open_orders
}(%(py4)s)
} == %(py9)srC   rD   rF   rG   r   )zy%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_account_equity
}(%(py4)s)
} == %(py12)s
{%(py12)s = %(py8)s(%(py10)s)
}r   )r;   r<   r=   r>   r?   r@   py12zassert %(py14)spy14450)zt%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_free_usdc
}(%(py4)s)
} == %(py12)s
{%(py12)s = %(py8)s(%(py10)s)
}z10.0)zw%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_margin_usage
}(%(py4)s)
} == %(py12)s
{%(py12)s = %(py8)s(%(py10)s)
}r   r   )r   get_user_stateget_spot_user_stater   get_open_positionsr^   rc   r`   r.   ra   get_open_ordersr\   r]   r_   get_account_equityr   get_free_usdcget_margin_usageopen_positions)r   rC   statespotparsedrs   rk   rv   r   @py_format7rj   rl   rp   rm   rq   rr   rn   @py_assert11@py_format13@py_format15s                       r   5test_account_state_client_parses_readonly_info_clientr   +   s   / / / / / / / / +88::66F!!'**E%%g..D %66F$$W--e4U;EvE;vEEEEEEEEEE;vEEEEE;EEEEvEEEEEEEEEEEEEEEEEEEEEEEEEEE!I'I!!'**Ia/H/H.II*.IIIIIIIIIII*.IIIIIIIIIIIII6IIIII6IIIIII!IIII'IIII*IIII.IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII$AWA$$W--AA1A1AA-1AAAAAAAAAAA-1AAAAAAAAAAAAA6AAAAA6AAAAAA$AAAAWAAAA-AAAAAAAAAAAAAAAAAAAAAAAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA::((:E:GENN:(N::::::::::(N::::::::::::6:::::6::::::::::::::(:::::::::::G:::::G::::::E::::N:::::::::::::::::::::::::::::::::">7>""7++>v>wv>+>>>>>>>>>>+>>>>>>>>>>>>6>>>>>6>>>>>>">>>>7>>>>+>>>>>>>>>>>w>>>>>w>>>>>>v>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> '8AEA8EAAAAAAAAAA8EAAAAA8AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr   )builtinsr\   _pytest.assertion.rewrite	assertionrewriter^   decimalr   src.hyperliquid.account_stater   r   src.hyperliquid.market_datar   r   r   r
   r   r   r6   r   r   <module>r      s                        \ \ \ \ \ \ \ \ l l l l l l l l l l& & & & & & & &&G G G"B B B B Br   