import { EditorState } from "../common/store.js";
import { RectMapEntry } from "../common/types/rect.js";
import { PageContent } from "../models/index.js";
export interface EditorMethods {
    initialize(): void;
    setSelectedBlock(path: number[] | null): void;
    setRectMap(rects: RectMapEntry[]): void;
    setHeight(height: number): void;
    setDeviceWidth(deviceWidth: string): void;
    setZoom(zoom: number): void;
    increaseZoom(): void;
    decreaseZoom(): void;
    togglePreviewMode(): void;
    setConfig(data: Pick<EditorState, 'blocks' | 'subBlocks' | 'global'>): void;
    setContent(data: PageContent, skipHistory?: boolean): void;
    insertBlock(path: number[], blockType: string, position?: 'prepend' | 'append'): void;
    enableInsertMode(blockType: string): void;
    enableReorderMode(path: number[]): void;
    disableMode(): void;
    updateField(path: string, value: unknown): void;
    deleteBlock(path: number[]): void;
    duplicateBlock(path: number[]): void;
    reorderBlock(path: number[], destination: number[], position?: 'prepend' | 'append'): void;
    resetInitialize(): void;
    resetBlocks(): void;
    undo(): void;
    redo(): void;
}
export type EditorStore = EditorState & EditorMethods;
export declare const createEditorStore: (overrideInitialState?: Partial<EditorState> | undefined) => import("zustand").UseBoundStore<Omit<Omit<Omit<import("zustand").StoreApi<EditorState & EditorMethods>, "subscribe"> & {
    subscribe: {
        (listener: (selectedState: EditorState & EditorMethods, previousSelectedState: EditorState & EditorMethods) => void): () => void;
        <U>(selector: (state: EditorState & EditorMethods) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
            equalityFn?: ((a: U, b: U) => boolean) | undefined;
            fireImmediately?: boolean;
        } | undefined): () => void;
    };
}, "setState"> & {
    setState<A extends string | {
        type: string;
    }>(partial: (EditorState & EditorMethods) | Partial<EditorState & EditorMethods> | ((state: EditorState & EditorMethods) => (EditorState & EditorMethods) | Partial<EditorState & EditorMethods>), replace?: boolean | undefined, action?: A | undefined): void;
}, "persist"> & {
    persist: {
        setOptions: (options: Partial<import("zustand/middleware").PersistOptions<EditorState & EditorMethods, EditorState & EditorMethods>>) => void;
        clearStorage: () => void;
        rehydrate: () => Promise<void> | void;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: EditorState & EditorMethods) => void) => () => void;
        onFinishHydration: (fn: (state: EditorState & EditorMethods) => void) => () => void;
        getOptions: () => Partial<import("zustand/middleware").PersistOptions<EditorState & EditorMethods, EditorState & EditorMethods>>;
    };
}>;
