/**
* DevExtreme (ui/text_box/ui.text_editor.base.d.ts)
* Version: 21.1.0 (build 21016-0316)
* Build date: Sat Jan 16 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import '../../jquery_augmentation';

import {
    dxElement
} from '../../core/element';

import {
    event
} from '../../events/index';

import dxButton, {
    dxButtonOptions
} from '../button';

import Editor, {
    EditorOptions
} from '../editor/editor';

/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export interface dxTextEditorOptions<T = dxTextEditor> extends EditorOptions<T> {
    /**
     */
    buttons?: Array<string | 'clear' | dxTextEditorButton>;
    /**
     */
    focusStateEnabled?: boolean;
    /**
     */
    hoverStateEnabled?: boolean;
    /**
     */
    inputAttr?: any;
    /**
     */
    mask?: string;
    /**
     */
    maskChar?: string;
    /**
     */
    maskInvalidMessage?: string;
    /**
     */
    maskRules?: any;
    /**
     */
    name?: string;
    /**
     */
    onChange?: ((e: { component?: T, element?: dxElement, model?: any, event?: event }) => any);
    /**
     */
    onCopy?: ((e: { component?: T, element?: dxElement, model?: any, event?: event }) => any);
    /**
     */
    onCut?: ((e: { component?: T, element?: dxElement, model?: any, event?: event }) => any);
    /**
     */
    onEnterKey?: ((e: { component?: T, element?: dxElement, model?: any, event?: event }) => any);
    /**
     */
    onFocusIn?: ((e: { component?: T, element?: dxElement, model?: any, event?: event }) => any);
    /**
     */
    onFocusOut?: ((e: { component?: T, element?: dxElement, model?: any, event?: event }) => any);
    /**
     */
    onInput?: ((e: { component?: T, element?: dxElement, model?: any, event?: event }) => any);
    /**
     */
    onKeyDown?: ((e: { component?: T, element?: dxElement, model?: any, event?: event }) => any);
    /**
     * @deprecated
     */
    onKeyPress?: ((e: { component?: T, element?: dxElement, model?: any, event?: event }) => any);
    /**
     */
    onKeyUp?: ((e: { component?: T, element?: dxElement, model?: any, event?: event }) => any);
    /**
     */
    onPaste?: ((e: { component?: T, element?: dxElement, model?: any, event?: event }) => any);
    /**
     */
    placeholder?: string;
    /**
     */
    showClearButton?: boolean;
    /**
     */
    showMaskMode?: 'always' | 'onFocus';
    /**
     */
    spellcheck?: boolean;
    /**
     */
    stylingMode?: 'outlined' | 'underlined' | 'filled';
    /**
     */
    text?: string;
    /**
     */
    useMaskedValue?: boolean;
    /**
     */
    value?: any;
    /**
     */
    valueChangeEvent?: string;
}
/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export default class dxTextEditor extends Editor {
    constructor(element: Element, options?: dxTextEditorOptions)
    constructor(element: JQuery, options?: dxTextEditorOptions)
    /**
     */
    blur(): void;
    /**
     */
    focus(): void;
    /**
     */
    getButton(name: string): dxButton | undefined;
}

/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export interface dxTextEditorButton {
    /**
     */
    location?: 'after' | 'before';
    /**
     */
    name?: string;
    /**
     */
    options?: dxButtonOptions;
}
