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

import typing_extensions
import typing_extensions
import typing
from ..types.job_assignment_pay_type import JobAssignmentPayType
from .money import MoneyParams


class JobAssignmentParams(typing_extensions.TypedDict):
    """
    Represents a job assigned to a [team member](entity:TeamMember), including the compensation the team
    member earns for the job. Job assignments are listed in the team member's [wage setting](entity:WageSetting).
    """

    job_title: typing_extensions.NotRequired[typing.Optional[str]]
    """
    The title of the job.
    """

    pay_type: JobAssignmentPayType
    """
    The current pay type for the job assignment used to
    calculate the pay amount in a pay period.
    See [JobAssignmentPayType](#type-jobassignmentpaytype) for possible values
    """

    hourly_rate: typing_extensions.NotRequired[MoneyParams]
    """
    The hourly pay rate of the job. For `SALARY` pay types, Square calculates the hourly rate based on
    `annual_rate` and `weekly_hours`.
    """

    annual_rate: typing_extensions.NotRequired[MoneyParams]
    """
    The total pay amount for a 12-month period on the job. Set if the job `PayType` is `SALARY`.
    """

    weekly_hours: typing_extensions.NotRequired[typing.Optional[int]]
    """
    The planned hours per week for the job. Set if the job `PayType` is `SALARY`.
    """

    job_id: typing_extensions.NotRequired[typing.Optional[str]]
    """
    The ID of the [job](entity:Job).
    """
