// Copyright 2016 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.sys;

/// An interface for loading from packages.
[Discoverable]
protocol Loader {
    /// Load a package by url.  The returned `package`'s `data` VMO handle will
    /// not have `ZX_RIGHT_EXECUTE`, but the `directory` field, if present, will
    /// have both the `READABLE` and `EXECUTABLE` rights.
    LoadUrl(component_url url) -> (Package? package);
};
