using RobotNet10.MapEditor.Shared.DTOs.Requests;
using RobotNet10.MapManager.Data;
namespace RobotNet10.MapManager.Services;
///
/// Service for managing layouts, versions, and levels
///
public interface ILayoutService
{
// ==========================================
// LAYOUT OPERATIONS
// ==========================================
Task CreateLayoutAsync(CreateLayoutRequest request);
Task> SearchLayoutsAsync(string? searchText);
Task GetLayoutByIdAsync(Guid layoutId);
Task GetLayoutByLayoutIdAsync(string layoutId);
Task GetLayoutByNameAsync(string layoutName);
Task UpdateLayoutAsync(Guid layoutId, UpdateLayoutRequest request);
Task DeleteLayoutAsync(Guid layoutId);
Task ActivateLayoutAsync(Guid layoutId);
Task DeactivateLayoutAsync(Guid layoutId);
// ==========================================
// VERSION OPERATIONS
// ==========================================
Task CreateVersionAsync(Guid layoutId, CreateLayoutVersionRequest request);
Task> GetVersionsAsync(Guid layoutId);
Task GetVersionAsync(Guid versionId);
Task UpdateVersionAsync(Guid versionId, UpdateLayoutRequest request);
Task DeleteVersionAsync(Guid versionId);
// ==========================================
// LEVEL OPERATIONS
// ==========================================
Task CreateLevelAsync(Guid versionId, CreateLayoutLevelRequest request);
Task> GetLevelsAsync(Guid versionId);
Task GetLevelAsync(Guid levelId);
Task UpdateLevelAsync(Guid levelId, UpdateLayoutLevelRequest request);
Task DeleteLevelAsync(Guid levelId);
}