from __future__ import annotations

from pathlib import Path


def test_ctb_copy_track_does_not_import_exchange_or_order_side_effects() -> None:
    root = Path("src/ctb_copy")
    forbidden = tuple(
        "".join(parts)
        for parts in [
            ("hyperliquid", "_", "live", "_", "executor"),
            ("hyperliquid", ".", "exchange"),
            ("Exchange", "("),
            ("create", "_", "order"),
            ("market", "_", "open"),
            ("set", "_", "leverage"),
            ("vault", "Deposit"),
            ("HL", "_", "AGENT", "_", "PRIVATE", "_", "KEY"),
            ("HL", "_", "API", "_", "PRIVATE", "_", "KEY"),
            ("Account", ".", "from", "_", "key"),
        ]
    )
    offenders: list[str] = []
    for path in root.rglob("*.py"):
        text = path.read_text(encoding="utf-8")
        for needle in forbidden:
            if needle in text:
                offenders.append(f"{path}:{needle}")
    assert offenders == []
