import type { Clip, PlayState } from '../models/types';
export interface ClipMutationEffectHandlers {
    notifySelectionChange: () => void;
    emitSelectionChangeEvent?: () => void;
    emitSelectedClipChangeIfNeeded: () => void;
    handleClipChange: () => void;
    checkTrackDurationChange?: () => void;
}
export interface ClipUpdateMutationEffectHandlers extends ClipMutationEffectHandlers {
    reloadClipThumbnailsIfNeeded?: () => void;
}
export interface ClipSelectPlan {
    shouldJumpToTime: boolean;
    jumpTime: number | null;
    shouldSelectClip: boolean;
}
export declare function applyClipMutationEffects(handlers: ClipMutationEffectHandlers): void;
export declare function applyClipUpdateEffects(handlers: ClipUpdateMutationEffectHandlers): void;
export declare function shouldReloadClipThumbnails(clip: Clip, originalClip?: Clip, hasThumbnailProvider?: boolean): boolean;
export declare function calculatePlaybackEndTime(clips: Pick<Clip, 'endTime'>[]): number;
export declare function calculateCanPlayState(clips: Pick<Clip, 'endTime'>[], currentTime: number): boolean;
interface SyncCanPlayStateOptions {
    currentCanPlay: boolean;
    nextCanPlay: boolean;
    playState: PlayState;
    clipEndTime: number;
    setCanPlay: (value: boolean) => void;
    pauseTimeline: () => void;
    setCurrentTime: (time: number) => void;
    emitCanPlayChange: (canPlay: boolean) => void;
}
export declare function syncCanPlayState(options: SyncCanPlayStateOptions): boolean;
export declare function createClipSelectPlan(clip: Pick<Clip, 'id' | 'startTime'>): ClipSelectPlan;
export {};
