import type { StudentProfile } from '../types';
export interface SessionData {
    sessionId: string;
    alumnoId: string;
    curriculoId: number;
    xpTotal: number;
    nivelAlcanzado: string;
    logrosJson: string;
    nodosCompletados: number;
    evaluacionPuntaje: number | null;
    completada: boolean;
}
export interface SessionMetrics {
    sessionId: string;
    alumnoId: string;
    curriculoId: number;
    tema: string;
    duracionRealSeg: number;
    nodosTotal: number;
    nodosCompletados: number;
    puntajeEvaluacion: number | null;
    intentosPorNodo: string;
    nodosDominados: string;
    nodosDificiles: string;
    logrosDesbloqueados: string;
    xpGanado: number;
    completada: boolean;
}
export interface NodeEffectiveness {
    id: string;
    nodoContentHash: string;
    agenteTipo: string;
    tema: string;
    tipoPedagogico: string;
    tipoVisual: string;
    rangoEdad: string;
    intentosPromedio: number;
    tasaAbandono: number;
    tiempoPromedio: number;
    vecesVisto: number;
    vecesCompletado: number;
}
export declare class LessonPersistence {
    private db;
    constructor();
    /** Verifica si los agentes de HiveLearn ya tienen provider/model configurados */
    getHiveLearnProviderModel(): {
        providerId: string;
        modelId: string;
    } | null;
    saveStudentProfile(profile: StudentProfile): void;
    getStudentProfile(alumnoId: string): StudentProfile | null;
    saveCurriculum(sessionId: string, meta: string, nodosJson: string, totalNodos: number, rangoEdad: string, topicSlug: string | null): number;
    getCurriculumBySessionId(sessionId: string): {
        id: number;
        nodos_json: string;
        topic_slug: string | null;
    } | null;
    createSession(sessionId: string, alumnoId: string, curriculoId: number, rangoEdad: string): void;
    updateSessionProgress(sessionId: string, nodosCompletados: number, xpTotal: number): void;
    completeSession(sessionId: string, xpTotal: number, nivelAlcanzado: string, logrosJson: string, evaluacionPuntaje: number | null): void;
    getSession(sessionId: string): SessionData | null;
    getActiveSession(alumnoId: string): SessionData | null;
    saveSessionMetrics(metrics: SessionMetrics): void;
    trackNodeInteraction(nodoId: string, agenteTipo: string, tema: string, tipoPedagogico: string, tipoVisual: string, rangoEdad: string, completado: boolean, tiempoSeg: number): void;
    saveAgentOutput(sessionId: string, agentId: string, taskId: string, outputJson: string, durationMs: number, status?: 'ok' | 'failed'): void;
    getAgentOutputs(sessionId: string): Array<{
        agent_id: string;
        task_id: string;
        output_json: string;
        duration_ms: number;
        status: string;
    }>;
    saveStudentResponse(sessionId: string, nodeId: string, tipoPedagogico: string, respuesta: string, feedbackJson: string, xpAwarded: number, esCorrecto: boolean): void;
    updateNodeEffectiveness(nodeId: string, tipoPedagogico: string, esCorrecto: boolean): void;
    /** Agrega un logro a la lista de logros desbloqueados de la sesión */
    saveLogro(sessionId: string, logroId: string): void;
    rateSession(sessionId: string, rating: number, comentario?: string): void;
    /** Devuelve sesión + curriculo completo (nodos_json) para el gateway */
    getSessionWithCurriculum(sessionId: string): (SessionData & {
        nodosJson: string;
        topicSlug: string | null;
    }) | null;
    getTopicEffectiveness(topicSlug: string | null): {
        nodosConMasFallas: string[];
        nivelPromedioAprobacion: number;
    };
    getAggregateMetrics(): Record<string, any>;
    getSessionsByAlumno(alumnoId: string): SessionData[];
}
