export interface ResizableRegionConfig {
    /** Default size in pixels, or percentage string (e.g. '20%'). */
    defaultSize?: number | string;
    /** Minimum size in pixels. @default 50 */
    minSizePx?: number;
    /** Maximum size in pixels. @default Infinity */
    maxSizePx?: number;
    /** Whether this region can collapse to 0. @default false */
    collapsible?: boolean;
    /** Size in px at which dragging triggers collapse. @default 40 */
    collapsedSize?: number;
    /** Pixel values to snap to during resize. */
    snaps?: number[];
    /** Cascade priority — lower number shrinks first. */
    shrinkOrder?: number;
}
/**
 * Shared config shape for any component that integrates built-in resize
 * (e.g. SideNav `resizable` prop). Provides a simplified API surface
 * over the full ResizableRegionConfig.
 */
export interface ResizableConfig {
    /** Initial width in pixels. @default 260 */
    defaultWidth?: number;
    /** Minimum width in pixels. @default 180 */
    minWidth?: number;
    /** Maximum width in pixels. @default 480 */
    maxWidth?: number;
    /** localStorage key for persisting width. */
    autoSaveId?: string;
    /** Called when the width changes (on drag end). */
    onWidthChange?: (width: number) => void;
}
export interface UseResizableSingleConfig extends ResizableRegionConfig {
    /** Unique key for localStorage persistence. */
    autoSaveId?: string;
    /** Called when size changes during drag. */
    onSizeChange?: (size: number) => void;
    /** Called when collapse state changes (via drag or programmatic). */
    onCollapseChange?: (isCollapsed: boolean) => void;
}
export interface UseResizableMultiConfig {
    /** Layout direction. @default 'horizontal' */
    direction?: 'horizontal' | 'vertical';
    /** Named region configurations. */
    regions: Record<string, ResizableRegionConfig>;
    /** Unique key for localStorage persistence. */
    autoSaveId?: string;
}
export interface ResizableRegion {
    /** Current size in pixels. */
    size: number;
    /** Whether the region is currently collapsed. */
    isCollapsed: boolean;
    /** Collapse the region (if collapsible). */
    collapse: () => void;
    /** Expand from collapsed state. */
    expand: () => void;
    /** Resize to a specific pixel value. */
    resize: (size: number) => void;
    /** Props to pass to a component's `resizable` prop or ResizeHandle. */
    props: ResizableProps;
}
export interface ResizableProps {
    _size: number;
    _isCollapsed: boolean;
    _onResizeStart: () => void;
    _onResizeMove: (delta: number) => void;
    _onResizeEnd: () => void;
    _minSizePx: number;
    _maxSizePx: number;
    _snaps: number[];
    _collapsedSize: number;
    /** Whether the region supports collapsing. */
    _collapsible: boolean;
    _isResizableProps: true;
}
export declare function useResizable(config: UseResizableSingleConfig): ResizableRegion;
export declare function useResizable(config: UseResizableMultiConfig): Record<string, ResizableRegion>;
//# sourceMappingURL=useResizable.d.ts.map