# coding: utf-8

"""
    node-server

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    The version of the OpenAPI document: 0.0.237
    Generated by: https://openapi-generator.tech
"""

from datetime import date, datetime  # noqa: F401
import decimal  # noqa: F401
import functools  # noqa: F401
import io  # noqa: F401
import re  # noqa: F401
import typing  # noqa: F401
import typing_extensions  # noqa: F401
import uuid  # noqa: F401

import frozendict  # noqa: F401

from openapi_client import schemas  # noqa: F401


class TourStepDefinition(
    schemas.DictSchema
):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """


    class MetaOapg:
        required = {
            "imageSrc",
            "title",
            "content",
            "target",
        }
        
        class properties:
            target = schemas.StrSchema
            title = schemas.StrSchema
            content = schemas.StrSchema
            imageSrc = schemas.StrSchema
            
            
            class placement(
                schemas.EnumBase,
                schemas.StrSchema
            ):
            
            
                class MetaOapg:
                    enum_value_to_name = {
                        "right": "RIGHT",
                        "left": "LEFT",
                        "top": "TOP",
                        "bottom": "BOTTOM",
                    }
                
                @schemas.classproperty
                def RIGHT(cls):
                    return cls("right")
                
                @schemas.classproperty
                def LEFT(cls):
                    return cls("left")
                
                @schemas.classproperty
                def TOP(cls):
                    return cls("top")
                
                @schemas.classproperty
                def BOTTOM(cls):
                    return cls("bottom")
            fitToScreen = schemas.BoolSchema
            navigateToHash = schemas.StrSchema
            scrollIntoView = schemas.BoolSchema
            
            
            class currentPage(
                schemas.EnumBase,
                schemas.StrSchema
            ):
            
            
                class MetaOapg:
                    enum_value_to_name = {
                        "profile": "PROFILE",
                        "process": "PROCESS",
                        "versions": "VERSIONS",
                    }
                
                @schemas.classproperty
                def PROFILE(cls):
                    return cls("profile")
                
                @schemas.classproperty
                def PROCESS(cls):
                    return cls("process")
                
                @schemas.classproperty
                def VERSIONS(cls):
                    return cls("versions")
            __annotations__ = {
                "target": target,
                "title": title,
                "content": content,
                "imageSrc": imageSrc,
                "placement": placement,
                "fitToScreen": fitToScreen,
                "navigateToHash": navigateToHash,
                "scrollIntoView": scrollIntoView,
                "currentPage": currentPage,
            }
        additional_properties = schemas.NotAnyTypeSchema
    
    imageSrc: MetaOapg.properties.imageSrc
    title: MetaOapg.properties.title
    content: MetaOapg.properties.content
    target: MetaOapg.properties.target
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["imageSrc"]) -> MetaOapg.properties.imageSrc: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["title"]) -> MetaOapg.properties.title: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["content"]) -> MetaOapg.properties.content: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["target"]) -> MetaOapg.properties.target: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["placement"]) -> MetaOapg.properties.placement: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["fitToScreen"]) -> MetaOapg.properties.fitToScreen: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["navigateToHash"]) -> MetaOapg.properties.navigateToHash: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["scrollIntoView"]) -> MetaOapg.properties.scrollIntoView: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["currentPage"]) -> MetaOapg.properties.currentPage: ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["imageSrc"], typing_extensions.Literal["title"], typing_extensions.Literal["content"], typing_extensions.Literal["target"], typing_extensions.Literal["placement"], typing_extensions.Literal["fitToScreen"], typing_extensions.Literal["navigateToHash"], typing_extensions.Literal["scrollIntoView"], typing_extensions.Literal["currentPage"], ]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["imageSrc"]) -> MetaOapg.properties.imageSrc: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["title"]) -> MetaOapg.properties.title: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["content"]) -> MetaOapg.properties.content: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["target"]) -> MetaOapg.properties.target: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["placement"]) -> typing.Union[MetaOapg.properties.placement, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["fitToScreen"]) -> typing.Union[MetaOapg.properties.fitToScreen, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["navigateToHash"]) -> typing.Union[MetaOapg.properties.navigateToHash, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["scrollIntoView"]) -> typing.Union[MetaOapg.properties.scrollIntoView, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["currentPage"]) -> typing.Union[MetaOapg.properties.currentPage, schemas.Unset]: ...
    
    def get_item_oapg(self, name: typing.Union[typing_extensions.Literal["imageSrc"], typing_extensions.Literal["title"], typing_extensions.Literal["content"], typing_extensions.Literal["target"], typing_extensions.Literal["placement"], typing_extensions.Literal["fitToScreen"], typing_extensions.Literal["navigateToHash"], typing_extensions.Literal["scrollIntoView"], typing_extensions.Literal["currentPage"], ]):
        return super().get_item_oapg(name)

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        imageSrc: typing.Union[MetaOapg.properties.imageSrc, str, ],
        title: typing.Union[MetaOapg.properties.title, str, ],
        content: typing.Union[MetaOapg.properties.content, str, ],
        target: typing.Union[MetaOapg.properties.target, str, ],
        placement: typing.Union[MetaOapg.properties.placement, str, schemas.Unset] = schemas.unset,
        fitToScreen: typing.Union[MetaOapg.properties.fitToScreen, bool, schemas.Unset] = schemas.unset,
        navigateToHash: typing.Union[MetaOapg.properties.navigateToHash, str, schemas.Unset] = schemas.unset,
        scrollIntoView: typing.Union[MetaOapg.properties.scrollIntoView, bool, schemas.Unset] = schemas.unset,
        currentPage: typing.Union[MetaOapg.properties.currentPage, str, schemas.Unset] = schemas.unset,
        _configuration: typing.Optional[schemas.Configuration] = None,
    ) -> 'TourStepDefinition':
        return super().__new__(
            cls,
            *args,
            imageSrc=imageSrc,
            title=title,
            content=content,
            target=target,
            placement=placement,
            fitToScreen=fitToScreen,
            navigateToHash=navigateToHash,
            scrollIntoView=scrollIntoView,
            currentPage=currentPage,
            _configuration=_configuration,
        )
