"""Health domain models.

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

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

from __future__ import annotations

from dataclasses import dataclass


@dataclass(frozen=True)
class DomainServerStatus:
    """Cached fail2ban server health snapshot (domain model)."""

    online: bool
    version: str | None = None
    active_jails: int = 0
    total_bans: int = 0
    total_failures: int = 0
