UNPKG

oscript-vscode-plugin

Version:

Oscript support for writing Autonomous Agents in VS Code

768 lines (767 loc) 33.4 kB
/// <reference path="thenable.d.ts" /> /// <reference types="node" /> import { TextDocument, TextDocumentChangeEvent, TextDocumentWillSaveEvent, Location, Command, TextEdit, WorkspaceEdit, CompletionItem, CompletionList, Hover, SignatureHelp, Definition, DocumentHighlight, SymbolInformation, DocumentSymbol, WorkspaceSymbolParams, DocumentSymbolParams, CodeLens, DocumentLink, Range, RequestType, RequestType0, RequestHandler, RequestHandler0, GenericRequestHandler, StarRequestHandler, NotificationType, NotificationType0, NotificationHandler, NotificationHandler0, GenericNotificationHandler, StarNotificationHandler, RPCMessageType, MessageReader, MessageWriter, CancellationToken, Disposable, Event, ConnectionStrategy, InitializeParams, InitializeResult, InitializeError, InitializedParams, MessageActionItem, DidChangeConfigurationParams, DidOpenTextDocumentParams, DidChangeTextDocumentParams, DidCloseTextDocumentParams, DidSaveTextDocumentParams, WillSaveTextDocumentParams, DidChangeWatchedFilesParams, PublishDiagnosticsParams, TextDocumentPositionParams, CompletionParams, TextDocumentSyncKind, ReferenceParams, CodeActionParams, CodeLensParams, DocumentFormattingParams, DocumentRangeFormattingParams, DocumentOnTypeFormattingParams, RenameParams, DocumentLinkParams, ExecuteCommandParams, ApplyWorkspaceEditParams, ApplyWorkspaceEditResponse, ClientCapabilities, ServerCapabilities, DocumentColorParams, ColorInformation, ColorPresentationParams, ColorPresentation, CodeAction, FoldingRangeParams, FoldingRange, Declaration, DeclarationLink, DefinitionLink } from 'vscode-languageserver-protocol'; import { Configuration } from './configuration'; import { WorkspaceFolders } from './workspaceFolders'; export * from 'vscode-languageserver-protocol'; export { Event }; import * as fm from './files'; export declare namespace Files { let uriToFilePath: typeof fm.uriToFilePath; let resolveGlobalNodePath: typeof fm.resolveGlobalNodePath; let resolveGlobalYarnPath: typeof fm.resolveGlobalYarnPath; let resolve: typeof fm.resolve; let resolveModule: typeof fm.resolveModule; let resolveModule2: typeof fm.resolveModule2; let resolveModulePath: typeof fm.resolveModulePath; } /** * A manager for simple text documents */ export declare class TextDocuments { private _documents; private _onDidChangeContent; private _onDidOpen; private _onDidClose; private _onDidSave; private _onWillSave; private _willSaveWaitUntil; /** * Create a new text document manager. */ constructor(); /** * Returns the [TextDocumentSyncKind](#TextDocumentSyncKind) used by * this text document manager. */ readonly syncKind: TextDocumentSyncKind; /** * An event that fires when a text document managed by this manager * has been opened or the content changes. */ readonly onDidChangeContent: Event<TextDocumentChangeEvent>; /** * An event that fires when a text document managed by this manager * has been opened. */ readonly onDidOpen: Event<TextDocumentChangeEvent>; /** * An event that fires when a text document managed by this manager * will be saved. */ readonly onWillSave: Event<TextDocumentWillSaveEvent>; /** * Sets a handler that will be called if a participant wants to provide * edits during a text document save. */ onWillSaveWaitUntil(handler: RequestHandler<TextDocumentWillSaveEvent, TextEdit[], void>): void; /** * An event that fires when a text document managed by this manager * has been saved. */ readonly onDidSave: Event<TextDocumentChangeEvent>; /** * An event that fires when a text document managed by this manager * has been closed. */ readonly onDidClose: Event<TextDocumentChangeEvent>; /** * Returns the document for the given URI. Returns undefined if * the document is not mananged by this instance. * * @param uri The text document's URI to retrieve. * @return the text document or `undefined`. */ get(uri: string): TextDocument | undefined; /** * Returns all text documents managed by this instance. * * @return all text documents. */ all(): TextDocument[]; /** * Returns the URIs of all text documents managed by this instance. * * @return the URI's of all text documents. */ keys(): string[]; /** * Listens for `low level` notification on the given connection to * update the text documents managed by this instance. * * @param connection The connection to listen on. */ listen(connection: IConnection): void; } /** * An empty interface for new proposed API. */ export interface _ { } /** * Helps tracking error message. Equal occurences of the same * message are only stored once. This class is for example * useful if text documents are validated in a loop and equal * error message should be folded into one. */ export declare class ErrorMessageTracker { private _messages; constructor(); /** * Add a message to the tracker. * * @param message The message to add. */ add(message: string): void; /** * Send all tracked messages to the connection's window. * * @param connection The connection established between client and server. */ sendErrors(connection: { window: RemoteWindow; }): void; } /** * */ export interface Remote { /** * Attach the remote to the given connection. * * @param connection The connection this remote is operating on. */ attach(connection: IConnection): void; /** * The connection this remote is attached to. */ connection: IConnection; /** * Called to initialize the remote with the given * client capabilities * * @param capabilities The client capabilities */ initialize(capabilities: ClientCapabilities): void; /** * Called to fill in the server capabilities this feature implements. * * @param capabilities The server capabilities to fill. */ fillServerCapabilities(capabilities: ServerCapabilities): void; } /** * The RemoteConsole interface contains all functions to interact with * the tools / clients console or log system. Interally it used `window/logMessage` * notifications. */ export interface RemoteConsole extends Remote { /** * Show an error message. * * @param message The message to show. */ error(message: string): void; /** * Show a warning message. * * @param message The message to show. */ warn(message: string): void; /** * Show an information message. * * @param message The message to show. */ info(message: string): void; /** * Log a message. * * @param message The message to log. */ log(message: string): void; } /** * The RemoteWindow interface contains all functions to interact with * the visual window of VS Code. */ export interface RemoteWindow extends Remote { /** * Show an error message. * * @param message The message to show. */ showErrorMessage(message: string): void; showErrorMessage<T extends MessageActionItem>(message: string, ...actions: T[]): Thenable<T | undefined>; /** * Show a warning message. * * @param message The message to show. */ showWarningMessage(message: string): void; showWarningMessage<T extends MessageActionItem>(message: string, ...actions: T[]): Thenable<T | undefined>; /** * Show an information message. * * @param message The message to show. */ showInformationMessage(message: string): void; showInformationMessage<T extends MessageActionItem>(message: string, ...actions: T[]): Thenable<T | undefined>; } /** * A bulk registration manages n single registration to be able to register * for n notifications or requests using one register request. */ export interface BulkRegistration { /** * Adds a single registration. * @param type the notification type to register for. * @param registerParams special registration parameters. */ add<RO>(type: NotificationType0<RO>, registerParams: RO): void; add<P, RO>(type: NotificationType<P, RO>, registerParams: RO): void; /** * Adds a single registration. * @param type the request type to register for. * @param registerParams special registration parameters. */ add<R, E, RO>(type: RequestType0<R, E, RO>, registerParams: RO): void; add<P, R, E, RO>(type: RequestType<P, R, E, RO>, registerParams: RO): void; } export declare namespace BulkRegistration { /** * Creates a new bulk registration. * @return an empty bulk registration. */ function create(): BulkRegistration; } /** * A `BulkUnregistration` manages n unregistrations. */ export interface BulkUnregistration extends Disposable { /** * Disposes a single registration. It will be removed from the * `BulkUnregistration`. */ disposeSingle(arg: string | RPCMessageType): boolean; } export declare namespace BulkUnregistration { function create(): BulkUnregistration; } /** * Interface to register and unregister `listeners` on the client / tools side. */ export interface RemoteClient extends Remote { /** * Registers a listener for the given notification. * @param type the notification type to register for. * @param registerParams special registration parameters. * @return a `Disposable` to unregister the listener again. */ register<RO>(type: NotificationType0<RO>, registerParams?: RO): Thenable<Disposable>; register<P, RO>(type: NotificationType<P, RO>, registerParams?: RO): Thenable<Disposable>; /** * Registers a listener for the given notification. * @param unregisteration the unregistration to add a corresponding unregister action to. * @param type the notification type to register for. * @param registerParams special registration parameters. * @return the updated unregistration. */ register<RO>(unregisteration: BulkUnregistration, type: NotificationType0<RO>, registerParams?: RO): Thenable<BulkUnregistration>; register<P, RO>(unregisteration: BulkUnregistration, type: NotificationType<P, RO>, registerParams?: RO): Thenable<BulkUnregistration>; /** * Registers a listener for the given request. * @param type the request type to register for. * @param registerParams special registration parameters. * @return a `Disposable` to unregister the listener again. */ register<R, E, RO>(type: RequestType0<R, E, RO>, registerParams?: RO): Thenable<Disposable>; register<P, R, E, RO>(type: RequestType<P, R, E, RO>, registerParams?: RO): Thenable<Disposable>; /** * Registers a listener for the given request. * @param unregisteration the unregistration to add a corresponding unregister action to. * @param type the request type to register for. * @param registerParams special registration parameters. * @return the updated unregistration. */ register<R, E, RO>(unregisteration: BulkUnregistration, type: RequestType0<R, E, RO>, registerParams?: RO): Thenable<BulkUnregistration>; register<P, R, E, RO>(unregisteration: BulkUnregistration, type: RequestType<P, R, E, RO>, registerParams?: RO): Thenable<BulkUnregistration>; /** * Registers a set of listeners. * @param registrations the bulk registration * @return a `Disposable` to unregister the listeners again. */ register(registrations: BulkRegistration): Thenable<BulkUnregistration>; } /** * Represents the workspace managed by the client. */ export interface _RemoteWorkspace extends Remote { /** * Applies a `WorkspaceEdit` to the workspace * @param param the workspace edit params. * @return a thenable that resolves to the `ApplyWorkspaceEditResponse`. */ applyEdit(paramOrEdit: ApplyWorkspaceEditParams | WorkspaceEdit): Thenable<ApplyWorkspaceEditResponse>; } export declare type RemoteWorkspace = _RemoteWorkspace & Configuration & WorkspaceFolders; /** * Interface to log telemetry events. The events are actually send to the client * and the client needs to feed the event into a proper telemetry system. */ export interface Telemetry extends Remote { /** * Log the given data to telemetry. * * @param data The data to log. Must be a JSON serializable object. */ logEvent(data: any): void; } /** * Interface to log traces to the client. The events are sent to the client and the * client needs to log the trace events. */ export interface Tracer extends Remote { /** * Log the given data to the trace Log */ log(message: string, verbose?: string): void; } /** * Interface to describe the shape of the server connection. */ export interface Connection<PConsole = _, PTracer = _, PTelemetry = _, PClient = _, PWindow = _, PWorkspace = _> { /** * Start listening on the input stream for messages to process. */ listen(): void; /** * Installs a request handler described by the given [RequestType](#RequestType). * * @param type The [RequestType](#RequestType) describing the request. * @param handler The handler to install */ onRequest<R, E, RO>(type: RequestType0<R, E, RO>, handler: RequestHandler0<R, E>): void; onRequest<P, R, E, RO>(type: RequestType<P, R, E, RO>, handler: RequestHandler<P, R, E>): void; /** * Installs a request handler for the given method. * * @param method The method to register a request handler for. * @param handler The handler to install. */ onRequest<R, E>(method: string, handler: GenericRequestHandler<R, E>): void; /** * Installs a request handler that is invoked if no specific request handler can be found. * * @param handler a handler that handles all requests. */ onRequest(handler: StarRequestHandler): void; /** * Send a request to the client. * * @param type The [RequestType](#RequestType) describing the request. * @param params The request's parameters. */ sendRequest<R, E, RO>(type: RequestType0<R, E, RO>, token?: CancellationToken): Thenable<R>; sendRequest<P, R, E, RO>(type: RequestType<P, R, E, RO>, params: P, token?: CancellationToken): Thenable<R>; /** * Send a request to the client. * * @param method The method to invoke on the client. * @param params The request's parameters. */ sendRequest<R>(method: string, token?: CancellationToken): Thenable<R>; sendRequest<R>(method: string, params: any, token?: CancellationToken): Thenable<R>; /** * Installs a notification handler described by the given [NotificationType](#NotificationType). * * @param type The [NotificationType](#NotificationType) describing the notification. * @param handler The handler to install. */ onNotification<RO>(type: NotificationType0<RO>, handler: NotificationHandler0): void; onNotification<P, RO>(type: NotificationType<P, RO>, handler: NotificationHandler<P>): void; /** * Installs a notification handler for the given method. * * @param method The method to register a request handler for. * @param handler The handler to install. */ onNotification(method: string, handler: GenericNotificationHandler): void; /** * Installs a notification handler that is invoked if no specific notification handler can be found. * * @param handler a handler that handles all notifications. */ onNotification(handler: StarNotificationHandler): void; /** * Send a notification to the client. * * @param type The [NotificationType](#NotificationType) describing the notification. * @param params The notification's parameters. */ sendNotification<RO>(type: NotificationType0<RO>): void; sendNotification<P, RO>(type: NotificationType<P, RO>, params: P): void; /** * Send a notification to the client. * * @param method The method to invoke on the client. * @param params The notification's parameters. */ sendNotification(method: string, params?: any): void; /** * Installs a handler for the initialize request. * * @param handler The initialize handler. */ onInitialize(handler: RequestHandler<InitializeParams, InitializeResult, InitializeError>): void; /** * Installs a handler for the initialized notification. * * @param handler The initialized handler. */ onInitialized(handler: NotificationHandler<InitializedParams>): void; /** * Installs a handler for the shutdown request. * * @param handler The initialize handler. */ onShutdown(handler: RequestHandler0<void, void>): void; /** * Installs a handler for the exit notification. * * @param handler The exit handler. */ onExit(handler: NotificationHandler0): void; /** * A proxy for VSCode's development console. See [RemoteConsole](#RemoteConsole) */ console: RemoteConsole & PConsole; /** * A proxy to send trace events to the client. */ tracer: Tracer & PTracer; /** * A proxy to send telemetry events to the client. */ telemetry: Telemetry & PTelemetry; /** * A proxy interface for the language client interface to register for requests or * notifications. */ client: RemoteClient & PClient; /** * A proxy for VSCode's window. See [RemoteWindow](#RemoteWindow) */ window: RemoteWindow & PWindow; /** * A proxy to talk to the client's workspace. */ workspace: RemoteWorkspace & PWorkspace; /** * Installs a handler for the `DidChangeConfiguration` notification. * * @param handler The corresponding handler. */ onDidChangeConfiguration(handler: NotificationHandler<DidChangeConfigurationParams>): void; /** * Installs a handler for the `DidChangeWatchedFiles` notification. * * @param handler The corresponding handler. */ onDidChangeWatchedFiles(handler: NotificationHandler<DidChangeWatchedFilesParams>): void; /** * Installs a handler for the `DidOpenTextDocument` notification. * * @param handler The corresponding handler. */ onDidOpenTextDocument(handler: NotificationHandler<DidOpenTextDocumentParams>): void; /** * Installs a handler for the `DidChangeTextDocument` notification. * * @param handler The corresponding handler. */ onDidChangeTextDocument(handler: NotificationHandler<DidChangeTextDocumentParams>): void; /** * Installs a handler for the `DidCloseTextDocument` notification. * * @param handler The corresponding handler. */ onDidCloseTextDocument(handler: NotificationHandler<DidCloseTextDocumentParams>): void; /** * Installs a handler for the `WillSaveTextDocument` notification. * * Note that this notification is opt-in. The client will not send it unless * your server has the `textDocumentSync.willSave` capability or you've * dynamically registered for the `textDocument/willSave` method. * * @param handler The corresponding handler. */ onWillSaveTextDocument(handler: NotificationHandler<WillSaveTextDocumentParams>): void; /** * Installs a handler for the `WillSaveTextDocumentWaitUntil` request. * * Note that this request is opt-in. The client will not send it unless * your server has the `textDocumentSync.willSaveWaitUntil` capability, * or you've dynamically registered for the `textDocument/willSaveWaitUntil` * method. * * @param handler The corresponding handler. */ onWillSaveTextDocumentWaitUntil(handler: RequestHandler<WillSaveTextDocumentParams, TextEdit[] | undefined | null, void>): void; /** * Installs a handler for the `DidSaveTextDocument` notification. * * @param handler The corresponding handler. */ onDidSaveTextDocument(handler: NotificationHandler<DidSaveTextDocumentParams>): void; /** * Sends diagnostics computed for a given document to VSCode to render them in the * user interface. * * @param params The diagnostic parameters. */ sendDiagnostics(params: PublishDiagnosticsParams): void; /** * Installs a handler for the `Hover` request. * * @param handler The corresponding handler. */ onHover(handler: RequestHandler<TextDocumentPositionParams, Hover | undefined | null, void>): void; /** * Installs a handler for the `Completion` request. * * @param handler The corresponding handler. */ onCompletion(handler: RequestHandler<CompletionParams, CompletionItem[] | CompletionList | undefined | null, void>): void; /** * Installs a handler for the `CompletionResolve` request. * * @param handler The corresponding handler. */ onCompletionResolve(handler: RequestHandler<CompletionItem, CompletionItem, void>): void; /** * Installs a handler for the `SignatureHelp` request. * * @param handler The corresponding handler. */ onSignatureHelp(handler: RequestHandler<TextDocumentPositionParams, SignatureHelp | undefined | null, void>): void; /** * Installs a handler for the `Declaration` request. * * @param handler The corresponding handler. */ onDeclaration(handler: RequestHandler<TextDocumentPositionParams, Declaration | DeclarationLink[] | undefined | null, void>): void; /** * Installs a handler for the `Definition` request. * * @param handler The corresponding handler. */ onDefinition(handler: RequestHandler<TextDocumentPositionParams, Definition | DefinitionLink[] | undefined | null, void>): void; /** * Installs a handler for the `Type Definition` request. * * @param handler The corresponding handler. */ onTypeDefinition(handler: RequestHandler<TextDocumentPositionParams, Definition | undefined | null, void>): void; /** * Installs a handler for the `Implementation` request. * * @param handler The corresponding handler. */ onImplementation(handler: RequestHandler<TextDocumentPositionParams, Definition | undefined | null, void>): void; /** * Installs a handler for the `References` request. * * @param handler The corresponding handler. */ onReferences(handler: RequestHandler<ReferenceParams, Location[] | undefined | null, void>): void; /** * Installs a handler for the `DocumentHighlight` request. * * @param handler The corresponding handler. */ onDocumentHighlight(handler: RequestHandler<TextDocumentPositionParams, DocumentHighlight[] | undefined | null, void>): void; /** * Installs a handler for the `DocumentSymbol` request. * * @param handler The corresponding handler. */ onDocumentSymbol(handler: RequestHandler<DocumentSymbolParams, SymbolInformation[] | DocumentSymbol[] | undefined | null, void>): void; /** * Installs a handler for the `WorkspaceSymbol` request. * * @param handler The corresponding handler. */ onWorkspaceSymbol(handler: RequestHandler<WorkspaceSymbolParams, SymbolInformation[] | undefined | null, void>): void; /** * Installs a handler for the `CodeAction` request. * * @param handler The corresponding handler. */ onCodeAction(handler: RequestHandler<CodeActionParams, (Command | CodeAction)[] | undefined | null, void>): void; /** * Compute a list of [lenses](#CodeLens). This call should return as fast as possible and if * computing the commands is expensive implementers should only return code lens objects with the * range set and handle the resolve request. * * @param handler The corresponding handler. */ onCodeLens(handler: RequestHandler<CodeLensParams, CodeLens[] | undefined | null, void>): void; /** * This function will be called for each visible code lens, usually when scrolling and after * the onCodeLens has been called. * * @param handler The corresponding handler. */ onCodeLensResolve(handler: RequestHandler<CodeLens, CodeLens, void>): void; /** * Installs a handler for the document formatting request. * * @param handler The corresponding handler. */ onDocumentFormatting(handler: RequestHandler<DocumentFormattingParams, TextEdit[] | undefined | null, void>): void; /** * Installs a handler for the document range formatting request. * * @param handler The corresponding handler. */ onDocumentRangeFormatting(handler: RequestHandler<DocumentRangeFormattingParams, TextEdit[] | undefined | null, void>): void; /** * Installs a handler for the document on type formatting request. * * @param handler The corresponding handler. */ onDocumentOnTypeFormatting(handler: RequestHandler<DocumentOnTypeFormattingParams, TextEdit[] | undefined | null, void>): void; /** * Installs a handler for the rename request. * * @param handler The corresponding handler. */ onRenameRequest(handler: RequestHandler<RenameParams, WorkspaceEdit | undefined | null, void>): void; /** * Installs a handler for the prepare rename request. * * @param handler The corresponding handler. */ onPrepareRename(handler: RequestHandler<TextDocumentPositionParams, Range | { range: Range; placeholder: string; } | undefined | null, void>): void; /** * Installs a handler for the document links request. * * @param handler The corresponding handler. */ onDocumentLinks(handler: RequestHandler<DocumentLinkParams, DocumentLink[] | undefined | null, void>): void; /** * Installs a handler for the document links resolve request. * * @param handler The corresponding handler. */ onDocumentLinkResolve(handler: RequestHandler<DocumentLink, DocumentLink | undefined | null, void>): void; /** * Installs a handler for the document color request. * * @param handler The corresponding handler. */ onDocumentColor(handler: RequestHandler<DocumentColorParams, ColorInformation[] | undefined | null, void>): void; /** * Installs a handler for the document color request. * * @param handler The corresponding handler. */ onColorPresentation(handler: RequestHandler<ColorPresentationParams, ColorPresentation[] | undefined | null, void>): void; /** * Installs a handler for the folding ranges request. * * @param handler The corresponding handler. */ onFoldingRanges(handler: RequestHandler<FoldingRangeParams, FoldingRange[] | undefined | null, void>): void; /** * Installs a handler for the execute command request. * * @param handler The corresponding handler. */ onExecuteCommand(handler: RequestHandler<ExecuteCommandParams, any | undefined | null, void>): void; /** * Disposes the connection */ dispose(): void; } export interface IConnection extends Connection { } export interface Feature<B, P> { (Base: new () => B): new () => B & P; } export declare type ConsoleFeature<P> = Feature<RemoteConsole, P>; export declare function combineConsoleFeatures<O, T>(one: ConsoleFeature<O>, two: ConsoleFeature<T>): ConsoleFeature<O & T>; export declare type TelemetryFeature<P> = Feature<Telemetry, P>; export declare function combineTelemetryFeatures<O, T>(one: TelemetryFeature<O>, two: TelemetryFeature<T>): TelemetryFeature<O & T>; export declare type TracerFeature<P> = Feature<Tracer, P>; export declare function combineTracerFeatures<O, T>(one: TracerFeature<O>, two: TracerFeature<T>): TracerFeature<O & T>; export declare type ClientFeature<P> = Feature<RemoteClient, P>; export declare function combineClientFeatures<O, T>(one: ClientFeature<O>, two: ClientFeature<T>): ClientFeature<O & T>; export declare type WindowFeature<P> = Feature<RemoteWindow, P>; export declare function combineWindowFeatures<O, T>(one: WindowFeature<O>, two: WindowFeature<T>): WindowFeature<O & T>; export declare type WorkspaceFeature<P> = Feature<RemoteWorkspace, P>; export declare function combineWorkspaceFeatures<O, T>(one: WorkspaceFeature<O>, two: WorkspaceFeature<T>): WorkspaceFeature<O & T>; export interface Features<PConsole = _, PTracer = _, PTelemetry = _, PClient = _, PWindow = _, PWorkspace = _> { __brand: 'features'; console?: ConsoleFeature<PConsole>; tracer?: TracerFeature<PTracer>; telemetry?: TelemetryFeature<PTelemetry>; client?: ClientFeature<PClient>; window?: WindowFeature<PWindow>; workspace?: WorkspaceFeature<PWorkspace>; } export declare function combineFeatures<OConsole, OTracer, OTelemetry, OClient, OWindow, OWorkspace, TConsole, TTracer, TTelemetry, TClient, TWindow, TWorkspace>(one: Features<OConsole, OTracer, OTelemetry, OClient, OWindow, OWorkspace>, two: Features<TConsole, TTracer, TTelemetry, TClient, TWindow, TWorkspace>): Features<OConsole & TConsole, OTracer & TTracer, OTelemetry & TTelemetry, OClient & TClient, OWindow & TWindow, OWorkspace & TWorkspace>; /** * Creates a new connection based on the processes command line arguments: * * @param strategy An optional connection strategy to control additional settings */ export declare function createConnection(strategy?: ConnectionStrategy): IConnection; /** * Creates a new connection using a the given streams. * * @param inputStream The stream to read messages from. * @param outputStream The stream to write messages to. * @param strategy An optional connection strategy to control additional settings * @return a [connection](#IConnection) */ export declare function createConnection(inputStream: NodeJS.ReadableStream, outputStream: NodeJS.WritableStream, strategy?: ConnectionStrategy): IConnection; /** * Creates a new connection. * * @param reader The message reader to read messages from. * @param writer The message writer to write message to. * @param strategy An optional connection strategy to control additional settings */ export declare function createConnection(reader: MessageReader, writer: MessageWriter, strategy?: ConnectionStrategy): IConnection; /** * Creates a new connection based on the processes command line arguments. The new connection surfaces proposed API * * @param factories: the factories to use to implement the proposed API * @param strategy An optional connection strategy to control additional settings */ export declare function createConnection<PConsole = _, PTracer = _, PTelemetry = _, PClient = _, PWindow = _, PWorkspace = _>(factories: Features<PConsole, PTracer, PTelemetry, PClient, PWindow, PWorkspace>, strategy?: ConnectionStrategy): Connection<PConsole, PTracer, PTelemetry, PClient, PWindow, PWorkspace>; /** * Creates a new connection using a the given streams. * * @param inputStream The stream to read messages from. * @param outputStream The stream to write messages to. * @param strategy An optional connection strategy to control additional settings * @return a [connection](#IConnection) */ export declare function createConnection<PConsole = _, PTracer = _, PTelemetry = _, PClient = _, PWindow = _, PWorkspace = _>(factories: Features<PConsole, PTracer, PTelemetry, PClient, PWindow, PWorkspace>, inputStream: NodeJS.ReadableStream, outputStream: NodeJS.WritableStream, strategy?: ConnectionStrategy): Connection<PConsole, PTracer, PTelemetry, PClient, PWindow, PWorkspace>; /** * Creates a new connection. * * @param reader The message reader to read messages from. * @param writer The message writer to write message to. * @param strategy An optional connection strategy to control additional settings */ export declare function createConnection<PConsole = _, PTracer = _, PTelemetry = _, PClient = _, PWindow = _, PWorkspace = _>(factories: Features<PConsole, PTracer, PTelemetry, PClient, PWindow, PWorkspace>, reader: MessageReader, writer: MessageWriter, strategy?: ConnectionStrategy): Connection<PConsole, PTracer, PTelemetry, PClient, PWindow, PWorkspace>; export declare namespace ProposedFeatures { const all: Features<_, _, _, _, _, _>; }