import { SmrtClassOptions } from '@happyvertical/smrt-core'; import { TenantUsageMetricCollection } from '../collections/TenantUsageMetricCollection.js'; import { AiUsageSummary, RecordUsageOptions, SummarizeAiUsageOptions, SummarizeUsageBatchOptions, SummarizeUsageOptions, UsageSummary } from '../types.js'; export declare class TenantUsageMeter { private readonly metrics; private readonly classOptions; constructor(metrics: TenantUsageMetricCollection, classOptions?: SmrtClassOptions); static create(classOptions?: SmrtClassOptions): Promise; /** * Record one usage row. * * Accepts the polymorphic subscriber fields directly on the options object * (`subscriberKind`/`subscriberExternalId`); when omitted defaults to a * `'tenant'`-kind row keyed off `tenantId`. The collection layer enforces * the XOR invariant — passing `subscriberKind: 'external'` without a * non-empty `subscriberExternalId` throws. */ record(options: RecordUsageOptions): Promise; /** * Summarize usage over a window for a given subscriber. * * The `ai.*` short-circuit only fires for `'tenant'`-kind subscribers since * the `_smrt_ai_usage` system table is tenant-scoped; external subscribers * fall through to the normal `_smrt_tenant_usage_metrics` aggregation. */ summarize(options: SummarizeUsageOptions): Promise; summarizeBatch(options: SummarizeUsageBatchOptions): Promise; summarizeAiUsage(options: SummarizeAiUsageOptions): Promise; getOptions(): SmrtClassOptions; private trySummarizeAiMetric; private hasAiUsageTable; } //# sourceMappingURL=usage-meter.d.ts.map