# coding: utf-8

"""
    EVM API

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

    The version of the OpenAPI document: 2.2
    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_evm_api import schemas  # noqa: F401


class DiscoveryTokenLinks(
    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 = {
            "youtube",
            "github",
            "website",
            "facebook",
            "telegram",
            "instagram",
            "linkedin",
            "medium",
            "bitbucket",
            "twitter",
            "discord",
            "tiktok",
            "reddit",
        }
        
        class properties:
            bitbucket = schemas.StrSchema
            discord = schemas.StrSchema
            facebook = schemas.StrSchema
            github = schemas.StrSchema
            instagram = schemas.StrSchema
            linkedin = schemas.StrSchema
            medium = schemas.StrSchema
            reddit = schemas.StrSchema
            telegram = schemas.StrSchema
            tiktok = schemas.StrSchema
            twitter = schemas.StrSchema
            website = schemas.StrSchema
            youtube = schemas.StrSchema
            __annotations__ = {
                "bitbucket": bitbucket,
                "discord": discord,
                "facebook": facebook,
                "github": github,
                "instagram": instagram,
                "linkedin": linkedin,
                "medium": medium,
                "reddit": reddit,
                "telegram": telegram,
                "tiktok": tiktok,
                "twitter": twitter,
                "website": website,
                "youtube": youtube,
            }
    
    youtube: MetaOapg.properties.youtube
    github: MetaOapg.properties.github
    website: MetaOapg.properties.website
    facebook: MetaOapg.properties.facebook
    telegram: MetaOapg.properties.telegram
    instagram: MetaOapg.properties.instagram
    linkedin: MetaOapg.properties.linkedin
    medium: MetaOapg.properties.medium
    bitbucket: MetaOapg.properties.bitbucket
    twitter: MetaOapg.properties.twitter
    discord: MetaOapg.properties.discord
    tiktok: MetaOapg.properties.tiktok
    reddit: MetaOapg.properties.reddit
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["bitbucket"]) -> MetaOapg.properties.bitbucket: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["discord"]) -> MetaOapg.properties.discord: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["facebook"]) -> MetaOapg.properties.facebook: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["github"]) -> MetaOapg.properties.github: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["instagram"]) -> MetaOapg.properties.instagram: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["linkedin"]) -> MetaOapg.properties.linkedin: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["medium"]) -> MetaOapg.properties.medium: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["reddit"]) -> MetaOapg.properties.reddit: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["telegram"]) -> MetaOapg.properties.telegram: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["tiktok"]) -> MetaOapg.properties.tiktok: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["twitter"]) -> MetaOapg.properties.twitter: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["website"]) -> MetaOapg.properties.website: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["youtube"]) -> MetaOapg.properties.youtube: ...
    
    @typing.overload
    def __getitem__(self, name: str) -> schemas.UnsetAnyTypeSchema: ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["bitbucket", "discord", "facebook", "github", "instagram", "linkedin", "medium", "reddit", "telegram", "tiktok", "twitter", "website", "youtube", ], str]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["bitbucket"]) -> MetaOapg.properties.bitbucket: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["discord"]) -> MetaOapg.properties.discord: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["facebook"]) -> MetaOapg.properties.facebook: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["github"]) -> MetaOapg.properties.github: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["instagram"]) -> MetaOapg.properties.instagram: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["linkedin"]) -> MetaOapg.properties.linkedin: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["medium"]) -> MetaOapg.properties.medium: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["reddit"]) -> MetaOapg.properties.reddit: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["telegram"]) -> MetaOapg.properties.telegram: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["tiktok"]) -> MetaOapg.properties.tiktok: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["twitter"]) -> MetaOapg.properties.twitter: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["website"]) -> MetaOapg.properties.website: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["youtube"]) -> MetaOapg.properties.youtube: ...
    
    @typing.overload
    def get_item_oapg(self, name: str) -> typing.Union[schemas.UnsetAnyTypeSchema, schemas.Unset]: ...
    
    def get_item_oapg(self, name: typing.Union[typing_extensions.Literal["bitbucket", "discord", "facebook", "github", "instagram", "linkedin", "medium", "reddit", "telegram", "tiktok", "twitter", "website", "youtube", ], str]):
        return super().get_item_oapg(name)
    

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        youtube: typing.Union[MetaOapg.properties.youtube, str, ],
        github: typing.Union[MetaOapg.properties.github, str, ],
        website: typing.Union[MetaOapg.properties.website, str, ],
        facebook: typing.Union[MetaOapg.properties.facebook, str, ],
        telegram: typing.Union[MetaOapg.properties.telegram, str, ],
        instagram: typing.Union[MetaOapg.properties.instagram, str, ],
        linkedin: typing.Union[MetaOapg.properties.linkedin, str, ],
        medium: typing.Union[MetaOapg.properties.medium, str, ],
        bitbucket: typing.Union[MetaOapg.properties.bitbucket, str, ],
        twitter: typing.Union[MetaOapg.properties.twitter, str, ],
        discord: typing.Union[MetaOapg.properties.discord, str, ],
        tiktok: typing.Union[MetaOapg.properties.tiktok, str, ],
        reddit: typing.Union[MetaOapg.properties.reddit, str, ],
        _configuration: typing.Optional[schemas.Configuration] = None,
        **kwargs: typing.Union[schemas.AnyTypeSchema, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes],
    ) -> 'DiscoveryTokenLinks':
        return super().__new__(
            cls,
            *args,
            youtube=youtube,
            github=github,
            website=website,
            facebook=facebook,
            telegram=telegram,
            instagram=instagram,
            linkedin=linkedin,
            medium=medium,
            bitbucket=bitbucket,
            twitter=twitter,
            discord=discord,
            tiktok=tiktok,
            reddit=reddit,
            _configuration=_configuration,
            **kwargs,
        )
