using Fitness_core_BE.Models.Receipt; namespace Fitness_core_BE.Interfaces.Services { public interface IReceiptService { /// Gathers member/plan/gym/amount data for a member invoice. /// When is set, throws if the invoice isn't that gym's. Task BuildForInvoiceAsync(Guid customerInvoiceId, decimal? paymentAmount = null, Guid? requireClientId = null); /// Gathers gym/amount data for a platform (HexaFitness -> gym) invoice. /// When is set, throws if the invoice isn't that gym's. Task BuildForClientInvoiceAsync(Guid clientInvoiceId, decimal? paymentAmount = null, Guid? requireClientId = null); byte[] GeneratePdf(ReceiptModel model); /// Best-effort: emails the receipt PDF and texts the member. Never throws. Task SendReceiptAsync(ReceiptModel model); } }