/**
* DevExtreme (ui/grid_core/ui.grid_core.column_chooser.d.ts)
* Version: 22.2.4
* Build date: Thu Jan 19 2023
*
* Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import { ColumnsView } from './ui.grid_core.columns_view';
import { ViewController } from './ui.grid_core.modules';

/**
 * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution.
 */
interface ColumnChooserViewState {
  _popupContainer: any;
  _columnChooserList: any;
  _isPopupContainerShown: boolean;
}

/**
 * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution.
 */
export interface ColumnChooserView extends ColumnChooserViewState, ColumnsView {
  _isWinDevice: (this: this) => any;

  _updateList: (this: this, change) => any;

  _initializePopupContainer: (this: this) => any;

  _renderTreeView: (this: this, $container, items) => any;

  _prepareDragModeConfig: (this: this) => any;

  _prepareSelectModeConfig: (this: this) => any;

  optionChanged: (this: this, args) => any;

  getColumnElements: (this: this) => any;

  getColumns: (this: this) => any;

  allowDragging: (this: this, column, sourceLocation) => any;

  getBoundingRect: (this: this) => any;

  showColumnChooser: (this: this) => any;

  hideColumnChooser: (this: this) => any;

  isColumnChooserVisible: (this: this) => any;
}

/**
 * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution.
 */
interface ColumnChooserController extends ViewController {
  renderShowColumnChooserButton: (this: this, ...args: any[]) => any;

  getPosition: (this: this, ...args: any[]) => any;
}
