import { ElementRef, OnInit, Renderer2 } from '@angular/core';
import { ResizableBase } from '../resizable/resizable-base';
import { CacheService } from '../../core/cache.service';
/**
 * Add the ability to resize columns to a standard HTML table.
 * Specify a column as resizable by adding the .is-resizable class to a <th>.
 *
 * Usage:
  ```html
  <table [ecResizableTable]>
    <colgroup><col><col><col></colgroup>
    <thead>
      <tr>
        <th class="is-resizable">Resizable</th>
        <th class="is-resizable">Resizable</th>
        <th>Static</th>
      </tr>
    </thead>
    ...
  </table>

  ```
  * Note: this directive is meant to be used internally with the TableComponent
  * and is not exposed in the public-api of the library
 */
export declare class ResizableTableDirective extends ResizableBase implements OnInit {
    private el;
    isResizable: boolean | undefined;
    containerEl: ElementRef;
    sortableTable: boolean;
    /** The host <table> element. Will throw if host element is not a <table> */
    private tableEl;
    /**
     * Stored reference to the <col> element children. Will throw if none are found. Will
     * warn if the number of <col> elements do not match the number of <th> elements
     */
    private cols;
    /**
     * The widths of each table column. These are updated as columns are resized and
     * are used to calculate the new table width.
     */
    private colWidths;
    /**
     * The current table width
     */
    private currentTableWidth;
    /**
     * The width of the table when the component was initialized. The table cannot
     * be shrunk below this width. If a column resize would cause the current table
     * width to be below this value, the last column is widened instead.
     */
    private minTableWidth;
    /**
     * The width the column can not be resized below.
     */
    private minColWidth;
    private lastColIndex;
    constructor(el: ElementRef, renderer: Renderer2, cacheService: CacheService, document: Document);
    /**
     * Initialize
     * * Check that the host element is a table and that <col> elements are present
     * * Save the initial width of table as the minimum table width
     * * Store a reference to all <col> elements
     * * Add a handle to each resizable column and set up mousedown listeners to start dragging
     */
    ngOnInit(): void;
    /**
     * Update the column with the calculated width while resizing.
     * If the column is narrowed so that the table would be narrower than the min-width,
     * expand the last column. If the table is then widened, return the last column
     * to its initial width.
     * @param width
     */
    protected setWidth(width: number): void;
    /**
     * Capture the initial width of the table and the table headers.
     * @param headers
     */
    private setInitialWidths;
}
