import { Dispatch, MutableRefObject } from 'react';
import { CONSTANT_DISPATCH_TYPE } from '../../../constants.js';
import { UIMessageInputProps } from '../UIMessageInput.js';
import { Profile } from '../../../types/models.js';
import { MessageInputContextValue } from '../../../context/MessageInputContext.js';

interface IbaseStateProps {
    state: MessageInputState;
    dispatch: Dispatch<MessageInputReducerAction>;
}
interface MessageInputState {
    text?: string;
    mentioned_users?: Profile[];
    setText?: (text: string) => void;
}
interface ICursorPos {
    start?: number;
    end?: number;
}
type SetTextAction = {
    getNewText: (currentStateText: string) => string;
    type: CONSTANT_DISPATCH_TYPE.SET_TEXT;
};
type MessageInputHookProps = {
    insertText: (textToInsert: string) => void;
    handleChange?: React.ChangeEventHandler<HTMLTextAreaElement>;
    handleSubmit: (event: React.BaseSyntheticEvent) => void;
    onPaste: (event: React.ClipboardEvent | any) => void;
    onSelectEmoji: (emoji: any) => void;
    onSelectUser: (item: Profile) => void;
    textareaRef?: MutableRefObject<HTMLTextAreaElement | null | undefined>;
};
type AddMentionedUserAction = {
    type: CONSTANT_DISPATCH_TYPE.ADD_MENTIONED_USER;
    user: Profile;
};
type ClearAction = {
    type: 'clear';
};
type MessageInputReducerAction = SetTextAction | ClearAction | AddMentionedUserAction;
declare const useMessageInputState: (props: UIMessageInputProps) => MessageInputState & MessageInputHookProps & MessageInputContextValue;

export { ICursorPos, IbaseStateProps, MessageInputHookProps, MessageInputReducerAction, MessageInputState, useMessageInputState };
//# sourceMappingURL=useMessageInputState.d.ts.map
