import * as React from 'react';
import { type AIInputProps } from '@/components/organisms/ai/AIInput';
import { type AIMessageProps } from '@/components/organisms/ai/AIMessage';
export interface ChatMessage extends Omit<AIMessageProps, 'className'> {
    id: string;
}
export interface AIContainerProps {
    /** Children for compound component mode */
    children?: React.ReactNode;
    /** Array of chat messages to display (legacy mode or context for compound mode) */
    messages?: ChatMessage[];
    /** Props for the chat input (legacy mode) */
    inputProps?: Omit<AIInputProps, 'className'>;
    /** Whether to show the minimize button */
    showMinimize?: boolean;
    /** Callback when minimize is clicked */
    onMinimize?: () => void;
    /** Custom content to render in the message area (legacy mode) */
    emptyContent?: React.ReactNode;
    /** Whether to show scroll-to-bottom button (legacy mode) */
    showScrollButton?: boolean;
    /** Threshold for showing scroll button (pixels from bottom) */
    scrollThreshold?: number;
    /** Whether to auto-scroll on new messages */
    autoScrollOnNewMessage?: boolean;
    /** Whether to show the top fade gradient on the message area */
    showTopFade?: boolean;
    /** Additional class name */
    className?: string;
    /** Class name for the message area (legacy mode) */
    messageAreaClassName?: string;
}
interface AIContainerContextValue {
    containerRef: React.RefObject<HTMLDivElement | null>;
    anchorRef: React.RefObject<HTMLDivElement | null>;
    isAtBottom: boolean;
    scrollToBottom: (behavior?: ScrollBehavior) => void;
    messages: ChatMessage[];
    hasMessages: boolean;
    inputHasText: boolean;
    inputIsFocused: boolean;
    setInputHasText: (value: boolean) => void;
    setInputIsFocused: (value: boolean) => void;
}
export interface AIContainerHeaderProps {
    children: React.ReactNode;
    className?: string;
}
export interface AIContainerMessagesProps {
    /** Children for compound component mode (preferred over messages array if provided) */
    children?: React.ReactNode;
    renderMessage?: (message: ChatMessage, index: number) => React.ReactNode;
    messages?: ChatMessage[];
    emptyContent?: React.ReactNode;
    showScrollButton?: boolean;
    /** Whether to show the top fade gradient */
    showTopFade?: boolean;
    className?: string;
}
export interface AIContainerFooterProps {
    children: React.ReactNode;
    className?: string;
}
export interface AIContainerInputProps {
    before?: React.ReactNode;
    after?: React.ReactNode;
    children?: React.ReactNode;
    inputProps?: Omit<AIInputProps, 'className'>;
    className?: string;
}
declare const AIContainerContext: React.Context<AIContainerContextValue | null>;
declare function AIContainerHeader({ children, className }: AIContainerHeaderProps): import("react/jsx-runtime").JSX.Element;
declare namespace AIContainerHeader {
    var displayName: string;
}
declare function AIContainerMessages({ children, renderMessage, messages: messagesProp, emptyContent, showScrollButton, showTopFade, className, }: AIContainerMessagesProps): import("react/jsx-runtime").JSX.Element;
declare namespace AIContainerMessages {
    var displayName: string;
}
declare function AIContainerFooter({ children, className }: AIContainerFooterProps): import("react/jsx-runtime").JSX.Element;
declare namespace AIContainerFooter {
    var displayName: string;
}
declare function AIContainerInput({ before, after, children, inputProps, className, }: AIContainerInputProps): import("react/jsx-runtime").JSX.Element;
declare namespace AIContainerInput {
    var displayName: string;
}
declare function AIContainer({ children, messages, inputProps, showMinimize, onMinimize, emptyContent, showScrollButton, scrollThreshold, autoScrollOnNewMessage, showTopFade, className, messageAreaClassName, }: AIContainerProps): import("react/jsx-runtime").JSX.Element;
declare namespace AIContainer {
    var displayName: string;
}
declare const AIContainerCompound: typeof AIContainer & {
    Header: typeof AIContainerHeader;
    Messages: typeof AIContainerMessages;
    Footer: typeof AIContainerFooter;
    Input: typeof AIContainerInput;
};
export { AIContainerCompound as AIContainer, AIContainerContext };
