/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import { LensExtension } from "./lens-extension";
import type { Disposer } from "@openlens/utilities";
import type { LensExtensionDependencies } from "./lens-extension";
import type { CatalogEntity, CategoryFilter, CatalogCategoryRegistry } from "../common/catalog";
import type { EntityFilter, CatalogEntityRegistry } from "../renderer/api/catalog/entity/registry";
import type { TopBarRegistration } from "../renderer/components/layout/top-bar/top-bar-registration";
import type { KubernetesCluster } from "../common/catalog-entities";
import type { WelcomeMenuRegistration } from "../renderer/components/welcome/welcome-menu-items/welcome-menu-registration";
import type { WelcomeBannerRegistration } from "../renderer/components/welcome/welcome-banner-items/welcome-banner-registration";
import type { CommandRegistration } from "../renderer/components/command-palette/registered-commands/commands";
import type { AppPreferenceRegistration } from "../features/preferences/renderer/compliance-for-legacy-extension-api/app-preference-registration";
import type { AdditionalCategoryColumnRegistration } from "../renderer/components/catalog/custom-category-columns";
import type { CustomCategoryViewRegistration } from "../renderer/components/catalog/custom-views";
import type { StatusBarRegistration } from "../renderer/components/status-bar/status-bar-registration";
import type { KubeObjectMenuRegistration } from "../renderer/components/kube-object-menu/kube-object-menu-registration";
import type { WorkloadsOverviewDetailRegistration } from "../renderer/components/workloads-overview/workloads-overview-detail-registration";
import type { KubeObjectStatusRegistration } from "../renderer/components/kube-object-status-icon/kube-object-status-registration";
import type { KubeObjectHandlerRegistration } from "../renderer/kube-object/handler";
import type { AppPreferenceTabRegistration } from "../features/preferences/renderer/compliance-for-legacy-extension-api/app-preference-tab-registration";
import type { KubeObjectDetailRegistration } from "../renderer/components/kube-object-details/kube-object-detail-registration";
import type { ClusterFrameChildComponent } from "../renderer/frames/cluster-frame/cluster-frame-child-component-injection-token";
import type { EntitySettingRegistration } from "../renderer/components/entity-settings/extension-registrator.injectable";
import type { CatalogEntityDetailRegistration } from "../renderer/components/catalog/entity-details/token";
import type { PageRegistration } from "../renderer/routes/page-registration";
import type { ClusterPageMenuRegistration } from "../renderer/components/layout/cluster-page-menu";
import type { IComputedValue } from "mobx";
import type { NavigateToRoute } from "../common/front-end-routing/navigate-to-route-injection-token";
import type { Route } from "../common/front-end-routing/front-end-route-injection-token";
import type { GetExtensionPageParameters } from "../renderer/routes/get-extension-page-parameters.injectable";
import type { InstalledExtension } from "./common-api";
interface LensRendererExtensionDependencies extends LensExtensionDependencies {
    navigateToRoute: NavigateToRoute;
    getExtensionPageParameters: GetExtensionPageParameters;
    readonly routes: IComputedValue<Route<unknown>[]>;
    readonly entityRegistry: CatalogEntityRegistry;
    readonly categoryRegistry: CatalogCategoryRegistry;
}
export declare class LensRendererExtension extends LensExtension {
    globalPages: PageRegistration[];
    clusterPages: PageRegistration[];
    clusterPageMenus: ClusterPageMenuRegistration[];
    clusterFrameComponents: ClusterFrameChildComponent[];
    kubeObjectStatusTexts: KubeObjectStatusRegistration[];
    appPreferences: AppPreferenceRegistration[];
    appPreferenceTabs: AppPreferenceTabRegistration[];
    entitySettings: EntitySettingRegistration[];
    statusBarItems: StatusBarRegistration[];
    kubeObjectDetailItems: KubeObjectDetailRegistration[];
    kubeObjectMenuItems: KubeObjectMenuRegistration[];
    kubeWorkloadsOverviewItems: WorkloadsOverviewDetailRegistration[];
    commands: CommandRegistration[];
    welcomeMenus: WelcomeMenuRegistration[];
    welcomeBanners: WelcomeBannerRegistration[];
    catalogEntityDetailItems: CatalogEntityDetailRegistration<CatalogEntity>[];
    topBarItems: TopBarRegistration[];
    additionalCategoryColumns: AdditionalCategoryColumnRegistration[];
    customCategoryViews: CustomCategoryViewRegistration[];
    kubeObjectHandlers: KubeObjectHandlerRegistration[];
    /**
     * @ignore
     */
    protected readonly dependencies: LensRendererExtensionDependencies;
    constructor(extension: InstalledExtension);
    navigate(pageId?: string, params?: object): Promise<void>;
    /**
     * Defines if extension is enabled for a given cluster. This method is only
     * called when the extension is created within a cluster frame.
     *
     * The default implementation is to return `true`
     *
     * @deprecated Switch to using "enabled" or "visible" properties in each registration together with `activeCluster`
     */
    isEnabledForCluster(cluster: KubernetesCluster): Promise<Boolean>;
    /**
     * Add a filtering function for the catalog entities. This will be removed if the extension is disabled.
     * @param fn The function which should return a truthy value for those entities which should be kept.
     * @returns A function to clean up the filter
     */
    addCatalogFilter(fn: EntityFilter): Disposer;
    /**
     * Add a filtering function for the catalog categories. This will be removed if the extension is disabled.
     * @param fn The function which should return a truthy value for those categories which should be kept.
     * @returns A function to clean up the filter
     */
    addCatalogCategoryFilter(fn: CategoryFilter): Disposer;
}
export {};
