import { type ComponentPropsWithoutRef, type CSSProperties, type ElementType, type ReactNode } from "react";
import { type DndContextProps } from "@dnd-kit/core";
import { type SortingStrategy } from "@dnd-kit/sortable";
import { type SortableLayout } from "./sortableUtils";
import type { UniqueIdentifier } from "@dnd-kit/core";
type SortableItemRenderState = {
    isDragging: boolean;
    isOver: boolean;
    isSorting: boolean;
    disabled: boolean;
};
type SortableHandleContextValue = {
    attributes: Record<string, unknown>;
    listeners: Record<string, ((event: unknown) => void) | undefined> | undefined;
    setActivatorNodeRef: (element: HTMLElement | null) => void;
    disabled: boolean;
    isDragging: boolean;
};
type SortableRootProps = Omit<DndContextProps, "children" | "collisionDetection" | "sensors"> & {
    children: ReactNode;
    collisionDetection?: DndContextProps["collisionDetection"];
    sensors?: DndContextProps["sensors"];
};
type SortableContainerProps = {
    children: ReactNode;
    containerId: UniqueIdentifier;
    items: readonly UniqueIdentifier[];
    layout?: SortableLayout;
    strategy?: SortingStrategy;
};
type SortableItemBaseProps = {
    as?: ElementType;
    id: UniqueIdentifier;
    children?: ReactNode | ((state: SortableItemRenderState) => ReactNode);
    className?: string;
    style?: CSSProperties;
    disabled?: boolean;
    dragActivator?: "handle" | "item";
};
type SortableItemProps<E extends ElementType = "div"> = SortableItemBaseProps & Omit<ComponentPropsWithoutRef<E>, keyof SortableItemBaseProps | "children" | "style" | "id">;
type SortableHandleBaseProps = {
    as?: ElementType;
    children?: ReactNode | ((state: Pick<SortableHandleContextValue, "disabled" | "isDragging">) => ReactNode);
    disabled?: boolean;
};
type SortableHandleProps<E extends ElementType = "div"> = SortableHandleBaseProps & Omit<ComponentPropsWithoutRef<E>, keyof SortableHandleBaseProps | "children">;
export declare function SortableRoot(props: SortableRootProps): import("react").JSX.Element;
export declare function SortableContainer(props: SortableContainerProps): import("react").JSX.Element;
export declare function SortableItem<E extends ElementType = "div">(props: SortableItemProps<E>): import("react").JSX.Element;
export declare function SortableHandle<E extends ElementType = "div">(props: SortableHandleProps<E>): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
export {};
//# sourceMappingURL=Sortable.d.ts.map