import { EnhancedHistoryAction, Diff, HistoryResult, HistoryStats } from '../types/historyTypes';
/**
 * Hook to use the enhanced history system
 * Inspired by a robust animation editor system
 */
export declare const useEnhancedHistory: (spaceId: string) => {
    isActionInProgress: boolean;
    currentActionId: string | null;
    lastAction: EnhancedHistoryAction | null;
    stats: HistoryStats;
    startAction: (actionId: string) => HistoryResult;
    submitAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
    cancelAction: () => HistoryResult;
    undo: () => HistoryResult;
    redo: () => HistoryResult;
    createSimpleAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
    createSelectionAction: (name: string, selectionData: any, diffs?: Diff[]) => HistoryResult;
    createTransformAction: (name: string, transformData: any, diffs?: Diff[]) => HistoryResult;
    canUndo: () => boolean;
    canRedo: () => boolean;
    getCurrentAction: () => EnhancedHistoryAction | null;
    getHistoryLength: () => number;
    getHistoryStats: () => HistoryStats;
    clearHistory: () => void;
    updateSelectionState: (selectionState: any) => void;
    ACTION_TYPES: {
        readonly CREATE: "CREATE";
        readonly UPDATE: "UPDATE";
        readonly DELETE: "DELETE";
        readonly MOVE: "MOVE";
        readonly COPY: "COPY";
        readonly PASTE: "PASTE";
        readonly SELECT: "SELECT";
        readonly DESELECT: "DESELECT";
        readonly SELECT_ALL: "SELECT_ALL";
        readonly DESELECT_ALL: "DESELECT_ALL";
        readonly GROUP: "GROUP";
        readonly UNGROUP: "UNGROUP";
        readonly TRANSFORM: "TRANSFORM";
        readonly ROTATE: "ROTATE";
        readonly SCALE: "SCALE";
        readonly TRANSLATE: "TRANSLATE";
        readonly TIMELINE_UPDATE: "TIMELINE_UPDATE";
        readonly KEYFRAME_ADD: "KEYFRAME_ADD";
        readonly KEYFRAME_REMOVE: "KEYFRAME_REMOVE";
        readonly KEYFRAME_UPDATE: "KEYFRAME_UPDATE";
        readonly CUSTOM: "CUSTOM";
    };
    EVENTS: {
        readonly ACTION_STARTED: "action-started";
        readonly ACTION_SUBMITTED: "action-submitted";
        readonly ACTION_CANCELLED: "action-cancelled";
        readonly UNDO_PERFORMED: "undo-performed";
        readonly REDO_PERFORMED: "redo-performed";
        readonly HISTORY_CLEARED: "history-cleared";
        readonly STATE_RESTORED: "state-restored";
    };
};
/**
 * Public alias: useHistory (Enhanced is now the only system)
 */
export declare const useHistory: (spaceId: string) => {
    isActionInProgress: boolean;
    currentActionId: string | null;
    lastAction: EnhancedHistoryAction | null;
    stats: HistoryStats;
    startAction: (actionId: string) => HistoryResult;
    submitAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
    cancelAction: () => HistoryResult;
    undo: () => HistoryResult;
    redo: () => HistoryResult;
    createSimpleAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
    createSelectionAction: (name: string, selectionData: any, diffs?: Diff[]) => HistoryResult;
    createTransformAction: (name: string, transformData: any, diffs?: Diff[]) => HistoryResult;
    canUndo: () => boolean;
    canRedo: () => boolean;
    getCurrentAction: () => EnhancedHistoryAction | null;
    getHistoryLength: () => number;
    getHistoryStats: () => HistoryStats;
    clearHistory: () => void;
    updateSelectionState: (selectionState: any) => void;
    ACTION_TYPES: {
        readonly CREATE: "CREATE";
        readonly UPDATE: "UPDATE";
        readonly DELETE: "DELETE";
        readonly MOVE: "MOVE";
        readonly COPY: "COPY";
        readonly PASTE: "PASTE";
        readonly SELECT: "SELECT";
        readonly DESELECT: "DESELECT";
        readonly SELECT_ALL: "SELECT_ALL";
        readonly DESELECT_ALL: "DESELECT_ALL";
        readonly GROUP: "GROUP";
        readonly UNGROUP: "UNGROUP";
        readonly TRANSFORM: "TRANSFORM";
        readonly ROTATE: "ROTATE";
        readonly SCALE: "SCALE";
        readonly TRANSLATE: "TRANSLATE";
        readonly TIMELINE_UPDATE: "TIMELINE_UPDATE";
        readonly KEYFRAME_ADD: "KEYFRAME_ADD";
        readonly KEYFRAME_REMOVE: "KEYFRAME_REMOVE";
        readonly KEYFRAME_UPDATE: "KEYFRAME_UPDATE";
        readonly CUSTOM: "CUSTOM";
    };
    EVENTS: {
        readonly ACTION_STARTED: "action-started";
        readonly ACTION_SUBMITTED: "action-submitted";
        readonly ACTION_CANCELLED: "action-cancelled";
        readonly UNDO_PERFORMED: "undo-performed";
        readonly REDO_PERFORMED: "redo-performed";
        readonly HISTORY_CLEARED: "history-cleared";
        readonly STATE_RESTORED: "state-restored";
    };
};
/**
 * Hook pour utiliser l'historique avec un espace actif automatique
 */
export declare const useActiveSpaceHistory: () => {
    isActionInProgress: boolean;
    currentActionId: string | null;
    lastAction: EnhancedHistoryAction | null;
    stats: HistoryStats;
    startAction: (actionId: string) => HistoryResult;
    submitAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
    cancelAction: () => HistoryResult;
    undo: () => HistoryResult;
    redo: () => HistoryResult;
    createSimpleAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
    createSelectionAction: (name: string, selectionData: any, diffs?: Diff[]) => HistoryResult;
    createTransformAction: (name: string, transformData: any, diffs?: Diff[]) => HistoryResult;
    canUndo: () => boolean;
    canRedo: () => boolean;
    getCurrentAction: () => EnhancedHistoryAction | null;
    getHistoryLength: () => number;
    getHistoryStats: () => HistoryStats;
    clearHistory: () => void;
    updateSelectionState: (selectionState: any) => void;
    ACTION_TYPES: {
        readonly CREATE: "CREATE";
        readonly UPDATE: "UPDATE";
        readonly DELETE: "DELETE";
        readonly MOVE: "MOVE";
        readonly COPY: "COPY";
        readonly PASTE: "PASTE";
        readonly SELECT: "SELECT";
        readonly DESELECT: "DESELECT";
        readonly SELECT_ALL: "SELECT_ALL";
        readonly DESELECT_ALL: "DESELECT_ALL";
        readonly GROUP: "GROUP";
        readonly UNGROUP: "UNGROUP";
        readonly TRANSFORM: "TRANSFORM";
        readonly ROTATE: "ROTATE";
        readonly SCALE: "SCALE";
        readonly TRANSLATE: "TRANSLATE";
        readonly TIMELINE_UPDATE: "TIMELINE_UPDATE";
        readonly KEYFRAME_ADD: "KEYFRAME_ADD";
        readonly KEYFRAME_REMOVE: "KEYFRAME_REMOVE";
        readonly KEYFRAME_UPDATE: "KEYFRAME_UPDATE";
        readonly CUSTOM: "CUSTOM";
    };
    EVENTS: {
        readonly ACTION_STARTED: "action-started";
        readonly ACTION_SUBMITTED: "action-submitted";
        readonly ACTION_CANCELLED: "action-cancelled";
        readonly UNDO_PERFORMED: "undo-performed";
        readonly REDO_PERFORMED: "redo-performed";
        readonly HISTORY_CLEARED: "history-cleared";
        readonly STATE_RESTORED: "state-restored";
    };
};
/**
 * Hook pour créer des actions d'historique typées
 */
export declare const useTypedHistoryActions: (spaceId: string) => {
    create: (data: any) => HistoryResult;
    update: (data: any, diffs?: Diff[]) => HistoryResult;
    delete: (data: any) => HistoryResult;
    move: (data: any, diffs?: Diff[]) => HistoryResult;
    copy: (data: any) => HistoryResult;
    paste: (data: any) => HistoryResult;
    select: (selectionData: any) => HistoryResult;
    deselect: (selectionData: any) => HistoryResult;
    selectAll: (selectionData: any) => HistoryResult;
    deselectAll: (selectionData: any) => HistoryResult;
    group: (groupData: any, diffs?: Diff[]) => HistoryResult;
    ungroup: (groupData: any, diffs?: Diff[]) => HistoryResult;
    transform: (transformData: any, diffs?: Diff[]) => HistoryResult;
    rotate: (rotateData: any, diffs?: Diff[]) => HistoryResult;
    scale: (scaleData: any, diffs?: Diff[]) => HistoryResult;
    translate: (translateData: any, diffs?: Diff[]) => HistoryResult;
    timelineUpdate: (timelineData: any, diffs?: Diff[]) => HistoryResult;
    keyframeAdd: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
    keyframeRemove: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
    keyframeUpdate: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
    custom: (name: string, data: any, diffs?: Diff[]) => HistoryResult;
};
/**
 * Hook pour utiliser des actions typées avec l'espace actif
 */
export declare const useActiveSpaceTypedActions: () => {
    create: (data: any) => HistoryResult;
    update: (data: any, diffs?: Diff[]) => HistoryResult;
    delete: (data: any) => HistoryResult;
    move: (data: any, diffs?: Diff[]) => HistoryResult;
    copy: (data: any) => HistoryResult;
    paste: (data: any) => HistoryResult;
    select: (selectionData: any) => HistoryResult;
    deselect: (selectionData: any) => HistoryResult;
    selectAll: (selectionData: any) => HistoryResult;
    deselectAll: (selectionData: any) => HistoryResult;
    group: (groupData: any, diffs?: Diff[]) => HistoryResult;
    ungroup: (groupData: any, diffs?: Diff[]) => HistoryResult;
    transform: (transformData: any, diffs?: Diff[]) => HistoryResult;
    rotate: (rotateData: any, diffs?: Diff[]) => HistoryResult;
    scale: (scaleData: any, diffs?: Diff[]) => HistoryResult;
    translate: (translateData: any, diffs?: Diff[]) => HistoryResult;
    timelineUpdate: (timelineData: any, diffs?: Diff[]) => HistoryResult;
    keyframeAdd: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
    keyframeRemove: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
    keyframeUpdate: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
    custom: (name: string, data: any, diffs?: Diff[]) => HistoryResult;
};
