import { SelectFilterOption } from '@alauda/ui';
import { HttpClient } from '@angular/common/http';
import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit, TemplateRef } from '@angular/core';
import { ReplaySubject } from 'rxjs';
import { Cluster, K8sUtilService, Project, ServiceMeshGroup, KubernetesResource } from '../../../../core/public-api';
import { CommonLayoutContextService } from '../../../../page-scaffold/public-api';
import { ResourceListBase } from '../../base-list';
import { ResourceSelectContextService } from '../../context.service';
import { K8sApiService } from './../../../../api/public-api';
import { DisableFn, NamespaceDataItem, SelectedNamespaceValue } from './../../types';
import * as i0 from "@angular/core";
export declare class NamespaceListComponent extends ResourceListBase implements OnInit, OnDestroy {
    private readonly commonLayoutService;
    private readonly k8sService;
    private readonly http;
    actionTemplateRef: TemplateRef<any>;
    disableFn: DisableFn;
    value: SelectedNamespaceValue;
    displayServiceMesh: boolean;
    clusterChange: EventEmitter<string>;
    projectChange: EventEmitter<string>;
    projects: Project[];
    selectedProject: Project;
    selectedCluster: string;
    clusters: string[];
    projectsLoading: boolean;
    serviceMeshes: ServiceMeshGroup[];
    projectServiceMeshes: ServiceMeshGroup[];
    selectedServiceMesh: ServiceMeshGroup;
    type: string;
    displayedData: NamespaceDataItem[];
    namespaceClusterMap: Record<string, string>;
    gridStateMap: Record<string, ReturnType<DisableFn>>;
    selectedUid: string;
    load$$: ReplaySubject<{
        project: Project;
        cluster: string;
    }>;
    serviceMeshes$: import("rxjs").Observable<ServiceMeshGroup[]>;
    clusters$: import("rxjs").Observable<Cluster[]>;
    getClusterDisplayName$: ((cluster: string) => import("rxjs").Observable<string>) & import("lodash").MemoizedFunction;
    checkClusterError$: ((cluster: string) => import("rxjs").Observable<boolean>) & import("lodash").MemoizedFunction;
    namespaces$: import("rxjs").Observable<KubernetesResource[]>;
    constructor(commonLayoutService: CommonLayoutContextService, k8sService: K8sApiService, http: HttpClient, contextService: ResourceSelectContextService, cdr: ChangeDetectorRef, k8sUtil: K8sUtilService);
    ngOnInit(): void;
    getSortedNamespace(rawData: NamespaceDataItem[], namespace?: string): NamespaceDataItem[];
    storeNamespaces(): void;
    projectFilterFn: (keyword: string, option: SelectFilterOption<Project>) => boolean;
    clusterFilterFn: (keyword: string, option: SelectFilterOption<string>) => boolean;
    serviceMeshFilterFn: (keyword: string, option: SelectFilterOption<ServiceMeshGroup>) => boolean;
    projectTrackFn: (project: Project) => string;
    serviceMeshTrackFn: (mesh: ServiceMeshGroup) => string;
    private initProject;
    selectServiceMesh(serviceMesh: ServiceMeshGroup): void;
    selectProject(project: Project, initial?: boolean): void;
    selectCluster(clusterName: string, initial?: boolean): void;
    private setSelectedNamespace;
    mapResource: (list: KubernetesResource[], { isMultiArch, clusters, }: {
        isMultiArch: boolean;
        clusters: Cluster[];
    }) => NamespaceDataItem[];
    private getClusterArch;
    private checkClusterError;
    static ɵfac: i0.ɵɵFactoryDeclaration<NamespaceListComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NamespaceListComponent, "acl-namespace-list", never, { "actionTemplateRef": { "alias": "actionTemplateRef"; "required": false; }; "disableFn": { "alias": "disableFn"; "required": false; }; "value": { "alias": "value"; "required": false; }; "displayServiceMesh": { "alias": "displayServiceMesh"; "required": false; }; }, { "clusterChange": "clusterChange"; "projectChange": "projectChange"; }, never, ["*"], false, never>;
}
