/**
* DevExtreme (ui/widget/ui.widget.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 DOMComponent, {
    DOMComponentOptions
} from '../../core/dom_component';

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

/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export interface WidgetOptions<T = Widget> extends DOMComponentOptions<T> {
    /**
     */
    accessKey?: string;
    /**
     */
    activeStateEnabled?: boolean;
    /**
     */
    disabled?: boolean;
    /**
     */
    focusStateEnabled?: boolean;
    /**
     */
    hint?: string;
    /**
     */
    hoverStateEnabled?: boolean;
    /**
     */
    onContentReady?: ((e: { component?: T, element?: dxElement, model?: any }) => any);
    /**
     */
    tabIndex?: number;
    /**
     */
    visible?: boolean;
}
/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export default class Widget extends DOMComponent {
    constructor(element: Element, options?: WidgetOptions)
    constructor(element: JQuery, options?: WidgetOptions)
    /**
     */
    focus(): void;
    /**
     */
    registerKeyHandler(key: string, handler: Function): void;
    /**
     */
    repaint(): void;
}

/**
 * Specifies markup for a UI component item.
 */
export var dxItem: any;

/**
 */
export type format = 'billions' | 'currency' | 'day' | 'decimal' | 'exponential' | 'fixedPoint' | 'largeNumber' | 'longDate' | 'longTime' | 'millions' | 'millisecond' | 'month' | 'monthAndDay' | 'monthAndYear' | 'percent' | 'quarter' | 'quarterAndYear' | 'shortDate' | 'shortTime' | 'thousands' | 'trillions' | 'year' | 'dayOfWeek' | 'hour' | 'longDateLongTime' | 'minute' | 'second' | 'shortDateShortTime' | string | ((value: number | Date) => string) | {
  /**
   * Warning! This type is used for internal purposes. Do not import it directly.
   */
  currency?: string,
  /**
   * Warning! This type is used for internal purposes. Do not import it directly.
   */
  formatter?: ((value: number | Date) => string),
  /**
   * Warning! This type is used for internal purposes. Do not import it directly.
   */
  parser?: ((value: string) => number | Date),
  /**
   * Warning! This type is used for internal purposes. Do not import it directly.
   */
  precision?: number,
  /**
   * Warning! This type is used for internal purposes. Do not import it directly.
   */
  type?: 'billions' | 'currency' | 'day' | 'decimal' | 'exponential' | 'fixedPoint' | 'largeNumber' | 'longDate' | 'longTime' | 'millions' | 'millisecond' | 'month' | 'monthAndDay' | 'monthAndYear' | 'percent' | 'quarter' | 'quarterAndYear' | 'shortDate' | 'shortTime' | 'thousands' | 'trillions' | 'year' | 'dayOfWeek' | 'hour' | 'longDateLongTime' | 'minute' | 'second' | 'shortDateShortTime'
};
