"""Pure domain layer - no infrastructure dependencies."""

# Value Objects
# Entities
from .entities import (
    CLEAR_SCREEN_SEQUENCE,
    MAX_SESSIONS_PER_USER,
    MAX_TABS_PER_USER,
    MAX_TOTAL_SESSIONS,
    OUTPUT_BUFFER_MAX_BYTES,
    OutputBuffer,
    Session,
    Tab,
)

# Ports
from .ports import (
    PTYFactory,
    PTYPort,
    SessionRepository,
    TabRepository,
)

# Services
from .services import (
    Clock,
    EnvironmentSanitizer,
    SessionLimitChecker,
    SessionLimitConfig,
    SessionLimitResult,
    TabLimitChecker,
    TabLimitConfig,
    TabLimitResult,
    TokenBucketRateLimiter,
)
from .values import (
    DEFAULT_BLOCKED_VARS,
    DEFAULT_SAFE_VARS,
    MAX_COLS,
    MAX_ROWS,
    MIN_COLS,
    MIN_ROWS,
    EnvironmentRules,
    RateLimitConfig,
    SessionId,
    ShellCommand,
    TabId,
    TerminalDimensions,
    UserId,
)

__all__ = [
    # Values
    "TerminalDimensions",
    "MIN_COLS",
    "MAX_COLS",
    "MIN_ROWS",
    "MAX_ROWS",
    "SessionId",
    "UserId",
    "TabId",
    "ShellCommand",
    "RateLimitConfig",
    "EnvironmentRules",
    "DEFAULT_SAFE_VARS",
    "DEFAULT_BLOCKED_VARS",
    # Entities
    "Session",
    "MAX_SESSIONS_PER_USER",
    "MAX_TOTAL_SESSIONS",
    "OutputBuffer",
    "OUTPUT_BUFFER_MAX_BYTES",
    "CLEAR_SCREEN_SEQUENCE",
    "Tab",
    "MAX_TABS_PER_USER",
    # Services
    "TokenBucketRateLimiter",
    "Clock",
    "EnvironmentSanitizer",
    "SessionLimitChecker",
    "SessionLimitConfig",
    "SessionLimitResult",
    "TabLimitChecker",
    "TabLimitConfig",
    "TabLimitResult",
    # Ports
    "SessionRepository",
    "TabRepository",
    "PTYPort",
    "PTYFactory",
]
