import type { MoveClipToTrackCommandResult, RemoveClipCommandResult, TrackPlacementCommandResult } from '../commands/timelineCommands';
import type { Clip, TrackInsertionPlacement, TrackType } from '../models/types';
import type { TimelineTrackCollection } from '../tracks/timelineTrackCollection';
interface CreateTrackHandler {
    (type: TrackType, name?: string, insertionPlacement?: TrackInsertionPlacement, referenceTrackId?: string): string;
}
interface ApplyClipPlacementOptions {
    clip: Clip;
    placement: TrackPlacementCommandResult;
    trackCollection: TimelineTrackCollection;
    createTrack: CreateTrackHandler;
}
interface ApplyPreparedClipMoveOptions {
    command: Extract<MoveClipToTrackCommandResult, {
        status: 'ready';
    }>;
    trackCollection: TimelineTrackCollection;
}
interface ApplyClipMoveToNewTrackOptions {
    clip: Clip;
    currentTrackId: string;
    trackType: TrackType;
    trackName?: string;
    trackCollection: TimelineTrackCollection;
    createTrack: CreateTrackHandler;
}
interface ClipMutationSideEffectHandlers {
    checkTrackDurationChange?: () => void;
    updateCanPlayState?: () => void;
    updateTrackInfoPanel?: () => void;
    handleClipChange?: () => void;
    cleanupEmptyTracks?: () => void;
}
interface ClipMoveSideEffectHandlers {
    notifySelectionChange: () => void;
    updateTrackInfoPanel: () => void;
    syncPreviewSession: () => void;
    cleanupEmptyTracks?: () => void;
    batchDraw?: () => void;
}
export declare function applyClipPlacement(options: ApplyClipPlacementOptions): boolean;
export declare function applyClipRemoval(trackCollection: TimelineTrackCollection, command: RemoveClipCommandResult, clipId: string): boolean;
export declare function applyPreparedClipMove(options: ApplyPreparedClipMoveOptions): boolean;
export declare function applyClipMoveToNewTrack(options: ApplyClipMoveToNewTrackOptions): boolean;
export declare function applyClipMutationSideEffects(handlers: ClipMutationSideEffectHandlers): void;
export declare function applyClipMoveSideEffects(handlers: ClipMoveSideEffectHandlers): void;
export {};
