import { IEventEmitter } from '@breadstone/mosaik-elements';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IChatSubmitEventDetail } from './Events/IChatSubmitEventDetail';
import type { IChatInputElementProps } from './IChatInputElementProps';
import type { IChatInputEvents } from './IChatInputEvents';
import type { IChatReaction } from './Models/IChatReaction';
declare const ChatInputElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * The `{@link ChatInputElement}` element.
 *
 * @fires submited - Called when a new message is submitted.
 *
 * @public
 */
export declare class ChatInputElement extends ChatInputElement_base implements IChatInputElementProps, IChatInputEvents {
    private readonly _submited;
    private readonly _transformer;
    private _reactions;
    private _value;
    private _placeholder;
    private _allowAttachments;
    /**
     * @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 `reactions` property.
     *
     * @public
     */
    get reactions(): Array<IChatReaction>;
    set reactions(value: Array<IChatReaction>);
    /**
     * Gets or sets the `placeholder` property.
     *
     * @public
     */
    get placeholder(): string;
    set placeholder(value: string);
    /**
     * Gets or sets the `allowAttachments` property.
     *
     * @public
     * @attr
     */
    get allowAttachments(): boolean;
    set allowAttachments(value: boolean);
    /**
     * Called when a new message is submitting.
     * Provides reference to `{@link IChatSubmitEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get submited(): IEventEmitter<IChatSubmitEventDetail>;
    /**
     * @public
     */
    send(message: string, files?: FileList | Array<File>): void;
    attach(files: FileList | Array<File>): void;
    /**
     * @public
     */
    clear(): void;
    /**
     * @private
     * @template
     */
    onReaction(reaction: string): void;
    /**
     * @private
     * @template
     */
    onInput(e: InputEvent): void;
    /**
     * @private
     * @template
     */
    onKeyup(e: KeyboardEvent): void;
    /**
     * @protected
     */
    protected onApplyTemplate(): void;
    /**
     * Emits the {@link submited} event.
     *
     * @protected
     */
    protected onSubmited(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