"""Strict pydantic models for the 2024 SRD (preview tier), one module per
upstream schema file.

The 2024 SRD is a developing standard: these models are validated against the
vendored corpus like 2014, and 2024 databases are shipped alongside 2014's
(GitHub Release asset, and bundled in the PyPI package), but 2024 drift must
never gate the stable 2014 pipeline (tests carry the srd2024 marker, and its
release job is independent of 2014's - see release.yml).
"""

from dnd5e_db.models.base import SRDModel
from dnd5e_db.models.srd2024.ability_scores import AbilityScore
from dnd5e_db.models.srd2024.alignments import Alignment
from dnd5e_db.models.srd2024.backgrounds import Background
from dnd5e_db.models.srd2024.classes import Class
from dnd5e_db.models.srd2024.conditions import Condition
from dnd5e_db.models.srd2024.damage_types import DamageType
from dnd5e_db.models.srd2024.equipment import Equipment
from dnd5e_db.models.srd2024.equipment_categories import EquipmentCategory
from dnd5e_db.models.srd2024.feats import Feat
from dnd5e_db.models.srd2024.features import Feature
from dnd5e_db.models.srd2024.languages import Language
from dnd5e_db.models.srd2024.levels import Level
from dnd5e_db.models.srd2024.magic_items import MagicItem
from dnd5e_db.models.srd2024.magic_schools import MagicSchool
from dnd5e_db.models.srd2024.monsters import Monster
from dnd5e_db.models.srd2024.poisons import Poison
from dnd5e_db.models.srd2024.proficiencies import Proficiency
from dnd5e_db.models.srd2024.skills import Skill
from dnd5e_db.models.srd2024.species import Species
from dnd5e_db.models.srd2024.subclasses import Subclass
from dnd5e_db.models.srd2024.subspecies import Subspecies
from dnd5e_db.models.srd2024.traits import Trait
from dnd5e_db.models.srd2024.weapon_mastery_properties import WeaponMasteryProperty
from dnd5e_db.models.srd2024.weapon_properties import WeaponProperty

COLLECTIONS: dict[str, type[SRDModel]] = {
    "5e-SRD-Ability-Scores.json": AbilityScore,
    "5e-SRD-Alignments.json": Alignment,
    "5e-SRD-Backgrounds.json": Background,
    "5e-SRD-Classes.json": Class,
    "5e-SRD-Conditions.json": Condition,
    "5e-SRD-Damage-Types.json": DamageType,
    "5e-SRD-Equipment-Categories.json": EquipmentCategory,
    "5e-SRD-Equipment.json": Equipment,
    "5e-SRD-Feats.json": Feat,
    "5e-SRD-Features.json": Feature,
    "5e-SRD-Languages.json": Language,
    "5e-SRD-Levels.json": Level,
    "5e-SRD-Magic-Items.json": MagicItem,
    "5e-SRD-Magic-Schools.json": MagicSchool,
    "5e-SRD-Monsters.json": Monster,
    "5e-SRD-Poisons.json": Poison,
    "5e-SRD-Proficiencies.json": Proficiency,
    "5e-SRD-Skills.json": Skill,
    "5e-SRD-Species.json": Species,
    "5e-SRD-Subclasses.json": Subclass,
    "5e-SRD-Subspecies.json": Subspecies,
    "5e-SRD-Traits.json": Trait,
    "5e-SRD-Weapon-Mastery-Properties.json": WeaponMasteryProperty,
    "5e-SRD-Weapon-Properties.json": WeaponProperty,
}

__all__ = [
    "COLLECTIONS",
    "AbilityScore",
    "Alignment",
    "Background",
    "Class",
    "Condition",
    "DamageType",
    "Equipment",
    "EquipmentCategory",
    "Feat",
    "Feature",
    "Language",
    "Level",
    "MagicItem",
    "MagicSchool",
    "Monster",
    "Poison",
    "Proficiency",
    "Skill",
    "Species",
    "Subclass",
    "Subspecies",
    "Trait",
    "WeaponMasteryProperty",
    "WeaponProperty",
]
