# coding=utf-8
# --------------------------------------------------------------------------
# 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) Python Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------
# pylint: disable=useless-super-delegation

from typing import Any, Mapping, TYPE_CHECKING, Union, overload

from .._utils.model_base import Model as _Model, rest_field

if TYPE_CHECKING:
    from .. import models as _models


class CommaDelimitedArrayProperty(_Model):
    """CommaDelimitedArrayProperty.

    :ivar value: Required.
    :vartype value: list[str]
    """

    value: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"], format="commaDelimited")
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[str],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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


class CommaDelimitedEnumArrayProperty(_Model):
    """CommaDelimitedEnumArrayProperty.

    :ivar value: Required.
    :vartype value: list[str or ~encode.array.models.Colors]
    """

    value: list[Union[str, "_models.Colors"]] = rest_field(
        visibility=["read", "create", "update", "delete", "query"], format="commaDelimited"
    )
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[Union[str, "_models.Colors"]],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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


class CommaDelimitedExtensibleEnumArrayProperty(_Model):  # pylint: disable=name-too-long
    """CommaDelimitedExtensibleEnumArrayProperty.

    :ivar value: Required.
    :vartype value: list[str or ~encode.array.models.ColorsExtensibleEnum]
    """

    value: list[Union[str, "_models.ColorsExtensibleEnum"]] = rest_field(
        visibility=["read", "create", "update", "delete", "query"], format="commaDelimited"
    )
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[Union[str, "_models.ColorsExtensibleEnum"]],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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


class NewlineDelimitedArrayProperty(_Model):
    """NewlineDelimitedArrayProperty.

    :ivar value: Required.
    :vartype value: list[str]
    """

    value: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"], format="newlineDelimited")
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[str],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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


class NewlineDelimitedEnumArrayProperty(_Model):
    """NewlineDelimitedEnumArrayProperty.

    :ivar value: Required.
    :vartype value: list[str or ~encode.array.models.Colors]
    """

    value: list[Union[str, "_models.Colors"]] = rest_field(
        visibility=["read", "create", "update", "delete", "query"], format="newlineDelimited"
    )
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[Union[str, "_models.Colors"]],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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


class NewlineDelimitedExtensibleEnumArrayProperty(_Model):  # pylint: disable=name-too-long
    """NewlineDelimitedExtensibleEnumArrayProperty.

    :ivar value: Required.
    :vartype value: list[str or ~encode.array.models.ColorsExtensibleEnum]
    """

    value: list[Union[str, "_models.ColorsExtensibleEnum"]] = rest_field(
        visibility=["read", "create", "update", "delete", "query"], format="newlineDelimited"
    )
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[Union[str, "_models.ColorsExtensibleEnum"]],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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


class PipeDelimitedArrayProperty(_Model):
    """PipeDelimitedArrayProperty.

    :ivar value: Required.
    :vartype value: list[str]
    """

    value: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"], format="pipeDelimited")
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[str],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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


class PipeDelimitedEnumArrayProperty(_Model):
    """PipeDelimitedEnumArrayProperty.

    :ivar value: Required.
    :vartype value: list[str or ~encode.array.models.Colors]
    """

    value: list[Union[str, "_models.Colors"]] = rest_field(
        visibility=["read", "create", "update", "delete", "query"], format="pipeDelimited"
    )
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[Union[str, "_models.Colors"]],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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


class PipeDelimitedExtensibleEnumArrayProperty(_Model):
    """PipeDelimitedExtensibleEnumArrayProperty.

    :ivar value: Required.
    :vartype value: list[str or ~encode.array.models.ColorsExtensibleEnum]
    """

    value: list[Union[str, "_models.ColorsExtensibleEnum"]] = rest_field(
        visibility=["read", "create", "update", "delete", "query"], format="pipeDelimited"
    )
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[Union[str, "_models.ColorsExtensibleEnum"]],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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


class SpaceDelimitedArrayProperty(_Model):
    """SpaceDelimitedArrayProperty.

    :ivar value: Required.
    :vartype value: list[str]
    """

    value: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"], format="spaceDelimited")
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[str],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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


class SpaceDelimitedEnumArrayProperty(_Model):
    """SpaceDelimitedEnumArrayProperty.

    :ivar value: Required.
    :vartype value: list[str or ~encode.array.models.Colors]
    """

    value: list[Union[str, "_models.Colors"]] = rest_field(
        visibility=["read", "create", "update", "delete", "query"], format="spaceDelimited"
    )
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[Union[str, "_models.Colors"]],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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


class SpaceDelimitedExtensibleEnumArrayProperty(_Model):  # pylint: disable=name-too-long
    """SpaceDelimitedExtensibleEnumArrayProperty.

    :ivar value: Required.
    :vartype value: list[str or ~encode.array.models.ColorsExtensibleEnum]
    """

    value: list[Union[str, "_models.ColorsExtensibleEnum"]] = rest_field(
        visibility=["read", "create", "update", "delete", "query"], format="spaceDelimited"
    )
    """Required."""

    @overload
    def __init__(
        self,
        *,
        value: list[Union[str, "_models.ColorsExtensibleEnum"]],
    ) -> None: ...

    @overload
    def __init__(self, mapping: Mapping[str, Any]) -> None:
        """
        :param mapping: raw JSON to initialize the model.
        :type mapping: Mapping[str, Any]
        """

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