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

import datetime as dt
import typing

import pydantic
import typing_extensions
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from ..core.serialization import FieldMetadata
from .batch_number import BatchNumber
from .entrypointfield import Entrypointfield
from .external_paypoint_id import ExternalPaypointId


class QueryBatchesOutResponseRecordsItem(UniversalBaseModel):
    ach_amount: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="AchAmount")] = pydantic.Field(
        default=None
    )
    """
    
    """

    ach_records: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="AchRecords")] = pydantic.Field(
        default=None
    )
    """
    
    """

    ach_status: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="AchStatus")] = pydantic.Field(
        default=None
    )
    """
    
    """

    ach_status_text: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="AchStatusText")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    batch_amount: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="BatchAmount")] = (
        pydantic.Field(default=None)
    )
    """
    The amount of the batch.
    """

    batch_cancelled_amount: typing_extensions.Annotated[
        typing.Optional[float], FieldMetadata(alias="BatchCancelledAmount")
    ] = pydantic.Field(default=None)
    """
    
    """

    batch_cancelled_records: typing_extensions.Annotated[
        typing.Optional[int], FieldMetadata(alias="BatchCancelledRecords")
    ] = pydantic.Field(default=None)
    """
    
    """

    batch_date: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="BatchDate")] = (
        pydantic.Field(default=None)
    )
    """
    The batch date.
    """

    batch_number: typing_extensions.Annotated[typing.Optional[BatchNumber], FieldMetadata(alias="BatchNumber")] = None
    batch_paid_amount: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="BatchPaidAmount")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    batch_paid_records: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="BatchPaidRecords")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    batch_processed_amount: typing_extensions.Annotated[
        typing.Optional[float], FieldMetadata(alias="BatchProcessedAmount")
    ] = pydantic.Field(default=None)
    """
    
    """

    batch_processed_records: typing_extensions.Annotated[
        typing.Optional[int], FieldMetadata(alias="BatchProcessedRecords")
    ] = pydantic.Field(default=None)
    """
    
    """

    batch_processing_amount: typing_extensions.Annotated[
        typing.Optional[float], FieldMetadata(alias="BatchProcessingAmount")
    ] = pydantic.Field(default=None)
    """
    
    """

    batch_processing_records: typing_extensions.Annotated[
        typing.Optional[int], FieldMetadata(alias="BatchProcessingRecords")
    ] = pydantic.Field(default=None)
    """
    
    """

    batch_records: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="BatchRecords")] = (
        pydantic.Field(default=None)
    )
    """
    The number of records in the batch.
    """

    batch_status: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="BatchStatus")] = (
        pydantic.Field(default=None)
    )
    """
    The batch status. See [Batch Status](/developers/references/money-out-statuses#batch-statuses) for more.
    """

    batch_status_text: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="BatchStatusText")] = (
        pydantic.Field(default=None)
    )
    """
    A text description of the batch status.
    """

    card_amount: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="CardAmount")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    card_records: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="CardRecords")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    card_status: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="CardStatus")] = pydantic.Field(
        default=None
    )
    """
    
    """

    card_status_text: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="CardStatusText")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    check_amount: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="CheckAmount")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    check_records: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="CheckRecords")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    check_status: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="CheckStatus")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    check_status_text: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="CheckStatusText")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    entry_name: typing_extensions.Annotated[typing.Optional[Entrypointfield], FieldMetadata(alias="EntryName")] = None
    external_paypoint_id: typing_extensions.Annotated[
        typing.Optional[ExternalPaypointId], FieldMetadata(alias="externalPaypointID")
    ] = None
    id_batch: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="IdBatch")] = pydantic.Field(
        default=None
    )
    """
    The batch ID.
    """

    parent_org_name: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="ParentOrgName")] = (
        pydantic.Field(default=None)
    )
    """
    The entrypoint's parent org.
    """

    paypoint_dba: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="PaypointDba")] = (
        pydantic.Field(default=None)
    )
    """
    Paypoint DBA name.
    """

    paypoint_id: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="PaypointId")] = pydantic.Field(
        default=None
    )
    """
    Paypoint ID.
    """

    paypoint_name: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="PaypointName")] = (
        pydantic.Field(default=None)
    )
    """
    Paypoint legal name.
    """

    vcard_amount: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="VcardAmount")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    vcard_records: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="VcardRecords")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    vcard_status: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="VcardStatus")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    vcard_status_text: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="VcardStatusText")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    wire_amount: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="WireAmount")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    wire_records: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="WireRecords")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    wire_status: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="WireStatus")] = pydantic.Field(
        default=None
    )
    """
    
    """

    wire_status_text: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="WireStatusText")] = (
        pydantic.Field(default=None)
    )
    """
    
    """

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow
