import type { SectionControllerSessionState } from "../services/section-controller-types.js";
import type { StorageLike } from "./TestSession.js";
export interface AssessmentSessionNavigationState {
    currentSectionIndex: number;
    visitedSectionIdentifiers: string[];
    currentSectionIdentifier?: string;
}
export interface AssessmentSessionRealization {
    seed: string;
    sectionIdentifiers: string[];
}
export interface AssessmentSectionSessionState {
    sectionIdentifier: string;
    updatedAt: string;
    session: SectionControllerSessionState | null;
}
export interface AssessmentSession {
    version: 1;
    assessmentAttemptSessionIdentifier: string;
    assessmentId: string;
    startedAt: string;
    updatedAt: string;
    completedAt?: string;
    navigationState: AssessmentSessionNavigationState;
    realization: AssessmentSessionRealization;
    sectionSessions: Record<string, AssessmentSectionSessionState>;
    contextVariables?: Record<string, unknown>;
}
export declare function getAssessmentSessionStorageKey(assessmentAttemptSessionIdentifier: string): string;
export declare function loadAssessmentSession(storage: StorageLike, assessmentAttemptSessionIdentifier: string): AssessmentSession | null;
export declare function saveAssessmentSession(storage: StorageLike, session: AssessmentSession): void;
export declare function createNewAssessmentSession(args: {
    assessmentAttemptSessionIdentifier: string;
    assessmentId: string;
    seed: string;
    sectionIdentifiers: string[];
}): AssessmentSession;
export declare function upsertSectionSession(session: AssessmentSession, args: {
    sectionIdentifier: string;
    sectionSession: SectionControllerSessionState | null;
}): AssessmentSession;
export declare function setCurrentSectionPosition(session: AssessmentSession, args: {
    currentSectionIndex: number;
    currentSectionIdentifier?: string;
}): AssessmentSession;
