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

// For information on manifest format and features,
// see https://fuchsia.dev/fuchsia-src/concepts/components/component_manifests.

// [START example_snippet]
{
    // [START_EXCLUDE]
    include: [ "syslog/client.shard.cml" ],

    // [START lifecycle_event]
    // Information about the program to run.
    program: {
        // Use the built-in ELF runner.
        runner: "elf",

        // The binary to run for this component.
        binary: "bin/lifecycle_example_rust",

        // Subscribe to component lifecycle events
        lifecycle: { stop_event: "notify" },
    },

    // [END lifecycle_event]
    // [END_EXCLUDE]

    // Capabilities exposed from this component to parent.
    expose: [
        {
            // Expose this protocol so that parent component can start it
            // by binding to this capability.
            protocol: "fuchsia.component.Binder",
            from: "framework",
        },
    ],
}

// [END example_snippet]
