import { Repository } from 'typeorm'; import { Subscription, SubscriptionStatus } from '../entities/subscription.entity'; import { Invoice } from '../entities/invoice.entity'; import { PaymentMethod } from '../entities/payment-method.entity'; import { CreateSubscriptionDto } from '../dto/create-subscription.dto'; import { UpdateSubscriptionDto, CancelSubscriptionDto } from '../dto/update-subscription.dto'; import { CreatePaymentMethodDto } from '../dto/create-payment-method.dto'; export declare class BillingService { private readonly subscriptionRepo; private readonly invoiceRepo; private readonly paymentMethodRepo; constructor(subscriptionRepo: Repository, invoiceRepo: Repository, paymentMethodRepo: Repository); createSubscription(dto: CreateSubscriptionDto): Promise; getSubscription(tenantId: string): Promise; updateSubscription(tenantId: string, dto: UpdateSubscriptionDto): Promise; cancelSubscription(tenantId: string, dto: CancelSubscriptionDto): Promise; changePlan(tenantId: string, newPlanId: string): Promise; renewSubscription(tenantId: string): Promise; createInvoice(tenantId: string, subscriptionId: string, lineItems: Array<{ description: string; quantity: number; unit_price: number; }>): Promise; getInvoices(tenantId: string, options?: { page?: number; limit?: number; }): Promise<{ data: Invoice[]; total: number; page: number; limit: number; }>; getInvoice(invoiceId: string, tenantId: string): Promise; markInvoicePaid(invoiceId: string, tenantId: string): Promise; voidInvoice(invoiceId: string, tenantId: string): Promise; private generateInvoiceNumber; addPaymentMethod(tenantId: string, dto: CreatePaymentMethodDto): Promise; getPaymentMethods(tenantId: string): Promise; getDefaultPaymentMethod(tenantId: string): Promise; setDefaultPaymentMethod(paymentMethodId: string, tenantId: string): Promise; removePaymentMethod(paymentMethodId: string, tenantId: string): Promise; getBillingSummary(tenantId: string): Promise<{ subscription: Subscription | null; defaultPaymentMethod: PaymentMethod | null; pendingInvoices: number; totalDue: number; }>; checkSubscriptionStatus(tenantId: string): Promise<{ isActive: boolean; daysRemaining: number; status: SubscriptionStatus; }>; }