import { type ComponentFrameInsertColor } from "../../componentFrameColors";
import type { OverlayRect } from "./geometry";
import type { PlaceholderZone } from "./placeholderZones";
export type InsertionVisualMode = "directional" | "between" | "neutral" | "none";
export type InsertionVisualAnchor = PlaceholderZone["anchor"];
export type InsertionVisualPhase = "enter" | "exit";
export declare const INSERTION_ZONE_THICKNESS = 40;
/**
 * The single "where will it land" indicator shown during a drag: a thin colored
 * bar at the exact insertion gap, tagged with the target placeholder + position.
 * One calm signal - it replaced the heavy 40px "drop zone" band so the drag
 * canvas isn't a stack of competing highlights. Purely presentational; positions
 * are overlay/document coordinates.
 */
export declare function InsertionLine({ zone, placeholderRect, visualMode, visualAnchor, visualTargetRect, color, animate, phase, label, }: {
    zone: PlaceholderZone;
    placeholderRect: OverlayRect;
    visualMode?: InsertionVisualMode;
    visualAnchor?: InsertionVisualAnchor;
    visualTargetRect?: OverlayRect | null;
    color: ComponentFrameInsertColor;
    animate: boolean;
    phase?: InsertionVisualPhase;
    label?: string;
}): import("react").JSX.Element | null;
export declare function getDirectionalInsertionZoneRect({ zone, targetRect, anchor, }: {
    zone: PlaceholderZone;
    targetRect: OverlayRect;
    anchor: InsertionVisualAnchor;
}): OverlayRect;
export declare function getDirectionalInsertionHitZoneRect({ zone, targetRect, anchor, }: {
    zone: PlaceholderZone;
    targetRect: OverlayRect;
    anchor: InsertionVisualAnchor;
}): OverlayRect;
export declare function getBetweenInsertionZoneRect({ zone, previousRect, nextRect, }: {
    zone: PlaceholderZone;
    previousRect: OverlayRect;
    nextRect: OverlayRect;
}): OverlayRect;
export declare function getEmptyPlaceholderNeutralZoneRect({ zone, targetRect, }: {
    zone: PlaceholderZone;
    targetRect: OverlayRect;
}): OverlayRect;
