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

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


class CompanyBenefitTypedDict(TypedDict):
    r"""The representation of a company benefit."""

    uuid: str
    r"""The UUID of the company benefit."""
    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."""
    enrollment_count: NotRequired[int]
    r"""The number of employees enrolled in the benefit, only returned when enrollment_count query param is set to true."""
    company_uuid: NotRequired[str]
    r"""The UUID of the company."""
    benefit_type: NotRequired[int]
    r"""The type of the benefit to which the company benefit belongs."""
    active: NotRequired[bool]
    r"""Whether this benefit is active for employee participation. Company benefits may only be deactivated if no employees are actively participating."""
    description: NotRequired[str]
    r"""The description of the company benefit. For example, a company may offer multiple benefits with an ID of 1 (for Medical Insurance). The description would show something more specific like “Kaiser Permanente” or “Blue Cross/ Blue Shield”."""
    deletable: NotRequired[bool]
    r"""Whether this company benefit can be deleted. Deletable will be set to true if the benefit has not been used in payroll, has no employee benefits associated, and the benefit is not owned by Gusto or a Partner"""
    supports_percentage_amounts: NotRequired[bool]
    r"""Whether employee deductions and company contributions can be set as percentages of payroll for an individual employee. This is determined by the type of benefit and is not configurable by the company."""
    responsible_for_employer_taxes: NotRequired[bool]
    r"""Whether the employer is subject to pay employer taxes when an employee is on leave. Only applicable to third party sick pay benefits."""
    responsible_for_employee_w2: NotRequired[bool]
    r"""Whether the employer is subject to file W-2 forms for an employee on leave. Only applicable to third party sick pay benefits."""


class CompanyBenefit(BaseModel):
    r"""The representation of a company benefit."""

    uuid: str
    r"""The UUID of the company benefit."""

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

    enrollment_count: Optional[int] = None
    r"""The number of employees enrolled in the benefit, only returned when enrollment_count query param is set to true."""

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

    benefit_type: Optional[int] = None
    r"""The type of the benefit to which the company benefit belongs."""

    active: Optional[bool] = True
    r"""Whether this benefit is active for employee participation. Company benefits may only be deactivated if no employees are actively participating."""

    description: Optional[str] = None
    r"""The description of the company benefit. For example, a company may offer multiple benefits with an ID of 1 (for Medical Insurance). The description would show something more specific like “Kaiser Permanente” or “Blue Cross/ Blue Shield”."""

    deletable: Optional[bool] = None
    r"""Whether this company benefit can be deleted. Deletable will be set to true if the benefit has not been used in payroll, has no employee benefits associated, and the benefit is not owned by Gusto or a Partner"""

    supports_percentage_amounts: Optional[bool] = None
    r"""Whether employee deductions and company contributions can be set as percentages of payroll for an individual employee. This is determined by the type of benefit and is not configurable by the company."""

    responsible_for_employer_taxes: Optional[bool] = None
    r"""Whether the employer is subject to pay employer taxes when an employee is on leave. Only applicable to third party sick pay benefits."""

    responsible_for_employee_w2: Optional[bool] = None
    r"""Whether the employer is subject to file W-2 forms for an employee on leave. Only applicable to third party sick pay benefits."""
