// Copyright 2018 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.storymodel;

using fuchsia.modular;

/// The `StoryModelMutation` union represents the set of all possible low-level mutations to data
/// for a single story. A vector of mutations represent mutations that are to be applied to the
/// model in a single transaction.
///
/// This structured is used internally in `sessionmgr` and is not exposed to any clients outside
/// that process. Clients will typically construct these indirectly using convenience methods on the
/// `StoryMutator` class.
union StoryModelMutation {
  /// Sets the value of `StoryModel.visibility_state`.
  1: fuchsia.modular.StoryVisibilityState set_visibility_state;

  /// Sets the value of `StoryModel.runtime_state`.
  2: fuchsia.modular.StoryState set_runtime_state;
};
