chromium/components/feed/core/v2/stream_model/ephemeral_change.h

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_FEED_CORE_V2_STREAM_MODEL_EPHEMERAL_CHANGE_H_
#define COMPONENTS_FEED_CORE_V2_STREAM_MODEL_EPHEMERAL_CHANGE_H_

#include <memory>
#include <vector>
#include "components/feed/core/proto/v2/store.pb.h"
#include "components/feed/core/v2/stream_model/feature_tree.h"
#include "components/feed/core/v2/types.h"

namespace feed {
namespace stream_model {

// A sequence of data operations that may be reverted.
class EphemeralChange {};

// A list of |EphemeralChange| objects.
class EphemeralChangeList {};

// Return a new |FeatureTree| by applying |changes| to |tree|.
std::unique_ptr<FeatureTree> ApplyEphemeralChanges(
    const FeatureTree& tree,
    const EphemeralChangeList& changes);

}  // namespace stream_model
}  // namespace feed

#endif  // COMPONENTS_FEED_CORE_V2_STREAM_MODEL_EPHEMERAL_CHANGE_H_