/**
* DevExtreme (viz/range_selector.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 {
    dxElement
} from '../core/element';

import {
    PaletteType,
    PaletteExtensionModeType
} from './palette';

import DataSource, {
    DataSourceOptions
} from '../data/data_source';

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

import {
    format
} from '../ui/widget/ui.widget';

import {
    dxChartCommonSeriesSettings
} from './chart';

import {
    ChartSeries,
    ScaleBreak,
    VizRange,
    TimeIntervalType
} from './common';

import BaseWidget, {
    BaseWidgetOptions,
    BaseWidgetTooltip,
    Font
} from './core/base_widget';

/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export interface dxRangeSelectorOptions extends BaseWidgetOptions<dxRangeSelector> {
    /**
     */
    background?: {
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      color?: string,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      image?: {
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        location?: 'center' | 'centerBottom' | 'centerTop' | 'full' | 'leftBottom' | 'leftCenter' | 'leftTop' | 'rightBottom' | 'rightCenter' | 'rightTop',
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        url?: string
      },
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      visible?: boolean
    };
    /**
     */
    behavior?: {
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      allowSlidersSwap?: boolean,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      animationEnabled?: boolean,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      callValueChanged?: 'onMoving' | 'onMovingComplete',
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      manualRangeSelectionEnabled?: boolean,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      moveSelectedRangeByClick?: boolean,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      snapToTicks?: boolean
    };
    /**
     */
    chart?: {
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      barGroupPadding?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      barGroupWidth?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      bottomIndent?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      commonSeriesSettings?: dxChartCommonSeriesSettings,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      dataPrepareSettings?: {
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        checkTypeForAllData?: boolean,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        convertToAxisDataType?: boolean,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        sortingMethod?: boolean | ((a: { arg?: Date | number | string, val?: Date | number | string }, b: { arg?: Date | number | string, val?: Date | number | string }) => number)
      },
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      maxBubbleSize?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      minBubbleSize?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      negativesAsZeroes?: boolean,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      palette?: Array<string> | PaletteType,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      paletteExtensionMode?: PaletteExtensionModeType,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      series?: ChartSeries | Array<ChartSeries>,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      seriesTemplate?: {
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        customizeSeries?: ((seriesName: any) => ChartSeries),
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        nameField?: string
      },
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      topIndent?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      valueAxis?: {
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        inverted?: boolean,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        logarithmBase?: number,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        max?: number,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        min?: number,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        type?: 'continuous' | 'logarithmic',
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        valueType?: 'datetime' | 'numeric' | 'string'
      }
    };
    /**
     */
    containerBackgroundColor?: string;
    /**
     */
    dataSource?: Array<any> | DataSource | DataSourceOptions | string;
    /**
     */
    dataSourceField?: string;
    /**
     */
    indent?: {
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      left?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      right?: number
    };
    /**
     */
    onValueChanged?: ((e: { component?: dxRangeSelector, element?: dxElement, model?: any, value?: Array<number | string | Date>, previousValue?: Array<number | string | Date>, event?: event }) => any);
    /**
     */
    scale?: {
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      aggregateByCategory?: boolean,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      aggregationGroupWidth?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      aggregationInterval?: number | any | TimeIntervalType,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      allowDecimals?: boolean,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      breakStyle?: {
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        color?: string,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        line?: 'straight' | 'waved',
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        width?: number
      },
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      breaks?: Array<ScaleBreak>,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      categories?: Array<number | string | Date>,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      endOnTick?: boolean,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      endValue?: number | Date | string,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      holidays?: Array<Date | string> | Array<number>,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      label?: {
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        customizeText?: ((scaleValue: { value?: Date | number | string, valueText?: string }) => string),
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        font?: Font,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        format?: format,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        overlappingBehavior?: 'hide' | 'none',
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        topIndent?: number,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        visible?: boolean
      },
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      linearThreshold?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      logarithmBase?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      marker?: {
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        label?: {
          /**
           * Warning! This type is used for internal purposes. Do not import it directly.
           */
          customizeText?: ((markerValue: { value?: Date | number, valueText?: string }) => string),
          /**
           * Warning! This type is used for internal purposes. Do not import it directly.
           */
          format?: format
        },
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        separatorHeight?: number,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        textLeftIndent?: number,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        textTopIndent?: number,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        topIndent?: number,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        visible?: boolean
      },
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      maxRange?: number | any | TimeIntervalType,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      minRange?: number | any | TimeIntervalType,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      minorTick?: {
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        color?: string,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        opacity?: number,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        visible?: boolean,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        width?: number
      },
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      minorTickCount?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      minorTickInterval?: number | any | TimeIntervalType,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      placeholderHeight?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      showCustomBoundaryTicks?: boolean,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      singleWorkdays?: Array<Date | string> | Array<number>,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      startValue?: number | Date | string,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      tick?: {
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        color?: string,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        opacity?: number,
        /**
         * Warning! This type is used for internal purposes. Do not import it directly.
         */
        width?: number
      },
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      tickInterval?: number | any | TimeIntervalType,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      type?: 'continuous' | 'discrete' | 'logarithmic' | 'semidiscrete',
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      valueType?: 'datetime' | 'numeric' | 'string',
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      workWeek?: Array<number>,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      workdaysOnly?: boolean
    };
    /**
     */
    selectedRangeColor?: string;
    /**
     */
    selectedRangeUpdateMode?: 'auto' | 'keep' | 'reset' | 'shift';
    /**
     */
    shutter?: {
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      color?: string,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      opacity?: number
    };
    /**
     */
    sliderHandle?: {
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      color?: string,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      opacity?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      width?: number
    };
    /**
     */
    sliderMarker?: {
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      color?: string,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      customizeText?: ((scaleValue: { value?: Date | number | string, valueText?: string }) => string),
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      font?: Font,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      format?: format,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      invalidRangeColor?: string,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      paddingLeftRight?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      paddingTopBottom?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      placeholderHeight?: number,
      /**
       * Warning! This type is used for internal purposes. Do not import it directly.
       */
      visible?: boolean
    };
    /**
     * Warning! This type is used for internal purposes. Do not import it directly.
     */
    tooltip?: BaseWidgetTooltip;
    /**
     */
    value?: Array<number | string | Date> | VizRange;
}
/**
 */
export default class dxRangeSelector extends BaseWidget {
    constructor(element: Element, options?: dxRangeSelectorOptions)
    constructor(element: JQuery, options?: dxRangeSelectorOptions)
    getDataSource(): DataSource;
    /**
     */
    getValue(): Array<number | string | Date>;
    render(): void;
    /**
     */
    render(skipChartAnimation: boolean): void;
    /**
     */
    setValue(value: Array<number | string | Date> | VizRange): void;
}

declare global {
interface JQuery {
    dxRangeSelector(): JQuery;
    dxRangeSelector(options: "instance"): dxRangeSelector;
    dxRangeSelector(options: string): any;
    dxRangeSelector(options: string, ...params: any[]): any;
    dxRangeSelector(options: dxRangeSelectorOptions): JQuery;
}
}
/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export type Options = dxRangeSelectorOptions;

/** @deprecated use Options instead */
/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export type IOptions = dxRangeSelectorOptions;
