import type { SummaryLength } from "../shared/contracts.js";
import { type SlideTimelineEntry } from "./text.js";
export type SlidePresentationLength = {
    kind: "preset";
    preset: SummaryLength;
} | {
    kind: "chars";
    maxCharacters: number;
};
export type SlidePresentationCard = {
    index: number;
    title: string | null;
    body: string;
    source: "summary" | "transcript";
};
export type SlidePresentation = {
    markdown: string;
    cards: SlidePresentationCard[];
    summaries: Map<number, string>;
    titles: Map<number, string>;
    finalSummaryIndexes: Set<number>;
};
export type SlidePresentationTextKind = "intro" | "slide-body";
export declare function buildSlidePresentation({ markdown, slides, transcriptTimedText, lengthArg, coerce, coerceReserveIntro, includeTranscriptFallback, }: {
    markdown: string;
    slides: SlideTimelineEntry[];
    transcriptTimedText?: string | null;
    lengthArg: SlidePresentationLength;
    coerce?: boolean;
    coerceReserveIntro?: boolean;
    includeTranscriptFallback?: boolean;
}): SlidePresentation;
export declare function createSlidesPresentationStream({ getSlideIndexOrder, getSlideMeta, onText, onSlide, debugWrite, }: {
    getSlideIndexOrder: () => number[];
    getSlideMeta?: ((index: number) => {
        total: number;
        timestamp: number | null;
    }) | null;
    onText: (segment: string, kind: SlidePresentationTextKind) => void | Promise<void>;
    onSlide: (index: number, title?: string | null) => void | Promise<void>;
    debugWrite?: ((text: string) => void) | null;
}): {
    push(appended: string): Promise<void>;
    finish(): Promise<void>;
};
