#!/usr/bin/env python3 """ Test script to verify Hyperliquid balance fetching with CCXT """ import sys import os from pathlib import Path # Add the project root and src directory to the path project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) sys.path.insert(0, str(project_root / 'src')) from hyperliquid_client import HyperliquidClient from config import Config def test_balance(): """Test balance fetching functionality.""" print("๐Ÿงช Testing Hyperliquid Balance Fetching") print("=" * 50) try: # Validate configuration first print("๐Ÿ” Validating configuration...") if not Config.validate(): print("โŒ Configuration validation failed!") return False print(f"โœ… Configuration valid") print(f"๐ŸŒ Network: {'Testnet' if Config.HYPERLIQUID_TESTNET else 'Mainnet'}") print(f"๐Ÿ”‘ Private Key: {Config.HYPERLIQUID_PRIVATE_KEY[:10]}..." if Config.HYPERLIQUID_PRIVATE_KEY else "โŒ No private key") print() # Initialize client print("๐Ÿ”ง Initializing Hyperliquid client...") client = HyperliquidClient(use_testnet=Config.HYPERLIQUID_TESTNET) if not client.sync_client: print("โŒ Failed to initialize client!") return False print("โœ… Client initialized successfully") print() # Test balance fetching print("๐Ÿ’ฐ Fetching account balance...") balance = client.get_balance() if balance: print("โœ… Balance fetch successful!") print("๐Ÿ“Š Balance data:") # Pretty print the balance if isinstance(balance, dict): for key, value in balance.items(): if isinstance(value, dict): print(f" {key}:") for sub_key, sub_value in value.items(): print(f" {sub_key}: {sub_value}") else: print(f" {key}: {value}") else: print(f" Raw balance: {balance}") return True else: print("โŒ Balance fetch failed! Trying alternative method...") print() # Try alternative method print("๐Ÿ”„ Testing alternative balance fetching approaches...") balance_alt = client.get_balance_alternative() if balance_alt: print("โœ… Alternative balance fetch successful!") print("๐Ÿ“Š Balance data:") # Pretty print the balance if isinstance(balance_alt, dict): for key, value in balance_alt.items(): if isinstance(value, dict): print(f" {key}:") for sub_key, sub_value in value.items(): print(f" {sub_key}: {sub_value}") else: print(f" {key}: {value}") else: print(f" Raw balance: {balance_alt}") return True else: print("โŒ Alternative balance fetch also failed!") return False except Exception as e: print(f"๐Ÿ’ฅ Test failed with error: {e}") import traceback print("๐Ÿ“œ Full traceback:") traceback.print_exc() return False if __name__ == "__main__": success = test_balance() if success: print("\n๐ŸŽ‰ Balance test PASSED!") sys.exit(0) else: print("\n๐Ÿ’ฅ Balance test FAILED!") sys.exit(1)