"""Pure Python validation for KiCad designs.

This module provides validators that check PCB and schematic designs
without requiring kicad-cli to be installed.

DRC Validation:
    >>> from kicad_tools.schema.pcb import PCB
    >>> from kicad_tools.validate import DRCChecker, DRCViolation, DRCResults
    >>>
    >>> pcb = PCB.load("board.kicad_pcb")
    >>> checker = DRCChecker(pcb, manufacturer="jlcpcb", layers=4)
    >>> results = checker.check_all()
    >>>
    >>> print(results.summary())
    >>> for violation in results:
    ...     print(f"  {violation.rule_id}: {violation.message}")

Netlist Sync Validation:
    >>> from kicad_tools.validate import NetlistValidator, SyncResult, SyncIssue
    >>>
    >>> validator = NetlistValidator("project.kicad_sch", "project.kicad_pcb")
    >>> result = validator.validate()
    >>>
    >>> if not result.in_sync:
    ...     for issue in result.issues:
    ...         print(f"{issue.severity}: {issue.message}")
    ...         print(f"  Fix: {issue.suggestion}")

Connectivity Validation:
    >>> from kicad_tools.schema.pcb import PCB
    >>> from kicad_tools.validate import ConnectivityValidator
    >>>
    >>> pcb = PCB.load("board.kicad_pcb")
    >>> validator = ConnectivityValidator(pcb)
    >>> result = validator.validate()
    >>>
    >>> if not result.is_fully_routed:
    ...     for issue in result.issues:
    ...         print(f"{issue.net_name}: {issue.message}")
    ...         print(f"  Fix: {issue.suggestion}")

Difference from ``kicad_tools.drc``:
    - ``kicad_tools.drc``: Parses DRC reports generated by kicad-cli
    - ``kicad_tools.validate``: Performs DRC checks in pure Python (no kicad-cli)
"""

from .checker import DRCChecker
from .connectivity import ConnectivityIssue, ConnectivityResult, ConnectivityValidator
from .consistency import ConsistencyIssue, ConsistencyResult, SchematicPCBChecker
from .netlist import NetlistValidator, SyncIssue, SyncResult
from .placement import BOMPlacementVerifier, PlacementResult, PlacementStatus
from .violations import DRCResults, DRCViolation

__all__ = [
    # DRC validation
    "DRCChecker",
    "DRCViolation",
    "DRCResults",
    # Netlist sync validation
    "NetlistValidator",
    "SyncIssue",
    "SyncResult",
    # Connectivity validation
    "ConnectivityValidator",
    "ConnectivityIssue",
    "ConnectivityResult",
    # Schematic-PCB consistency validation
    "SchematicPCBChecker",
    "ConsistencyIssue",
    "ConsistencyResult",
    # BOM placement validation
    "BOMPlacementVerifier",
    "PlacementStatus",
    "PlacementResult",
]
