import { FirestoreServices } from './services/firebase'; import type { ChatState } from './reducer'; declare const useChat: () => { firestoreServices: FirestoreServices; chatState: ChatState; chatDispatch: import("react").Dispatch; CustomImageComponent?: React.ComponentType; userInfo?: import("./interfaces").IUserInfo; memberIds?: string[]; blackListWords?: string[]; encryptionFuncProps?: import("./interfaces").EncryptionFunctions; prefix?: string; storageProvider?: import("./interfaces").StorageProvider; enableEncrypt?: true; encryptionOptions: import("./interfaces").EncryptionOptions; encryptKey?: string; } | { firestoreServices: FirestoreServices; chatState: ChatState; chatDispatch: import("react").Dispatch; CustomImageComponent?: React.ComponentType; userInfo?: import("./interfaces").IUserInfo; memberIds?: string[]; blackListWords?: string[]; encryptionFuncProps?: import("./interfaces").EncryptionFunctions; prefix?: string; storageProvider?: import("./interfaces").StorageProvider; enableEncrypt: false; encryptionOptions?: never; encryptKey?: never; }; declare const useChatContext: () => import("./interfaces").IChatContext; /** * Custom hook to select a specific part of the chat state. * @param selector A function that takes the chat state and returns a specific part of it. * @returns The part of the chat state selected by the selector function. */ declare const useChatSelector: (selector: (chatState: ChatState) => T) => T; /** * Custom hook to manage typing indicator behavior based on user input. * @param enableTyping Boolean flag indicating whether typing indicator should be enabled. * @param changeUserConversationTyping Function to update typing indicator state in parent component. * @param typingTimeoutSeconds Number of time out. */ declare const useTypingIndicator: (enableTyping: boolean, changeUserConversationTyping: (isTyping: boolean, callback?: () => void) => void, typingTimeoutSeconds?: number) => { handleTextChange: (newText: string) => void; }; /** * Custom hook to debounce a value. * Returns the debounced value that only updates after the specified delay. * * @param value The value to debounce * @param delay The debounce delay in milliseconds * @returns The debounced value * * @example * ```tsx * const [searchText, setSearchText] = useState(''); * const debouncedSearchText = useDebounce(searchText, 300); * * useEffect(() => { * // This effect runs only after searchText stops changing for 300ms * performSearch(debouncedSearchText); * }, [debouncedSearchText]); * ``` */ declare const useDebounce: (value: T, delay: number) => T; export { useChatContext, useChatSelector, useTypingIndicator, useChat, useDebounce, }; //# sourceMappingURL=hooks.d.ts.map