// 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.
resource table Package {
    /// The URL of the package itself.
    1: string package_url;

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

    // TODO(fxbug.dev/4051): Add more metadata for the package such as its
    // code signing information.
};
