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

from __future__ import annotations
from enum import Enum
from gusto_app_integration.types import BaseModel
from typing import Optional
from typing_extensions import NotRequired, TypedDict


class ResourceType(str, Enum):
    r"""Name of the parent resource of the described entity."""

    COMPANY = "Company"


class EventTypedDict(TypedDict):
    r"""Representation of an Event"""

    uuid: str
    r"""Unique identifier for the event."""
    event_type: NotRequired[str]
    r"""Description of the event (e.g., payroll.submitted, or company.form.signed)."""
    resource_type: NotRequired[ResourceType]
    r"""Name of the parent resource of the described entity."""
    resource_uuid: NotRequired[str]
    r"""Unique identifier for the parent resource."""
    entity_type: NotRequired[str]
    r"""Name of the entity that the event corresponds to."""
    entity_uuid: NotRequired[str]
    r"""Unique identifier for the entity."""
    timestamp: NotRequired[int]
    r"""Time at which this event was created. Measured in seconds since the Unix epoch."""


class Event(BaseModel):
    r"""Representation of an Event"""

    uuid: str
    r"""Unique identifier for the event."""

    event_type: Optional[str] = None
    r"""Description of the event (e.g., payroll.submitted, or company.form.signed)."""

    resource_type: Optional[ResourceType] = None
    r"""Name of the parent resource of the described entity."""

    resource_uuid: Optional[str] = None
    r"""Unique identifier for the parent resource."""

    entity_type: Optional[str] = None
    r"""Name of the entity that the event corresponds to."""

    entity_uuid: Optional[str] = None
    r"""Unique identifier for the entity."""

    timestamp: Optional[int] = None
    r"""Time at which this event was created. Measured in seconds since the Unix epoch."""
