// Copyright 2020 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.
/// The FIDL representation of the component ID Index.
///
/// See (component ID index)[//docs/development/components/component_id_index.md]
/// for documentation on the schema.
library fuchsia.component.internal;

using fuchsia.component;

/// 256 bits encoded in lower-cased base64 (64 chars).
alias InstanceId = string:64;

/// Top-level type describing the component ID index.
type ComponentIdIndex = table {
    /// A list of component ID instance entries.
    ///
    /// Required, but may be empty.
    2: instances vector<InstanceIdEntry>:1024;
};

type InstanceIdEntry = table {
    /// A 256-bit identifier encoded in base64 which is unique across all other
    /// instance IDs in the index.
    1: instance_id InstanceId;

    /// The moniker identifying the component instance.
    3: moniker string:fuchsia.component.MAX_MONIKER_LENGTH;
};
