import { Fields } from "../form-generator-v2/types.js";
import { PageContent } from "../models/index.js";
import { ItemConfig } from "./types/index.js";
import { RectMapEntry } from "./types/rect.js";
/** Undo/redo slice for editor-v2 (not synced to preview iframe payload). */
export interface EditorHistorySnapshot {
    content: PageContent;
    selectedBlock: number[] | null;
}
export interface EditorState {
    height?: number;
    deviceWidth?: string;
    zoom: number;
    manipulateOverlayMode: 'insert' | 'reorder' | false;
    selectedBlock: number[] | null;
    initialized: boolean;
    isPreviewMode: boolean;
    content: PageContent;
    blocks: Array<ItemConfig>;
    subBlocks: Array<ItemConfig>;
    global: Fields;
    preInsertBlockType: string | null;
    preReorderBlockPath: number[] | null;
    rectMap: RectMapEntry[];
    historyPast: EditorHistorySnapshot[];
    historyFuture: EditorHistorySnapshot[];
}
export declare const initialStore: EditorState;
export declare const createPCEditorStore: (overrideInitialState?: Partial<EditorState> | undefined) => import("zustand").UseBoundStore<Omit<Omit<Omit<import("zustand").StoreApi<EditorState>, "subscribe"> & {
    subscribe: {
        (listener: (selectedState: EditorState, previousSelectedState: EditorState) => void): () => void;
        <U>(selector: (state: EditorState) => 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 | Partial<EditorState> | ((state: EditorState) => EditorState | Partial<EditorState>), replace?: boolean | undefined, action?: A | undefined): void;
}, "persist"> & {
    persist: {
        setOptions: (options: Partial<import("zustand/middleware").PersistOptions<EditorState, EditorState>>) => void;
        clearStorage: () => void;
        rehydrate: () => Promise<void> | void;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: EditorState) => void) => () => void;
        onFinishHydration: (fn: (state: EditorState) => void) => () => void;
        getOptions: () => Partial<import("zustand/middleware").PersistOptions<EditorState, EditorState>>;
    };
}>;
