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

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


class ContractorPaymentReceiptTotalsTypedDict(TypedDict):
    r"""The subtotals for the contractor payment."""

    company_debit: NotRequired[str]
    r"""The total company debit for the contractor payment."""


class ContractorPaymentReceiptTotals(BaseModel):
    r"""The subtotals for the contractor payment."""

    company_debit: Optional[str] = None
    r"""The total company debit for the contractor payment."""


class ContractorPaymentsModelTypedDict(TypedDict):
    contractor_uuid: NotRequired[str]
    r"""The UUID of the contractor."""
    contractor_first_name: NotRequired[str]
    r"""The first name of the contractor. Applies when `contractor_type` is `Individual`."""
    contractor_last_name: NotRequired[str]
    r"""The last name of the contractor.  Applies when `contractor_type` is `Individual`."""
    contractor_business_name: NotRequired[str]
    r"""The business name of the contractor. Applies when `contractor_type` is `Business`."""
    contractor_type: NotRequired[str]
    r"""The type of contractor.

    `Individual` `Business`
    """
    payment_method: NotRequired[str]
    r"""The payment method.

    `Direct Deposit` `Check` `Historical Payment` `Correction Payment`
    """
    wage: NotRequired[str]
    r"""The fixed wage of the payment, regardless of hours worked."""
    bonus: NotRequired[str]
    r"""The bonus amount in the payment."""
    reimbursement: NotRequired[str]
    r"""The reimbursement amount in the payment."""


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

    contractor_first_name: Optional[str] = None
    r"""The first name of the contractor. Applies when `contractor_type` is `Individual`."""

    contractor_last_name: Optional[str] = None
    r"""The last name of the contractor.  Applies when `contractor_type` is `Individual`."""

    contractor_business_name: Optional[str] = None
    r"""The business name of the contractor. Applies when `contractor_type` is `Business`."""

    contractor_type: Optional[str] = None
    r"""The type of contractor.

    `Individual` `Business`
    """

    payment_method: Optional[str] = None
    r"""The payment method.

    `Direct Deposit` `Check` `Historical Payment` `Correction Payment`
    """

    wage: Optional[str] = None
    r"""The fixed wage of the payment, regardless of hours worked."""

    bonus: Optional[str] = None
    r"""The bonus amount in the payment."""

    reimbursement: Optional[str] = None
    r"""The reimbursement amount in the payment."""


class ContractorPaymentReceiptLicenseeTypedDict(TypedDict):
    r"""The licensed payroll processor"""

    name: NotRequired[str]
    r"""Always the fixed string \"Gusto, Zenpayroll Inc.\" """
    address: NotRequired[str]
    r"""Always the fixed string \"525 20th St\" """
    city: NotRequired[str]
    r"""Always the fixed string \"San Francisco\" """
    state: NotRequired[str]
    r"""Always the fixed string \"CA\" """
    postal_code: NotRequired[str]
    r"""Always the fixed string \"94107\" """
    phone_number: NotRequired[str]
    r"""Always the fixed string \"4157778888\" """


class ContractorPaymentReceiptLicensee(BaseModel):
    r"""The licensed payroll processor"""

    name: Optional[str] = None
    r"""Always the fixed string \"Gusto, Zenpayroll Inc.\" """

    address: Optional[str] = None
    r"""Always the fixed string \"525 20th St\" """

    city: Optional[str] = None
    r"""Always the fixed string \"San Francisco\" """

    state: Optional[str] = None
    r"""Always the fixed string \"CA\" """

    postal_code: Optional[str] = None
    r"""Always the fixed string \"94107\" """

    phone_number: Optional[str] = None
    r"""Always the fixed string \"4157778888\" """


class ContractorPaymentReceiptTypedDict(TypedDict):
    r"""Example response"""

    contractor_payment_uuid: NotRequired[str]
    r"""A unique identifier of the contractor payment receipt."""
    company_uuid: NotRequired[str]
    r"""A unique identifier of the company making the contractor payment."""
    name_of_sender: NotRequired[str]
    r"""The name of the company making the contractor payment."""
    name_of_recipient: NotRequired[str]
    r"""The individual or company name of the contractor receiving payment."""
    debit_date: NotRequired[date]
    r"""The debit date for the contractor payment."""
    license: NotRequired[str]
    r"""Always the fixed string \"Your payroll provider partners with Gusto Inc. for payments processing. Gusto Inc. is a licensed money transmitter. Learn more on our license page.\" """
    license_uri: NotRequired[str]
    r"""URL for the license information for the licensed payroll processor. Always the fixed string \"https://gusto.com/about/licenses\" """
    right_to_refund: NotRequired[str]
    r"""URL for information related to right to refund. Always the fixed string \"https://gusto.com/about/licenses\" """
    liability_of_licensee: NotRequired[str]
    r"""URL for information related to right to liability of licensee. Always the fixed string \"https://gusto.com/about/licenses\" """
    totals: NotRequired[ContractorPaymentReceiptTotalsTypedDict]
    r"""The subtotals for the contractor payment."""
    contractor_payments: NotRequired[List[ContractorPaymentsModelTypedDict]]
    r"""An array of contractor payments for this contractor payment."""
    licensee: NotRequired[ContractorPaymentReceiptLicenseeTypedDict]
    r"""The licensed payroll processor"""


class ContractorPaymentReceipt(BaseModel):
    r"""Example response"""

    contractor_payment_uuid: Optional[str] = None
    r"""A unique identifier of the contractor payment receipt."""

    company_uuid: Optional[str] = None
    r"""A unique identifier of the company making the contractor payment."""

    name_of_sender: Optional[str] = None
    r"""The name of the company making the contractor payment."""

    name_of_recipient: Optional[str] = None
    r"""The individual or company name of the contractor receiving payment."""

    debit_date: Optional[date] = None
    r"""The debit date for the contractor payment."""

    license: Optional[str] = None
    r"""Always the fixed string \"Your payroll provider partners with Gusto Inc. for payments processing. Gusto Inc. is a licensed money transmitter. Learn more on our license page.\" """

    license_uri: Optional[str] = None
    r"""URL for the license information for the licensed payroll processor. Always the fixed string \"https://gusto.com/about/licenses\" """

    right_to_refund: Optional[str] = None
    r"""URL for information related to right to refund. Always the fixed string \"https://gusto.com/about/licenses\" """

    liability_of_licensee: Optional[str] = None
    r"""URL for information related to right to liability of licensee. Always the fixed string \"https://gusto.com/about/licenses\" """

    totals: Optional[ContractorPaymentReceiptTotals] = None
    r"""The subtotals for the contractor payment."""

    contractor_payments: Optional[List[ContractorPaymentsModel]] = None
    r"""An array of contractor payments for this contractor payment."""

    licensee: Optional[ContractorPaymentReceiptLicensee] = None
    r"""The licensed payroll processor"""
