/** * AI gateway — cross-model usage, cost tracking, per-project config. * * GET /ai/overview — platform-wide totals (admin only) * GET /ai/projects/:projectId/usage — per-project rollup * GET /ai/trends — cost trend time-series (admin only) * GET /ai/projects/:projectId/config — model allow/block lists + rate limits * PATCH /ai/projects/:projectId/config — update model config * * Costs are returned both as integer microdollars (safe for arithmetic) * and a human-friendly `formatted` string; prefer the former for any math. * Latency percentiles (`p95Ms`) are rounded to whole milliseconds. */ import type { Client } from './client.js'; export type Period = 'day' | 'week' | 'month'; export type Interval = 'hour' | 'day'; export type TrendPeriod = 'week' | 'month'; export interface Cost { readonly microdollars: number; readonly formatted: string; } export interface UsageByProject { readonly projectId: string; readonly projectName: string; readonly requests: number; readonly inputTokens: number; readonly outputTokens: number; readonly cost: Cost; readonly successRate: number; } export interface UsageByModel { readonly model: string; readonly requests: number; readonly tokens: number; readonly cost: Cost; } export interface UsageByProvider { readonly provider: string; readonly requests: number; readonly tokens: number; readonly cost: Cost; } export interface UsageByType { readonly type: string; readonly requests: number; readonly tokens: number; } export interface RecentError { readonly id: string; readonly model: string; readonly type: string; readonly error: string | null; readonly code: string | null; readonly timestamp: string; } export interface OverviewResult { readonly period: Period; readonly totals: { readonly requests: number; readonly tokens: number; readonly cost: Cost; readonly avgLatencyMs: number; readonly successRate: number; }; readonly byProject: readonly UsageByProject[]; readonly byModel: readonly UsageByModel[]; readonly byProvider: readonly UsageByProvider[]; } export declare const overview: (client: Client, period?: Period) => Promise; export interface ProjectUsageResult { readonly app: { readonly id: string; readonly name: string; readonly slug: string; }; readonly period: Period; readonly stats: { readonly requests: number; readonly inputTokens: number; readonly outputTokens: number; readonly cost: Cost; readonly latency: { readonly avgMs: number; readonly p95Ms: number; }; readonly successRate: number; }; readonly byModel: readonly UsageByModel[]; readonly byType: readonly UsageByType[]; readonly recentErrors: readonly RecentError[]; } export declare const projectUsage: (client: Client, projectId: string, period?: Period) => Promise; export interface TrendPoint { readonly timestamp: string; readonly requests: number; readonly tokens: number; readonly cost: Cost; readonly avgLatencyMs: number; } export interface TrendsResult { readonly period: TrendPeriod; readonly interval: Interval; readonly data: readonly TrendPoint[]; } export interface TrendsOptions { readonly projectId?: string; readonly period?: TrendPeriod; readonly interval?: Interval; } export declare const trends: (client: Client, options?: TrendsOptions) => Promise; export interface ModelConfig { readonly defaultMaxTokens: number; readonly defaultTemperature: number; readonly enableCaching: boolean; readonly allowedModels: readonly string[] | null; readonly blockedModels: readonly string[] | null; } export interface RateLimit { readonly id: string; readonly modelPattern: string; readonly requestsPerMinute: number | null; readonly requestsPerDay: number | null; readonly tokensPerMinute: number | null; readonly tokensPerDay: number | null; readonly costPerDayMicrodollars: number | null; readonly isActive: boolean; } export interface ProjectConfigResult { readonly app: { readonly id: string; readonly name: string; readonly slug: string; }; readonly config: ModelConfig; readonly rateLimits: readonly RateLimit[]; } export declare const getProjectConfig: (client: Client, projectId: string) => Promise; export interface UpdateProjectConfigInput { readonly defaultMaxTokens?: number; readonly defaultTemperature?: number; readonly enableCaching?: boolean; readonly allowedModels?: readonly string[] | null; readonly blockedModels?: readonly string[] | null; } export declare const updateProjectConfig: (client: Client, projectId: string, input: UpdateProjectConfigInput) => Promise<{ success: boolean; }>; //# sourceMappingURL=ai.d.ts.map