// Copyright (c) Microsoft. All rights reserved.
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization.Metadata;
using System.Threading.Tasks;
namespace Microsoft.Agents.AI.Workflows.Checkpointing;
///
/// An abstract base class for checkpoint stores that use JSON for serialization.
///
public abstract class JsonCheckpointStore : ICheckpointStore
{
///
/// A default TypeInfo for serializing the type, if needed.
///
protected static JsonTypeInfo KeyTypeInfo => WorkflowsJsonUtilities.JsonContext.Default.CheckpointInfo;
///
public abstract ValueTask CreateCheckpointAsync(string sessionId, JsonElement value, CheckpointInfo? parent = null);
///
public abstract ValueTask RetrieveCheckpointAsync(string sessionId, CheckpointInfo key);
///
public abstract ValueTask> RetrieveIndexAsync(string sessionId, CheckpointInfo? withParent = null);
}