/** * Billing and Usage Tracking Types */ export declare enum BillingPeriod { DAILY = "daily", WEEKLY = "weekly", MONTHLY = "monthly", QUARTERLY = "quarterly", ANNUALLY = "annually" } export declare enum PricingModel { PAY_AS_YOU_GO = "pay_as_you_go", TIERED = "tiered", VOLUME = "volume", SUBSCRIPTION = "subscription", CUSTOM = "custom" } export declare enum InvoiceStatus { DRAFT = "draft", PENDING = "pending", PAID = "paid", OVERDUE = "overdue", CANCELLED = "cancelled", REFUNDED = "refunded" } export declare enum PaymentMethod { CREDIT_CARD = "credit_card", DEBIT_CARD = "debit_card", BANK_TRANSFER = "bank_transfer", PAYPAL = "paypal", STRIPE = "stripe", CUSTOM = "custom" } export declare enum UsageMetricType { TOKENS = "tokens", REQUESTS = "requests", CHARACTERS = "characters", COMPUTE_TIME = "compute_time", STORAGE = "storage", BANDWIDTH = "bandwidth", API_CALLS = "api_calls" } export declare enum AlertType { USAGE_THRESHOLD = "usage_threshold", COST_THRESHOLD = "cost_threshold", QUOTA_EXCEEDED = "quota_exceeded", PAYMENT_FAILED = "payment_failed", INVOICE_DUE = "invoice_due" } export interface PricingTier { name: string; min: number; max?: number; pricePerUnit: number; flatFee?: number; } export interface PricingConfig { model: PricingModel; currency: string; basePricePerToken?: number; basePricePerRequest?: number; tiers?: PricingTier[]; subscription?: { monthlyFee: number; includedTokens: number; overage: number; }; minimumCharge?: number; maximumCharge?: number; } export interface UsageRecord { id: string; userId: string; resourceId: string; resourceType: string; metricType: UsageMetricType; quantity: number; cost: number; timestamp: Date; metadata?: Record; modelId?: string; providerId?: string; requestId?: string; } export interface UsageSummary { userId: string; period: { start: Date; end: Date; }; totalCost: number; totalTokens: number; totalRequests: number; byModel: Record; byProvider: Record; byMetric: Record; } export interface Invoice { id: string; invoiceNumber: string; userId: string; status: InvoiceStatus; billingPeriod: BillingPeriod; periodStart: Date; periodEnd: Date; subtotal: number; tax: number; total: number; currency: string; lineItems: InvoiceLineItem[]; paymentMethod?: PaymentMethod; paidAt?: Date; dueDate: Date; notes?: string; metadata?: Record; } export interface InvoiceLineItem { description: string; quantity: number; unitPrice: number; amount: number; metricType?: UsageMetricType; resourceId?: string; metadata?: Record; } export interface BillingAccount { id: string; userId: string; email: string; name: string; company?: string; address?: { line1: string; line2?: string; city: string; state?: string; postalCode: string; country: string; }; taxId?: string; paymentMethod?: PaymentMethod; paymentDetails?: Record; billingPeriod: BillingPeriod; pricingConfig: PricingConfig; credits: number; status: 'active' | 'suspended' | 'cancelled'; createdAt: Date; updatedAt: Date; } export interface UsageQuota { userId: string; quotaType: UsageMetricType; limit: number; used: number; period: BillingPeriod; resetAt: Date; softLimit?: number; hardLimit: number; alertThresholds?: number[]; } export interface BillingAlert { id: string; userId: string; type: AlertType; threshold: number; current: number; message: string; triggered: boolean; triggeredAt?: Date; acknowledged: boolean; acknowledgedAt?: Date; metadata?: Record; } export interface PaymentTransaction { id: string; invoiceId: string; userId: string; amount: number; currency: string; paymentMethod: PaymentMethod; status: 'pending' | 'completed' | 'failed' | 'refunded'; transactionId?: string; externalId?: string; processedAt?: Date; failureReason?: string; metadata?: Record; } export interface CostEstimate { estimatedCost: number; breakdown: { tokens?: number; requests?: number; storage?: number; bandwidth?: number; other?: Record; }; currency: string; confidence: number; factors?: string[]; } export interface BillingReport { userId: string; reportType: 'usage' | 'cost' | 'invoice' | 'forecast'; period: { start: Date; end: Date; }; data: unknown; generatedAt: Date; format: 'json' | 'csv' | 'pdf'; } export interface StripeConfig { apiKey: string; webhookSecret?: string; customerId?: string; subscriptionId?: string; } //# sourceMappingURL=types.d.ts.map