from datetime import datetime from typing import Literal from pydantic import BaseModel, Field class DnsIngestEvent(BaseModel): src_ip: str qname: str answers: list[str] = Field(default_factory=list) ts: datetime | None = None class DhcpIngestEvent(BaseModel): ip: str mac: str | None = None hostname: str | None = None state: Literal["online", "offline", "lease"] = "lease" ts: datetime | None = None class FlowIngestEvent(BaseModel): src_ip: str dst_ip: str | None = None dst_host: str | None = None protocol: str | None = None bytes_count: int | None = None ts: datetime | None = None