import type { OverrideIdToNodePaths, TSequence } from 'remotion';
import type { OutlinePoint, SelectedOutline } from './selected-outline-geometry';
import type { SelectedOutlineTarget, SequenceWithSelectedOutline } from './selected-outline-types';
import { type TimelineSelection, type TimelineSelectionInteraction } from './Timeline/TimelineSelection';
export declare const pointToString: (point: OutlinePoint) => string;
export declare const midpoint: (from: OutlinePoint, to: OutlinePoint) => OutlinePoint;
export declare const getOutlineCenter: (points: readonly [OutlinePoint, OutlinePoint, OutlinePoint, OutlinePoint]) => OutlinePoint;
export declare const dot: (left: OutlinePoint, right: OutlinePoint) => number;
export declare const vectorLength: (vector: OutlinePoint) => number;
export declare const vectorBetween: (from: OutlinePoint, to: OutlinePoint) => OutlinePoint;
export declare const getAngleDegrees: (from: OutlinePoint, to: OutlinePoint) => number;
export declare const getSelectedOutlineRotationDeltaDegrees: ({ from, to, }: {
    readonly from: number;
    readonly to: number;
}) => number;
export type SelectedOutlineRotationCorner = 'top-left' | 'top-right' | 'bottom-right' | 'bottom-left';
export declare const getRotationCursor: (rotation: number) => string;
export declare const getSelectedOutlineRotationCornerInfo: (points: readonly [OutlinePoint, OutlinePoint, OutlinePoint, OutlinePoint], corner: SelectedOutlineRotationCorner) => {
    center: OutlinePoint;
    cursor: string;
    cursorDegrees: number;
    point: OutlinePoint;
};
export declare const getSelectedOutlineRotationPivot: ({ dimensions, points, transformOriginValue, }: {
    readonly dimensions: {
        readonly width: number;
        readonly height: number;
    } | null;
    readonly points: readonly [OutlinePoint, OutlinePoint, OutlinePoint, OutlinePoint];
    readonly transformOriginValue: string;
}) => OutlinePoint;
type SvgViewport = {
    readonly x: number;
    readonly y: number;
    readonly width: number;
    readonly height: number;
};
type SvgScreenCtm = Pick<DOMMatrixReadOnly, 'a' | 'b' | 'c' | 'd' | 'e' | 'f'>;
export declare const getTransformedSvgViewportPoints: ({ viewport, ctm, containerRect, }: {
    readonly viewport: SvgViewport;
    readonly ctm: SvgScreenCtm;
    readonly containerRect: Pick<DOMRect, "left" | "top">;
}) => readonly [OutlinePoint, OutlinePoint, OutlinePoint, OutlinePoint];
export declare const getSelectedSequenceKeys: (selectedItems: readonly TimelineSelection[]) => Set<string>;
export declare const getSequenceKeysContainingSelection: (selectedItems: readonly TimelineSelection[]) => Set<string>;
export declare const getOutlineSelectionInteraction: ({ shiftKey, metaKey, ctrlKey, }: {
    readonly shiftKey: boolean;
    readonly metaKey: boolean;
    readonly ctrlKey: boolean;
}) => TimelineSelectionInteraction;
export declare const getOutlineDoubleClickAction: ({ button, canOpenInEditor, }: {
    readonly button: number;
    readonly canOpenInEditor: boolean;
}) => "open-in-editor" | null;
type SelectedEffectFields = {
    allFields: boolean;
    fieldKeys: Set<string>;
};
export declare const getSelectedEffectFieldsBySequenceKey: (selectedItems: readonly TimelineSelection[]) => Map<string, Map<number, SelectedEffectFields>>;
type SelectedTransformOriginInfo = {
    readonly sequenceKey: string;
    readonly displayFrame: number | null;
};
export declare const getSelectedTransformOriginInfo: (selectedItems: readonly TimelineSelection[]) => SelectedTransformOriginInfo | null;
export declare const getSequencesWithSelectableOutlines: ({ sequences, overrideIdsToNodePaths, }: {
    readonly sequences: readonly TSequence[];
    readonly overrideIdsToNodePaths: OverrideIdToNodePaths;
}) => SequenceWithSelectedOutline[];
export declare const measureOutlines: (container: SVGSVGElement, targets: readonly SelectedOutlineTarget[]) => SelectedOutline[];
export declare const outlinesAreEqual: (a: readonly SelectedOutline[], b: readonly SelectedOutline[]) => boolean;
export {};
