import { OnInit, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';
import { SubscriptionsService, PaymentMethodsService, InvoicesService, UsageService } from '../../services';
import { SubscriptionWithRelations, PaymentMethod, Invoice, UsageSummary } from '../../models';
import * as i0 from "@angular/core";
/**
* Complete billing management widget with subscription, payment methods, and invoices
*
* @example
* ```html
*
*
* ```
*/
export declare class BillingPortalComponent implements OnInit, OnDestroy, OnChanges {
private subscriptionsService;
private paymentMethodsService;
private invoicesService;
private usageService;
/**
* Customer ID to display billing information for
*/
customerId: string;
subscription: SubscriptionWithRelations | null;
paymentMethods: PaymentMethod[];
recentInvoices: Invoice[];
usageSummaries: UsageSummary[];
loading: boolean;
error: string | null;
loadingPaymentMethods: boolean;
loadingInvoices: boolean;
private destroy$;
constructor(subscriptionsService: SubscriptionsService, paymentMethodsService: PaymentMethodsService, invoicesService: InvoicesService, usageService: UsageService);
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngOnDestroy(): void;
loadBillingData(): void;
private loadUsageData;
/**
* Handle upgrade button click
*/
onUpgradeClicked(): void;
/**
* Remove a payment method
*/
removePaymentMethod(paymentMethodId: string): void;
/**
* Set payment method as default
*/
setDefaultPaymentMethod(paymentMethodId: string): void;
/**
* Get payment method display text
*/
getPaymentMethodDisplay(pm: PaymentMethod): string;
/**
* Get payment method expiry display
*/
getExpiryDisplay(pm: PaymentMethod): string;
/**
* Format invoice date
*/
formatDate(dateString: string): string;
/**
* Format currency amount
*/
formatAmount(amount: string, currency: string): string;
/**
* Get invoice status class
*/
getInvoiceStatusClass(status: string): string;
/**
* Download invoice PDF
*/
downloadInvoice(invoice: Invoice): void;
/**
* Format usage value
*/
formatUsage(value: string): string;
/**
* Track by function for payment methods
*/
trackByPaymentMethodId(index: number, pm: PaymentMethod): string;
/**
* Track by function for invoices
*/
trackByInvoiceId(index: number, invoice: Invoice): string;
/**
* Track by function for usage summaries
*/
trackByUsageId(index: number, usage: UsageSummary): string;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}