description: >
    Provides threshold functionality for Metrics and Sensors. Any object
    implementing Threshold interface must implement a Value interface at
    corresponding path.

properties:
    - name: Value
      type: dict[enum[self.Type],dict[enum[self.Bound],double]]
      description: >
          This indicates the threshold ranges applicable for the corresponding
          Value interface. This property is experimental and may change based on
          implementation. map{thresholdType,map{thresholdBound,thresholdValue}}
      flags:
          - readonly
    - name: Asserted
      type: set[struct[enum[self.Type],enum[self.Bound]]]
      description: >
          This indicates the set of asserted thresholds.
          set{struct{thresholdType,thresholdBound}}
      flags:
          - readonly

signals:
    - name: AssertionChanged
      description: >
          This indicates the assertion change for a threshold.
      properties:
          - name: ThresholdType
            type: enum[self.Type]
            description: >
                This indicates the threshold type for the assertion.
          - name: ThresholdBound
            type: enum[self.Bound]
            description: >
                This indicates the threshold bound for the assertion.
          - name: Status
            type: boolean
            description: >
                This indicates whether the assertion has been asserted(true) or
                deasserted(false).
          - name: Value
            type: double
            description: >
                The value that triggered the assertion change.

enumerations:
    - name: Type
      description: >
          This indicates the type of threshold.
      values:
          - name: Warning
            description: >
                Indicates the warning level.
          - name: Critical
            description: >
                Indicates the critical level.
          - name: PerformanceLoss
            description: >
                Indicates the performance loss level.
          - name: SoftShutdown
            description: >
                Indicates the soft shutdown level.
          - name: HardShutdown
            description: >
                Indicates the hard shutdown level.
    - name: Bound
      description: >
          This indicates the threshold direction.
      values:
          - name: Upper
            description: >
                Indicates the upper bound of the threshold.
          - name: Lower
            description: >
                Indicates the lower bound of the threshold.
