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

from __future__ import annotations
from .contractor_payment import ContractorPayment, ContractorPaymentTypedDict
from gusto_embedded.types import BaseModel
from typing import List, Optional
from typing_extensions import NotRequired, TypedDict


class ContractorPaymentSummaryByDatesTotalTypedDict(TypedDict):
    r"""The wage and reimbursement totals for all contractor payments within a given time period."""

    reimbursements: NotRequired[str]
    r"""The total reimbursements for contractor payments within a given time period."""
    wages: NotRequired[str]
    r"""The total wages for contractor payments within a given time period."""


class ContractorPaymentSummaryByDatesTotal(BaseModel):
    r"""The wage and reimbursement totals for all contractor payments within a given time period."""

    reimbursements: Optional[str] = None
    r"""The total reimbursements for contractor payments within a given time period."""

    wages: Optional[str] = None
    r"""The total wages for contractor payments within a given time period."""


class ContractorPaymentSummaryByDatesContractorPaymentsTypedDict(TypedDict):
    contractor_uuid: NotRequired[str]
    r"""The UUID of the contractor."""
    check_date: NotRequired[str]
    r"""The payment check date."""
    reimbursement_total: NotRequired[str]
    r"""The total reimbursements for the contractor within a given time period."""
    wage_total: NotRequired[str]
    r"""The total wages for the contractor within a given time period."""
    payments: NotRequired[List[ContractorPaymentTypedDict]]
    r"""The contractor’s payments within a given time period.

    """


class ContractorPaymentSummaryByDatesContractorPayments(BaseModel):
    contractor_uuid: Optional[str] = None
    r"""The UUID of the contractor."""

    check_date: Optional[str] = None
    r"""The payment check date."""

    reimbursement_total: Optional[str] = None
    r"""The total reimbursements for the contractor within a given time period."""

    wage_total: Optional[str] = None
    r"""The total wages for the contractor within a given time period."""

    payments: Optional[List[ContractorPayment]] = None
    r"""The contractor’s payments within a given time period.

    """


class ContractorPaymentSummaryByDatesTypedDict(TypedDict):
    r"""The representation of the summary of contractor payments for a given company in a given time period."""

    total: NotRequired[ContractorPaymentSummaryByDatesTotalTypedDict]
    r"""The wage and reimbursement totals for all contractor payments within a given time period."""
    contractor_payments: NotRequired[
        List[ContractorPaymentSummaryByDatesContractorPaymentsTypedDict]
    ]
    r"""The individual contractor payments, within a given time period, grouped by check date."""


class ContractorPaymentSummaryByDates(BaseModel):
    r"""The representation of the summary of contractor payments for a given company in a given time period."""

    total: Optional[ContractorPaymentSummaryByDatesTotal] = None
    r"""The wage and reimbursement totals for all contractor payments within a given time period."""

    contractor_payments: Optional[
        List[ContractorPaymentSummaryByDatesContractorPayments]
    ] = None
    r"""The individual contractor payments, within a given time period, grouped by check date."""
