using ERPCore.Domain.Enums;
using ERPCore.Dtos.Common;
using ERPCore.Dtos.Stock;

namespace ERPCore.Services.Interfaces;

/// <summary>Cycle/full stock-count business logic (docs/11 §5.6; FR-STK-08).</summary>
public interface ICountService
{
    Task<PagedResponse<CountSummaryDto>> ListAsync(
        PageQuery query, CountStatus? status, int? warehouseId, CancellationToken ct = default);

    Task<CountDto?> GetAsync(int countId, CancellationToken ct = default);
    Task<CountDto> CreateAsync(CreateCountRequest request, CancellationToken ct = default);
    Task<CountDto> EnterCountsAsync(int countId, EnterCountsRequest request, CancellationToken ct = default);
    Task<CountPostResultDto> PostAsync(int countId, CancellationToken ct = default);
}
