1import { RequestHandler0, NotificationHandler, HandlerResult, CancellationToken } from 'vscode-jsonrpc';
2import { ProtocolRequestType0, ProtocolNotificationType } from './messages';
3export interface WorkspaceFoldersInitializeParams {
4    /**
5     * The actual configured workspace folders.
6     */
7    workspaceFolders: WorkspaceFolder[] | null;
8}
9export interface WorkspaceFoldersClientCapabilities {
10    /**
11     * The workspace client capabilities
12     */
13    workspace?: {
14        /**
15         * The client has support for workspace folders
16         *
17         * @since 3.6.0
18         */
19        workspaceFolders?: boolean;
20    };
21}
22export interface WorkspaceFoldersServerCapabilities {
23    /**
24     * The workspace server capabilities
25     */
26    workspace?: {
27        workspaceFolders?: {
28            /**
29             * The Server has support for workspace folders
30             */
31            supported?: boolean;
32            /**
33             * Whether the server wants to receive workspace folder
34             * change notifications.
35             *
36             * If a strings is provided the string is treated as a ID
37             * under which the notification is registered on the client
38             * side. The ID can be used to unregister for these events
39             * using the `client/unregisterCapability` request.
40             */
41            changeNotifications?: string | boolean;
42        };
43    };
44}
45export interface WorkspaceFolder {
46    /**
47     * The associated URI for this workspace folder.
48     */
49    uri: string;
50    /**
51     * The name of the workspace folder. Used to refer to this
52     * workspace folder in the user interface.
53     */
54    name: string;
55}
56/**
57 * The `workspace/workspaceFolders` is sent from the server to the client to fetch the open workspace folders.
58 */
59export declare namespace WorkspaceFoldersRequest {
60    const type: ProtocolRequestType0<WorkspaceFolder[] | null, never, void, void>;
61    type HandlerSignature = RequestHandler0<WorkspaceFolder[] | null, void>;
62    type MiddlewareSignature = (token: CancellationToken, next: HandlerSignature) => HandlerResult<WorkspaceFolder[] | null, void>;
63}
64/**
65 * The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server when the workspace
66 * folder configuration changes.
67 */
68export declare namespace DidChangeWorkspaceFoldersNotification {
69    const type: ProtocolNotificationType<DidChangeWorkspaceFoldersParams, void>;
70    type HandlerSignature = NotificationHandler<DidChangeWorkspaceFoldersParams>;
71    type MiddlewareSignature = (params: DidChangeWorkspaceFoldersParams, next: HandlerSignature) => void;
72}
73/**
74 * The parameters of a `workspace/didChangeWorkspaceFolders` notification.
75 */
76export interface DidChangeWorkspaceFoldersParams {
77    /**
78     * The actual workspace folder change event.
79     */
80    event: WorkspaceFoldersChangeEvent;
81}
82/**
83 * The workspace folder change event.
84 */
85export interface WorkspaceFoldersChangeEvent {
86    /**
87     * The array of added workspace folders
88     */
89    added: WorkspaceFolder[];
90    /**
91     * The array of the removed workspace folders
92     */
93    removed: WorkspaceFolder[];
94}
95