export interface Logger { info(message: string, meta?: Record): void; warn(message: string, meta?: Record): void; error(message: string, meta?: Record): void; } export interface Counter { inc(labels?: Record, value?: number): void; } export interface Histogram { observe(labels: Record, value: number): void; } export interface MetricsAdapter { variantsCreated: Counter; variantEntries: Counter; variantPromotions: Counter; variantTournaments: Counter; banditDecisions: Counter; banditSweepPromotions: Counter; judgeCalls: Counter; judgeCostUsd: Counter; judgeLatency: Histogram; } export interface PreparedStatement { run(...params: unknown[]): { changes: number; lastInsertRowid: number | bigint; }; get(...params: unknown[]): unknown; all(...params: unknown[]): unknown[]; } export interface Transaction { (): T; } export interface DatabaseAdapter { prepare(sql: string): PreparedStatement; transaction(fn: () => T): Transaction; exec(sql: string): void; } export type JudgeMessage = { role: 'user' | 'assistant'; content: string; }; export type JudgeResponse = { text: string; inputTokens: number; outputTokens: number; }; export interface JudgeLLM { generate(params: { model: string; system: string; messages: JudgeMessage[]; maxTokens: number; temperature: number; }): Promise; } export declare function createNoopLogger(): Logger; export declare function createNoopMetrics(): MetricsAdapter;