# This file was auto-generated by Fern from our API Definition.

from ..core.unchecked_base_model import UncheckedBaseModel
import typing
import pydantic
from .money import Money
from ..core.pydantic_utilities import IS_PYDANTIC_V2


class TeamMemberWage(UncheckedBaseModel):
    """
    Job and wage information for a [team member](entity:TeamMember).
    This convenience object provides details needed to specify the `wage`
    field for a [timecard](entity:Timecard).
    """

    id: typing.Optional[str] = pydantic.Field(default=None)
    """
    The UUID for this object.
    """

    team_member_id: typing.Optional[str] = pydantic.Field(default=None)
    """
    The `TeamMember` that this wage is assigned to.
    """

    title: typing.Optional[str] = pydantic.Field(default=None)
    """
    The job title that this wage relates to.
    """

    hourly_rate: typing.Optional[Money] = pydantic.Field(default=None)
    """
    Can be a custom-set hourly wage or the calculated effective hourly
    wage based on the annual wage and hours worked per week.
    """

    job_id: typing.Optional[str] = pydantic.Field(default=None)
    """
    An identifier for the [job](entity:Job) that this wage relates to.
    """

    tip_eligible: typing.Optional[bool] = pydantic.Field(default=None)
    """
    Whether team members are eligible for tips when working this job.
    """

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow
