namespace Distribution.Features.Scheme; public interface ISchemeRepository { Task GetByIdAsync(Guid id); Task> GetAllAsync(Guid? regionId = null); Task AddAsync(Models.Scheme entity); void Update(Models.Scheme entity); void Remove(Models.Scheme entity); Task> GetRedemptionsAsync(Guid schemeId); Task AddRedemptionAsync(Models.SchemeRedemption entity); Task> GetRedemptionsByShopPOAsync(Guid shopPOId); void RemoveRedemption(Models.SchemeRedemption entity); Task HasRedemptionAsync(Guid schemeId, Guid orderId); Task HasLockedInvoiceAsync(Guid shopPOId); Task GetBundleComponentAsync(Guid schemeId, Guid itemId); Task AddBundleComponentAsync(Models.SchemeBundleComponent entity); void UpdateBundleComponent(Models.SchemeBundleComponent entity); void RemoveBundleComponent(Models.SchemeBundleComponent entity); }