import { type ReactNode } from "react";
/** Props for {@link ResizableSplit}. */
export interface ResizableSplitProps {
    /** Content rendered in the flexible (left) region. */
    readonly primary: ReactNode;
    /** Content rendered in the resizable (right) panel. */
    readonly secondary: ReactNode;
    /**
     * Default width of the secondary panel in pixels.
     * Overridden by a persisted value when `storageKey` is set.
     * @default 384
     */
    readonly defaultSize?: number;
    /** Minimum width of the secondary panel in pixels. @default 280 */
    readonly minSize?: number;
    /** Maximum width of the secondary panel in pixels. @default 800 */
    readonly maxSize?: number;
    /**
     * `localStorage` key for persisting the panel width across sessions.
     * When omitted, the panel width resets to `defaultSize` on remount.
     */
    readonly storageKey?: string;
    /**
     * Called whenever the secondary panel width changes (during drag
     * and on initial mount from persisted state). Consumers use this
     * to thread the width into layout-dependent calculations like
     * `WorkflowExecutionGraph.panelOffsetPx`.
     */
    readonly onResize?: (widthPx: number) => void;
    /** Additional CSS class names for the root flex container. */
    readonly className?: string;
}
/**
 * Horizontal split layout with a drag-resizable right panel.
 *
 * The left region (`primary`) fills remaining space via `flex: 1`.
 * The right region (`secondary`) has a pixel-based width controlled
 * by a draggable divider.
 *
 * Design:
 * - Pointer-based drag with `setPointerCapture` for reliable tracking
 * - `requestAnimationFrame` coalescing during drag (DD-009 pattern)
 * - Keyboard accessible: Left/Right arrows nudge by {@link KEYBOARD_STEP_PX}
 * - Optional `localStorage` persistence via `storageKey`
 * - Styled with `--stgm-*` tokens; no hardcoded colors
 *
 * @example
 * ```tsx
 * <ResizableSplit
 *   primary={<WorkflowGraph />}
 *   secondary={<InspectorPanel />}
 *   defaultSize={384}
 *   minSize={280}
 *   maxSize={800}
 *   storageKey="wf-exec-inspector-width"
 *   onResize={setPanelWidth}
 * />
 * ```
 */
export declare function ResizableSplit({ primary, secondary, defaultSize, minSize, maxSize, storageKey, onResize, className, }: ResizableSplitProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=ResizableSplit.d.ts.map