import { Injector } from '@opensumi/di';
import { IRPCProtocol, WSChannel } from '@opensumi/ide-connection';
import { BaseConnection } from '@opensumi/ide-connection/lib/common/connection';
import { Deferred, ExtHostSpawnOptions, IApplicationService, IExtensionProps } from '@opensumi/ide-core-browser';
import { IExtension, IExtensionHostService } from '../common';
import { ActivatedExtensionJSON } from '../common/activator';
import { AbstractNodeExtProcessService } from '../common/extension.service';
export declare class NodeExtProcessService implements AbstractNodeExtProcessService<IExtensionHostService> {
    private readonly appConfig;
    protected readonly injector: Injector;
    private readonly extensionNodeClient;
    protected readonly applicationService: IApplicationService;
    private readonly channelHandler;
    private readonly mainThreadExtenderService;
    private readonly mainThreadExtenderContributionProvider;
    private _apiFactoryDisposables;
    ready: Deferred<void>;
    private _extHostUpdated;
    private extensions;
    protocol: IRPCProtocol;
    disposeApiFactory(): void;
    disposeProcess(): Promise<void>;
    activate(): Promise<IRPCProtocol>;
    activeExtension(extension: IExtension, isWebExtension: boolean): Promise<void>;
    updateExtensionData(extensions: IExtension[]): Promise<void>;
    getExtension(extensionId: string): IExtension | undefined;
    $activateExtension(extensionPath: string): Promise<void>;
    $getExtensions(): Promise<IExtensionProps[]>;
    getProxy(): Promise<IExtensionHostService>;
    private createBrowserMainThreadAPI;
    getSpawnOptions(): ExtHostSpawnOptions;
    /**
     * register external main thread class
     * @returns disposer
     */
    private createExternalSumiAPIFactory;
    getActivatedExtensions(): Promise<ActivatedExtensionJSON[]>;
    private get clientId();
    private createExtProcess;
    connection: BaseConnection<Uint8Array>;
    channel: WSChannel;
    /**
     * 这个 protocol 需要每次都重新创建，因为服务端是会在该 channel 连上后才开始进行插件进程相关的逻辑的
     */
    private initExtProtocol;
}
//# sourceMappingURL=extension-node.service.d.ts.map