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

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


class TotalTypedDict(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 Total(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 ContractorPaymentsModelTypedDict(TypedDict):
    contractor_uuid: NotRequired[float]
    r"""The UUID of the contractor."""
    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 ContractorPaymentsModel(BaseModel):
    contractor_uuid: Optional[float] = None
    r"""The UUID of the contractor."""

    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 ContractorPaymentSummaryTypedDict(TypedDict):
    r"""The representation of the summary of contractor payments for a given company in a given time period."""

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


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

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

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