// 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.views;

using zx;

/// Token that uniquely identifies an attachment point for a `View` in the
/// global scene graph.  Each `ViewHolderToken` has exactly one corresponding
/// `ViewToken`.
///
/// A Scenic client can reference contents from another client by creating a
/// `ViewHolder` resource using this token.  The other client must also create
/// a `View` resource using the corresponding `ViewToken`.
resource struct ViewHolderToken {
    zx.handle:EVENTPAIR value;
};

/// Token that uniquely identifies a `View`, which is the root point for a
/// subgraph in the global scene graph. Each `ViewToken` has exactly one
/// corresponding `ViewHolderToken`.
///
/// A Scenic client can have its contents referenced from another client by
/// creating a `View` resource using this token.  The other client must also
/// create a `ViewHolder` resource using the corresponding `ViewHolderToken`.
resource struct ViewToken {
    zx.handle:EVENTPAIR value;
};
