import { EventEmitter, OnInit, TemplateRef, WritableSignal } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { IColumn, IColumnFilter, IColumnFilterValue, IGroup, ISorter, ISorterValue, SortOrder } from '../smart-table.type';
import { Colors } from '../../coreui.types';
import * as i0 from "@angular/core";
export declare class SmartTableHeadComponent implements OnInit {
    #private;
    protected readonly getTableHeaderCellStyles: (column: IColumn, columnSorter: boolean | ISorter | undefined) => Partial<CSSStyleDeclaration>;
    protected readonly getTableHeaderCellProps: (column: IColumn | string) => {
        [key: string]: any;
    };
    protected readonly getTableHeaderCellClass: (column: IColumn) => {
        [x: string]: boolean;
    };
    columnFilter?: boolean | IColumnFilter;
    columnFilterState: IColumnFilterValue;
    columnSorter?: boolean | ISorter;
    component?: string;
    set columns(value: (IColumn | IGroup)[] | undefined);
    get columns(): (IColumn | IGroup)[] | undefined;
    set columnGroups(value: IGroup[][]);
    columnGroups$: WritableSignal<IGroup[][]>;
    selectable?: boolean;
    selectAll: boolean;
    set selectedAll(value: boolean | 'indeterminate');
    get selectedAll(): boolean | 'indeterminate';
    showGroups: boolean;
    sorterValue?: ISorterValue;
    set columnFilterTemplates(value: any);
    get columnFilterTemplates(): any;
    set columnLabelTemplates(value: any);
    get columnLabelTemplates(): any;
    set summaryRowTemplate(value: TemplateRef<unknown> | null);
    get summaryRowTemplate(): TemplateRef<unknown> | null;
    readonly indeterminate$: BehaviorSubject<boolean>;
    readonly columnFilterStateChange: EventEmitter<any>;
    readonly sorterStateChange: EventEmitter<any>;
    readonly selectAllChange: EventEmitter<boolean>;
    get hostClasses(): {
        thead: boolean;
        tfoot: boolean;
    };
    ngOnInit(): void;
    tableHeaderCellColor(column: IColumn | string): Colors;
    columnKey(column: IColumn | string): string;
    getColumnSorterState(column: IColumn | string): string | number;
    handleSortClick(column: IColumn | string, i: number, order?: SortOrder): void;
    handleSortKeyDown($event: KeyboardEvent, column: IColumn | string, i: number): void;
    columnFilterEnabled(column: IColumn | string): boolean | ((column: import("../smart-table.type").IItem, value: string) => boolean);
    columnSorterEnabled(column: IColumn | string): boolean | ((a: import("../smart-table.type").IItem, b: import("../smart-table.type").IItem) => number);
    handleColumnFilterValueChange($event: {
        value: string;
        type?: string;
        column: IColumn | string;
    }): void;
    handleSelectAllChecked($event: Event): void;
    getColumnFilter(column: IColumn | string): string;
    getColumnLabel(column: IColumn | string): string;
    get columnFilterEvent(): 'change' | 'input';
    getAriaSort(column: IColumn | string): "ascending" | "descending" | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<SmartTableHeadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SmartTableHeadComponent, "c-smart-table-head", never, { "columnFilter": { "alias": "columnFilter"; "required": false; }; "columnFilterState": { "alias": "columnFilterState"; "required": false; }; "columnSorter": { "alias": "columnSorter"; "required": false; }; "component": { "alias": "component"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "columnGroups": { "alias": "columnGroups"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "selectAll": { "alias": "selectAll"; "required": false; }; "selectedAll": { "alias": "selectedAll"; "required": false; }; "showGroups": { "alias": "showGroups"; "required": false; }; "sorterValue": { "alias": "sorterValue"; "required": false; }; "columnFilterTemplates": { "alias": "columnFilterTemplates"; "required": false; }; "columnLabelTemplates": { "alias": "columnLabelTemplates"; "required": false; }; "summaryRowTemplate": { "alias": "summaryRowTemplate"; "required": false; }; }, { "columnFilterStateChange": "columnFilterStateChange"; "sorterStateChange": "sorterStateChange"; "selectAllChange": "selectAllChange"; }, never, never, true, never>;
    static ngAcceptInputType_selectable: unknown;
    static ngAcceptInputType_selectAll: unknown;
    static ngAcceptInputType_showGroups: unknown;
}
