// 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, legacy=true)
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;
};
