from django.core.management.base import BaseCommand, CommandError
from django.conf import settings


class Command(BaseCommand):
    help = "Check TRON Shasta configuration without exposing private keys."

    def handle(self, *args, **options):
        if settings.TRON_ENABLE_MAINNET:
            raise CommandError("Mainnet is disabled by this build.")
        if settings.TRON_NETWORK != "shasta":
            raise CommandError("TRON_NETWORK must be shasta.")

        if getattr(settings, "TRON_MOCK_MODE", False):
            self.stdout.write(self.style.SUCCESS("TRON Shasta MOCK configuration is valid."))
            self.stdout.write("Mode: local mock (no wallet, private key, or blockchain connection required)")
            self.stdout.write(f"Mock USDT balance: {settings.TRON_MOCK_USDT_BALANCE_MINOR / 1_000_000:.6f} USDT")
            self.stdout.write(f"USDT contract (reference only): {settings.TRON_USDT_CONTRACT}")
            self.stdout.write(f"RPC (not contacted in mock mode): {settings.TRON_RPC_URL}")
            return

        if not settings.TRON_PRIVATE_KEY:
            raise CommandError("TRON_PRIVATE_KEY is not configured.")
        try:
            from tronpy.keys import PrivateKey
            key = PrivateKey(bytes.fromhex(settings.TRON_PRIVATE_KEY))
            address = key.public_key.to_base58check_address()
        except Exception as exc:
            raise CommandError("TRON_PRIVATE_KEY is invalid.") from exc
        self.stdout.write(self.style.SUCCESS("TRON Shasta configuration is valid."))
        self.stdout.write(f"Settlement wallet: {address}")
        self.stdout.write(f"USDT contract: {settings.TRON_USDT_CONTRACT}")
        self.stdout.write(f"RPC: {settings.TRON_RPC_URL}")
