# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.serialization import Model


class StructuredInterfaceParameter(Model):
    """StructuredInterfaceParameter.

    :param name:
    :type name: str
    :param label:
    :type label: str
    :param parameter_type: Possible values include: 'Int', 'Double', 'Bool',
     'String', 'Undefined'
    :type parameter_type: str or ~designer.models.ParameterType
    :param is_optional:
    :type is_optional: bool
    :param default_value:
    :type default_value: str
    :param lower_bound:
    :type lower_bound: str
    :param upper_bound:
    :type upper_bound: str
    :param enum_values:
    :type enum_values: list[str]
    :param enum_values_to_argument_strings: This is a dictionary
    :type enum_values_to_argument_strings: dict[str, str]
    :param description:
    :type description: str
    :param set_environment_variable:
    :type set_environment_variable: bool
    :param environment_variable_override:
    :type environment_variable_override: str
    :param enabled_by_parameter_name:
    :type enabled_by_parameter_name: str
    :param enabled_by_parameter_values:
    :type enabled_by_parameter_values: list[str]
    :param ui_hint:
    :type ui_hint: ~designer.models.UIParameterHint
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'label': {'key': 'label', 'type': 'str'},
        'parameter_type': {'key': 'parameterType', 'type': 'str'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
        'default_value': {'key': 'defaultValue', 'type': 'str'},
        'lower_bound': {'key': 'lowerBound', 'type': 'str'},
        'upper_bound': {'key': 'upperBound', 'type': 'str'},
        'enum_values': {'key': 'enumValues', 'type': '[str]'},
        'enum_values_to_argument_strings': {'key': 'enumValuesToArgumentStrings', 'type': '{str}'},
        'description': {'key': 'description', 'type': 'str'},
        'set_environment_variable': {'key': 'setEnvironmentVariable', 'type': 'bool'},
        'environment_variable_override': {'key': 'environmentVariableOverride', 'type': 'str'},
        'enabled_by_parameter_name': {'key': 'enabledByParameterName', 'type': 'str'},
        'enabled_by_parameter_values': {'key': 'enabledByParameterValues', 'type': '[str]'},
        'ui_hint': {'key': 'uiHint', 'type': 'UIParameterHint'},
    }

    def __init__(self, *, name: str=None, label: str=None, parameter_type=None, is_optional: bool=None, default_value: str=None, lower_bound: str=None, upper_bound: str=None, enum_values=None, enum_values_to_argument_strings=None, description: str=None, set_environment_variable: bool=None, environment_variable_override: str=None, enabled_by_parameter_name: str=None, enabled_by_parameter_values=None, ui_hint=None, **kwargs) -> None:
        super(StructuredInterfaceParameter, self).__init__(**kwargs)
        self.name = name
        self.label = label
        self.parameter_type = parameter_type
        self.is_optional = is_optional
        self.default_value = default_value
        self.lower_bound = lower_bound
        self.upper_bound = upper_bound
        self.enum_values = enum_values
        self.enum_values_to_argument_strings = enum_values_to_argument_strings
        self.description = description
        self.set_environment_variable = set_environment_variable
        self.environment_variable_override = environment_variable_override
        self.enabled_by_parameter_name = enabled_by_parameter_name
        self.enabled_by_parameter_values = enabled_by_parameter_values
        self.ui_hint = ui_hint
