import { PresentationModel } from '../core/PresentationModel';
import { NicePresentationDocument, PresentationSlide, SlideElement, SlideLayout, PresentationTheme, ElementPosition } from '../types/presentationTypes';

export interface UsePresentationEditorReturn {
    document: Readonly<NicePresentationDocument>;
    slides: readonly PresentationSlide[];
    theme: PresentationTheme;
    /** Current slide index */
    currentSlideIndex: number;
    currentSlide: PresentationSlide | undefined;
    setCurrentSlideIndex: (idx: number) => void;
    /** Slide ops */
    addSlide: (afterIndex?: number, layout?: SlideLayout) => PresentationSlide;
    removeSlide: (id: string) => void;
    moveSlide: (id: string, newIndex: number) => void;
    duplicateSlide: (id: string) => PresentationSlide | null;
    updateSlide: (id: string, patch: Partial<Omit<PresentationSlide, 'id' | 'elements'>>) => void;
    /** Element ops */
    addElement: (slideId: string, element: Omit<SlideElement, 'id'>) => SlideElement | null;
    updateElement: (slideId: string, elementId: string, patch: Partial<Omit<SlideElement, 'id'>>) => void;
    removeElement: (slideId: string, elementId: string) => void;
    moveElement: (slideId: string, elementId: string, position: ElementPosition) => void;
    /** Theme */
    setTheme: (theme: PresentationTheme) => void;
    /** Undo/Redo */
    undo: () => void;
    redo: () => void;
    canUndo: boolean;
    canRedo: boolean;
    /** Load */
    loadDocument: (doc: NicePresentationDocument) => void;
    model: PresentationModel;
}
export declare function usePresentationEditor(initialDoc?: NicePresentationDocument): UsePresentationEditorReturn;
//# sourceMappingURL=usePresentationEditor.d.ts.map