import * as React from 'react';
import { type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';
import { type InputRendererProps } from '../../InputRenderer';
import type { ComponentPickerProps } from './ComponentPicker';
interface DynamicComponentProps extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel'>, Pick<ComponentPickerProps, 'dynamicComponentsByCategory'> {
    componentUid?: string;
    disabled?: boolean;
    index: number;
    name: string;
    onAddComponent: (componentUid: string, index: number) => void;
    onRemoveComponentClick: (index: number) => void;
    onMoveComponent: (dragIndex: number, hoverIndex: number) => void;
    totalLength: number;
    children?: (props: InputRendererProps) => React.ReactNode;
    /**
     * When true, the component's accordion will be forced open and scrolled into view.
     * Used by the parent DynamicZone to auto-expand newly added components.
     */
    forceOpen?: boolean;
    /**
     * Called after the forceOpen has been handled (accordion opened + scrolled),
     * so the parent can clear the forced state.
     */
    onForceOpenHandled?: () => void;
}
declare const MemoizedDynamicComponent: React.MemoExoticComponent<({ componentUid, disabled, index, name, onRemoveComponentClick, onMoveComponent, onGrabItem, onDropItem, onCancel, dynamicComponentsByCategory, onAddComponent, totalLength, children, forceOpen, onForceOpenHandled, }: DynamicComponentProps) => import("react/jsx-runtime").JSX.Element>;
export { MemoizedDynamicComponent as DynamicComponent };
export type { DynamicComponentProps };
