import { IEventEmitter } from '@breadstone/mosaik-elements';
import { ISlottable } from '../../../Behaviors/Slottable';
import { IAttachmentAddEventDetail, IAttachmentRemoveEventDetail, IChatSubmitEventDetail } from '../../../events';
import { CustomElement } from '../../Abstracts/CustomElement';
import { ChatInputAttachmentListElement } from './ChatInputAttachmentListElement';
import type { IChatInputElementProps } from './IChatInputElementProps';
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.
 *
 * @slot tools - The tools slot.
 *
 * @csspart attachments - The attachments part.
 * @csspart begin - The begin part.
 * @csspart end - The end part.
 * @csspart focusRing - The focusRing part.
 * @csspart textBox - The textBox part.
 * @csspart tools - The tools part.
 *
 * @cssprop {String} --chat-input-background-color - The input background color CSS custom property.
 * @cssprop {String} --chat-input-border-color - The input border color CSS custom property.
 * @cssprop {String} --chat-input-border-radius - The input border radius CSS custom property.
 * @cssprop {String} --chat-input-border-style - The input border style CSS custom property.
 * @cssprop {String} --chat-input-border-width - The input border width CSS custom property.
 * @cssprop {String} --chat-input-font-family - The input font family CSS custom property.
 * @cssprop {String} --chat-input-font-letter-spacing - The input font letter spacing CSS custom property.
 * @cssprop {String} --chat-input-font-line-height - The input font line height CSS custom property.
 * @cssprop {String} --chat-input-font-size - The input font size CSS custom property.
 * @cssprop {String} --chat-input-font-text-decoration - The input font text decoration CSS custom property.
 * @cssprop {String} --chat-input-font-text-transform - The input font text transform CSS custom property.
 * @cssprop {String} --chat-input-font-weight - The input font weight CSS custom property.
 * @cssprop {String} --chat-input-foreground-color - The input foreground color CSS custom property.
 * @cssprop {String} --chat-input-gap - The input gap CSS custom property.
 * @cssprop {String} --chat-input-padding-bottom - The input padding bottom CSS custom property.
 * @cssprop {String} --chat-input-padding-left - The input padding left CSS custom property.
 * @cssprop {String} --chat-input-padding-right - The input padding right CSS custom property.
 * @cssprop {String} --chat-input-padding-top - The input padding top CSS custom property.
 * @cssprop {String} --chat-input-shadow - The input shadow CSS custom property.
 * @cssprop {String} --chat-input-shadow-blur - The input shadow blur CSS custom property.
 * @cssprop {String} --chat-input-shadow-color - The input shadow color CSS custom property.
 * @cssprop {String} --chat-input-shadow-offset-x - The input shadow offset x CSS custom property.
 * @cssprop {String} --chat-input-shadow-offset-y - The input shadow offset y CSS custom property.
 * @cssprop {String} --chat-input-shadow-spread - The input shadow spread CSS custom property.
 * @cssprop {String} --chat-input-transition-duration - The input transition duration CSS custom property.
 * @cssprop {String} --chat-input-transition-mode - The input transition mode CSS custom property.
 * @cssprop {String} --chat-input-transition-property - The input transition property CSS custom property.
 * @cssprop {String} --chat-input-translate - The input translate CSS custom property.
 *
 * @fires chatSubmit {ChatSubmitEvent} - Called when a new message is submitted.
 *
 * @dependency mosaik-button - The Button element.
 * @dependency mosaik-chat-input-attachment-list - The Chat Input Attachment List element.
 * @dependency mosaik-focus-ring - The Focus Ring element.
 * @dependency mosaik-textbox - The Textbox element.
 *
 * @example
 * Basic chat input:
 * ```html
 * <mosaik-chat-input placeholder="Type a message..."></mosaik-chat-input>
 * ```
 *
 * @example
 * Disabled chat input:
 * ```html
 * <mosaik-chat-input placeholder="Unavailable" disabled></mosaik-chat-input>
 * ```
 *
 * @public
 */
export declare class ChatInputElement extends ChatInputElement_base implements IChatInputElementProps, ISlottable {
    private _attachmentsElement;
    private readonly _submitted;
    private readonly _transformer;
    private _value;
    private _placeholder;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     * The `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 `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: IAttachmentAddEventDetail): void;
    /**
     * @private
     * @template
     */
    onAttachmentRemoved(detail: IAttachmentRemoveEventDetail): void;
    onApplyTemplate(): void;
    /**
     * @public
     * @override
     */
    onSlotChanges(slotName?: string): void;
    /**
     * Emits the `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