"""Server domain models.

Internal domain-focused models used by server_service. These represent the
business domain layer and are independent of HTTP response shapes.

Response models are defined in `app.models.server` and mappers convert domain
models to response models at the router boundary.
"""

from __future__ import annotations

from dataclasses import dataclass


@dataclass(frozen=True)
class DomainServerSettings:
    """Fail2ban server-level settings (domain model)."""

    log_level: str
    log_target: str
    db_path: str
    db_purge_age: int
    db_max_matches: int
    syslog_socket: str | None = None


@dataclass(frozen=True)
class DomainServerSettingsResult:
    """Server settings with warnings (domain model)."""

    settings: DomainServerSettings
    warnings: dict[str, bool]
