import { SelectionModel } from '@angular/cdk/collections';
import { OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { MatTableDataSource } from '@angular/material/table';
import { DisplayDensity } from '@metad/ocap-angular/core';
import * as i0 from "@angular/core";
export type SelectionTableColumn = {
    value: string;
    label: string;
    cellTemplate?: TemplateRef<any>;
    type?: 'boolean' | 'string' | 'number' | 'date';
    sticky?: boolean;
};
/**
 */
export declare class NgmSelectionTableComponent implements OnInit, OnChanges, ControlValueAccessor {
    get: {
        <TObject extends object, TKey extends keyof TObject>(object: TObject, path: TKey | [TKey]): TObject[TKey];
        <TObject_1 extends object, TKey_1 extends keyof TObject_1>(object: TObject_1, path: TKey_1 | [TKey_1]): TObject_1[TKey_1];
        <TObject_2 extends object, TKey_2 extends keyof TObject_2, TDefault>(object: TObject_2, path: TKey_2 | [TKey_2], defaultValue: TDefault): TDefault | Exclude<TObject_2[TKey_2], undefined>;
        <TObject_3 extends object, TKey1 extends keyof TObject_3, TKey2 extends keyof TObject_3[TKey1]>(object: TObject_3, path: [TKey1, TKey2]): TObject_3[TKey1][TKey2];
        <TObject_4 extends object, TKey1_1 extends keyof TObject_4, TKey2_1 extends keyof NonNullable<TObject_4[TKey1_1]>>(object: TObject_4, path: [TKey1_1, TKey2_1]): NonNullable<TObject_4[TKey1_1]>[TKey2_1];
        <TObject_5 extends object, TKey1_2 extends keyof TObject_5, TKey2_2 extends keyof NonNullable<TObject_5[TKey1_2]>, TDefault_1>(object: TObject_5, path: [TKey1_2, TKey2_2], defaultValue: TDefault_1): TDefault_1 | Exclude<NonNullable<TObject_5[TKey1_2]>[TKey2_2], undefined>;
        <TObject_6 extends object, TKey1_3 extends keyof TObject_6, TKey2_3 extends keyof TObject_6[TKey1_3], TKey3 extends keyof TObject_6[TKey1_3][TKey2_3]>(object: TObject_6, path: [TKey1_3, TKey2_3, TKey3]): TObject_6[TKey1_3][TKey2_3][TKey3];
        <TObject_7 extends object, TKey1_4 extends keyof TObject_7, TKey2_4 extends keyof NonNullable<TObject_7[TKey1_4]>, TKey3_1 extends keyof NonNullable<NonNullable<TObject_7[TKey1_4]>[TKey2_4]>>(object: TObject_7, path: [TKey1_4, TKey2_4, TKey3_1]): NonNullable<NonNullable<TObject_7[TKey1_4]>[TKey2_4]>[TKey3_1];
        <TObject_8 extends object, TKey1_5 extends keyof TObject_8, TKey2_5 extends keyof NonNullable<TObject_8[TKey1_5]>, TKey3_2 extends keyof NonNullable<NonNullable<TObject_8[TKey1_5]>[TKey2_5]>, TDefault_2>(object: TObject_8, path: [TKey1_5, TKey2_5, TKey3_2], defaultValue: TDefault_2): TDefault_2 | Exclude<NonNullable<NonNullable<TObject_8[TKey1_5]>[TKey2_5]>[TKey3_2], undefined>;
        <TObject_9 extends object, TKey1_6 extends keyof TObject_9, TKey2_6 extends keyof TObject_9[TKey1_6], TKey3_3 extends keyof TObject_9[TKey1_6][TKey2_6], TKey4 extends keyof TObject_9[TKey1_6][TKey2_6][TKey3_3]>(object: TObject_9, path: [TKey1_6, TKey2_6, TKey3_3, TKey4]): TObject_9[TKey1_6][TKey2_6][TKey3_3][TKey4];
        <TObject_10 extends object, TKey1_7 extends keyof TObject_10, TKey2_7 extends keyof NonNullable<TObject_10[TKey1_7]>, TKey3_4 extends keyof NonNullable<NonNullable<TObject_10[TKey1_7]>[TKey2_7]>, TKey4_1 extends keyof NonNullable<NonNullable<NonNullable<TObject_10[TKey1_7]>[TKey2_7]>[TKey3_4]>>(object: TObject_10, path: [TKey1_7, TKey2_7, TKey3_4, TKey4_1]): NonNullable<NonNullable<NonNullable<TObject_10[TKey1_7]>[TKey2_7]>[TKey3_4]>[TKey4_1];
        <TObject_11 extends object, TKey1_8 extends keyof TObject_11, TKey2_8 extends keyof NonNullable<TObject_11[TKey1_8]>, TKey3_5 extends keyof NonNullable<NonNullable<TObject_11[TKey1_8]>[TKey2_8]>, TKey4_2 extends keyof NonNullable<NonNullable<NonNullable<TObject_11[TKey1_8]>[TKey2_8]>[TKey3_5]>, TDefault_3>(object: TObject_11, path: [TKey1_8, TKey2_8, TKey3_5, TKey4_2], defaultValue: TDefault_3): TDefault_3 | Exclude<NonNullable<NonNullable<NonNullable<TObject_11[TKey1_8]>[TKey2_8]>[TKey3_5]>[TKey4_2], undefined>;
        <T>(object: import("lodash").NumericDictionary<T>, path: number): T;
        <T_1>(object: import("lodash").NumericDictionary<T_1>, path: number): T_1;
        <T_2, TDefault_4>(object: import("lodash").NumericDictionary<T_2>, path: number, defaultValue: TDefault_4): T_2 | TDefault_4;
        <TDefault_5>(object: null, path: import("lodash").PropertyPath, defaultValue: TDefault_5): TDefault_5;
        (object: null, path: import("lodash").PropertyPath): undefined;
        <TObject_12, TPath extends string>(data: TObject_12, path: TPath): string extends TPath ? any : import("lodash").GetFieldType<TObject_12, TPath, "Path">;
        <TObject_13, TPath_1 extends string, TDefault_6 = import("lodash").GetFieldType<TObject_13, TPath_1, "Path">>(data: TObject_13, path: TPath_1, defaultValue: TDefault_6): TDefault_6 | Exclude<import("lodash").GetFieldType<TObject_13, TPath_1, "Path">, null>;
        (object: any, path: import("lodash").PropertyPath, defaultValue?: any): any;
    };
    displayDensity: DisplayDensity | string;
    data: Array<any>;
    columns: SelectionTableColumn[];
    get multiple(): boolean | string;
    set multiple(value: boolean | string);
    private _multiple;
    get grid(): string | boolean;
    set grid(value: string | boolean);
    private _grid;
    disabled: boolean;
    paginator?: MatPaginator;
    sort: MatSort;
    displayedColumns: string[];
    selection: SelectionModel<any>;
    dataSource: MatTableDataSource<any, MatPaginator>;
    readonly searchText: import("@angular/core").ModelSignal<string>;
    /**
     * Invoked when the model has been changed
     */
    onChange: (_: any) => void;
    /**
     * Invoked when the model has been touched
     */
    onTouched: () => void;
    ngOnInit(): void;
    ngOnChanges({ data }: SimpleChanges): void;
    ngAfterViewInit(): void;
    writeValue(obj: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState?(isDisabled: boolean): void;
    applyFilter(filterValue: string): void;
    _context(data: Record<string, unknown>, column: any): {
        $implicit: unknown;
    };
    onChangeRow(row: any): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgmSelectionTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NgmSelectionTableComponent, "ngm-selection-table", never, { "displayDensity": { "alias": "displayDensity"; "required": false; }; "data": { "alias": "data"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "grid": { "alias": "grid"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "searchText": { "alias": "searchText"; "required": false; "isSignal": true; }; }, { "searchText": "searchTextChange"; }, never, never, true, never>;
}
