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

from __future__ import annotations
from gusto_embedded.types import BaseModel
from typing import List, Optional, Union
from typing_extensions import NotRequired, TypeAliasType, TypedDict


EmployeeStateTaxInputQuestionFormatValueTypedDict = TypeAliasType(
    "EmployeeStateTaxInputQuestionFormatValueTypedDict", Union[str, bool, float]
)
r"""An allowed value to answer the question"""


EmployeeStateTaxInputQuestionFormatValue = TypeAliasType(
    "EmployeeStateTaxInputQuestionFormatValue", Union[str, bool, float]
)
r"""An allowed value to answer the question"""


class OptionsTypedDict(TypedDict):
    label: str
    r"""A display label that corresponds to the answer value"""
    value: NotRequired[EmployeeStateTaxInputQuestionFormatValueTypedDict]
    r"""An allowed value to answer the question"""


class Options(BaseModel):
    label: str
    r"""A display label that corresponds to the answer value"""

    value: Optional[EmployeeStateTaxInputQuestionFormatValue] = None
    r"""An allowed value to answer the question"""


class EmployeeStateTaxInputQuestionFormatTypedDict(TypedDict):
    type: str
    r"""Describes the type of question - Text, Number, Select, Currency, Date"""
    options: NotRequired[List[OptionsTypedDict]]
    r"""For \"Select\" type questions, the allowed values and display labels."""


class EmployeeStateTaxInputQuestionFormat(BaseModel):
    type: str
    r"""Describes the type of question - Text, Number, Select, Currency, Date"""

    options: Optional[List[Options]] = None
    r"""For \"Select\" type questions, the allowed values and display labels."""
