import type { PageNode, BuilderNode } from '@actuate-media/cms-core';
export type DeviceMode = 'desktop' | 'tablet' | 'mobile';
export type PanelTab = 'block' | 'node' | 'page' | 'seo' | 'design';
export interface PageSettings {
    title: string;
    slug: string;
    template?: string;
    metaTitle?: string;
    metaDescription?: string;
    ogImage?: string;
    focusKeyphrase?: string;
    schemaType?: string;
}
export interface BuilderState {
    tree: PageNode;
    selectedNodeId: string | null;
    selectedNode: BuilderNode | null;
    deviceMode: DeviceMode;
    activeTab: PanelTab;
    pageSettings: PageSettings;
    dirty: boolean;
    canUndo: boolean;
    canRedo: boolean;
    showGridOverlay: boolean;
}
export interface BuilderActions {
    selectNode: (id: string | null) => void;
    setDeviceMode: (mode: DeviceMode) => void;
    setActiveTab: (tab: PanelTab) => void;
    setPageSettings: (settings: Partial<PageSettings>) => void;
    setShowGridOverlay: (show: boolean) => void;
    addSection: () => void;
    addRowToSection: (sectionId: string) => void;
    addBlockToColumn: (columnId: string, blockType: string, variant?: string) => void;
    addNodeAtId: (parentId: string, node: BuilderNode, index?: number) => void;
    removeNodeById: (id: string) => void;
    moveNodeById: (id: string, newParentId: string, index?: number) => void;
    updateSettings: (id: string, settings: Record<string, unknown>) => void;
    updateBlock: (id: string, data: Record<string, unknown>) => void;
    duplicateNode: (id: string) => void;
    moveNodeUp: (id: string) => void;
    moveNodeDown: (id: string) => void;
    undo: () => void;
    redo: () => void;
    markClean: () => void;
    replaceTree: (tree: PageNode) => void;
}
export declare function useBuilderState(initialTree?: PageNode, initialPageSettings?: Partial<PageSettings>): BuilderState & BuilderActions;
//# sourceMappingURL=useBuilderState.d.ts.map