import { IDisposable } from '@opensumi/ide-core-common';
import { ExtensionHostType } from '.';
import type vscode from 'vscode';
export declare class ExtensionActivationTimes {
    readonly startup: boolean;
    readonly codeLoadingTime: number;
    readonly activateCallTime: number;
    readonly activateResolvedTime: number;
    static readonly NONE: ExtensionActivationTimes;
    constructor(startup: boolean, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number);
}
export interface IExtensionModule {
    activate?(ctx: vscode.ExtensionContext): Promise<any>;
    deactivate?(): void;
}
export interface IExtensionAPI {
}
export interface IExtendExportAPI {
}
export interface ActivatedExtensionJSON {
    id: string;
    host: ExtensionHostType;
    activationFailed: boolean;
    activationFailedError: Error | null;
    activateCallTime?: number;
}
export declare class ActivatedExtension {
    readonly id: string;
    readonly displayName: string;
    readonly description: string;
    readonly host: ExtensionHostType;
    readonly activationFailed: boolean;
    readonly activationFailedError: Error | null;
    readonly module: IExtensionModule;
    readonly exports: IExtensionAPI | undefined;
    readonly subscriptions: IDisposable[];
    readonly activationTimes?: ExtensionActivationTimes | undefined;
    readonly extendExports?: IExtendExportAPI | undefined;
    readonly extendModule?: IExtensionModule | undefined;
    constructor(id: string, displayName: string, description: string, host: ExtensionHostType, activationFailed: boolean, activationFailedError: Error | null, module: IExtensionModule, exports: IExtensionAPI | undefined, subscriptions: IDisposable[], activationTimes?: ExtensionActivationTimes | undefined, extendExports?: IExtendExportAPI | undefined, extendModule?: IExtensionModule | undefined);
    toJSON(): {
        id: string;
        displayName: string;
        description: string;
        host: ExtensionHostType;
        activationFailed: boolean;
        activationFailedError: Error | null;
        activateCallTime: number | undefined;
    };
}
export declare class ExtensionsActivator {
    private logger;
    private readonly activatedExtensions;
    constructor(logger?: any);
    has(id: string): boolean;
    set(id: string, extension: ActivatedExtension): Map<string, ActivatedExtension>;
    get(id: string): ActivatedExtension | undefined;
    all(): ActivatedExtension[];
    delete(id: string): boolean;
    private doDeactivate;
    deactivate(): Promise<void[]>;
}
//# sourceMappingURL=activator.d.ts.map