import { Action, Clip, ClipStateUpdate, CompoundAction, HistoryState, MoveClipBetweenTracksAction, MoveClipAction, MultiClipUpdateAction, RemoveClipAction, RemoveGapsAction, RestoreClipAudioAction, ResizeClipAction, SeparateClipAudioAction, SetTimeAction, SplitClipAction, Track, TrackRestoreAnchor, UpdateClipAction, AddClipAction } from '../models/types';
export declare class HistoryManager {
    private state;
    private maxHistorySize;
    private onActionUndo;
    private onActionRedo;
    private onHistoryChange?;
    constructor(onActionUndo: (action: Action) => void, onActionRedo: (action: Action) => void, onHistoryChange?: () => void, maxHistorySize?: number);
    /**
     * 添加操作到历史记录
     */
    addAction(action: Action): void;
    /**
     * 撤销操作
     */
    undo(): boolean;
    /**
     * 重做操作
     */
    redo(): boolean;
    /**
     * 清空历史记录
     */
    clear(): void;
    /**
     * 检查是否可以撤销
     */
    canUndo(): boolean;
    /**
     * 检查是否可以重做
     */
    canRedo(): boolean;
    /**
     * 获取历史记录状态
     */
    getState(): HistoryState;
    /**
     * 创建添加片段操作
     */
    createAddClipAction(clip: Clip): AddClipAction;
    /**
     * 创建移除片段操作
     */
    createRemoveClipAction(clip: Clip): RemoveClipAction;
    createRemoveClipActionWithTrackSnapshot(clip: Clip, sourceTrackId: string | null, sourceTrackSnapshot: Track | null, sourceTrackRestoreAnchor?: TrackRestoreAnchor | null): RemoveClipAction;
    /**
     * 创建更新片段操作
     */
    createUpdateClipAction(clipId: string, updates: Partial<Clip>, previousState: Partial<Clip>): UpdateClipAction;
    /**
     * 创建分割片段操作
     */
    createSplitClipAction(originalClip: Clip, clip1: Clip, clip2: Clip): SplitClipAction;
    /**
     * 创建移动片段操作
     */
    createMoveClipAction(clipId: string, newStartTime: number, previousStartTime: number): MoveClipAction;
    /**
     * 创建调整片段大小操作
     */
    createResizeClipAction(clipId: string, newDuration: number, newStartTime: number, previousDuration: number, previousStartTime: number): ResizeClipAction;
    /**
     * 创建设置时间操作
     */
    createSetTimeAction(newTime: number, previousTime: number): SetTimeAction;
    /**
     * 创建移除间隙操作
     */
    createRemoveGapsAction(clipsBefore: Clip[]): RemoveGapsAction;
    /**
     * 创建多个片段同时更新操作
     */
    createMultiClipUpdateAction(clipUpdates: ClipStateUpdate[]): MultiClipUpdateAction;
    /**
     * 创建跨轨道移动片段操作
     */
    createMoveClipBetweenTracksAction(clipId: string, sourceTrackId: string, targetTrackId: string, clipBefore: Clip, clipAfter: Clip, sourceTrackSnapshot: Track | null, targetTrackSnapshot: Track | null): MoveClipBetweenTracksAction;
    createSeparateClipAudioAction(videoClipBefore: Clip, videoClipAfter: Clip, audioClip: Clip | null, audioTrackId: string | null): SeparateClipAudioAction;
    createRestoreClipAudioAction(videoClipBefore: Clip, videoClipAfter: Clip, audioClip: Clip | null, audioTrackId: string | null): RestoreClipAudioAction;
    createCompoundAction(actions: Action[], label?: string): CompoundAction;
}
