import { Logger as PinoLogger } from "pino";
type Pino = PinoLogger<never, boolean>;
type RequestInfo = Request;
type LogLevel = "DEBUG" | "INFO" | "WARNING" | "ERROR";
interface StoreData {
	beforeTime: bigint;
}
interface Logger {
	debug: (request: RequestInfo, message: string, context?: Record<string, unknown>) => void;
	error: (request: RequestInfo, message: string, context?: Record<string, unknown>) => void;
	getContext: (key: RequestInfo | object) => Readonly<Record<string, unknown>>;
	handleHttpError: (request: RequestInfo, error: unknown, store: StoreData) => void;
	info: (request: RequestInfo, message: string, context?: Record<string, unknown>) => void;
	log: (level: LogLevel, request: RequestInfo, data: Record<string, unknown>, store: StoreData) => void;
	mergeContext: (key: RequestInfo | object, partial: Record<string, unknown>) => void;
	pino: Pino;
	warn: (request: RequestInfo, message: string, context?: Record<string, unknown>) => void;
}
interface AIMetrics {
	calls?: number;
	finishReason?: string;
	inputTokens?: number;
	model?: string;
	msToFinish?: number;
	msToFirstChunk?: number;
	outputTokens?: number;
	provider?: string;
	reasoningTokens?: number;
	tokensPerSecond?: number;
	totalTokens?: number;
}
/**
* Merges AI SDK / LLM usage metrics into the request context bag so they appear
* on the final access log (evlog-style `ai` object).
*/
declare const mergeAIMetrics: (logger: Pick<Logger, "mergeContext">, request: Request, metrics: AIMetrics) => void;
export { mergeAIMetrics, mergeAIMetrics as default, AIMetrics };
