// Copyright (c) Microsoft. All rights reserved.
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Microsoft.Agents.AI.Workflows.Checkpointing;
///
/// A manager for storing and retrieving workflow execution checkpoints.
///
internal interface ICheckpointManager
{
///
/// Commits the specified checkpoint and returns information that can be used to retrieve it later.
///
/// The identifier for the current run or execution context.
/// The checkpoint to commit.
/// A representing the incoming checkpoint.
ValueTask CommitCheckpointAsync(string runId, Checkpoint checkpoint);
///
/// Retrieves the checkpoint associated with the specified checkpoint information.
///
/// The identifier for the current run of execution context.
/// The information used to identify the checkpoint.
/// A representing the asynchronous operation. The result contains the associated with the specified .
/// Thrown if the checkpoint is not found.
ValueTask LookupCheckpointAsync(string runId, CheckpointInfo checkpointInfo);
}