import { Observable } from 'rxjs'; import { SubtrakService } from './subtrak.service'; import { RecordUsageInput, UsageSummary, PaginatedResponse } from '../models'; import * as i0 from "@angular/core"; /** * Service for tracking and recording metered usage * * @example * ```typescript * constructor(private usage: UsageService) {} * * // Record single usage event * this.usage.recordUsage({ * meterId: 'meter_api_calls', * customerId: 'cus_123', * eventName: 'api_call', * properties: { endpoint: '/api/data', method: 'GET' }, * value: 1 * }).subscribe(); * * // Get current usage * this.usage.getCurrentUsage('meter_api_calls', 'cus_123').subscribe(summary => { * console.log('Total usage:', summary.totalUsage); * }); * ``` */ export declare class UsageService { private subtrak; constructor(subtrak: SubtrakService); /** * Record a single usage event * * @param input - Usage event data * @returns Observable of void */ recordUsage(input: RecordUsageInput): Observable; /** * Record multiple usage events in a single request * * @param events - Array of usage event data * @returns Observable of void */ batchRecordUsage(events: RecordUsageInput[]): Observable; /** * Get current usage summary for a meter and customer * * @param meterId - Meter ID * @param customerId - Customer ID * @returns Observable of usage summary */ getCurrentUsage(meterId: string, customerId: string): Observable; /** * Get usage history for a meter * * @param params - Query parameters * @returns Observable of usage summaries */ getUsageHistory(params: { meterId?: string; customerId?: string; subscriptionId?: string; periodStart?: string; periodEnd?: string; page?: number; limit?: number; }): Observable>; /** * Get usage summary by subscription * * @param subscriptionId - Subscription ID * @returns Observable of usage summaries */ getSubscriptionUsage(subscriptionId: string): Observable; /** * Get usage for a specific meter and subscription * * @param meterId - Meter ID * @param subscriptionId - Subscription ID * @returns Observable of usage summary */ getMeterUsage(meterId: string, subscriptionId: string): Observable; /** * Helper method to track API calls * * @param customerId - Customer ID * @param endpoint - API endpoint called * @param method - HTTP method * @param metadata - Additional metadata * @returns Observable of void */ trackApiCall(customerId: string, endpoint: string, method?: string, metadata?: Record): Observable; /** * Helper method to track data exports * * @param customerId - Customer ID * @param format - Export format (csv, json, etc.) * @param rowCount - Number of rows exported * @param metadata - Additional metadata * @returns Observable of void */ trackDataExport(customerId: string, format: string, rowCount: number, metadata?: Record): Observable; /** * Helper method to track storage usage * * @param customerId - Customer ID * @param sizeBytes - Size in bytes * @param fileType - Type of file * @param metadata - Additional metadata * @returns Observable of void */ trackStorageUsage(customerId: string, sizeBytes: number, fileType: string, metadata?: Record): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; }