import type { AgentMessage, StreamFn } from "@mariozechner/pi-agent-core";
import type { SymiConfig } from "../config/config.js";
import { type QueuedFileWriter } from "./queued-file-writer.js";
export type CacheTraceStage = "session:loaded" | "session:sanitized" | "session:limited" | "prompt:before" | "prompt:images" | "stream:context" | "session:after";
export type CacheTraceEvent = {
    ts: string;
    seq: number;
    stage: CacheTraceStage;
    runId?: string;
    sessionId?: string;
    sessionKey?: string;
    provider?: string;
    modelId?: string;
    modelApi?: string | null;
    workspaceDir?: string;
    prompt?: string;
    system?: unknown;
    options?: Record<string, unknown>;
    model?: Record<string, unknown>;
    messages?: AgentMessage[];
    messageCount?: number;
    messageRoles?: Array<string | undefined>;
    messageFingerprints?: string[];
    messagesDigest?: string;
    systemDigest?: string;
    note?: string;
    error?: string;
};
export type CacheTrace = {
    enabled: true;
    filePath: string;
    recordStage: (stage: CacheTraceStage, payload?: Partial<CacheTraceEvent>) => void;
    wrapStreamFn: (streamFn: StreamFn) => StreamFn;
};
type CacheTraceInit = {
    cfg?: SymiConfig;
    env?: NodeJS.ProcessEnv;
    runId?: string;
    sessionId?: string;
    sessionKey?: string;
    provider?: string;
    modelId?: string;
    modelApi?: string | null;
    workspaceDir?: string;
    writer?: CacheTraceWriter;
};
type CacheTraceWriter = QueuedFileWriter;
export declare function createCacheTrace(params: CacheTraceInit): CacheTrace | null;
export {};
