# 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, **kwargs):
        super(StructuredInterfaceParameter, self).__init__(**kwargs)
        self.name = kwargs.get('name', None)
        self.label = kwargs.get('label', None)
        self.parameter_type = kwargs.get('parameter_type', None)
        self.is_optional = kwargs.get('is_optional', None)
        self.default_value = kwargs.get('default_value', None)
        self.lower_bound = kwargs.get('lower_bound', None)
        self.upper_bound = kwargs.get('upper_bound', None)
        self.enum_values = kwargs.get('enum_values', None)
        self.enum_values_to_argument_strings = kwargs.get('enum_values_to_argument_strings', None)
        self.description = kwargs.get('description', None)
        self.set_environment_variable = kwargs.get('set_environment_variable', None)
        self.environment_variable_override = kwargs.get('environment_variable_override', None)
        self.enabled_by_parameter_name = kwargs.get('enabled_by_parameter_name', None)
        self.enabled_by_parameter_values = kwargs.get('enabled_by_parameter_values', None)
        self.ui_hint = kwargs.get('ui_hint', None)
