import { type SseEvent, type SseSlidesData } from "@steipete/summarize-core/runtime";
import type { SlideExtractionResult } from "../slides/index.js";
import { type BufferedSseChannel } from "./server-event-channel.js";
export type SessionEvent = SseEvent;
export type Session = {
    id: string;
    createdAtMs: number;
    summaryEvents: BufferedSseChannel;
    slideEvents: BufferedSseChannel;
    slidesRequested: boolean;
    slidesLastStatus: string | null;
    lastMeta: {
        model: string | null;
        modelLabel: string | null;
        inputSummary: string | null;
        summaryFromCache: boolean | null;
    };
    transcriptTimedText: string | null;
    slides: SlideExtractionResult | null;
};
export declare function createSession(idFactory: () => string): Session;
export declare function pushToSession(session: Session, event: SessionEvent, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
export declare function pushSlidesToSession(session: Session, event: SessionEvent, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
export declare function emitMeta(session: Session, data: {
    model?: string | null;
    modelLabel?: string | null;
    inputSummary?: string | null;
    summaryFromCache?: boolean | null;
}, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
export declare function emitSlides(session: Session, data: SseSlidesData, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
export declare function emitSlidesStatus(session: Session, text: string, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
export declare function emitSlidesDone(session: Session, result: {
    ok: boolean;
    error?: string | null;
}, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
export declare function endSession(session: Session): void;
export declare function scheduleSessionCleanup({ sessions, refreshSessions, session, }: {
    sessions: Map<string, Session>;
    refreshSessions: Map<string, Session>;
    session: Session;
}): void;
