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

import typing

import pydantic
import typing_extensions
from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from ...core.serialization import FieldMetadata


class StatBasicExtendedQueryRecord(UniversalBaseModel):
    stat_x: typing_extensions.Annotated[
        str,
        FieldMetadata(alias="statX"),
        pydantic.Field(
            alias="statX", description="The time window based on the mode and frequency used for the query."
        ),
    ]
    out_customers: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="outCustomers"),
        pydantic.Field(alias="outCustomers", description="Number of active vendors."),
    ]
    out_new_customers: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="outNewCustomers"),
        pydantic.Field(alias="outNewCustomers", description="Number of new vendors."),
    ]
    out_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="outTransactions"),
        pydantic.Field(alias="outTransactions", description="Outbound (payout) transactions count."),
    ]
    out_subscriptions_paid: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="outSubscriptionsPaid"),
        pydantic.Field(alias="outSubscriptionsPaid", description="Recurring outbound (payout) transactions count."),
    ]
    out_card_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="outCardTransactions"),
        pydantic.Field(alias="outCardTransactions", description="Outbound (payout) pCard transactions count."),
    ]
    out_v_card_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="outVCardTransactions"),
        pydantic.Field(alias="outVCardTransactions", description="Outbound (payout) vCard transactions count."),
    ]
    out_ach_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="outACHTransactions"),
        pydantic.Field(alias="outACHTransactions", description="Outbound (payout) ACH transactions count."),
    ]
    out_check_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="outCheckTransactions"),
        pydantic.Field(alias="outCheckTransactions", description="Outbound (payout) check transactions count."),
    ]
    out_pending_method_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="outPendingMethodTransactions"),
        pydantic.Field(
            alias="outPendingMethodTransactions", description="Outbound (payout) Managed Payables transactions count."
        ),
    ]
    out_transactions_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="outTransactionsVolume"),
        pydantic.Field(alias="outTransactionsVolume", description="Outbound (payout) volume."),
    ]
    out_subscriptions_paid_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="outSubscriptionsPaidVolume"),
        pydantic.Field(alias="outSubscriptionsPaidVolume", description="Recurring outbound (payout) volume."),
    ]
    out_card_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="outCardVolume"),
        pydantic.Field(alias="outCardVolume", description="Outbound (payout) pCard transactions volume."),
    ]
    out_v_card_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="outVCardVolume"),
        pydantic.Field(alias="outVCardVolume", description="Outbound (payout) vCard transactions volume."),
    ]
    out_ach_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="outACHVolume"),
        pydantic.Field(alias="outACHVolume", description="Outbound (payout) ACH transactions volume."),
    ]
    out_check_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="outCheckVolume"),
        pydantic.Field(alias="outCheckVolume", description="Outbound (payout) check transactions volume."),
    ]
    out_pending_method_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="outPendingMethodVolume"),
        pydantic.Field(alias="outPendingMethodVolume", description="Outbound (payout) Managed Payables volume."),
    ]
    in_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="inTransactions"),
        pydantic.Field(alias="inTransactions", description="Inbound transactions count."),
    ]
    in_subscriptions_paid: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="inSubscriptionsPaid"),
        pydantic.Field(alias="inSubscriptionsPaid", description="Inbound recurring transactions count."),
    ]
    in_customers: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="inCustomers"),
        pydantic.Field(alias="inCustomers", description="Number of active customers."),
    ]
    in_new_customers: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="inNewCustomers"),
        pydantic.Field(alias="inNewCustomers", description="Number of new customers."),
    ]
    in_card_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="inCardTransactions"),
        pydantic.Field(alias="inCardTransactions", description="Inbound card transactions count."),
    ]
    in_ach_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="inACHTransactions"),
        pydantic.Field(alias="inACHTransactions", description="Inbound ACH transactions count."),
    ]
    in_check_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="inCheckTransactions"),
        pydantic.Field(alias="inCheckTransactions", description="Inbound check transactions count."),
    ]
    in_cash_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="inCashTransactions"),
        pydantic.Field(alias="inCashTransactions", description="Inbound cash transactions count."),
    ]
    in_wallet_transactions: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="inWalletTransactions"),
        pydantic.Field(alias="inWalletTransactions", description="Inbound wallet transactions count."),
    ]
    in_card_charge_backs: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="inCardChargeBacks"),
        pydantic.Field(alias="inCardChargeBacks", description="Inbound card chargebacks and returns count."),
    ]
    in_ach_returns: typing_extensions.Annotated[
        int,
        FieldMetadata(alias="inACHReturns"),
        pydantic.Field(alias="inACHReturns", description="Inbound ACH returns count."),
    ]
    in_transactions_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="inTransactionsVolume"),
        pydantic.Field(alias="inTransactionsVolume", description="Inbound volume."),
    ]
    in_subscriptions_paid_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="inSubscriptionsPaidVolume"),
        pydantic.Field(alias="inSubscriptionsPaidVolume", description="Inbound recurring payments volume."),
    ]
    in_card_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="inCardVolume"),
        pydantic.Field(alias="inCardVolume", description="Inbound card volume."),
    ]
    in_ach_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="inACHVolume"),
        pydantic.Field(alias="inACHVolume", description="Inbound ACH volume."),
    ]
    in_check_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="inCheckVolume"),
        pydantic.Field(alias="inCheckVolume", description="Inbound check volume."),
    ]
    in_cash_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="inCashVolume"),
        pydantic.Field(alias="inCashVolume", description="Inbound cash volume recognized."),
    ]
    in_wallet_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="inWalletVolume"),
        pydantic.Field(alias="inWalletVolume", description="Inbound wallet transactions."),
    ]
    in_card_charge_back_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="inCardChargeBackVolume"),
        pydantic.Field(alias="inCardChargeBackVolume", description="Inbound Card chargebacks and returns volume."),
    ]
    in_ach_returns_volume: typing_extensions.Annotated[
        float,
        FieldMetadata(alias="inACHReturnsVolume"),
        pydantic.Field(alias="inACHReturnsVolume", description="Inbound ACH returns volume."),
    ]

    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
