"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from __future__ import annotations
from .endpointscanned import EndpointScanned, EndpointScannedTypedDict
from .forwarddnsresolved import ForwardDNSResolved, ForwardDNSResolvedTypedDict
from .jarmscanned import JarmScanned, JarmScannedTypedDict
from .locationupdated import LocationUpdated, LocationUpdatedTypedDict
from .reversednsresolved import ReverseDNSResolved, ReverseDNSResolvedTypedDict
from .routeupdated import RouteUpdated, RouteUpdatedTypedDict
from .servicescanned import ServiceScanned, ServiceScannedTypedDict
from .whoisupdated import WhoisUpdated, WhoisUpdatedTypedDict
from censys_platform.types import BaseModel
from typing import Optional
from typing_extensions import NotRequired, TypedDict


class HostTimelineEventTypedDict(TypedDict):
    endpoint_scanned: NotRequired[EndpointScannedTypedDict]
    event_time: NotRequired[str]
    forward_dns_resolved: NotRequired[ForwardDNSResolvedTypedDict]
    jarm_scanned: NotRequired[JarmScannedTypedDict]
    location_updated: NotRequired[LocationUpdatedTypedDict]
    reverse_dns_resolved: NotRequired[ReverseDNSResolvedTypedDict]
    route_updated: NotRequired[RouteUpdatedTypedDict]
    service_scanned: NotRequired[ServiceScannedTypedDict]
    whois_updated: NotRequired[WhoisUpdatedTypedDict]


class HostTimelineEvent(BaseModel):
    endpoint_scanned: Optional[EndpointScanned] = None

    event_time: Optional[str] = None

    forward_dns_resolved: Optional[ForwardDNSResolved] = None

    jarm_scanned: Optional[JarmScanned] = None

    location_updated: Optional[LocationUpdated] = None

    reverse_dns_resolved: Optional[ReverseDNSResolved] = None

    route_updated: Optional[RouteUpdated] = None

    service_scanned: Optional[ServiceScanned] = None

    whois_updated: Optional[WhoisUpdated] = None
