import { Uri } from '@opensumi/ide-core-common';
import { IExtendProxy, IExtensionHost, IExtensionProps } from '../../../common';
import { IExtHostStorage, IExtHostTerminal } from '../../../common/vscode';
import { ExtensionMode } from '../../../common/vscode/ext-types';
import { KTExtension, KTWorkerExtension } from '../../vscode.extension';
import { ExtHostSecret, ExtensionSecrets } from './ext.host.secrets';
import { ExtensionGlobalMemento, ExtensionMemento } from './ext.host.storage';
import type vscode from 'vscode';
export interface IKTContextOptions {
    extensionId: string;
    extensionPath: string;
    extensionLocation: Uri;
    extensionDescription: IExtensionProps;
    storageProxy: IExtHostStorage;
    secretProxy: ExtHostSecret;
    extendProxy?: IExtendProxy;
    isDevelopment?: boolean;
    registerExtendModuleService?: (exportsData: any) => void;
    exthostTerminal?: IExtHostTerminal;
    createExtension: (extensionDescription: IExtensionProps) => KTExtension<unknown> | KTWorkerExtension<unknown>;
}
export interface IKTExtensionContext {
    readonly componentProxy: IExtendProxy | undefined;
    readonly registerExtendModuleService: ((moduleExports: any) => void) | undefined;
    readonly subscriptions: {
        dispose(): any;
    }[];
    readonly extensionPath: string;
    /**
     * Get the absolute path of a resource contained in the extension.
     *
     * @param relativePath A relative path to a resource contained in the extension.
     * @return The absolute path of the resource.
     */
    asAbsolutePath(relativePath: string): string;
}
export declare class ExtensionContext implements vscode.ExtensionContext, IKTExtensionContext {
    readonly subscriptions: {
        dispose(): any;
    }[];
    readonly _extensionLocation: Uri;
    readonly _isDevelopment: boolean;
    readonly workspaceState: ExtensionMemento;
    readonly globalState: ExtensionGlobalMemento;
    readonly secrets: ExtensionSecrets;
    private createExtension;
    private _storage;
    private exthostTerminalService;
    private extensionDescription;
    componentProxy: IExtendProxy | undefined;
    registerExtendModuleService: ((exportsData: any) => void) | undefined;
    extensionId: string;
    constructor(options: IKTContextOptions);
    asAbsolutePath(relativePath: string): string;
    get extensionUri(): Uri;
    get extensionPath(): string;
    get storageUri(): Uri;
    get storagePath(): string;
    get logUri(): Uri;
    get logPath(): string;
    get globalStorageUri(): Uri;
    get globalStoragePath(): string;
    get extensionMode(): ExtensionMode.Production | ExtensionMode.Development;
    get environmentVariableCollection(): vscode.GlobalEnvironmentVariableCollection;
    get extension(): KTExtension<unknown> | KTWorkerExtension<unknown>;
}
export declare function createExtensionsApiFactory<T extends IExtensionHost>(extensionService: T): {
    all: import("../../vscode.extension").Extension<any, any>[];
    allAcrossExtensionHosts: import("../../vscode.extension").Extension<any, any>[];
    readonly onDidChange: import("@opensumi/ide-core-common").Event<void>;
    getExtension(extensionId: string): import("../../vscode.extension").Extension<any, IExtensionHost> | undefined;
};
//# sourceMappingURL=ext.host.extensions.d.ts.map