import React from 'react';
import { ButtonProps, DropEvent, TextAreaProps, TooltipProps } from '@patternfly/react-core';
import { ChatbotDisplayMode } from '../Chatbot';
export interface MessageBarWithAttachMenuProps {
    /** Flag to enable whether attach menu is open */
    isAttachMenuOpen: boolean;
    /** Callback to close attach menu */
    setIsAttachMenuOpen: (isOpen: boolean) => void;
    /** Items in menu */
    attachMenuItems: React.ReactNode;
    /** A callback for when the attachment menu toggle is clicked */
    onAttachMenuToggleClick: () => void;
    /** A callback for when the input value in the menu changes. */
    onAttachMenuInputChange: (value: string) => void;
    /** Function callback called when user selects item in menu. */
    onAttachMenuSelect?: (event?: React.MouseEvent<Element, MouseEvent>, value?: string | number) => void;
    /** Placeholder for search input */
    attachMenuInputPlaceholder?: string;
    /** Keys that trigger onOpenChange, defaults to tab and escape. It is highly recommended to include Escape in the array, while Tab may be omitted if the menu contains non-menu items that are focusable. */
    onAttachMenuOnOpenChangeKeys?: string[];
    /** Callback to change the open state of the menu. Triggered by clicking outside of the menu. */
    onAttachMenuOpenChange?: (isOpen: boolean) => void;
}
export interface MessageBarProps extends TextAreaProps {
    /** Callback to get the value of input message by user */
    onSendMessage: (message: string | number) => void;
    /** Class Name for the MessageBar component */
    className?: string;
    /** Flag to always to show the send button. By default send button is shown when there is a message in the input field */
    alwayShowSendButton?: boolean;
    /** Flag to disable/enable the Attach button  */
    hasAttachButton?: boolean;
    /** Flag to enable the Microphone button  */
    hasMicrophoneButton?: boolean;
    /** Flag to enable the Stop button, used for streaming content */
    hasStopButton?: boolean;
    /** Callback function for when stop button is clicked */
    handleStopButton?: (event: React.MouseEvent<HTMLButtonElement>) => void;
    /** Callback function for when attach button is used to upload a file */
    handleAttach?: (data: File[], event: DropEvent) => void;
    /** Props to enable a menu that opens when the Attach button is clicked, instead of the attachment window */
    attachMenuProps?: MessageBarWithAttachMenuProps;
    /** Flag to provide manual control over whether send button is disabled */
    isSendButtonDisabled?: boolean;
    /** Prop to allow passage of additional props to buttons */
    buttonProps?: {
        attach?: {
            tooltipContent?: string;
            props?: ButtonProps;
            inputTestId?: string;
            tooltipProps?: Omit<TooltipProps, 'content'>;
        };
        stop?: {
            tooltipContent?: string;
            props?: ButtonProps;
            tooltipProps?: Omit<TooltipProps, 'content'>;
        };
        send?: {
            tooltipContent?: string;
            props?: ButtonProps;
            tooltipProps?: Omit<TooltipProps, 'content'>;
        };
        microphone?: {
            tooltipContent?: {
                active?: string;
                inactive?: string;
            };
            language?: string;
            props?: ButtonProps;
            tooltipProps?: Omit<TooltipProps, 'content'>;
        };
    };
    /** A callback for when the text area value changes. */
    onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>, value: string | number) => void;
    /** Display mode of chatbot, if you want to message bar to resize when the display mode changes */
    displayMode?: ChatbotDisplayMode;
}
export declare const MessageBar: React.FunctionComponent<MessageBarProps>;
export default MessageBar;
