import type { SseSlidesData } from "@steipete/summarize-core/runtime";
import type { SummarizeEvent } from "../application/summarize-contracts.js";
import type { SlideExtractionResult } from "../slides/index.js";
import { type Session, type SessionEvent } from "./server-session.js";
type LoggerLike = {
    info?: (payload: Record<string, unknown>) => void;
};
export type SlidesLogShape = {
    enabled: boolean;
    ocr: boolean;
    outputDir: string;
    sceneThreshold: number | null;
    autoTuneThreshold: boolean;
    maxSlides: number | null;
    minDurationSeconds: number | null;
};
export type DaemonSummarizeEventState = {
    emittedOutput: boolean;
    summaryFromCache: boolean;
    inputSummary: string | null;
    summaryText: string;
    extracted: Record<string, unknown> | null;
};
export declare function buildSlidesPayload({ slides, port, transcriptTimedText, }: {
    slides: SlideExtractionResult;
    port: number;
    transcriptTimedText?: string | null;
}): SseSlidesData;
export declare function createDaemonSummarizeEventAdapter({ session, pageUrl, slidesRequested, port, onSessionEvent, includeContentLog, requestLogger, logSlidesSettings, }: {
    session: Session;
    pageUrl: string;
    slidesRequested: boolean;
    port: number;
    onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null;
    includeContentLog: boolean;
    requestLogger?: LoggerLike | null;
    logSlidesSettings: SlidesLogShape | null;
}): {
    state: DaemonSummarizeEventState;
    writeStatus: (text: string) => void;
    startSlides: () => void;
    handleEvent: (event: SummarizeEvent) => void;
    serializeSlides: () => {
        requested: boolean;
        cacheHit: boolean;
        lastStatus: string | null;
        statusCount: number;
        elapsedMs: number | null;
        slidesCount: number | null;
        ocrAvailable: boolean | null;
        warnings: string[];
    };
};
export {};
