import { Sort } from '@alauda/ui';
import { EventEmitter, QueryList, TemplateRef, TrackByFunction } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';
import { K8sResourceAction, KubernetesResourceList } from '../core/types/k8s/public-api';
import { StreamListLoader } from '../k8s-resource-list/types';
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: StreamListLoader<KubernetesResourceList<Item>, Item>;
    list$: Observable<StreamListLoader<KubernetesResourceList<Item>, Item>>;
    dataSource: Item[] | Observable<Item[]>;
    dataSource$: Observable<Item[] | Observable<Item[]>>;
    resourceName: string;
    resourceName$: Observable<string>;
    resourceNameTranslated: string;
    sticky: number | string;
    permissions: Partial<Record<K8sResourceAction, boolean>>;
    columns: ReadonlyArray<TableColumn<Item, Context>>;
    columns$: Observable<Array<TableColumn<Item, Context>>>;
    filterParams: Record<string, unknown>;
    filterParams$: Observable<Record<string, unknown>>;
    context: Context;
    get finalContext(): Context;
    filterFn: TableFilterFn<Item, Context>;
    filterFn$: Observable<TableFilterFn<Item, Context>>;
    trackBy: TrackByFunction<Item>;
    noDataHint: string;
    loadingErrorTemplate: TemplateRef<any>;
    enablePagination: boolean;
    pageSize: number;
    pageSizeOptions: number[];
    paginationLayout: string;
    firstScrollLoad: number;
    update: EventEmitter<Item>;
    delete: EventEmitter<Item>;
    sortChange: EventEmitter<Sort>;
    tableCellDefs: QueryList<TableCellDefDirective<Item>>;
    get scrollWrapper(): boolean;
    get scrollWrapperHeight(): string;
    currentPage$: BehaviorSubject<number>;
    pageSize$: BehaviorSubject<number>;
    pagination: {
        total: number;
        pages: number;
    };
    finalDataSource$: Observable<Item[]>;
    finalResourceName$: Observable<string>;
    columnDefs$: Observable<TableColumnDefs<Item, Context>>;
    columnNames$: Observable<import("@alauda-fe/common").LiteralUnion<"action" | "name", string>[]>;
    activeSort$$: ReplaySubject<Sort>;
    activeSort$: Observable<Sort>;
    filteredItems$: Observable<Item[]>;
    pagedItems$: Observable<Item[]>;
    get isListPage(): boolean;
    isListPage$: Observable<boolean>;
    isFunction: (value: any) => value is (...args: any[]) => any;
    isK8sResource: <T extends import("../core/types/k8s/core").KubernetesResource = import("../core/types/k8s/core").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;
    trackByName(_: number, columnDef: TableColumnDef<Item, Context>): string;
    NAME: string;
    CREATOR: string;
    CREATED_AT: 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>;
    onSortChange($event: Sort): void;
    normalizeActionColumnDef(column: TableColumnDef<Item, Context>): NormalizedTableColumnDef<Item, Context>;
    getColumnTemplate(column: string): TemplateRef<{
        $implicit: Item;
        index: number;
        even: boolean;
        odd: boolean;
        last: boolean;
    }>;
    trackByFn(index: number, item: Item): string | number | Exclude<"name" extends infer T ? T extends "name" ? T extends keyof Item ? Item[T] : T extends `${infer FieldKey}[${infer IndexKey}]` ? FieldKey extends keyof Item ? import("lodash").IndexedFieldWithPossiblyUndefined<Item[FieldKey], IndexKey> : undefined : import("lodash").IndexedFieldWithPossiblyUndefined<Item, T> : never : never, null>;
    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": { "alias": "list"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "resourceName": { "alias": "resourceName"; "required": false; }; "resourceNameTranslated": { "alias": "resourceNameTranslated"; "required": false; }; "sticky": { "alias": "sticky"; "required": false; }; "permissions": { "alias": "permissions"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "filterParams": { "alias": "filterParams"; "required": false; }; "context": { "alias": "context"; "required": false; }; "filterFn": { "alias": "filterFn"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; "noDataHint": { "alias": "noDataHint"; "required": false; }; "loadingErrorTemplate": { "alias": "loadingErrorTemplate"; "required": false; }; "enablePagination": { "alias": "enablePagination"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; "paginationLayout": { "alias": "paginationLayout"; "required": false; }; "firstScrollLoad": { "alias": "firstScrollLoad"; "required": false; }; }, { "update": "update"; "delete": "delete"; "sortChange": "sortChange"; }, ["tableCellDefs"], never, false, never>;
}
