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

    benefit_type: NotRequired[int]
    r"""The benefit type in Gusto."""
    name: NotRequired[str]
    r"""The name of the benefit."""
    description: NotRequired[str]
    r"""The description of the benefit."""
    pretax: NotRequired[bool]
    r"""Whether the benefit is deducted before tax calculations, thus reducing one’s taxable income"""
    posttax: NotRequired[bool]
    r"""Whether the benefit is deducted after tax calculations."""
    imputed: NotRequired[bool]
    r"""Whether the benefit is considered imputed income."""
    healthcare: NotRequired[bool]
    r"""Whether the benefit is healthcare related."""
    retirement: NotRequired[bool]
    r"""Whether the benefit is associated with retirement planning."""
    yearly_limit: NotRequired[bool]
    r"""Whether the benefit has a government mandated yearly limit. If the benefit has a government mandated yearly limit, employees cannot be added to more than one benefit of this type."""
    category: NotRequired[str]
    r"""Category where the benefit belongs to."""


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

    benefit_type: Optional[int] = None
    r"""The benefit type in Gusto."""

    name: Optional[str] = None
    r"""The name of the benefit."""

    description: Optional[str] = None
    r"""The description of the benefit."""

    pretax: Optional[bool] = None
    r"""Whether the benefit is deducted before tax calculations, thus reducing one’s taxable income"""

    posttax: Optional[bool] = None
    r"""Whether the benefit is deducted after tax calculations."""

    imputed: Optional[bool] = None
    r"""Whether the benefit is considered imputed income."""

    healthcare: Optional[bool] = None
    r"""Whether the benefit is healthcare related."""

    retirement: Optional[bool] = None
    r"""Whether the benefit is associated with retirement planning."""

    yearly_limit: Optional[bool] = None
    r"""Whether the benefit has a government mandated yearly limit. If the benefit has a government mandated yearly limit, employees cannot be added to more than one benefit of this type."""

    category: Optional[str] = None
    r"""Category where the benefit belongs to."""
