// 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.
{
    include: [ "syslog/client.shard.cml" ],
    program: {
        runner: "elf",
        binary: "bin/sl4f",
    },
    use: [
        // TODO(https://fxbug.dev/98760): Remove once fixed.
        {
            directory: "minfs",
            rights: [ "rw*" ],
            path: "/data",
        },

        // TODO(https://fxbug.dev/98755): Remove once https://fxbug.dev/86575 is fixed.
        {
            directory: "tmp",
            rights: [ "rw*" ],
            path: "/tmp",
        },
        {
            directory: "hub",
            rights: [ "rw*" ],
            path: "/hub-v2",
        },
        {
            directory: "dev-temperature",
            rights: [ "r*" ],
            path: "/dev/class/temperature",
        },
        {
            protocol: [
                "fuchsia.bluetooth.avdtp.PeerManager",
                "fuchsia.bluetooth.avrcp.PeerManager",
                "fuchsia.bluetooth.bredr.Profile",
                "fuchsia.bluetooth.gatt.Server",
                "fuchsia.bluetooth.hfp.Hfp",
                "fuchsia.bluetooth.hfp.test.HfpTest",
                "fuchsia.bluetooth.le.Central",
                "fuchsia.bluetooth.le.Peripheral",
                "fuchsia.bluetooth.rfcomm.test.RfcommTest",
                "fuchsia.bluetooth.sys.Access",
                "fuchsia.bluetooth.sys.Configuration",
                "fuchsia.bluetooth.sys.HostWatcher",
                "fuchsia.buildinfo.Provider",
                "fuchsia.developer.tiles.Controller",
                "fuchsia.device.NameProvider",
                "fuchsia.diagnostics.ArchiveAccessor",
                "fuchsia.diagnostics.FeedbackArchiveAccessor",
                "fuchsia.diagnostics.LegacyMetricsArchiveAccessor",
                "fuchsia.feedback.DataProvider",
                "fuchsia.hardware.power.statecontrol.Admin",
                "fuchsia.hwinfo.Board",
                "fuchsia.hwinfo.Device",
                "fuchsia.hwinfo.Product",
                "fuchsia.input.injection.InputDeviceRegistry",
                "fuchsia.location.namedplace.RegulatoryRegionConfigurator",
                "fuchsia.location.position.EmergencyProvider",
                "fuchsia.lowpan.device.Lookup",
                "fuchsia.media.ProfileProvider",
                "fuchsia.memorypressure.Provider",
                "fuchsia.metricslogger.test.MetricsLogger",
                "fuchsia.net.interfaces.State",
                "fuchsia.net.name.Lookup",
                "fuchsia.paver.Paver",
                "fuchsia.posix.socket.Provider",
                "fuchsia.recovery.FactoryReset",
                "fuchsia.session.Launcher",
                "fuchsia.session.Restarter",
                "fuchsia.settings.Audio",
                "fuchsia.settings.Display",
                "fuchsia.settings.Input",
                "fuchsia.settings.Intl",
                "fuchsia.settings.Setup",
                "fuchsia.sys.Launcher",
                "fuchsia.sysmem.Allocator",
                "fuchsia.systemmetrics.test.SystemMetricsLogger",
                "fuchsia.test.audio.recording.AudioRecordingControl",
                "fuchsia.testing.proxy.TcpProxyControl",
                "fuchsia.testing.sl4f.FacadeProvider",
                "fuchsia.thermal.test.TemperatureLogger",
                "fuchsia.tracing.controller.Controller",
                "fuchsia.tracing.provider.Registry",
                "fuchsia.ui.composition.Allocator",
                "fuchsia.ui.composition.ScreenCapture",
                "fuchsia.ui.input.InputDeviceRegistry",
                "fuchsia.ui.scenic.Scenic",
                "fuchsia.weave.FactoryDataManager",
                "fuchsia.weave.Stack",
                "fuchsia.web.ContextProvider",
                "fuchsia.wlan.device.service.DeviceMonitor",
                "fuchsia.wlan.device.service.DeviceService",
                "fuchsia.wlan.policy.AccessPointListener",
                "fuchsia.wlan.policy.AccessPointProvider",
                "fuchsia.wlan.policy.ClientListener",
                "fuchsia.wlan.policy.ClientProvider",
                "fuchsia.wlan.product.deprecatedconfiguration.DeprecatedConfigurator",
            ],
        },
        {
            // fxbug.dev/103037: only available in some product configurations
            protocol: [
                "fuchsia.factory.AlphaFactoryStoreProvider",
                "fuchsia.factory.CastCredentialsFactoryStoreProvider",
                "fuchsia.factory.MiscFactoryStoreProvider",
                "fuchsia.factory.PlayReadyFactoryStoreProvider",
                "fuchsia.factory.WeaveFactoryStoreProvider",
                "fuchsia.factory.WidevineFactoryStoreProvider",
            ],
            availability: "optional",
        },
    ],
    expose: [
        {
            protocol: "fuchsia.component.Binder",
            from: "framework",
            as: "sl4f.Binder",
        },
    ],
}
