// Copyright 2019 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;

/// StoryShellFactory creates or returns an existing `StoryShell` for a particular story.
/// This is intended to be implemented by session shells that want to implement
/// StoryShell functionality themselves.
[Discoverable]
protocol StoryShellFactory {
    /// Requests a StoryShell for the story with the given `story_id`.
    AttachStory(string story_id, request<StoryShell> story_shell);

    /// Instructs the session shell to teardown the story shell with the given `story_id`.
    /// This will be called before the story is stopped.
    DetachStory(string story_id) -> ();
};
