import { IRPCProtocol } from '@opensumi/ide-connection';
import { ILogger, PreferenceService } from '@opensumi/ide-core-browser';
import { ITerminalDimensions } from '@opensumi/ide-terminal-next';
import { SerializableEnvironmentVariableCollection } from '@opensumi/ide-terminal-next/lib/common/environmentVariable';
import { IMainThreadTerminal } from '../../../common/vscode';
import { IActivationEventService } from '../../types';
import type vscode from 'vscode';
export declare class MainThreadTerminal implements IMainThreadTerminal {
    private rpcProtocol;
    private readonly proxy;
    shortId2LongIdMap: Map<string, string>;
    private readonly _terminalProcessProxies;
    private readonly _profileProviders;
    /**
     * A single shared terminal link provider for the exthost. When an ext registers a link
     * provider, this is registered with the terminal on the renderer side and all links are
     * provided through this, even from multiple ext link providers. Xterm should remove lower
     * priority intersecting links itself.
     */
    private _linkProvider;
    private environmentVariableService;
    private terminalApi;
    private controller;
    private profileService;
    private profileInternalSerivce;
    private terminalGroupViewService;
    protected readonly preference: PreferenceService;
    protected readonly activationEventService: IActivationEventService;
    protected readonly logger: ILogger;
    private disposable;
    constructor(rpcProtocol: IRPCProtocol);
    dispose(): void;
    private bindEvent;
    private initData;
    transform<T>(id: string, cb: (sessionId: string) => T): T;
    $sendText(id: string, text: string, addNewLine?: boolean): void;
    $show(id: string, preserveFocus?: boolean): void;
    $hide(id: string): void;
    $dispose(id: string): void;
    $getProcessId(id: string): Promise<number | undefined>;
    $createTerminal(options: vscode.TerminalOptions, shortId: string): Promise<void>;
    private _onRequestStartExtensionTerminal;
    private _getTerminalProcess;
    $sendProcessTitle(id: string, title: string): void;
    $sendProcessData(terminalId: string, data: string): void;
    $sendProcessReady(terminalId: string, pid: number, cwd: string): void;
    $sendProcessExit(terminalId: string, exitCode: number | undefined): void;
    $sendOverrideDimensions(terminalId: string, dimensions: ITerminalDimensions | undefined): void;
    $sendProcessInitialCwd(terminalId: string, initialCwd: string): void;
    $sendProcessCwd(terminalId: string, cwd: string): void;
    $startLinkProvider(): void;
    $stopLinkProvider(): void;
    $registerProfileProvider(id: string, extensionIdentifier: string): void;
    $unregisterProfileProvider(id: string): void;
    private _updateDefaultProfile;
    $setEnvironmentVariableCollection(extensionIdentifier: string, persistent: boolean, collection: SerializableEnvironmentVariableCollection | undefined): void;
}
//# sourceMappingURL=main.thread.terminal.d.ts.map