# 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
from .enabled import Enabled
from .finishtype import Finishtype
from .frequency_list import FrequencyList
from .order import Order


class AutoElement(UniversalBaseModel):
    enabled: typing.Optional[Enabled] = None
    finish: typing.Optional[Finishtype] = pydantic.Field(default=None)
    """
    Type of end date
    """

    frequency: typing.Optional[FrequencyList] = pydantic.Field(default=None)
    """
    accepted frequencies for autopay
    """

    frequency_selected: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="frequencySelected")] = (
        pydantic.Field(default=None)
    )
    """
    Value of pre-selected frequency
    """

    header: typing.Optional[str] = pydantic.Field(default=None)
    """
    Header text for section
    """

    order: typing.Optional[Order] = None
    start_date: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="startDate")] = pydantic.Field(
        default=None
    )
    """
    Range of days enabled in calendar. Leave empty to enable all days.
    """

    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
