import { type ClipboardEvent, type ComponentPropsWithRef, type ReactNode, type Ref } from 'react'; import type { ChatComposerDensity, ChatComposerInputHandle, ChatComposerRootProps, ChatComposerStatus, ChatComposerToken, ChatComposerTrigger, UseChatPasteAsTokenReturn } from './ChatComposer.types'; export { createChatComposerStaticSource } from './chatComposerSearch'; export type { ChatComposerDensity, ChatComposerInputHandle, ChatComposerSearchableItem, ChatComposerSearchSource, ChatComposerStatus, ChatComposerToken, ChatComposerTokenBadge, ChatComposerTokenCustom, ChatComposerTokenVariant, ChatComposerTrigger, UseChatPasteAsTokenOptions, UseChatPasteAsTokenReturn, } from './ChatComposer.types'; export type { CreateChatComposerStaticSourceOptions } from './chatComposerSearch'; export { useChatComposerTokens } from './useChatComposerTokens'; export type { ChatComposerTokenPortal, UseChatComposerTokensOptions, UseChatComposerTokensReturn, } from './useChatComposerTokens'; export { useChatPasteAsToken } from './useChatPasteAsToken'; export type ChatComposerProps = ChatComposerRootProps & { onSubmit: (value: string) => void; onStop?: () => void; isStopShown?: boolean; value?: string; defaultValue?: string; onChange?: (value: string) => void; placeholder?: string; isDisabled?: boolean; density?: ChatComposerDensity; drawer?: ReactNode; headerActions?: ReactNode; headerContext?: ReactNode; input?: ReactNode; footerActions?: ReactNode; sendActions?: ReactNode; sendButton?: ReactNode; status?: ChatComposerStatus; statusPosition?: 'top' | 'bottom'; }; export type ChatComposerInputProps = Omit, 'defaultValue' | 'onChange' | 'onInput' | 'onPaste' | 'onSubmit'> & { handleRef?: Ref; value?: string; defaultValue?: string; onChange?: (value: string) => void; placeholder?: string; maxRows?: number; triggers?: ChatComposerTrigger[]; debounceMs?: number; hasHistory?: boolean; label?: string; isDisabled?: boolean; onPaste?: (event: ClipboardEvent, text: string) => boolean | void; pasteAsToken?: UseChatPasteAsTokenReturn | false; onFiles?: (files: File[]) => void; onSubmit?: (value: string) => void; }; export type ChatComposerDrawerProps = ComponentPropsWithRef<'div'> & { count?: number; label?: string; isCollapsed?: boolean; defaultIsCollapsed?: boolean; onCollapsedChange?: (isCollapsed: boolean) => void; }; export type ChatComposerSendButtonProps = Omit, 'children' | 'onSubmit'> & { isStopShown?: boolean; isDisabled?: boolean; onSend?: () => void; onStop?: () => void; sendIcon?: ReactNode; stopIcon?: ReactNode; sendLabel?: string; stopLabel?: string; size?: 'sm' | 'md'; showLabel?: boolean; }; export type ChatComposerOptionItem = { id: string; label: ReactNode; value?: string; description?: ReactNode; icon?: ReactNode; isDisabled?: boolean; }; export type ChatComposerOptionsProps = Omit, 'onSelect'> & { items: ChatComposerOptionItem[]; value?: string; defaultValue?: string; dismissOnSelect?: boolean; onValueChange?: (value: string, item: ChatComposerOptionItem) => void; onSelect?: (item: ChatComposerOptionItem) => void; label?: string; renderItem?: (item: ChatComposerOptionItem) => ReactNode; isDisabled?: boolean; }; export type ChatComposerTokenElementProps = ComponentPropsWithRef<'span'> & { token: ChatComposerToken; }; export declare const ChatComposerInput: ({ className, debounceMs, defaultValue, handleRef, hasHistory, isDisabled: isDisabledProp, label, maxRows, onChange, onFiles, onPaste: onPasteProp, onSubmit, pasteAsToken: pasteAsTokenProp, placeholder: placeholderProp, ref, triggers, value: controlledValue, ...props }: ChatComposerInputProps) => import("react/jsx-runtime").JSX.Element; export declare const ChatComposerDrawer: ({ children, className, count, defaultIsCollapsed, isCollapsed: controlledCollapsed, label, onCollapsedChange, ref, ...props }: ChatComposerDrawerProps) => import("react/jsx-runtime").JSX.Element; export declare const ChatComposerSendButton: ({ className, disabled, isDisabled, isStopShown: isStopShownProp, onClick, onSend, onStop: onStopProp, ref, sendIcon, sendLabel, showLabel, size, stopIcon, stopLabel, type, ...props }: ChatComposerSendButtonProps) => import("react/jsx-runtime").JSX.Element; export declare const ChatComposerOptions: ({ className, defaultValue, dismissOnSelect, isDisabled, items, label, onSelect, onValueChange, ref, renderItem, value, ...props }: ChatComposerOptionsProps) => import("react/jsx-runtime").JSX.Element | null; export declare const ChatComposerTokenElement: ({ className, ref, token, ...props }: ChatComposerTokenElementProps) => import("react/jsx-runtime").JSX.Element; export declare const ChatComposer: (({ children, className, defaultValue, density, drawer, footerActions, headerActions, headerContext, input, isDisabled, isStopShown, onChange, onStop, onSubmit, placeholder, ref, sendActions, sendButton, status, statusPosition, value, ...props }: ChatComposerProps) => import("react/jsx-runtime").JSX.Element) & { Drawer: ({ children, className, count, defaultIsCollapsed, isCollapsed: controlledCollapsed, label, onCollapsedChange, ref, ...props }: ChatComposerDrawerProps) => import("react/jsx-runtime").JSX.Element; Input: ({ className, debounceMs, defaultValue, handleRef, hasHistory, isDisabled: isDisabledProp, label, maxRows, onChange, onFiles, onPaste: onPasteProp, onSubmit, pasteAsToken: pasteAsTokenProp, placeholder: placeholderProp, ref, triggers, value: controlledValue, ...props }: ChatComposerInputProps) => import("react/jsx-runtime").JSX.Element; Options: ({ className, defaultValue, dismissOnSelect, isDisabled, items, label, onSelect, onValueChange, ref, renderItem, value, ...props }: ChatComposerOptionsProps) => import("react/jsx-runtime").JSX.Element | null; SendButton: ({ className, disabled, isDisabled, isStopShown: isStopShownProp, onClick, onSend, onStop: onStopProp, ref, sendIcon, sendLabel, showLabel, size, stopIcon, stopLabel, type, ...props }: ChatComposerSendButtonProps) => import("react/jsx-runtime").JSX.Element; TokenElement: ({ className, ref, token, ...props }: ChatComposerTokenElementProps) => import("react/jsx-runtime").JSX.Element; };