using Fitness_core_BE.Models; namespace Fitness_core_BE.Interfaces { public interface IPlatformBillingRepository { Task> GetPricingPlansAsync(CancellationToken ct = default); Task GetPackageByIdAsync(Guid packageId, CancellationToken ct = default); Task AddPackageAsync(ClientPackage package, CancellationToken ct = default); Task> GetOtherDefaultPackagesAsync( Guid exceptPackageId, CancellationToken ct = default); Task GetDefaultPackageAsync(CancellationToken ct = default); Task GetActivePackageForClientAsync( Guid clientId, CancellationToken ct = default); Task GetClientByIdAsync(Guid clientId, CancellationToken ct = default); Task> GetActiveClientSubscriptionsAsync( Guid clientId, CancellationToken ct = default); Task GetActiveClientSubscriptionAsync( Guid clientId, CancellationToken ct = default); Task AddClientSubscriptionAsync( ClientSubscription subscription, CancellationToken ct = default); Task> GetActiveDeviceBillingsAsync( Guid clientId, CancellationToken ct = default); Task GetLatestActiveDeviceBillingAsync( Guid clientId, CancellationToken ct = default); Task AddDeviceBillingAsync( ClientDeviceBilling billing, CancellationToken ct = default); Task HasActiveDeviceAsync(Guid clientId, CancellationToken ct = default); Task> GetMonthlyBillingCandidatesAsync( DateTime startOfMonth, CancellationToken ct = default); Task> GetInvoicesByStatusAsync( string status, bool newestFirst, CancellationToken ct = default); Task GetInvoiceWithClientAsync( Guid invoiceId, bool includeBusinesses, CancellationToken ct = default); Task GetClientCardAsync(Guid clientId, CancellationToken ct = default); Task> GetClientCardsAsync(Guid clientId, CancellationToken ct = default); Task GetClientCardByTokenAsync(Guid clientId, string cardToken, CancellationToken ct = default); Task AddInvoiceAsync( ClientInvoice invoice, IReadOnlyCollection items, CancellationToken ct = default); Task GetDevicePricingConfigAsync( CancellationToken ct = default); Task AddDevicePricingConfigAsync( DevicePricingConfig config, CancellationToken ct = default); } }