// Copyright 2023 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.hardware.display;

/// Type of the internal value in [`fuchsia.hardware.display/EventId`].
alias EventIdValue = uint64;

/// Identifies a Zircon event shared between the Display Coordinator and a
/// client.
///
/// [`fuchsia.hardware.display.types/INVALID_DISP_ID`] represents an invalid
/// value.
///
/// Values are managed by [`fuchsia.hardware.display/Coordinator`] clients, to
/// facilitate feed-forward dataflow.
///
/// Valid values uniquely identify Zircon events imported to the Coordinator
/// within a display Coordinator connection.
// TODO(https://fxbug.dev/42080380): Figure out a more accurate description for the
// ID uniqueness.
type EventId = struct {
    value EventIdValue;
};
