/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import type { ProtocolHandlerRegistration } from "../common/protocol-handler/registration";
import type { InstalledExtension, LensExtensionId, LensExtensionManifest } from "@openlens/legacy-extensions";
import type { Logger } from "./common-api";
import type { EnsureHashedDirectoryForExtension } from "./extension-loader/file-system-provisioner-store/ensure-hashed-directory-for-extension.injectable";
export declare const Disposers: unique symbol;
export interface LensExtensionDependencies {
    readonly logger: Logger;
    ensureHashedDirectoryForExtension: EnsureHashedDirectoryForExtension;
}
export declare class LensExtension {
    readonly id: LensExtensionId;
    readonly manifest: LensExtensionManifest;
    readonly manifestPath: string;
    readonly isBundled: boolean;
    get sanitizedExtensionId(): string;
    /**
     * @ignore
     */
    protected readonly dependencies: LensExtensionDependencies;
    protocolHandlers: ProtocolHandlerRegistration[];
    private _isEnabled;
    get isEnabled(): boolean;
    /**
     * @ignore
     */
    [Disposers]: import("@openlens/utilities").ExtendableDisposer;
    constructor(deps: LensExtensionDependencies, { id, manifest, manifestPath, isBundled }: InstalledExtension);
    get name(): string;
    get version(): string;
    get description(): string | undefined;
    get storeName(): string;
    /**
     * getExtensionFileFolder returns the path to an already created folder. This
     * folder is for the sole use of this extension.
     *
     * Note: there is no security done on this folder, only obfuscation of the
     * folder name.
     */
    getExtensionFileFolder(): Promise<string>;
    enable(): Promise<void>;
    disable(): Promise<void>;
    activate(): Promise<void>;
    protected onActivate(): Promise<void> | void;
    protected onDeactivate(): Promise<void> | void;
}
export declare function sanitizeExtensionName(name: string): string;
export declare function getSanitizedPath(...parts: string[]): string;
export declare function extensionDisplayName(name: string, version: string): string;
