from __future__ import annotations

PROTOCOL_VERSION = "0.5.0"

from typing import Literal

from pydantic import BaseModel, Field


class ServerSnapshot(BaseModel):
    type: Literal["server_snapshot"] = "server_snapshot"
    hostname: str = Field(min_length=1, max_length=255)
    cpu_percent: float = Field(ge=0, le=100)
    load_1m: float = Field(ge=0)
    load_5m: float = Field(ge=0)
    memory_used: int = Field(ge=0)
    memory_total: int = Field(gt=0)
    memory_percent: float = Field(ge=0, le=100)
    swap_percent: float = Field(ge=0, le=100)
    disk_used: int = Field(ge=0)
    disk_total: int = Field(gt=0)
    disk_percent: float = Field(ge=0, le=100)
    network_rx_bytes: int = Field(ge=0)
    network_tx_bytes: int = Field(ge=0)
    network_rx_bps: float = Field(ge=0)
    network_tx_bps: float = Field(ge=0)
    uptime: int = Field(ge=0)
    timestamp: str = Field(min_length=1)
