using ERPCore.Dtos.Common;
using ERPCore.Dtos.Warehouses;

namespace ERPCore.Services.Interfaces;

/// <summary>Warehouse &amp; bin master business logic (docs/11-BACKEND-PHASE1.md §2.5).</summary>
public interface IWarehouseService
{
    Task<PagedResponse<WarehouseDto>> ListAsync(PageQuery query, CancellationToken ct = default);
    Task<WarehouseDto?> GetAsync(int warehouseId, CancellationToken ct = default);
    Task<WarehouseDto> CreateAsync(CreateWarehouseRequest request, CancellationToken ct = default);

    Task<IReadOnlyList<BinDto>> ListBinsAsync(int warehouseId, CancellationToken ct = default);
    Task<BinDto> CreateBinAsync(int warehouseId, CreateBinRequest request, CancellationToken ct = default);
}
