using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using Darkmatter.Core.Data.Dynamic.Features.Progression;
using UnityEngine;

namespace Darkmatter.Core.Contracts.Features.Progression
{
    public interface IProgressionSystem
    {
        UniTask LoadAsync();
        UniTask SaveAsync();
        IReadOnlyCollection<string> CompletedTemplateIds { get; }
        void MarkCompleted(string templateId);

        DrawingProgress? GetProgress(string templateId);
        UniTask SaveProgressAsync(DrawingProgress progress);
        UniTask SaveProgressAsync(DrawingProgress progress, byte[] thumbnailPng);
        UniTask ClearProgressAsync(string templateId);

        bool IsCompleted(string templateId);

        UniTask<Texture2D> GetCachedThumbnailAsync(string templateId);
    }
}