import { type ChangeEvent, type KeyboardEvent as ReactKeyboardEvent, type MutableRefObject } from 'react';
import type { ChatMessage } from '../types/ChatMessage';
import type { ChatInputUploadedFile } from './ChatInputUploadedFile';
import type { ChatProps, ChatSoundSystem } from './ChatProps';
/**
 * Props for `useChatInputAreaComposer`.
 *
 * @private function of `<ChatInputArea/>`
 */
type UseChatInputAreaComposerProps = {
    readonly onMessage?: ChatProps['onMessage'];
    readonly onChange?: ChatProps['onChange'];
    readonly defaultMessage?: string;
    readonly enterBehavior?: ChatProps['enterBehavior'];
    readonly resolveEnterBehavior?: ChatProps['resolveEnterBehavior'];
    readonly isFocusedOnLoad?: boolean;
    readonly isMobile: boolean;
    readonly uploadedFiles: ReadonlyArray<ChatInputUploadedFile>;
    readonly uploadedFilesRef: MutableRefObject<Array<ChatInputUploadedFile>>;
    readonly clearUploadedFiles: () => void;
    readonly replyingToMessage?: ChatMessage | null;
    readonly onCancelReply?: ChatProps['onCancelReply'];
    readonly soundSystem?: ChatSoundSystem;
};
/**
 * Manages textarea state, send/newline behavior, and deferred Enter resolution for `<ChatInputArea/>`.
 *
 * @private function of `<ChatInputArea/>`
 */
export declare function useChatInputAreaComposer(props: UseChatInputAreaComposerProps): {
    textareaRef: import("react").RefObject<HTMLTextAreaElement | null>;
    messageContent: string;
    messageContentRef: import("react").RefObject<string>;
    applyMessageContent: (nextContent: string) => void;
    handleTextInputChange: (event: ChangeEvent<HTMLTextAreaElement, Element>) => void;
    handleComposerKeyDown: (event: ReactKeyboardEvent<HTMLTextAreaElement>) => void;
    handleSend: () => Promise<void>;
};
export {};
