import * as code from 'vscode'; import * as proto from 'vscode-languageserver-protocol'; import { DynamicFeature, BaseLanguageClient, RegistrationData, NextSignature } from './client'; /** * File operation middleware * * @since 3.16.0 */ export interface FileOperationsMiddleware { didCreateFiles?: NextSignature; willCreateFiles?: NextSignature>; didRenameFiles?: NextSignature; willRenameFiles?: NextSignature>; didDeleteFiles?: NextSignature; willDeleteFiles?: NextSignature>; } interface Event { readonly files: ReadonlyArray; } declare abstract class FileOperationFeature> implements DynamicFeature { protected _client: BaseLanguageClient; private _event; private _registrationType; private _clientCapability; private _serverCapability; private _listener; private _filters; constructor(client: BaseLanguageClient, event: code.Event, registrationType: proto.RegistrationType, clientCapability: keyof proto.FileOperationClientCapabilities, serverCapability: keyof proto.FileOperationOptions); get registrationType(): proto.RegistrationType; fillClientCapabilities(capabilities: proto.ClientCapabilities): void; initialize(capabilities: proto.ServerCapabilities): void; register(data: RegistrationData): void; abstract send(data: E): Promise; unregister(id: string): void; dispose(): void; protected filter(event: E, prop: (i: I) => code.Uri): Promise; private static getFileType; private static asMinimatchOptions; } declare abstract class NotificationFileOperationFeature; }, P> extends FileOperationFeature { private _notificationType; private _accessUri; private _createParams; constructor(client: BaseLanguageClient, event: code.Event, notificationType: proto.ProtocolNotificationType, clientCapability: keyof proto.FileOperationClientCapabilities, serverCapability: keyof proto.FileOperationOptions, accessUri: (i: I) => code.Uri, createParams: (e: E) => P); send(originalEvent: E): Promise; protected abstract doSend(event: E, next: (event: E) => void): void; } export declare class DidCreateFilesFeature extends NotificationFileOperationFeature { constructor(client: BaseLanguageClient); protected doSend(event: code.FileCreateEvent, next: (event: code.FileCreateEvent) => void): void; } export declare class DidRenameFilesFeature extends NotificationFileOperationFeature<{ oldUri: code.Uri; newUri: code.Uri; }, code.FileRenameEvent, proto.RenameFilesParams> { constructor(client: BaseLanguageClient); protected doSend(event: code.FileRenameEvent, next: (event: code.FileRenameEvent) => void): void; } export declare class DidDeleteFilesFeature extends NotificationFileOperationFeature { constructor(client: BaseLanguageClient); protected doSend(event: code.FileCreateEvent, next: (event: code.FileCreateEvent) => void): void; } interface RequestEvent { readonly files: ReadonlyArray; waitUntil(thenable: Thenable): void; waitUntil(thenable: Thenable): void; } declare abstract class RequestFileOperationFeature, P> extends FileOperationFeature { private _requestType; private _accessUri; private _createParams; constructor(client: BaseLanguageClient, event: code.Event, requestType: proto.ProtocolRequestType, clientCapability: keyof proto.FileOperationClientCapabilities, serverCapability: keyof proto.FileOperationOptions, accessUri: (i: I) => code.Uri, createParams: (e: Event) => P); send(originalEvent: E & RequestEvent): Promise; private waitUntil; protected abstract doSend(event: E, next: (event: Event) => Thenable | Thenable): Thenable | Thenable; } export declare class WillCreateFilesFeature extends RequestFileOperationFeature { constructor(client: BaseLanguageClient); protected doSend(event: code.FileWillCreateEvent, next: (event: code.FileCreateEvent) => Thenable | Thenable): Thenable | Thenable; } export declare class WillRenameFilesFeature extends RequestFileOperationFeature<{ oldUri: code.Uri; newUri: code.Uri; }, code.FileWillRenameEvent, proto.RenameFilesParams> { constructor(client: BaseLanguageClient); protected doSend(event: code.FileWillRenameEvent, next: (event: code.FileRenameEvent) => Thenable | Thenable): Thenable | Thenable; } export declare class WillDeleteFilesFeature extends RequestFileOperationFeature { constructor(client: BaseLanguageClient); protected doSend(event: code.FileWillDeleteEvent, next: (event: code.FileDeleteEvent) => Thenable | Thenable): Thenable | Thenable; } export {};