// Copyright 2022 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.component.resolution;

using fuchsia.io;

/// Max length of component URL.
const MAX_COMPONENT_URL_LENGTH uint32 = 2083;

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

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