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

from __future__ import annotations
from enum import Enum
from gusto_embedded.types import BaseModel
from typing import Optional
from typing_extensions import NotRequired, TypedDict


class WireInRequestStatus(str, Enum):
    r"""Status of the wire in"""

    AWAITING_FUNDS = "awaiting_funds"
    PENDING_REVIEW = "pending_review"
    APPROVED = "approved"
    RFI = "rfi"
    CANCELED = "canceled"


class PaymentUUID(str, Enum):
    r"""Unique identifier of the payment"""

    PAYROLL = "payroll"


class WireInRequestTypedDict(TypedDict):
    r"""Representation of a wire in request"""

    uuid: NotRequired[str]
    r"""Unique identifier of a wire in request"""
    status: NotRequired[WireInRequestStatus]
    r"""Status of the wire in"""
    origination_bank: NotRequired[str]
    r"""Name of bank receiving the wire in"""
    origination_bank_address: NotRequired[str]
    r"""Address of bank receiving the wire in"""
    recipient_name: NotRequired[str]
    r"""Name of the recipient of the wire In"""
    recipient_address: NotRequired[str]
    r"""Address of the recipient of the wire in"""
    recipient_account_number: NotRequired[str]
    r"""Recipient bank account number"""
    recipient_routing_number: NotRequired[str]
    r"""Recipient bank routing number"""
    additional_notes: NotRequired[str]
    r"""Notes for the wire in request"""
    bank_name: NotRequired[str]
    r"""Name of the bank initiating the wire in"""
    date_sent: NotRequired[str]
    r"""Date the wire in was sent"""
    unique_tracking_code: NotRequired[str]
    r"""Include in note with bank to track payment"""
    payment_type: NotRequired[str]
    r"""Type of payment for the wire in"""
    payment_uuid: NotRequired[PaymentUUID]
    r"""Unique identifier of the payment"""
    amount_sent: NotRequired[str]
    r"""Amount sent through wire in"""
    requested_amount: NotRequired[str]
    r"""Requested amount for the payment"""
    wire_in_deadline: NotRequired[str]
    r"""Deadline to submit the wire in"""


class WireInRequest(BaseModel):
    r"""Representation of a wire in request"""

    uuid: Optional[str] = None
    r"""Unique identifier of a wire in request"""

    status: Optional[WireInRequestStatus] = None
    r"""Status of the wire in"""

    origination_bank: Optional[str] = None
    r"""Name of bank receiving the wire in"""

    origination_bank_address: Optional[str] = None
    r"""Address of bank receiving the wire in"""

    recipient_name: Optional[str] = None
    r"""Name of the recipient of the wire In"""

    recipient_address: Optional[str] = None
    r"""Address of the recipient of the wire in"""

    recipient_account_number: Optional[str] = None
    r"""Recipient bank account number"""

    recipient_routing_number: Optional[str] = None
    r"""Recipient bank routing number"""

    additional_notes: Optional[str] = None
    r"""Notes for the wire in request"""

    bank_name: Optional[str] = None
    r"""Name of the bank initiating the wire in"""

    date_sent: Optional[str] = None
    r"""Date the wire in was sent"""

    unique_tracking_code: Optional[str] = None
    r"""Include in note with bank to track payment"""

    payment_type: Optional[str] = None
    r"""Type of payment for the wire in"""

    payment_uuid: Optional[PaymentUUID] = None
    r"""Unique identifier of the payment"""

    amount_sent: Optional[str] = None
    r"""Amount sent through wire in"""

    requested_amount: Optional[str] = None
    r"""Requested amount for the payment"""

    wire_in_deadline: Optional[str] = None
    r"""Deadline to submit the wire in"""
