import { type KeyboardEvent, type ReactNode, type RefObject } from 'react'; import type { ChatComposerSearchableItem, ChatComposerToken, ChatComposerTrigger } from './ChatComposer.types'; export type ChatComposerTriggerMenuState = { isActive: boolean; activeTrigger: ChatComposerTrigger | null; query: string; items: ChatComposerSearchableItem[]; highlightedIndex: number; isLoading: boolean; }; export type UseChatComposerTriggerMenuOptions = { triggers?: ChatComposerTrigger[]; editableRef: RefObject; onInsertToken: (token: ChatComposerToken) => void; onInsertText: (text: string) => void; onEmitChange: () => void; debounceMs?: number; }; export type UseChatComposerTriggerMenuReturn = { state: ChatComposerTriggerMenuState; handleInput: () => void; handleKeyDown: (event: KeyboardEvent) => boolean; renderMenu: () => ReactNode; reset: () => void; ariaProps: { role: 'textbox'; } | { role: 'combobox'; 'aria-expanded': boolean; 'aria-controls'?: string; 'aria-activedescendant'?: string; 'aria-haspopup': 'listbox'; }; }; export declare const useChatComposerTriggerMenu: ({ debounceMs, editableRef, onEmitChange, onInsertText, onInsertToken, triggers, }: UseChatComposerTriggerMenuOptions) => UseChatComposerTriggerMenuReturn;