/**
 * SQLite Interactive Session Repository Implementation
 *
 * Implements IInteractiveSessionRepository using SQLite database.
 * Uses prepared statements to prevent SQL injection.
 */
import type Database from 'better-sqlite3';
import type { IInteractiveSessionRepository } from '../../application/ports/output/repositories/interactive-session-repository.interface.js';
import type { InteractiveSession } from '../../domain/generated/output.js';
import { InteractiveSessionStatus } from '../../domain/generated/output.js';
export declare class SQLiteInteractiveSessionRepository implements IInteractiveSessionRepository {
    private readonly db;
    constructor(db: Database.Database);
    create(session: InteractiveSession): Promise<void>;
    findById(id: string): Promise<InteractiveSession | null>;
    findByFeatureId(featureId: string): Promise<InteractiveSession | null>;
    findAllActive(): Promise<InteractiveSession[]>;
    updateStatus(id: string, status: InteractiveSessionStatus, stoppedAt?: Date): Promise<void>;
    updateLastActivity(id: string, lastActivityAt: Date): Promise<void>;
    markAllActiveStopped(): Promise<void>;
    countActiveSessions(): Promise<number>;
    updateAgentSessionId(id: string, agentSessionId: string): Promise<void>;
    getAgentSessionId(id: string): Promise<string | null>;
    findLatestAgentSessionIdForFeature(featureId: string): Promise<string | null>;
    updateTurnStatus(id: string, turnStatus: string): Promise<void>;
    getTurnStatuses(featureIds: string[]): Promise<Map<string, string>>;
    getAllActiveTurnStatuses(): Promise<Map<string, string>>;
    accumulateUsage(id: string, usage: {
        costUsd: number;
        inputTokens: number;
        outputTokens: number;
        turns: number;
    }): Promise<void>;
    getUsage(id: string): Promise<{
        totalCostUsd: number;
        totalInputTokens: number;
        totalOutputTokens: number;
        totalTurns: number;
    } | null>;
}
//# sourceMappingURL=sqlite-interactive-session.repository.d.ts.map