// Copyright 2019 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.ui.activity;

/// State is an enumeration of the activity states the system may be in.
type State = strict enum {
    UNKNOWN = 0;
    /// IDLE implies that the system is not currently being used by a user.
    /// In other words, the system is not ACTIVE.
    IDLE = 1;
    /// ACTIVE implies that a user has recently or is currently using the
    /// system.
    ///
    /// Activity can be signalled by discrete interactions (cursor, keyboard,
    /// touchscreen), or by ongoing activities (video playback).
    ///
    /// The specific meaning of "recently" is an implementation
    /// detail of the Activity Service, but a typical value is 15 minutes.
    ACTIVE = 2;
};
