import type { DocumentSection, DocumentSectionType } from "../types/sections";
import "./TableOfContents.css";
export interface TableOfContentsProps {
    sections: DocumentSection[];
    currentSectionId: string | null;
    isCollapsed: boolean;
    onToggleCollapse: () => void;
    onSelectSection: (id: string) => void;
    onAddSection: (afterId: string | null) => void;
    onAddIntroduction: () => void;
    onAddConclusion: () => void;
    onRemoveSection: (id: string) => void;
    /**
     * Called when the user commits changes from the inline edit form.
     * `changes` may include a new title, type, xml:id, and/or label.
     */
    onUpdateSection: (id: string, changes: {
        title?: string;
        type?: DocumentSectionType;
        xmlId?: string | null;
        label?: string | null;
    }) => void;
    onReorderSections: (sections: DocumentSection[]) => void;
    /**
     * Called when the user drags one section onto another to merge them.
     * `sourceId` is appended to the end of `targetId`.
     */
    onMergeSections?: (sourceId: string, targetId: string) => void;
    /**
     * Called when the user wants to convert the (currently unsectioned) document
     * into a single section and switch to sectioned mode.
     */
    onAddFirstSection?: () => void;
    /**
     * Called when the user requests a manual TOC refresh (sectioned mode).
     * Re-parses the merged document to pick up any sub-sections the user
     * added inside the current section.
     */
    onRefresh?: () => void;
    /** Current editing mode */
    editMode: "document" | "sectioned";
    /** Called when the user clicks the "Edit full document" link */
    onToggleEditMode: () => void;
    /** When true (document mode), hide all edit controls */
    readonly?: boolean;
}
declare const TableOfContents: (props: TableOfContentsProps) => import("react/jsx-runtime").JSX.Element;
export default TableOfContents;
