// Copyright 2018 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.io;

/// A package is a signed collection of immutable files.
///
/// This object provides access to a package's content and relevant metadata.
table Package {
    /// The URL of the package itself.
    1: string package_url;

    /// The package's content directory.
    2: fuchsia.io.Directory package_dir;

    // TODO(CP-154): Add more metadata for the package such as its
    // code signing information.
};
