import { IExtensionHost, IExtensionHostService, IExtensionProps, IExtensionWorkerHost, JSONType } from '../common';
import { VSCodeExtensionService } from '../common/vscode';
import type vscode from 'vscode';
export declare abstract class Extension<T = any, S extends IExtensionHost = any> implements vscode.Extension<T> {
    private readonly metadata;
    protected readonly extensionService: S;
    protected readonly mainThreadExtensionService: VSCodeExtensionService;
    readonly id: string;
    readonly extensionPath: string;
    readonly _isActive: boolean;
    readonly packageJSON: any;
    readonly extensionKind: vscode.ExtensionKind;
    readonly extendConfig: JSONType;
    readonly l10n?: string;
    readonly extensionUri: vscode.Uri;
    private readonly _exports;
    constructor(metadata: IExtensionProps, extensionService: S, mainThreadExtensionService: VSCodeExtensionService, exportsData?: T);
    get isActive(): boolean;
    get exports(): any;
    /**
     * Activates this extension and returns its public API.
     *
     * @return A promise that will resolve when this extension has been activated.
     */
    activate(): Promise<any>;
}
export declare class KTExtension<T = any> extends Extension<T, IExtensionHostService> {
    private _extendExportsData;
    constructor(metadata: IExtensionProps, extensionService: IExtensionHostService, mainThreadExtensionService: VSCodeExtensionService, exportsData?: T, extendExportsData?: any);
    get extendExports(): any;
}
/**
 * 与 VSCExtension 的区别是，没有 extendExports
 * 对于纯 worker 的插件来说，其导出的 API 应该是与 VS Code 保持一致的，即只需要 `extension.exports` 即可
 */
export declare class KTWorkerExtension<T = any> extends Extension<T, IExtensionWorkerHost> {
    readonly workerScriptPath: string;
    constructor(metadata: IExtensionProps, extensionService: IExtensionWorkerHost, mainThreadExtensionService: VSCodeExtensionService, exportsData?: T);
}
//# sourceMappingURL=vscode.extension.d.ts.map