# 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 IndicatorResponse(Model):
    """IndicatorResponse.

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

    :param id: Required.
    :type id: str
    :param name: Required.
    :type name: str
    :param system_sort_order:
    :type system_sort_order: int
    :param indicator_type: Possible values include: 'Temperature', 'Pressure',
     'Flow', 'Humidity', 'Power', 'DifferentialPressure',
     'MultiSensorDifferentialPressure', 'Voltage', 'GeneralizedAtoD',
     'VibrationBandRms', 'VibrationBandMax', 'VibrationOverallPeak',
     'VibrationOverallRms', 'VibrationOverallSkewness',
     'VibrationOverallKurtosis', 'VibrationOverallCrestFactor',
     'DamageAccumulation', 'VibrationBandRmsAccel', 'VibrationBandMaxAccel',
     'VibrationOverallPeakAccel', 'VibrationOverallRmsAccel',
     'VibrationOverallSkewnessAccel', 'VibrationOverallKurtosisAccel',
     'VibrationOverallCrestFactorAccel', 'DamageAccumulationAccel', 'Group',
     'VibrationOverall', 'VibrationOverallAccel', 'GeneralTimeSeries', 'Math',
     'OnStatistics', 'OffStatistics', 'AlarmStatistics', 'WarningStatistics',
     'PositivePeakPressure', 'NegativePeakPressure', 'RmsPressure',
     'BandPressure', 'OnPercentStatistics', 'OffPercentStatistics',
     'AlarmPercentStatistics', 'WarningPercentStatistics', 'SignalStrength',
     'RunningSpeed', 'DamageAccumulationPressure', 'OilHumidity',
     'OilTemperature', 'DamageAccumulationAccelRaw', 'ThermalRegionOfInterest',
     'SmartMetric', 'Feature'
    :type indicator_type: str or ~smartdiagnostics_sdk.models.enum
    :param sensor_role_type: Possible values include: 'Invalid',
     'CurrentPhaseA', 'PeakCurrentPhaseA', 'CurrentPhaseB',
     'PeakCurrentPhaseB', 'CurrentPhaseC', 'PeakCurrentPhaseC',
     'DifferentialPressure', 'Flow', 'Humidity', 'NodeTemperature',
     'NodeVoltage', 'PeakVibration', 'Pressure', 'RmsVibration',
     'SignalStrength', 'StandardAirVelocity', 'SupplyVoltage', 'Temperature',
     'TotalCurrent', 'VibrationXAxis', 'VibrationYAxis', 'Voltage', 'Current',
     'AtoDChannel1', 'AtoDChannel2', 'AtoDChannel3', 'AtoDChannel4',
     'AtoDChannel5', 'AtoDChannel6', 'OilTemperature', 'OilHumidity', 'X', 'Y',
     'Z', 'Custom', 'WirelessEfficiency', 'PacketSuccessRate', 'NodeHumidity',
     'BurstSuccessRate'
    :type sensor_role_type: str or ~smartdiagnostics_sdk.models.enum
    :param display_units:
    :type display_units: str
    :param base_units:
    :type base_units: str
    :param has_spectrum:
    :type has_spectrum: bool
    :param meta_data:
    :type meta_data: str
    :param damage_exponent:
    :type damage_exponent: int
    :param hierarchy:
    :type hierarchy: list[~smartdiagnostics_sdk.models.HierarchyChild]
    :param alarm_definition:
    :type alarm_definition: ~smartdiagnostics_sdk.models.AlarmDefinitionChild
    :param band_definition:
    :type band_definition: ~smartdiagnostics_sdk.models.BandDefinitionChild
    :param baseline:
    :type baseline: ~smartdiagnostics_sdk.models.BaselineIndicatorChild
    """

    _validation = {
        'id': {'required': True},
        'name': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'Id', 'type': 'str'},
        'name': {'key': 'Name', 'type': 'str'},
        'system_sort_order': {'key': 'SystemSortOrder', 'type': 'int'},
        'indicator_type': {'key': 'IndicatorType', 'type': 'str'},
        'sensor_role_type': {'key': 'SensorRoleType', 'type': 'str'},
        'display_units': {'key': 'DisplayUnits', 'type': 'str'},
        'base_units': {'key': 'BaseUnits', 'type': 'str'},
        'has_spectrum': {'key': 'HasSpectrum', 'type': 'bool'},
        'meta_data': {'key': 'MetaData', 'type': 'str'},
        'damage_exponent': {'key': 'DamageExponent', 'type': 'int'},
        'hierarchy': {'key': 'Hierarchy', 'type': '[HierarchyChild]'},
        'alarm_definition': {'key': 'AlarmDefinition', 'type': 'AlarmDefinitionChild'},
        'band_definition': {'key': 'BandDefinition', 'type': 'BandDefinitionChild'},
        'baseline': {'key': 'Baseline', 'type': 'BaselineIndicatorChild'},
    }

    def __init__(self, *, id: str, name: str, system_sort_order: int=None, indicator_type=None, sensor_role_type=None, display_units: str=None, base_units: str=None, has_spectrum: bool=None, meta_data: str=None, damage_exponent: int=None, hierarchy=None, alarm_definition=None, band_definition=None, baseline=None, **kwargs) -> None:
        super(IndicatorResponse, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.system_sort_order = system_sort_order
        self.indicator_type = indicator_type
        self.sensor_role_type = sensor_role_type
        self.display_units = display_units
        self.base_units = base_units
        self.has_spectrum = has_spectrum
        self.meta_data = meta_data
        self.damage_exponent = damage_exponent
        self.hierarchy = hierarchy
        self.alarm_definition = alarm_definition
        self.band_definition = band_definition
        self.baseline = baseline
