using System.Collections.Generic;
using System.Threading.Tasks;
namespace Jovian.SaveSystem {
///
/// Top-level facade for the save system. Orchestrates serialization,
/// storage, and slot management. This is the main API the game interacts with.
///
public interface ISaveSystem {
string CreateSession();
bool HasAnySaves();
void Save(string sessionId, TData data, SaveSlotType slotType);
TData Load(SaveSlotInfo slot);
Task SaveAsync(string sessionId, TData data, SaveSlotType slotType);
Task LoadAsync(SaveSlotInfo slot);
IReadOnlyList GetSlots(string sessionId);
IReadOnlyList GetAllSessions();
void DeleteSlot(SaveSlotInfo slot);
void DeleteSession(string sessionId);
}
}