/**
 * Interaction Logger
 *
 * Comprehensive session logging with replay capability (mistral-vibe style).
 * Saves complete interaction history including messages, tool calls, metadata.
 */
/**
 * Tool call entry in log
 */
export interface LoggedToolCall {
    id: string;
    name: string;
    arguments: Record<string, unknown>;
    timestamp: string;
    duration_ms?: number;
    success: boolean;
    output?: string;
    error?: string;
}
/**
 * Message entry in log
 */
export interface LoggedMessage {
    role: 'system' | 'user' | 'assistant' | 'tool';
    content: string | null;
    timestamp: string;
    tool_calls?: LoggedToolCall[];
    tool_call_id?: string;
    tokens?: number;
}
/**
 * Session metadata
 */
export interface SessionMetadata {
    /** Unique session ID */
    id: string;
    /** Short ID for easy reference */
    short_id: string;
    /** Session start time */
    started_at: string;
    /** Session end time (if completed) */
    ended_at?: string;
    /** Total duration in milliseconds */
    duration_ms?: number;
    /** Model used */
    model: string;
    /** Provider used */
    provider: string;
    /** Working directory */
    cwd: string;
    /** Total input tokens */
    total_input_tokens: number;
    /** Total output tokens */
    total_output_tokens: number;
    /** Estimated cost (USD) */
    estimated_cost: number;
    /** Number of turns */
    turns: number;
    /** Number of tool calls */
    tool_calls: number;
    /** User-provided tags */
    tags?: string[];
    /** User-provided description */
    description?: string;
    /** Git branch (if in git repo) */
    git_branch?: string;
    /** Git commit (if in git repo) */
    git_commit?: string;
}
/**
 * Complete session data
 */
export interface SessionData {
    /** Version of the log format */
    version: string;
    /** Session metadata */
    metadata: SessionMetadata;
    /** Message history */
    messages: LoggedMessage[];
}
/**
 * Interaction Logger for comprehensive session tracking
 */
export declare class InteractionLogger {
    private currentSession;
    private logPath;
    private autoSave;
    private saveInterval;
    constructor(options?: {
        autoSave?: boolean;
        saveIntervalMs?: number;
    });
    /**
     * Start a new session
     */
    startSession(options: {
        model: string;
        provider: string;
        cwd?: string;
        tags?: string[];
        description?: string;
        gitInfo?: {
            branch?: string;
            commit?: string;
        };
    }): string;
    /**
     * End current session
     */
    endSession(): void;
    /**
     * Log a message
     */
    logMessage(message: {
        role: 'system' | 'user' | 'assistant' | 'tool';
        content: string | null;
        tool_call_id?: string;
        tokens?: number;
    }): void;
    /**
     * Log tool calls
     */
    logToolCalls(toolCalls: Array<{
        id: string;
        name: string;
        arguments: Record<string, unknown>;
    }>): void;
    /**
     * Log tool result
     */
    logToolResult(toolCallId: string, result: {
        success: boolean;
        output?: string;
        error?: string;
        duration_ms?: number;
    }): void;
    /**
     * Update session cost
     */
    updateCost(cost: number): void;
    /**
     * Save current session to disk
     */
    save(): void;
    /**
     * Get current session data
     */
    getCurrentSession(): SessionData | null;
    /**
     * Get current session ID
     */
    getCurrentSessionId(): string | null;
    /**
     * Load a session by ID (full or short)
     */
    static loadSession(sessionId: string): SessionData | null;
    /**
     * Search sessions by partial ID
     */
    static searchSessions(partialId: string): SessionData[];
    /**
     * Find session files matching an ID
     */
    private static findSessionFiles;
    /**
     * Get the latest session
     */
    static getLatestSession(): SessionData | null;
    /**
     * List all sessions (with pagination)
     */
    static listSessions(options?: {
        limit?: number;
        offset?: number;
        tags?: string[];
        model?: string;
        startDate?: Date;
        endDate?: Date;
    }): {
        sessions: SessionMetadata[];
        total: number;
    };
    /**
     * Delete a session
     */
    static deleteSession(sessionId: string): boolean;
    /**
     * Format session for display
     */
    static formatSession(session: SessionData): string;
    /**
     * Dispose resources
     */
    dispose(): void;
}
export declare function getInteractionLogger(): InteractionLogger;
/**
 * Create a new logger instance (for testing)
 */
export declare function createInteractionLogger(options?: {
    autoSave?: boolean;
    saveIntervalMs?: number;
}): InteractionLogger;
