# coding=utf-8
# pylint: disable=too-many-lines
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

import sys
from typing import Any, Optional, TYPE_CHECKING, Union

from .. import _serialization

if sys.version_info >= (3, 8):
    from typing import Literal  # pylint: disable=no-name-in-module, ungrouped-imports
else:
    from typing_extensions import Literal  # type: ignore  # pylint: disable=ungrouped-imports

if TYPE_CHECKING:
    # pylint: disable=unused-import,ungrouped-imports
    from .. import models as _models


class ModelAsStringNoRequiredOneValueDefault(_serialization.Model):
    """ModelAsStringNoRequiredOneValueDefault.

    :ivar parameter: "value1"
    :vartype parameter: str or ~constants.models.ModelAsStringNoRequiredOneValueDefaultEnum
    """

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self, *, parameter: Union[str, "_models.ModelAsStringNoRequiredOneValueDefaultEnum"] = "value1", **kwargs: Any
    ) -> None:
        """
        :keyword parameter: "value1"
        :paramtype parameter: str or ~constants.models.ModelAsStringNoRequiredOneValueDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class ModelAsStringNoRequiredOneValueNoDefault(_serialization.Model):
    """ModelAsStringNoRequiredOneValueNoDefault.

    :ivar parameter: "value1"
    :vartype parameter: str or ~constants.models.ModelAsStringNoRequiredOneValueNoDefaultEnum
    """

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self,
        *,
        parameter: Optional[Union[str, "_models.ModelAsStringNoRequiredOneValueNoDefaultEnum"]] = None,
        **kwargs: Any
    ) -> None:
        """
        :keyword parameter: "value1"
        :paramtype parameter: str or ~constants.models.ModelAsStringNoRequiredOneValueNoDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class ModelAsStringNoRequiredTwoValueDefault(_serialization.Model):
    """ModelAsStringNoRequiredTwoValueDefault.

    :ivar parameter: Known values are: "value1" and "value2".
    :vartype parameter: str or ~constants.models.ModelAsStringNoRequiredTwoValueDefaultEnum
    """

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self, *, parameter: Union[str, "_models.ModelAsStringNoRequiredTwoValueDefaultEnum"] = "value1", **kwargs: Any
    ) -> None:
        """
        :keyword parameter: Known values are: "value1" and "value2".
        :paramtype parameter: str or ~constants.models.ModelAsStringNoRequiredTwoValueDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class ModelAsStringNoRequiredTwoValueNoDefault(_serialization.Model):
    """ModelAsStringNoRequiredTwoValueNoDefault.

    :ivar parameter: Known values are: "value1" and "value2".
    :vartype parameter: str or ~constants.models.ModelAsStringNoRequiredTwoValueNoDefaultEnum
    """

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self,
        *,
        parameter: Optional[Union[str, "_models.ModelAsStringNoRequiredTwoValueNoDefaultEnum"]] = None,
        **kwargs: Any
    ) -> None:
        """
        :keyword parameter: Known values are: "value1" and "value2".
        :paramtype parameter: str or ~constants.models.ModelAsStringNoRequiredTwoValueNoDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class ModelAsStringRequiredOneValueDefault(_serialization.Model):
    """ModelAsStringRequiredOneValueDefault.

    All required parameters must be populated in order to send to Azure.

    :ivar parameter: "value1"
    :vartype parameter: str or ~constants.models.ModelAsStringRequiredOneValueDefaultEnum
    """

    _validation = {
        "parameter": {"required": True},
    }

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self, *, parameter: Union[str, "_models.ModelAsStringRequiredOneValueDefaultEnum"] = "value1", **kwargs: Any
    ) -> None:
        """
        :keyword parameter: "value1"
        :paramtype parameter: str or ~constants.models.ModelAsStringRequiredOneValueDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class ModelAsStringRequiredOneValueNoDefault(_serialization.Model):
    """ModelAsStringRequiredOneValueNoDefault.

    All required parameters must be populated in order to send to Azure.

    :ivar parameter: Required. "value1"
    :vartype parameter: str or ~constants.models.ModelAsStringRequiredOneValueNoDefaultEnum
    """

    _validation = {
        "parameter": {"required": True},
    }

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self, *, parameter: Union[str, "_models.ModelAsStringRequiredOneValueNoDefaultEnum"], **kwargs: Any
    ) -> None:
        """
        :keyword parameter: Required. "value1"
        :paramtype parameter: str or ~constants.models.ModelAsStringRequiredOneValueNoDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class ModelAsStringRequiredTwoValueDefault(_serialization.Model):
    """ModelAsStringRequiredTwoValueDefault.

    All required parameters must be populated in order to send to Azure.

    :ivar parameter: Known values are: "value1" and "value2".
    :vartype parameter: str or ~constants.models.ModelAsStringRequiredTwoValueDefaultEnum
    """

    _validation = {
        "parameter": {"required": True},
    }

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self, *, parameter: Union[str, "_models.ModelAsStringRequiredTwoValueDefaultEnum"] = "value1", **kwargs: Any
    ) -> None:
        """
        :keyword parameter: Known values are: "value1" and "value2".
        :paramtype parameter: str or ~constants.models.ModelAsStringRequiredTwoValueDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class ModelAsStringRequiredTwoValueNoDefault(_serialization.Model):
    """ModelAsStringRequiredTwoValueNoDefault.

    All required parameters must be populated in order to send to Azure.

    :ivar parameter: Required. Known values are: "value1" and "value2".
    :vartype parameter: str or ~constants.models.ModelAsStringRequiredTwoValueNoDefaultEnum
    """

    _validation = {
        "parameter": {"required": True},
    }

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self, *, parameter: Union[str, "_models.ModelAsStringRequiredTwoValueNoDefaultEnum"], **kwargs: Any
    ) -> None:
        """
        :keyword parameter: Required. Known values are: "value1" and "value2".
        :paramtype parameter: str or ~constants.models.ModelAsStringRequiredTwoValueNoDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class NoModelAsStringNoRequiredOneValueDefault(_serialization.Model):
    """NoModelAsStringNoRequiredOneValueDefault.

    :ivar parameter: Default value is "value1".
    :vartype parameter: str
    """

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(self, *, parameter: Literal["value1"] = "value1", **kwargs: Any) -> None:
        """
        :keyword parameter: Default value is "value1".
        :paramtype parameter: str
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class NoModelAsStringNoRequiredOneValueNoDefault(_serialization.Model):
    """NoModelAsStringNoRequiredOneValueNoDefault.

    :ivar parameter: Default value is "value1".
    :vartype parameter: str
    """

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(self, *, parameter: Optional[Literal["value1"]] = None, **kwargs: Any) -> None:
        """
        :keyword parameter: Default value is "value1".
        :paramtype parameter: str
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class NoModelAsStringNoRequiredTwoValueDefault(_serialization.Model):
    """NoModelAsStringNoRequiredTwoValueDefault.

    :ivar parameter: Known values are: "value1" and "value2".
    :vartype parameter: str or ~constants.models.NoModelAsStringNoRequiredTwoValueDefaultEnum
    """

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self, *, parameter: Union[str, "_models.NoModelAsStringNoRequiredTwoValueDefaultEnum"] = "value1", **kwargs: Any
    ) -> None:
        """
        :keyword parameter: Known values are: "value1" and "value2".
        :paramtype parameter: str or ~constants.models.NoModelAsStringNoRequiredTwoValueDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class NoModelAsStringNoRequiredTwoValueNoDefault(_serialization.Model):
    """NoModelAsStringNoRequiredTwoValueNoDefault.

    :ivar parameter: Known values are: "value1" and "value2".
    :vartype parameter: str or ~constants.models.NoModelAsStringNoRequiredTwoValueNoDefaultEnum
    """

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self,
        *,
        parameter: Optional[Union[str, "_models.NoModelAsStringNoRequiredTwoValueNoDefaultEnum"]] = None,
        **kwargs: Any
    ) -> None:
        """
        :keyword parameter: Known values are: "value1" and "value2".
        :paramtype parameter: str or ~constants.models.NoModelAsStringNoRequiredTwoValueNoDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class NoModelAsStringRequiredOneValueDefault(_serialization.Model):
    """NoModelAsStringRequiredOneValueDefault.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar parameter: Default value is "value1".
    :vartype parameter: str
    """

    _validation = {
        "parameter": {"required": True, "constant": True},
    }

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    parameter = "value1"

    def __init__(self, **kwargs: Any) -> None:
        """ """
        super().__init__(**kwargs)


class NoModelAsStringRequiredOneValueNoDefault(_serialization.Model):
    """NoModelAsStringRequiredOneValueNoDefault.

    Variables are only populated by the server, and will be ignored when sending a request.

    All required parameters must be populated in order to send to Azure.

    :ivar parameter: Required. Default value is "value1".
    :vartype parameter: str
    """

    _validation = {
        "parameter": {"required": True, "constant": True},
    }

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    parameter = "value1"

    def __init__(self, **kwargs: Any) -> None:
        """ """
        super().__init__(**kwargs)


class NoModelAsStringRequiredTwoValueDefault(_serialization.Model):
    """NoModelAsStringRequiredTwoValueDefault.

    All required parameters must be populated in order to send to Azure.

    :ivar parameter: Known values are: "value1" and "value2".
    :vartype parameter: str or ~constants.models.NoModelAsStringRequiredTwoValueDefaultEnum
    """

    _validation = {
        "parameter": {"required": True},
    }

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self, *, parameter: Union[str, "_models.NoModelAsStringRequiredTwoValueDefaultEnum"] = "value1", **kwargs: Any
    ) -> None:
        """
        :keyword parameter: Known values are: "value1" and "value2".
        :paramtype parameter: str or ~constants.models.NoModelAsStringRequiredTwoValueDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter


class NoModelAsStringRequiredTwoValueNoDefault(_serialization.Model):
    """NoModelAsStringRequiredTwoValueNoDefault.

    All required parameters must be populated in order to send to Azure.

    :ivar parameter: Required. Known values are: "value1" and "value2".
    :vartype parameter: str or ~constants.models.NoModelAsStringRequiredTwoValueNoDefaultEnum
    """

    _validation = {
        "parameter": {"required": True},
    }

    _attribute_map = {
        "parameter": {"key": "parameter", "type": "str"},
    }

    def __init__(
        self, *, parameter: Union[str, "_models.NoModelAsStringRequiredTwoValueNoDefaultEnum"], **kwargs: Any
    ) -> None:
        """
        :keyword parameter: Required. Known values are: "value1" and "value2".
        :paramtype parameter: str or ~constants.models.NoModelAsStringRequiredTwoValueNoDefaultEnum
        """
        super().__init__(**kwargs)
        self.parameter = parameter
