import type { SessionModel } from "../types.js"; type BaseModelUsageDescriptor = { readonly modelKey: string; }; export type ModelUsageDescriptor = BaseModelUsageDescriptor & ({ readonly kind: "openai" | "zhipu"; } | { readonly kind: "google-antigravity"; readonly quotaModelKey: string; readonly quotaModelCandidates?: readonly string[]; readonly account?: AntigravityQuotaAccount; readonly accounts?: readonly AntigravityQuotaAccount[]; }); export type ModelUsageLimitWindow = { readonly remainingPercent: number; readonly resetAt: number; readonly windowSeconds: number; readonly hasKnownWindowDuration?: boolean; }; export type ModelUsageStatus = { readonly modelKey: string; readonly provider: "openai" | "zhipu" | "google-antigravity"; readonly updatedAt: number; readonly accountEmail?: string; readonly weekly?: ModelUsageLimitWindow; readonly hourly?: ModelUsageLimitWindow; }; type RateLimitWindow = { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; }; type OpenAIRateLimit = { allowed?: boolean; limit_reached: boolean; primary_window: RateLimitWindow; secondary_window: RateLimitWindow | null; }; type OpenAIAdditionalRateLimit = { limit_name: string; metered_feature?: string; rate_limit: OpenAIRateLimit | null; }; export type AccountUsageLimitWindow = { readonly label: string; readonly remainingPercent: number; readonly resetAt: number; readonly windowSeconds: number; readonly used?: number; readonly limit?: number; }; export type AccountUsageReport = { readonly openai?: { readonly account: string; readonly planType?: string; readonly windows: readonly AccountUsageLimitWindow[]; readonly limitReached: boolean; readonly additionalLimits?: readonly { readonly name: string; readonly meteredFeature?: string; readonly windows: readonly AccountUsageLimitWindow[]; readonly limitReached: boolean; }[]; readonly error?: string; }; readonly zai?: { readonly account: string; readonly windows: readonly AccountUsageLimitWindow[]; readonly mcp?: AccountUsageLimitWindow; readonly error?: string; }; readonly googleAccounts: readonly { readonly account: string; readonly windows: readonly AccountUsageLimitWindow[]; readonly limitReached: boolean; readonly error?: string; }[]; readonly generatedAt: number; }; export type OpenAIUsageResponse = { plan_type: string; rate_limit: OpenAIRateLimit | null; additional_rate_limits?: OpenAIAdditionalRateLimit[]; }; type AntigravityCachedQuotaBucket = { remainingFraction?: number; resetTime?: string; modelCount?: number; }; type AntigravityCachedQuota = Record; type AntigravityQuotaAccount = { readonly email?: string; readonly refreshToken: string; readonly accessToken?: string; readonly clientId?: string; readonly clientSecret?: string; readonly cachedQuota?: AntigravityCachedQuota; readonly cachedQuotaUpdatedAt?: number; readonly projectId: string; readonly managedProjectId?: string; readonly accountIndex?: number; readonly accountCount?: number; readonly cacheKey: string; }; type GoogleQuotaResponse = { models: Record; readonly source?: "cached"; }; export declare function modelUsageDescriptor(model: SessionModel | undefined, thinkingLevel?: string): ModelUsageDescriptor | undefined; export declare function queryModelUsageStatus(descriptor: ModelUsageDescriptor): Promise; export declare function queryAccountUsageReport(now?: number): Promise; export declare function formatAccountUsageReport(report: AccountUsageReport, now?: number): string; export declare function formatModelUsageStatusLabel(status: ModelUsageStatus | undefined, now?: number): string; export declare function modelUsageRemainingPercent(status: ModelUsageStatus | undefined): number | undefined; export declare function openAIUsageStatusFromResponse(data: OpenAIUsageResponse, modelKey: string, now?: number): ModelUsageStatus | undefined; type ZhipuUsageLimitItem = { type: string; usage: number; currentValue: number; percentage: number; nextResetTime?: number; }; type ZhipuQuotaResponse = { code: number; msg: string; data: { limits: ZhipuUsageLimitItem[]; }; success: boolean; }; export declare function zhipuUsageStatusFromResponse(data: ZhipuQuotaResponse, modelKey: string, now?: number): ModelUsageStatus | undefined; export declare function resolveAntigravityQuotaModelKey(model: SessionModel): string | undefined; export declare function googleAntigravityUsageStatusFromResponse(data: GoogleQuotaResponse, descriptor: Extract, now?: number): ModelUsageStatus | undefined; export {};