using ERPCore.Dtos.Common;
using ERPCore.Dtos.Stock;

namespace ERPCore.Services.Interfaces;

/// <summary>Read-side stock enquiry, ledger and valuation (docs/11 §5.1–5.3).</summary>
public interface IStockService
{
    Task<StockOnHandDto> GetOnHandAsync(int itemId, int warehouseId, CancellationToken ct = default);

    Task<PagedResponse<StockLedgerRowDto>> GetLedgerAsync(
        int? itemId, int? warehouseId, DateOnly? from, DateOnly? to, PageQuery query, CancellationToken ct = default);

    Task<StockValuationDto> GetValuationAsync(int itemId, int warehouseId, CancellationToken ct = default);
}
