#!/usr/bin/env python3
"""
Test script to verify configuration and CCXT format
"""

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 config import Config

def test_config():
    """Test configuration setup."""
    print("๐Ÿงช Testing Configuration Setup")
    print("=" * 50)
    
    try:
        # Test basic configuration
        print("๐Ÿ” Checking environment variables...")
        print(f"๐Ÿ“‚ Current directory: {os.getcwd()}")
        print(f"๐Ÿ“„ .env file exists: {os.path.exists('.env')}")
        print()
        
        # Show raw environment variables
        print("๐Ÿ”‘ Raw Environment Variables:")
        print(f"  HYPERLIQUID_PRIVATE_KEY: {'โœ… Set' if os.getenv('HYPERLIQUID_PRIVATE_KEY') else 'โŒ Not Set'}")
        print(f"  HYPERLIQUID_SECRET_KEY: {'โœ… Set' if os.getenv('HYPERLIQUID_SECRET_KEY') else 'โŒ Not Set'}")
        print(f"  HYPERLIQUID_TESTNET: {os.getenv('HYPERLIQUID_TESTNET', 'NOT SET')}")
        print(f"  TELEGRAM_BOT_TOKEN: {'โœ… Set' if os.getenv('TELEGRAM_BOT_TOKEN') else 'โŒ Not Set'}")
        print(f"  TELEGRAM_CHAT_ID: {'โœ… Set' if os.getenv('TELEGRAM_CHAT_ID') else 'โŒ Not Set'}")
        print(f"  TELEGRAM_ENABLED: {os.getenv('TELEGRAM_ENABLED', 'NOT SET')}")
        print()
        
        # Test Config class
        print("โš™๏ธ Config Class Values:")
        print(f"  HYPERLIQUID_PRIVATE_KEY: {'โœ… Set (' + Config.HYPERLIQUID_PRIVATE_KEY[:10] + '...)' if Config.HYPERLIQUID_PRIVATE_KEY else 'โŒ Not Set'}")
        print(f"  HYPERLIQUID_SECRET_KEY: {'โœ… Set (' + Config.HYPERLIQUID_SECRET_KEY[:10] + '...)' if Config.HYPERLIQUID_SECRET_KEY else 'โŒ Not Set'}")
        print(f"  HYPERLIQUID_TESTNET: {Config.HYPERLIQUID_TESTNET}")
        print(f"  TELEGRAM_ENABLED: {Config.TELEGRAM_ENABLED}")
        print()
        
        # Test CCXT configuration format
        print("๐Ÿ”ง CCXT Configuration Format:")
        ccxt_config = Config.get_hyperliquid_config()
        
        for key, value in ccxt_config.items():
            if key in ['apiKey', 'secret', 'private_key'] and value:
                print(f"  {key}: {value[:10]}...")
            else:
                print(f"  {key}: {value}")
        print()
        
        # Test validation
        print("โœ… Configuration Validation:")
        is_valid = Config.validate()
        
        if is_valid:
            print("๐ŸŽ‰ Configuration is VALID!")
            
            # Show the exact format that will be sent to HyperliquidSync
            final_config = {
                'apiKey': Config.HYPERLIQUID_PRIVATE_KEY,
                'testnet': Config.HYPERLIQUID_TESTNET,
                'sandbox': Config.HYPERLIQUID_TESTNET,
            }
            
            if Config.HYPERLIQUID_SECRET_KEY:
                final_config['secret'] = Config.HYPERLIQUID_SECRET_KEY
            
            print("\n๐Ÿ“‹ Final CCXT Config (masked):")
            for key, value in final_config.items():
                if key in ['apiKey', 'secret'] and value:
                    print(f"  '{key}': '{value[:10]}...'")
                else:
                    print(f"  '{key}': {value}")
            
            return True
        else:
            print("โŒ Configuration is INVALID!")
            return False
            
    except Exception as e:
        print(f"๐Ÿ’ฅ Configuration test failed: {e}")
        import traceback
        traceback.print_exc()
        return False

if __name__ == "__main__":
    success = test_config()
    
    if success:
        print("\n๐ŸŽ‰ Config test PASSED!")
        sys.exit(0)
    else:
        print("\n๐Ÿ’ฅ Config test FAILED!")
        sys.exit(1)