// Copyright 2023 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.

// Stubs out some Fxfs-specific capabilities.  This helps satisfy static routing checks for targets
// which depend on these Fxfs-specific capabilities (although any attempted use of the capabilities
// will result in a hang).  This is subpar because it means we don't get the benefits of the static
// routing checks, but component manifests aren't sufficiently expressive and integrated with the
// build system to avoid this (since we can't have "optional" intermediate routing hops very
// easily, see https://fxbug.dev/42058594).
//
// Besides, all of this should go away if and when we standardize the platform on Fxfs.
{
    capabilities: [
        {
            directory: "volumes",
            rights: [ "rw*" ],
            path: "/volumes",
        },
        {
            protocol: [ "fuchsia.fxfs.Volumes" ],
        },
    ],
    expose: [
        {
            directory: "volumes",
            from: "self",
        },
        {
            protocol: "fuchsia.fxfs.Volumes",
            from: "self",
        },
        {
            protocol: "fuchsia.fxfs.BlobReader",
            from: "void",
            availability: "optional",
        },
        {
            protocol: "fuchsia.fxfs.BlobCreator",
            from: "void",
            availability: "optional",
        },
    ],
}
