import { EventEmitter, TemplateRef, AfterViewInit, ElementRef } from '@angular/core';
import { SortedItem, TableHeader, TableRow } from './table.types';
import * as i0 from "@angular/core";
export declare class TableComponent implements AfterViewInit {
    data: TableRow[];
    sortedItem: SortedItem;
    headers: TableHeader[];
    loading?: boolean;
    templates: {
        [key: string]: TemplateRef<any>;
    };
    handlerSortedBy: EventEmitter<any>;
    tableRef: ElementRef;
    hasExpandableRows: boolean;
    constructor();
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(): void;
    /**
     * Verifica se há linhas expandíveis na tabela
     */
    private checkExpandableRows;
    /**
     * Alinha os headers filhos com os headers pai
     */
    private alignChildHeaders;
    private hasSameHeaders;
    /**
     * Obtém o template para uma determinada coluna
     * @param templateName - Nome do template
     * @returns TemplateRef ou undefined
     */
    getTemplate(templateName: string): TemplateRef<any>;
    /**
     * Ordena a tabela por um determinado cabeçalho
     * @param header - Cabeçalho a ser ordenado
     */
    onSortedBy(header: TableHeader): void;
    /**
     * Alterna o estado de expansão de uma linha
     * @param row - Linha a ser expandida/contraída
     */
    toggleRow(row: TableRow): void;
    /**
     * Verifica se uma linha tem filhos
     * @param row - Linha a ser verificada
     * @returns true se a linha tem filhos, false caso contrário
     */
    hasChildren(row: TableRow): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "wco-table", never, { "data": { "alias": "data"; "required": false; }; "sortedItem": { "alias": "sortedItem"; "required": false; }; "headers": { "alias": "headers"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "templates": { "alias": "templates"; "required": false; }; }, { "handlerSortedBy": "handlerSortedBy"; }, never, [".empty"], true, never>;
}
//# sourceMappingURL=table.component.d.ts.map