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

using fuchsia.component;

/// Statically declares a component instance collection.
table CollectionDecl {
    /// The name of the collection. Instances created in the collection are
    /// scoped to this name.
    1: fuchsia.component.name name;

    /// The durability of instances in the collection.
    2: Durability durability;

    /// The environment assigned to child instances in this collection.
    ///
    /// Must be non-empty, reference an environment defined in the containing
    /// `ComponentDecl`, and contain only the following characters:
    /// [a-z0-9-_.].
    3: fuchsia.component.name environment;
};

/// The durability of component instances created in a collection.
enum Durability {
    /// An instance exists until either it or its parent is destroyed.
    PERSISTENT = 1;
    /// An instance exists until either its parent instance is stopped
    /// or it is explicitly destroyed.
    TRANSIENT = 2;
};
