// 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.
// This is a v2 component manifest.
{
    include: [
        // See: https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=99631#c16
        "//sdk/lib/sys/testing/coverage.shard.cml",
        "syslog/client.shard.cml",
    ],
    program: {
        runner: "elf",
        binary: "bin/example",
        lifecycle: { stop_event: "notify" },
    },
    children: [
        {
            name: "logger",
            url: "fuchsia-pkg://fuchsia.com/logger/stable#meta/logger.cm",
            environment: "#env_one",
        },
    ],
    collections: [
        {
            name: "modular",
            durability: "persistent",
        },
        {
            name: "explicit_static",
            durability: "persistent",
            allowed_offers: "static_only",
        },
        {
            name: "explicit_dynamic",
            durability: "persistent",
            allowed_offers: "static_and_dynamic",
        },
        {
            name: "long_child_names",
            durability: "persistent",
            allow_long_names: true,
        },
    ],
    capabilities: [
        {
            service: "fuchsia.logger.Log",
            path: "/svc/fuchsia.logger.Log",
        },
        {
            protocol: "fuchsia.logger.Log2",
            path: "/svc/fuchsia.logger.Log2",
        },
        {
            directory: "blobfs",
            rights: [ "rw*" ],
            path: "/volumes/blobfs",
        },
        {
            storage: "minfs",
            from: "parent",
            backing_dir: "data",
            storage_id: "static_instance_id_or_moniker",
        },
        {
            runner: "dart_runner",
            path: "/svc/fuchsia.sys2.Runner",
        },
        {
            resolver: "pkg_resolver",
            path: "/svc/fuchsia.pkg.Resolver",
        },
    ],
    use: [
        { service: "fuchsia.fonts.Provider" },
        {
            protocol: "fuchsia.fonts.LegacyProvider",
            path: "/svc/fuchsia.fonts.OldProvider",
            availability: "optional",
        },
        {
            protocol: "fuchsia.log.LegacyLog",
            from: "debug",
        },
        {
            event: "started",
            from: "framework",
            as: "began",
        },
        {
            event: [
                "destroyed",
                "stopped",
            ],
            from: "parent",
        },
        {
            event: "directory_ready",
            from: "parent",
            as: "diagnostics_ready",
            filter: { path: "diagnostics" },
            availability: "optional",
        },
        {
            event_stream_deprecated: "my_stream",
            subscriptions: [
                { event: "began" },
                { event: "destroyed" },
                { event: "diagnostics_ready" },
            ],
        },
        {
            event_stream: [
                "events",
                "other",
                "some",
            ],
            from: "parent",
            path: "/testdir/my_stream",
            scope: [ "#logger" ],
        },
        {
            event_stream: "filtered",
            from: "parent",
        },
    ],
    offer: [
        {
            service: "fuchsia.logger.Log",
            from: "#logger",
            to: "#modular",
        },
        {
            protocol: "fuchsia.logger.LegacyLog",
            from: "#logger",
            as: "fuchsia.logger.OldLog",
            to: "#modular",
        },
        {
            event: "stopped",
            from: "parent",
            as: "stopped-logger",
            to: "#logger",
            availability: "required",
        },
        {
            event_stream: "directory_ready",
            from: "parent",
            to: "#logger",
            filter: { name: "diagnostics" },
            availability: "same_as_target",
        },
        {
            event_stream: [
                "started",
                "stopped",
            ],
            from: "parent",
            to: "#logger",
            scope: [ "#logger" ],
        },
        {
            protocol: "fuchsia.logger.LegacyLog2",
            from: "#non-existant",
            as: "fuchsia.logger.OldLog2",
            to: "#modular",
            source_availability: "unknown",
        },
        {
            protocol: "fuchsia.logger.LegacyLog3",
            from: "#logger",
            as: "fuchsia.logger.OldLog3",
            to: "#modular",
            source_availability: "unknown",
        },
        {
            protocol: "fuchsia.logger.LegacyLog4",
            from: "parent",
            as: "fuchsia.logger.OldLog4",
            to: "#modular",
            availability: "optional",
        },
    ],
    expose: [
        {
            service: "fuchsia.logger.Log",
            from: "#logger",
        },
        {
            protocol: "fuchsia.logger.LegacyLog",
            from: "#logger",
            as: "fuchsia.logger.OldLog",
            to: "parent",
        },
        {
            directory: "blobfs",
            from: "self",
            to: "parent",
            subdir: "blob",
        },
        {
            event_stream: [
                "started",
                "stopped",
            ],
            from: "framework",
            to: "parent",
            scope: [ "#logger" ],
        },
    ],
    environments: [
        {
            name: "env_one",
            extends: "none",
            __stop_timeout_ms: 1337,
        },
        {
            name: "env_two",
            extends: "realm",
            debug: [
                {
                    protocol: "fuchsia.logger.LegacyLog",
                    from: "#logger",
                },
                {
                    protocol: "fuchsia.logger.OtherLog",
                    from: "parent",
                },
                {
                    protocol: "fuchsia.logger.Log2",
                    from: "self",
                },
            ],
        },
    ],
    facets: {
        author: "Fuchsia",
        year: "2018",
        metadata: { publisher: "The Books Publisher" },
    },
    config: {
        my_flag: { type: "bool" },
        my_uint8: { type: "uint8" },
        my_string: {
            type: "string",
            max_size: 100,
        },
        my_vector_of_string: {
            type: "vector",
            max_count: 100,
            element: {
                type: "string",
                max_size: 50,
            },
        },
    },
}
