import { Placeholder } from "../pageModel";
import { type ComponentFrameColor, type ComponentFrameInsertColor } from "../componentFrameColors";
export declare const SMALL_DROPZONE_SCALE = 0.44;
export declare function PlaceholderDropZone({ placeholder, description, index, parentName, spotPosition, displaySpotPosition, spotPositionElement, spotPositionAnchor, size, className, insertMenuTitle, typeIdOnCtrlClick, color, frameColor, pillLabel, onDragHandlePointerDown, interactive, isActiveTarget, }: {
    placeholder: Placeholder;
    description?: string;
    index: number;
    parentName?: string;
    spotPosition: {
        x: number;
        y: number;
    };
    displaySpotPosition?: {
        x: number;
        y: number;
    };
    spotPositionElement?: Element | null;
    size: "large" | "small";
    spotPositionAnchor: "top" | "bottom" | "left" | "right";
    className?: string;
    insertMenuTitle?: string;
    typeIdOnCtrlClick?: string;
    color?: ComponentFrameInsertColor;
    frameColor?: ComponentFrameColor;
    /**
     * When set, the dropzone renders as a labelled "pill" button (a "+" icon
     * followed by this text) instead of the compact circular "+". Used for the
     * component append affordance in {@link FrameMenu}.
     */
    pillLabel?: string;
    /**
     * Pointer-down handler for the pill's drag grip. When provided (pill mode), a
     * 6-dot grip is rendered to the left of the pill; pressing and dragging it
     * starts a whole-component drag - the same gesture the frame-header grip uses.
     */
    onDragHandlePointerDown?: (e: React.PointerEvent<HTMLElement>) => void;
    /**
     * When false (e.g. while a drag is in progress), the dot renders as a
     * pointer-events-none visual affordance only - the DragInsertionOverlay owns
     * the drop, so the dots stay visible but never intercept dragover/drop/hover.
     */
    interactive?: boolean;
    /**
     * True when this dot's gap is the one the drag insertion line is currently
     * targeting. The dot is emphasized (scaled + ringed) and lifted above its
     * siblings so it reads as the live drop target.
     */
    isActiveTarget?: boolean;
}): import("react/jsx-runtime").JSX.Element | null;
