import { type ComponentPropsWithoutRef, type ReactNode } from "react";
export type ResizableDirection = "horizontal" | "vertical";
export type ResizablePanelSide = "right" | "bottom";
type DivPropsBase = Omit<ComponentPropsWithoutRef<"div">, "children" | "onChange" | "defaultValue">;
export interface ResizableProps extends DivPropsBase {
    /** `"horizontal"` → left/right panels with a vertical handle. */
    direction?: ResizableDirection;
    /** Two slots — first panel + second panel. The handle goes between. */
    children: [ReactNode, ReactNode];
    /** Initial split point. Number ≥ 1 is interpreted as pixels; values
     *  between 0 and 1 (exclusive) are interpreted as a fraction of the
     *  total. Default `0.5`. */
    defaultSplit?: number;
    /** Minimum size of the FIRST panel in pixels. */
    minFirst?: number;
    /** Minimum size of the SECOND panel in pixels. */
    minSecond?: number;
    /** Controlled split in pixels — when provided, the component becomes
     *  controlled and `onSplitChange` fires for every change. */
    split?: number;
    onSplitChange?: (size: number) => void;
    /** Persist the split (as a fraction) to localStorage under this key
     *  so it survives reloads AND viewport resizes. */
    storageKey?: string;
    /** Accessible label for the drag handle (separator). */
    ariaLabel?: string;
}
export interface ResizablePanelProps extends DivPropsBase {
    /** Initial size in pixels. Default 240. */
    defaultSize?: number;
    /** Minimum size in pixels. Default 120. */
    minSize?: number;
    /** Maximum size in pixels. */
    maxSize?: number;
    /** Controlled size (when set, the component is controlled). */
    size?: number;
    onResize?: (size: number) => void;
    /** Which edge the user drags. `"right"` resizes width (vertical
     *  handle), `"bottom"` resizes height (horizontal handle). */
    side?: ResizablePanelSide;
    children: ReactNode;
}
export declare const Resizable: import("react").ForwardRefExoticComponent<ResizableProps & import("react").RefAttributes<HTMLDivElement>>;
export declare const ResizablePanel: import("react").ForwardRefExoticComponent<ResizablePanelProps & import("react").RefAttributes<HTMLDivElement>>;
export {};
//# sourceMappingURL=Resizable.d.ts.map