// 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.
{
    collections: [
        {
            name: "fxfs-crypt",
            durability: "transient",
        },
    ],
    capabilities: [
        {
            directory: "blob",
            rights: [ "rw*" ],
            path: "/fs/blob/root",
        },
        {
            directory: "blob-exec",
            rights: [
                "execute",
                "rw*",
            ],
            path: "/fs/blob/root",
        },
        {
            protocol: [ "fuchsia.update.verify.ComponentOtaHealthCheck" ],
        },
        {
            protocol: "fuchsia.fshost.StarnixVolumeProvider",
            path: "/user_volumes/starnix",
        },
        {
            protocol: "fuchsia.fxfs.BlobCreator",
            path: "/fs/blob/svc/fuchsia.fxfs.BlobCreator",
        },
        {
            protocol: "fuchsia.fxfs.BlobReader",
            path: "/fs/blob/svc/fuchsia.fxfs.BlobReader",
        },
        {
            protocol: "fuchsia.fxfs.FileBackedVolumeProvider",
            path: "/fs/data/svc/fuchsia.fxfs.FileBackedVolumeProvider",
        },
    ],
    use: [
        {
            protocol: "fuchsia.fs.startup.Startup",
            from: "#fxfs",
            path: "/fxfs/svc/fuchsia.fs.startup.Startup",
        },
        {
            protocol: "fuchsia.component.Realm",
            from: "framework",
        },

        // Required for inspect data and to migrate data.
        {
            directory: "root",
            from: "#fxfs",
            rights: [ "rw*" ],
            path: "/data_root",
        },
        {
            directory: "volumes",
            from: "#fxfs",
            rights: [ "rw*" ],
            path: "/volumes",
        },
    ],
    offer: [
        {
            protocol: [
                "fuchsia.memorypressure.Provider",
                "fuchsia.scheduler.RoleManager",
            ],
            from: "parent",
            to: "#fxfs",
            availability: "optional",
        },
        {
            protocol: "fuchsia.memory.attribution.PageRefaultSink",
            from: "parent",
            to: "#fxfs",
            dependency: "weak",
            availability: "optional",
            source_availability: "unknown",
        },
        {
            service: "fuchsia.fxfs.CryptService",
            from: "#fxfs-crypt",
            to: "#fxfs",
        },
    ],
    expose: [
        {
            directory: [
                "blob",
                "blob-exec",
            ],
            from: "self",
        },
        {
            directory: "volumes",
            from: "#fxfs",
        },
        {
            protocol: "fuchsia.fs.startup.Volumes",
            from: "#fxfs",
        },
        {
            protocol: "fuchsia.update.verify.ComponentOtaHealthCheck",
            from: "self",
            to: "framework",
        },
        {
            protocol: "fuchsia.update.verify.ComponentOtaHealthCheck",
            from: "self",
        },
        {
            protocol: "fuchsia.fxfs.BlobCreator",
            from: "self",
        },
        {
            protocol: "fuchsia.fshost.StarnixVolumeProvider",
            from: "self",
        },
        {
            protocol: "fuchsia.fxfs.BlobReader",
            from: "self",
            availability: "same_as_target",
        },
        {
            protocol: "fuchsia.fxfs.FileBackedVolumeProvider",
            from: "self",
        },
    ],
}
