/**
 * @file ChatReasoning.tsx
 * @input Uses React, StyleX, theme tokens
 * @output Exports ChatReasoning component
 * @position Chat component — compact collapsible reasoning/thinking display
 *
 * Renders model reasoning/thinking content as a compact single-line
 * collapsed element. Expanding reveals the full reasoning text.
 *
 * Design: extremely compact by default. One line with ellipsis overflow.
 * Expandable on click.
 */
import { type ReactNode } from 'react';
import type { BaseProps } from '@astryxdesign/core';
export interface ChatReasoningProps extends BaseProps<HTMLDivElement> {
    /** Reasoning content. String renders as plain text; ReactNode for Markdown etc. */
    children: ReactNode;
    /** Header label. @default 'Thinking' */
    label?: string;
    /** Duration string shown after label (e.g. "12s"). */
    duration?: string;
    /** Whether reasoning is still streaming. Shows shimmer on label. */
    isStreaming?: boolean;
    /** Controlled expanded state. */
    isExpanded?: boolean;
    /** Default expanded state (uncontrolled). @default false */
    defaultIsExpanded?: boolean;
    /** Callback when expanded state changes. */
    onExpandedChange?: (isExpanded: boolean) => void;
}
/**
 * Compact collapsible display for model reasoning/thinking content.
 *
 * Renders as a single line: icon + label + duration + ellipsized preview.
 * Expands to show full reasoning on click.
 *
 * @example
 * ```
 * <ChatMessage sender="assistant">
 *   <ChatReasoning duration="12s">
 *     Let me work through the constraints on adjacent fields...
 *   </ChatReasoning>
 *   <Markdown>{response}</Markdown>
 * </ChatMessage>
 * ```
 */
export declare function ChatReasoning(props: ChatReasoningProps): import("react").JSX.Element;
export declare namespace ChatReasoning {
    var displayName: string;
}
//# sourceMappingURL=ChatReasoning.d.ts.map