import type { Action, Clip, Track, TrackRestoreAnchor } from '../models/types';
export interface TimelineHistoryExecutionTrack {
    addClip(clip: Clip): void;
}
export interface TimelineHistoryExecutionTarget {
    removeClip(clipId: string): void;
    addClipToTrack(trackId: string, clip: Clip): boolean;
    updateClip(clipId: string, updates: Partial<Clip>): void;
    moveClipToTrack(clipId: string, targetTrackId: string): boolean;
    ensureTrackFromHistorySnapshot(trackSnapshot: Track, restoreAnchor?: TrackRestoreAnchor | null): string | null;
    removeClipGaps(): void;
    getClips(): Clip[];
    findTrackByClipId(clipId: string): TimelineHistoryExecutionTrack | null;
    getDefaultTrack(): TimelineHistoryExecutionTrack | null;
    loadClipThumbnails?(clip: Clip): Promise<boolean> | void;
}
export declare class TimelineHistoryExecutor {
    private readonly target;
    constructor(target: TimelineHistoryExecutionTarget);
    executeUndo(action: Action): void;
    executeRedo(action: Action): void;
    private executeUndoInternal;
    private executeRedoInternal;
    private restoreMovedClip;
    private normalizeRemoveClipActionData;
    private resolveTrackIdForHistorySnapshot;
    private resolveRestoreAnchor;
}
