import { ComponentSchema, DesignerState, PageSchema } from '../../types/src/index';
/**
 * 历史记录模型 - 用于存储页面状态的快照
 */
export interface RecordModel {
    /** 页面架构的JSON字符串表示 */
    pageSchema: string;
    /** 当前选中组件的ID，用于恢复选中状态 */
    selectedId?: string;
    /** 记录创建时间戳 */
    timestamp: number;
    /** 操作类型描述，如"添加组件"、"删除组件"等 */
    type: string;
}
/**
 * 撤销重做功能 - 提供完整的操作历史管理
 * @description 通过保存页面状态的快照实现撤销和重做功能
 * @param pageSchema - 当前页面架构对象（响应式）
 * @param state - 设计器状态对象
 * @param setSelectedNode - 设置当前选中节点的回调函数
 * @returns 撤销重做相关的操作方法和状态
 */
export declare function useRevoke(pageSchema: PageSchema, state: DesignerState, setSelectedNode: (schema?: ComponentSchema) => void): {
    currentRecord: import('vue').Ref<{
        pageSchema: string;
        selectedId?: string | undefined;
        timestamp: number;
        type: string;
    } | null, RecordModel | {
        pageSchema: string;
        selectedId?: string | undefined;
        timestamp: number;
        type: string;
    } | null>;
    exportHistory: () => {
        currentRecord: null | RecordModel;
        recordList: RecordModel[];
        undoList: RecordModel[];
    };
    getRedoCount: () => number;
    getUndoCount: () => number;
    importHistory: (historyData: {
        currentRecord: null | RecordModel;
        recordList: RecordModel[];
        undoList: RecordModel[];
    }) => void;
    previewHistory: (record: RecordModel) => (() => void);
    push: (type?: string, isImportant?: boolean) => void;
    recordList: import('vue').Ref<{
        pageSchema: string;
        selectedId?: string | undefined;
        timestamp: number;
        type: string;
    }[], RecordModel[] | {
        pageSchema: string;
        selectedId?: string | undefined;
        timestamp: number;
        type: string;
    }[]>;
    redo: () => boolean;
    reset: () => void;
    undo: () => boolean;
    undoList: import('vue').Ref<{
        pageSchema: string;
        selectedId?: string | undefined;
        timestamp: number;
        type: string;
    }[], RecordModel[] | {
        pageSchema: string;
        selectedId?: string | undefined;
        timestamp: number;
        type: string;
    }[]>;
};
export type Revoke = ReturnType<typeof useRevoke>;
