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

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


class EmploymentHistoryListEmploymentStatus(str, Enum):
    r"""The employee's employment status. Supplying an invalid option will set the employment_status to *not_set*."""

    PART_TIME = "part_time"
    FULL_TIME = "full_time"
    PART_TIME_ELIGIBLE = "part_time_eligible"
    VARIABLE = "variable"
    SEASONAL = "seasonal"
    NOT_SET = "not_set"


class EmploymentHistoryListTypedDict(TypedDict):
    r"""Example response"""

    hire_date: NotRequired[str]
    r"""The employee's start day of work for an employment."""
    termination_date: NotRequired[str]
    r"""The employee's last day of work for an employment."""
    file_new_hire_report: NotRequired[bool]
    r"""The boolean flag indicating whether Gusto will file a new hire report for the employee."""
    two_percent_shareholder: NotRequired[bool]
    r"""Whether the employee is a two percent shareholder of the company. This field only applies to companies with an S-Corp entity type."""
    employment_status: NotRequired[EmploymentHistoryListEmploymentStatus]
    r"""The employee's employment status. Supplying an invalid option will set the employment_status to *not_set*."""


class EmploymentHistoryList(BaseModel):
    r"""Example response"""

    hire_date: Optional[str] = None
    r"""The employee's start day of work for an employment."""

    termination_date: Optional[str] = None
    r"""The employee's last day of work for an employment."""

    file_new_hire_report: Optional[bool] = None
    r"""The boolean flag indicating whether Gusto will file a new hire report for the employee."""

    two_percent_shareholder: Optional[bool] = None
    r"""Whether the employee is a two percent shareholder of the company. This field only applies to companies with an S-Corp entity type."""

    employment_status: Optional[EmploymentHistoryListEmploymentStatus] = None
    r"""The employee's employment status. Supplying an invalid option will set the employment_status to *not_set*."""
