import { type ComponentPropsWithoutRef, type ReactNode } from "react";
export type ConfigPanelSide = "right" | "left";
export interface ConfigPanelProps extends Omit<ComponentPropsWithoutRef<"div">, "onAnimationStart" | "onDrag" | "onDragStart" | "onDragEnd"> {
    open?: boolean;
    onClose?: () => void;
    title?: string;
    icon?: ReactNode;
    /** Body slot — schema-driven fields, free-form forms, etc. */
    children?: ReactNode;
    /**
     * Custom body renderer. When supplied, replaces the schema-driven body
     * but NOT the header / footer / wrapper chrome — the standard close
     * button, title, and save/cancel actions are still rendered around it.
     *
     * Precedence: `customRender` > `children`.
     */
    customRender?: ReactNode;
    /**
     * Custom footer slot — replaces the default Save / Cancel buttons.
     * Useful for multi-step wizards / custom action sets. Header + wrapper
     * chrome stay intact.
     */
    customFooter?: ReactNode;
    onSave?: () => void;
    onCancel?: () => void;
    /** Override the Save button label. */
    saveLabel?: ReactNode;
    /** Override the Cancel button label. */
    cancelLabel?: ReactNode;
    /** Override the close button's aria-label (default "Close panel"). */
    closeLabel?: string;
    /** Slide-in direction. Default "right". */
    side?: ConfigPanelSide;
    /** Close the panel when the user presses Escape. Default true. */
    closeOnEsc?: boolean;
}
export declare const ConfigPanel: import("react").ForwardRefExoticComponent<ConfigPanelProps & import("react").RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=ConfigPanel.d.ts.map