using ERPCore.Common.Http;
using ERPCore.Domain.Enums;
using ERPCore.Dtos.Common;
using ERPCore.Dtos.Vendors;

namespace ERPCore.Services.Interfaces;

/// <summary>Vendor master business logic (docs/11-BACKEND-PHASE1.md §2.4).</summary>
public interface IVendorService
{
    Task<PagedResponse<VendorDto>> ListAsync(PageQuery query, EntityStatus? status, CancellationToken ct = default);
    Task<ETagged<VendorDto>?> GetAsync(int vendorId, CancellationToken ct = default);
    Task<ETagged<VendorDto>> CreateAsync(CreateVendorRequest request, CancellationToken ct = default);
    Task<ETagged<VendorDto>> UpdateAsync(int vendorId, UpdateVendorRequest request, uint expectedRowVersion, CancellationToken ct = default);
    Task SetStatusAsync(int vendorId, EntityStatus status, CancellationToken ct = default);
}
