import { Sort } from '@alauda/ui';
import { EventEmitter, QueryList, TemplateRef, TrackByFunction } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Observable, ReplaySubject } from 'rxjs';
import { K8sResourceAction } from '../core/types/k8s/raw';
import { K8SResourceList } from '../k8s-resource-list/k8s-resource-list';
import { TableCellDefDirective } from './helpers.directive';
import { NormalizedTableColumnDef, TableColumnDefs, TableColumn, TableColumnDef, TableFilterFn } from './types';
import { TableUtilService } from './util.service';
import * as i0 from "@angular/core";
export declare class TableComponent<Item extends object, Context = TableUtilService<Item>> {
    private readonly router;
    private readonly route;
    readonly util: TableUtilService<Item>;
    list: K8SResourceList<Item, any>;
    list$: Observable<K8SResourceList<Item>>;
    dataSource: Item[] | Observable<Item[]>;
    dataSource$: Observable<Item[] | Observable<Item[]>>;
    resourceName: string;
    resourceName$: Observable<string>;
    sticky: number | string;
    permissions: Partial<Record<K8sResourceAction, boolean>>;
    columns: ReadonlyArray<TableColumn<Item, Context>>;
    columns$: Observable<Array<TableColumn<Item, Context>>>;
    filterParams: Record<string, string | number>;
    filterParams$: Observable<Record<string, string | number>>;
    context: Context;
    get finalContext(): Context;
    filterFn: TableFilterFn<Item, Context>;
    filterFn$: Observable<TableFilterFn<Item, Context>>;
    trackBy: TrackByFunction<Item>;
    noDataHint: string;
    update: EventEmitter<Item>;
    delete: EventEmitter<Item>;
    tableCellDefs: QueryList<TableCellDefDirective<Item, Context>>;
    get scrollWrapper(): boolean;
    get scrollWrapperHeight(): string;
    finalDataSource$: Observable<Item[]>;
    finalResourceName$: Observable<string>;
    columnDefs$: Observable<TableColumnDefs<Item, Context, object, import("./types").NormalizedDefaultExtraMapper<Item, Context> & object, "action" | "name">>;
    columnNames$: Observable<import("@alauda/common-snippet").LiteralUnion<"action" | "name", string>[]>;
    activeSort$$: ReplaySubject<Sort>;
    activeSort$: Observable<Sort>;
    filteredItems$: Observable<Item[]>;
    get isListPage(): boolean;
    isListPage$: Observable<boolean>;
    isFunction: (value: any) => value is (...args: any[]) => any;
    isK8sResource: <T extends import("../core/types/k8s/raw").KubernetesResource = import("../core/types/k8s/raw").KubernetesResource>(value: object) => value is T;
    isFieldNotAvailable: (field: unknown) => boolean;
    getValueFromPath: (item: Item, name?: string, path?: import("./types").TableColumnDefPath<Item, unknown>, context?: unknown) => string | number;
    NAME: string;
    CREATOR: string;
    CREATED_TIME: string;
    ACTION: string;
    constructor(router: Router, route: ActivatedRoute, util: TableUtilService<Item>);
    normalizeColumnDefTranslate(column: TableColumnDef<Item, Context>): TableColumnDef<Item, Context, object, string, string | number>;
    normalizeColumnDefSort(column: TableColumnDef<Item, Context>): TableColumnDef<Item, Context, object, string, string | number>;
    normalizeActionColumnDef(column: TableColumnDef<Item, Context>): NormalizedTableColumnDef<Item, Context>;
    getColumnTemplate(column: string): TemplateRef<Context>;
    trackByFn(index: number, item: Item): any;
    onUpdate(data: Item, columnDef: TableColumnDef<Item, Context>): void;
    getValue<T, F extends (...args: unknown[]) => T>(functionOrValue: T | F, ...args: Parameters<F>): T;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent<any, any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent<any, any>, "acl-table", never, { "list": "list"; "dataSource": "dataSource"; "resourceName": "resourceName"; "sticky": "sticky"; "permissions": "permissions"; "columns": "columns"; "filterParams": "filterParams"; "context": "context"; "filterFn": "filterFn"; "trackBy": "trackBy"; "noDataHint": "noDataHint"; }, { "update": "update"; "delete": "delete"; }, ["tableCellDefs"], never, false>;
}
