import { VSBuffer } from '../../../base/common/buffer'; import { Emitter, Event } from '../../../base/common/event'; import { Disposable } from '../../../base/common/lifecycle'; import { ISocket, SocketCloseEvent, SocketDiagnosticsEventType } from '../../../base/parts/ipc/common/ipc.net'; export declare const makeRawSocketHeaders: (path: string, query: string, deubgLabel: string) => string; export declare const socketRawEndHeaderSequence: VSBuffer; export interface RemoteSocketHalf { onData: Emitter; onClose: Emitter; onEnd: Emitter; } /** Should be called immediately after making a ManagedSocket to make it ready for data flow. */ export declare function connectManagedSocket(socket: T, path: string, query: string, debugLabel: string, half: RemoteSocketHalf): Promise; export declare abstract class ManagedSocket extends Disposable implements ISocket { private readonly debugLabel; private readonly pausableDataEmitter; onData: Event; onClose: Event; onEnd: Event; private readonly didDisposeEmitter; onDidDispose: Event; private ended; protected constructor(debugLabel: string, half: RemoteSocketHalf); /** Pauses data events until a new listener comes in onData() */ pauseData(): void; /** Flushes data to the socket. */ drain(): Promise; /** Ends the remote socket. */ end(): void; abstract write(buffer: VSBuffer): void; protected abstract closeRemote(): void; traceSocketEvent(type: SocketDiagnosticsEventType, data?: any): void; dispose(): void; }