// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.lightsensor;

/// Device-specific intensity values for the color channels in the light sensor.
type Rgbc = struct {
    /// Intensity of red light measured by the light sensor.
    red_intensity float32;

    /// Intensity of green light measured by the light sensor.
    green_intensity float32;

    /// Intensity of blue light measured by the light sensor.
    blue_intensity float32;

    /// Intensity of clear light measured by the light sensor.
    clear_intensity float32;
};

/// Possible error results from API calls.
@available(added=7, deprecated=9, removed=HEAD)
type Error = strict enum {
    /// The input provided to the API was outside of the valid range of input, or required
    /// parameters were missing from a table.
    INVALID_INPUT = 1;
};
