import { Renderer2, ElementRef, EventEmitter, AfterViewInit, OnDestroy, OnChanges, SimpleChanges, QueryList, AfterContentInit } from '@angular/core';
import { TableMasterRowComponent } from './table-master-row.component';
export declare type TableSortDirection = 'desc' | 'asc';
export interface TableSort {
    field: string;
    direction: TableSortDirection;
}
export declare class TableComponent implements AfterViewInit, OnDestroy, OnChanges, AfterContentInit {
    private renderer;
    el: ElementRef;
    id: string;
    /**
     * Enables table scrolling with a sticky header and footer. Use
     * <thead> and <tfoot> elements for styles to be applied correctly.
     */
    scrollable: boolean;
    /**
     * Enables resizable table columns. Apply the 'is-resizable' class
     * to the <th> of a table column than can be resized.
     */
    resizable: boolean;
    /**
     * Turns on condensed table styling. By default a condensed table
     * has no row borders. To show borders, apply the 'has-borders' class
     * to the <ec-table> element
     */
    condensed: boolean;
    /**
     * Enables sorting by clicking on table columns. To make a column sortable
     * apply the `data-sortable` attribute to the columns `<th>` element with
     * the value of the field used to sort the column. When a column is clicked
     * the fields and current sort direction is emitted from the `sortChange`
     * output
     *
     * @example
     * ```html
     * <ec-table [sortable]="true" [sort]="currentSort" (sortChange)="onSort($event)">
     *  <thead>
     *    <th data-sortable="name">Name</th>
     *    <th data-sortable="qty">Qty.</th>
     *    <th data-sortable="price">Price</th>
     *  </thead>
     *  ...
     * </ec-table>
     * ```
     */
    sortable: boolean;
    /**
     * The current sort field and direction ('desc' or 'asc')
     */
    sort?: TableSort;
    /**
     * Emits the new sort value whenever a sortable column is clicked
     */
    sortChange: EventEmitter<TableSort>;
    /**
     * True if a TableMasterRowComponent exists in the table content
     */
    hasMasterDetailRows: boolean;
    masterRows: QueryList<TableMasterRowComponent>;
    /**
     * Unlisten function returned by `renderer.listen()` that are called
     * OnDestroy to clean up all listeners
     */
    private unlisteners;
    /** The current sort value */
    private currentSort?;
    /** A map of sortable `<th>` elements */
    private sortableCols;
    private destroyed;
    constructor(renderer: Renderer2, el: ElementRef);
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    /**
     * Get all elements inside the host element that match a selector
     * @param selector - Any valid selector for [querySelectorAll](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll)
     */
    private queryElements;
    /**
     * Store a `<th>` for each sortable column and attach a click
     * event listener.
     */
    private initSortable;
    /**
     * Find the sorted column and apply the desc or asc class in order
     * to show the correct sort icon. If another field was sorted, reset it.
     * Emit the current field and direction of the sorted column
     * @param field
     */
    private onSort;
}
