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

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


class TerminationTypedDict(TypedDict):
    r"""The representation of a termination in Gusto."""

    uuid: str
    r"""The UUID of the termination object."""
    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."""
    employee_uuid: NotRequired[str]
    r"""The UUID of the employee to which this termination is attached."""
    active: NotRequired[bool]
    r"""Whether the employee's termination has gone into effect."""
    cancelable: NotRequired[bool]
    r"""Whether the employee's termination is cancelable. Cancelable is true if `run_termination_payroll` is false and `effective_date` is in the future."""
    effective_date: NotRequired[str]
    r"""The employee's last day of work."""
    run_termination_payroll: NotRequired[bool]
    r"""If true, the employee should receive their final wages via an off-cycle payroll. If false, they should receive their final wages on their current pay schedule."""


class Termination(BaseModel):
    r"""The representation of a termination in Gusto."""

    uuid: str
    r"""The UUID of the termination object."""

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

    employee_uuid: Optional[str] = None
    r"""The UUID of the employee to which this termination is attached."""

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

    cancelable: Optional[bool] = None
    r"""Whether the employee's termination is cancelable. Cancelable is true if `run_termination_payroll` is false and `effective_date` is in the future."""

    effective_date: Optional[str] = None
    r"""The employee's last day of work."""

    run_termination_payroll: Optional[bool] = None
    r"""If true, the employee should receive their final wages via an off-cycle payroll. If false, they should receive their final wages on their current pay schedule."""
