import { JSX, Accessor } from 'solid-js';
/** Imperative open controller, handed to a parent (the kai-reasoning facade) via
 *  `controllerRef` so it can drive/observe open state — mirrors
 *  CollapsibleController/HoverCardController. */
export interface ReasoningController {
    open: Accessor<boolean>;
    setOpen: (v: boolean) => void;
}
export interface ReasoningProps {
    children: JSX.Element;
    class?: string;
    open?: boolean;
    /** Initial open state (uncontrolled seed). */
    defaultOpen?: boolean;
    onOpenChange?: (open: boolean) => void;
    isStreaming?: boolean;
    /** Gate the trigger — programmatic control via the controller still works. */
    disabled?: boolean;
    /** Receive the open controller (open accessor + setOpen) once mounted. */
    controllerRef?: (api: ReasoningController) => void;
}
declare function Reasoning(props: ReasoningProps): JSX.Element;
export interface ReasoningTriggerProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {
    children: JSX.Element;
}
declare function ReasoningTrigger(props: ReasoningTriggerProps): JSX.Element;
export interface ReasoningContentProps extends JSX.HTMLAttributes<HTMLDivElement> {
    children: JSX.Element;
    markdown?: boolean;
    contentClass?: string;
}
declare function ReasoningContent(props: ReasoningContentProps): JSX.Element;
export { Reasoning, ReasoningTrigger, ReasoningContent };
