"""
Core Domain Entities (Level 0).

This package exposes the foundational primitives and economic models
used throughout the Xulcan orchestration platform.
"""

# 1. Importar desde los módulos internos
from .primitives import (
    CanonicalRecord,
    MachineID,
    SafeURL,
    Base64Data,
    HumanLabel,
    SemanticText,
    ExternalID,
    MimeType,
    SemanticVersion,
    ContextKey,
    SafePayload,
    FinitePositiveFloat,
    # También puedes exponer constantes si son útiles fuera
    MAX_IDENTIFIER_LENGTH,
    MAX_LABEL_LENGTH,
    MAX_SEMANTIC_TEXT_LENGTH,
    MAX_EXTERNAL_ID_LENGTH   
)

from .economics import (
    UsageStats,
    BudgetConfig,
    BudgetStrategy,
    BudgetExceededError,
)

# 2. Definir __all__ (Buena práctica para limpiar el namespace)
# Esto controla qué se exporta si alguien hace: from xulcan.core import *
__all__ = [
    # Primitives
    "CanonicalRecord",
    "MachineID",
    "SafeURL",
    "Base64Data",
    "HumanLabel",
    "SemanticText",
    "ExternalID",
    "MimeType",
    "SemanticVersion",
    "ContextKey",
    "SafePayload",
    "FinitePositiveFloat",
    "MAX_IDENTIFIER_LENGTH",
    "MAX_LABEL_LENGTH",
    "MAX_SEMANTIC_TEXT_LENGTH",
    "MAX_EXTERNAL_ID_LENGTH",
    
    # Economics
    "UsageStats",
    "BudgetConfig",
    "BudgetStrategy",
    "BudgetExceededError",
]