"""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 RehireEmploymentStatus(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 RehireTypedDict(TypedDict):
    r"""Example response"""

    version: NotRequired[str]
    r"""The current version of the object. See the [versioning guide](https://docs.gusto.com/embedded-payroll/docs/versioning#object-layer) for information on how to use this field."""
    effective_date: NotRequired[str]
    r"""The day when the employee returns to work."""
    file_new_hire_report: NotRequired[bool]
    r"""The boolean flag indicating whether Gusto will file a new hire report for the employee."""
    work_location_uuid: NotRequired[str]
    r"""The uuid of the employee's work location."""
    employment_status: NotRequired[RehireEmploymentStatus]
    r"""The employee's employment status. Supplying an invalid option will set the employment_status to *not_set*."""
    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."""
    employee_uuid: NotRequired[str]
    r"""The UUID of the employee."""
    active: NotRequired[bool]
    r"""Whether the employee's rehire has gone into effect."""


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

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

    effective_date: Optional[str] = None
    r"""The day when the employee returns to work."""

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

    work_location_uuid: Optional[str] = None
    r"""The uuid of the employee's work location."""

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

    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."""

    employee_uuid: Optional[str] = None
    r"""The UUID of the employee."""

    active: Optional[bool] = None
    r"""Whether the employee's rehire has gone into effect."""
