"""Core data models for the Mantimon TCG game engine.

This module exports Pydantic models for cards, game state, and actions.

For enums, import from app.core.enums or app.core:
    from app.core.enums import CardType, EnergyType, TurnPhase
    from app.core import CardType, EnergyType  # convenience

Usage:
    from app.core.models import (
        # Card models
        CardDefinition, CardInstance, Attack, Ability,
        # Game state
        GameState, PlayerState, Zone, ForcedAction,
        # Actions
        Action, AttackAction, PlayPokemonAction, parse_action,
    )
"""

from app.core.models.actions import (
    VALID_PHASES_FOR_ACTION,
    Action,
    AttachEnergyAction,
    AttackAction,
    EvolvePokemonAction,
    PassAction,
    PlayPokemonAction,
    PlayTrainerAction,
    ResignAction,
    RetreatAction,
    SelectActiveAction,
    SelectPrizeAction,
    UseAbilityAction,
    parse_action,
)
from app.core.models.card import (
    Ability,
    Attack,
    CardDefinition,
    CardInstance,
    WeaknessResistance,
)
from app.core.models.game_state import (
    ForcedAction,
    GameState,
    PlayerState,
    Zone,
)

__all__ = [
    # Card models
    "Ability",
    "Attack",
    "CardDefinition",
    "CardInstance",
    "WeaknessResistance",
    # Game state models
    "ForcedAction",
    "GameState",
    "PlayerState",
    "Zone",
    # Action models
    "Action",
    "AttachEnergyAction",
    "AttackAction",
    "EvolvePokemonAction",
    "PassAction",
    "PlayPokemonAction",
    "PlayTrainerAction",
    "ResignAction",
    "RetreatAction",
    "SelectActiveAction",
    "SelectPrizeAction",
    "UseAbilityAction",
    "VALID_PHASES_FOR_ACTION",
    "parse_action",
]
