import { IEventEmitter } from '@breadstone/mosaik-elements';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IChatSubmitEventDetail } from './Events/IChatSubmitEvent';
import type { IChatInputElementProps } from './IChatInputElementProps';
import type { IChatInputEvents } from './IChatInputEvents';
import { ISlottable } from '../../../Behaviors/Slottable';
import { ChatInputAttachmentListElement } from './ChatInputAttachmentListElement';
import { IChatAttachmentAddEventDetail } from './Events/IChatAttachmentAddEvent';
import { IChatAttachmentRemoveEventDetail } from './Events/IChatAttachmentRemoveEvent';
declare const ChatInputElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Slottable").ISlottableProps & ISlottable) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Chat Input - Represents the input area for sending messages in the chat.
 *
 * @fires chatSubmitted - Called when a new message is submitted.
 * @fires chatAttachmentAdded {IChatAttachmentAddEvent} - Called when an attachment is added.
 * @fires chatAttachmentRemoved {IChatAttachmentRemoveEvent} - Called when an attachment is removed.
 *
 * @public
 */
export declare class ChatInputElement extends ChatInputElement_base implements IChatInputElementProps, IChatInputEvents, ISlottable {
    private _attachmentsElement;
    private readonly _submitted;
    private readonly _transformer;
    private _value;
    private _placeholder;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `value` property.
     *
     * @public
     */
    get value(): {
        message: string;
        files: Array<File>;
    };
    set value(value: {
        message: string;
        files: Array<File>;
    });
    /**
     * Gets or sets the `placeholder` property.
     *
     * @public
     */
    get placeholder(): string;
    set placeholder(value: string);
    /**
     * Called when a new message is submitting.
     * Provides reference to `{@link IChatSubmitEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get submitted(): IEventEmitter<IChatSubmitEventDetail>;
    /**
     * @private
     */
    get attachmentsElement(): ChatInputAttachmentListElement;
    /**
     * @public
     */
    send(message: string, files?: FileList | Array<File>): void;
    /**
     * @public
     */
    clear(): void;
    /**
     * @private
     * @template
     */
    onInput(e: InputEvent): void;
    /**
     * @private
     * @template
     */
    onKeyup(e: KeyboardEvent): void;
    /**
     * @private
     * @template
     */
    onAttachmentAdded(detail: IChatAttachmentAddEventDetail): void;
    /**
     * @private
     * @template
     */
    onAttachmentRemoved(detail: IChatAttachmentRemoveEventDetail): void;
    onApplyTemplate(): void;
    /**
     * @public
     * @override
     */
    onSlotChanges(slotName?: string): void;
    /**
     * Emits the {@link submitted} event.
     *
     * @protected
     */
    protected onSubmitted(args: IChatSubmitEventDetail): void;
}
/**
* @public
*/
export declare namespace ChatInputElement {
    type Props = IChatInputElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-chat-input': ChatInputElement;
    }
}
export {};
//# sourceMappingURL=ChatInputElement.d.ts.map