/**
 * DO NOT EDIT
 *
 * This file was automatically generated by
 *   https://github.com/Polymer/tools/tree/master/packages/gen-typescript-declarations
 *
 * To modify these typings, edit the source file(s):
 *   src/vaadin-grid-column-reordering-mixin.js
 */


// tslint:disable:variable-name Describing an API that's defined elsewhere.
// tslint:disable:no-any describes the API as best we are able today

import {GestureEventListeners} from '@polymer/polymer/lib/mixins/gesture-event-listeners.js';

import {addListener} from '@polymer/polymer/lib/utils/gestures.js';

import {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';

export {ColumnReorderingMixin};

declare function ColumnReorderingMixin<T extends new (...args: any[]) => {}>(base: T): T & ColumnReorderingMixinConstructor;

interface ColumnReorderingMixinConstructor {
  new(...args: any[]): ColumnReorderingMixin;
}

export {ColumnReorderingMixinConstructor};

interface ColumnReorderingMixin {

  /**
   * Set to true to allow column reordering.
   * @attr {boolean} column-reordering-allowed
   */
  columnReorderingAllowed: boolean;
  ready(): void;

  /**
   * Returns the columns (or column groups) on the specified header level in visual order.
   * By default, the bottom level is used.
   */
  _getColumnsInOrder(headerLevel: any): GridColumnElement[];
  _cellFromPoint(x: number, y: number): HTMLElement|null|undefined;
  _updateGhostPosition(eventClientX: number, eventClientY: number): void;
  _getInnerText(e: Element): string;
  _updateGhost(cell: HTMLElement): HTMLElement;
  _setSiblingsReorderStatus(column: GridColumnElement, status: string): void;
  _autoScroller(): void;
  _isSwapAllowed(column1: GridColumnElement|null|undefined, column2: GridColumnElement|null|undefined): boolean|undefined;
  _isSwappableByPosition(targetColumn: GridColumnElement, clientX: number): boolean;
  _swapColumnOrders(column1: GridColumnElement, column2: GridColumnElement): void;
  _getTargetColumn(targetCell: HTMLElement|null|undefined, draggedColumn: GridColumnElement|null): GridColumnElement|null|undefined;
}

import {GridColumnElement} from './vaadin-grid-column.js';
