using System.Collections.Generic;
using EventsAppQuest.Domain.Enums;
using EventsAppQuest.Domain.Models;

namespace EventsAppQuest.Application.Services
{
    /// <summary>
    /// Contrato para serviço de slots/áreas lógicas do layout do espaço.
    /// Base para plano lógico do ambiente (preparação para MR).
    /// </summary>
    public interface ISpaceLayoutService
    {
        /// <summary>Slots do layout para o espaço indicado (ordenados por DisplayOrder).</summary>
        IReadOnlyList<SpaceLayoutSlot> GetBySpaceId(string spaceId);

        /// <summary>Slot por id.</summary>
        SpaceLayoutSlot GetById(string slotId);

        /// <summary>Slots compatíveis com a zona e/ou ancoragem (para realocação).</summary>
        IReadOnlyList<SpaceLayoutSlot> GetCompatibleSlots(string spaceId, PlacementZoneType? zone, SpatialAnchorType? anchor);
    }
}
