// 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
closed 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.
    strict LoadUrl(struct {
        url component_url;
    }) -> (resource struct {
        package box<Package>;
    });
};
