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

from __future__ import annotations
from gusto_embedded.types import BaseModel
from typing import List, Optional
from typing_extensions import NotRequired, TypedDict


class DepartmentEmployeesTypedDict(TypedDict):
    uuid: NotRequired[str]


class DepartmentEmployees(BaseModel):
    uuid: Optional[str] = None


class ContractorsModelTypedDict(TypedDict):
    uuid: NotRequired[str]


class ContractorsModel(BaseModel):
    uuid: Optional[str] = None


class DepartmentTypedDict(TypedDict):
    version: NotRequired[str]
    r"""The current version of the object. See the [versioning guide](https://docs.gusto.com/embedded-payroll/docs/idempotency) for information on how to use this field."""
    uuid: NotRequired[str]
    r"""The UUID of the department"""
    company_uuid: NotRequired[str]
    r"""The UUID of the company"""
    title: NotRequired[str]
    r"""Name of the department"""
    employees: NotRequired[List[DepartmentEmployeesTypedDict]]
    r"""Array of employees assigned to the department."""
    contractors: NotRequired[List[ContractorsModelTypedDict]]
    r"""Array of contractors assigned to the department."""


class Department(BaseModel):
    version: Optional[str] = None
    r"""The current version of the object. See the [versioning guide](https://docs.gusto.com/embedded-payroll/docs/idempotency) for information on how to use this field."""

    uuid: Optional[str] = None
    r"""The UUID of the department"""

    company_uuid: Optional[str] = None
    r"""The UUID of the company"""

    title: Optional[str] = None
    r"""Name of the department"""

    employees: Optional[List[DepartmentEmployees]] = None
    r"""Array of employees assigned to the department."""

    contractors: Optional[List[ContractorsModel]] = None
    r"""Array of contractors assigned to the department."""
