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

from __future__ import annotations

import typing

import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .database_error_tag import DatabaseErrorTag


class InternalServerErrorBody_StripeError(UniversalBaseModel):
    tag: typing.Literal["StripeError"] = "StripeError"
    message: str
    cause: typing.Optional[typing.Optional[typing.Any]] = 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


class InternalServerErrorBody_DatabaseError(UniversalBaseModel):
    tag: typing.Literal["DatabaseError"] = "DatabaseError"
    message: str
    cause: typing.Optional[typing.Optional[typing.Any]] = None
    tag: DatabaseErrorTag

    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


InternalServerErrorBody = typing.Union[
    InternalServerErrorBody_StripeError, InternalServerErrorBody_DatabaseError
]
