/**
* DevExtreme (ui/grid_core/ui.grid_core.header_panel.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 { ToolbarItem, Toolbar as GridToolbar } from '../data_grid';
import Toolbar, { Properties as ToolbarProperties } from '../toolbar';
import { dxElementWrapper } from '../../core/renderer';
import { ColumnsView } from './ui.grid_core.columns_view';

/**
 * @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 State {
  _toolbar: Toolbar;
  _toolbarOptions: ToolbarProperties;
}

/**
 * @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 HeaderPanel extends ColumnsView, State {
  _getToolbarItems: (this: this) => ToolbarItem[];

  _getButtonContainer: (this: this) => dxElementWrapper;

  _getToolbarButtonClass: (this: this, specificClass: string) => string;

  _getToolbarOptions: (this: this) => ToolbarProperties;

  _normalizeToolbarItems: (this: this, defaultItems: ToolbarItem[], userItems: GridToolbar['items']) => ToolbarItem[];

  _columnOptionChanged: any;

  setToolbarItemDisabled: (this: this, name: string, optionValue: boolean) => any;

  updateToolbarDimensions: (this: this) => void;

  getHeaderPanel: (this: this) => dxElementWrapper;

  getHeight: (this: this) => number;

  isVisible: (this: this) => boolean;

  allowDragging: any;

  _appendColumnChooserItem: (this: this, items: ToolbarItem[]) => ToolbarItem[];

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