// Copyright 2016 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.
library fuchsia.modular;

/// This interface is exposed to all Module instances in a story. It allows to
/// create Link instances and run more Module instances.
@discoverable
closed protocol ModuleContext {
    /// When a module calls [RemoveSelfFromStory()] the framework will stop the
    /// module and remove it from the story. If there are no more running modules
    /// in the story the story will be deleted.
    strict RemoveSelfFromStory();
};

/// This interface defines the protocol over which a Module can communicate about
/// an ongoing activity to the framework. It is provided to Modules via
/// ModuleContext.StartOngoingActivity().
closed protocol OngoingActivity {};

type OngoingActivityType = strict enum {
    UNSPECIFIED = 0;
    VIDEO = 1;
    AUDIO = 2;
};
