"""
Rich Choice Objects System

This module provides a comprehensive system for managing choice fields throughout
the ThrillWiki application. It replaces simple tuple-based choices with rich
dataclass objects that support metadata, descriptions, categories, and deprecation.

Key Components:
- RichChoice: Base dataclass for choice objects
- ChoiceRegistry: Centralized management of all choice definitions
- RichChoiceField: Django model field for rich choices
- RichChoiceSerializer: DRF serializer for API responses
"""

from .base import ChoiceCategory, ChoiceGroup, RichChoice
from .fields import RichChoiceField
from .registry import ChoiceRegistry, register_choices
from .serializers import RichChoiceOptionSerializer, RichChoiceSerializer
from .utils import get_choice_display, validate_choice_value

__all__ = [
    "RichChoice",
    "ChoiceCategory",
    "ChoiceGroup",
    "ChoiceRegistry",
    "register_choices",
    "RichChoiceField",
    "RichChoiceSerializer",
    "RichChoiceOptionSerializer",
    "validate_choice_value",
    "get_choice_display",
]
