import type { Event, FileSystem, NotebookData, NotebookDocument, NotebookDocumentChangeEvent, ResourceTrustRequestOptions, TextDocument, TextDocumentChangeEvent, TextEditorSelectionChangeEvent, Uri, WorkspaceEdit, WorkspaceFolder, WorkspaceFoldersChangeEvent, WorkspaceTrustRequestOptions } from 'vscode';
import { Emitter } from '../../../util/vs/base/common/event';
import { IDisposable } from '../../../util/vs/base/common/lifecycle';
import { URI } from '../../../util/vs/base/common/uri';
import { NotebookDocumentSnapshot } from '../../editing/common/notebookDocumentSnapshot';
import { TextDocumentSnapshot } from '../../editing/common/textDocumentSnapshot';
export declare const IWorkspaceService: import("../../../util/common/services").ServiceIdentifier<IWorkspaceService>;
export interface IWorkspaceService {
    readonly _serviceBrand: undefined;
    textDocuments: readonly TextDocument[];
    notebookDocuments: readonly NotebookDocument[];
    readonly onDidOpenTextDocument: Event<TextDocument>;
    readonly onDidCloseTextDocument: Event<TextDocument>;
    readonly onDidOpenNotebookDocument: Event<NotebookDocument>;
    readonly onDidCloseNotebookDocument: Event<NotebookDocument>;
    readonly onDidChangeTextDocument: Event<TextDocumentChangeEvent>;
    readonly onDidChangeNotebookDocument: Event<NotebookDocumentChangeEvent>;
    readonly onDidChangeWorkspaceFolders: Event<WorkspaceFoldersChangeEvent>;
    readonly onDidChangeTextEditorSelection: Event<TextEditorSelectionChangeEvent>;
    openTextDocument(uri: Uri): Promise<TextDocument>;
    fs: FileSystem;
    showTextDocument(document: TextDocument): Promise<void>;
    openTextDocumentAndSnapshot(uri: Uri): Promise<TextDocumentSnapshot>;
    openNotebookDocumentAndSnapshot(uri: Uri, format: 'xml' | 'json' | 'text'): Promise<NotebookDocumentSnapshot>;
    openNotebookDocument(uri: Uri): Promise<NotebookDocument>;
    openNotebookDocument(notebookType: string, content?: NotebookData): Promise<NotebookDocument>;
    getWorkspaceFolders(): URI[];
    getWorkspaceFolder(resource: URI): URI | undefined;
    getWorkspaceFolderName(workspaceFolderUri: URI): string;
    showWorkspaceFolderPicker(): Promise<WorkspaceFolder | undefined>;
    asRelativePath(pathOrUri: string | Uri, includeWorkspaceFolder?: boolean): string;
    applyEdit(edit: WorkspaceEdit): Thenable<boolean>;
    /**
     * Ensures that the workspace has fully loaded before returning. This is useful for
     * virtual workspaces where we need to ensure that the contents of the workspace
     * has been downloaded before we can use them.
     */
    ensureWorkspaceIsFullyLoaded(): Promise<void>;
    isResourceTrusted(resource: Uri): Thenable<boolean>;
    requestResourceTrust(options: ResourceTrustRequestOptions): Thenable<boolean | undefined>;
    requestWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Thenable<boolean | undefined>;
}
export declare abstract class AbstractWorkspaceService implements IWorkspaceService {
    readonly _serviceBrand: undefined;
    abstract textDocuments: readonly TextDocument[];
    abstract notebookDocuments: readonly NotebookDocument[];
    abstract readonly onDidOpenTextDocument: Event<TextDocument>;
    abstract readonly onDidCloseTextDocument: Event<TextDocument>;
    abstract readonly onDidOpenNotebookDocument: Event<NotebookDocument>;
    abstract readonly onDidCloseNotebookDocument: Event<NotebookDocument>;
    abstract readonly onDidChangeTextDocument: Event<TextDocumentChangeEvent>;
    abstract readonly onDidChangeWorkspaceFolders: Event<WorkspaceFoldersChangeEvent>;
    abstract readonly onDidChangeNotebookDocument: Event<NotebookDocumentChangeEvent>;
    abstract readonly onDidChangeTextEditorSelection: Event<TextEditorSelectionChangeEvent>;
    abstract openTextDocument(uri: Uri): Promise<TextDocument>;
    abstract fs: FileSystem;
    abstract showTextDocument(document: TextDocument): Promise<void>;
    abstract openNotebookDocument(uri: Uri): Promise<NotebookDocument>;
    abstract openNotebookDocument(notebookType: string, content?: NotebookData): Promise<NotebookDocument>;
    abstract getWorkspaceFolders(): URI[];
    abstract ensureWorkspaceIsFullyLoaded(): Promise<void>;
    abstract showWorkspaceFolderPicker(): Promise<WorkspaceFolder | undefined>;
    abstract getWorkspaceFolderName(workspaceFolderUri: URI): string;
    abstract applyEdit(edit: WorkspaceEdit): Thenable<boolean>;
    abstract isResourceTrusted(resource: Uri): Thenable<boolean>;
    abstract requestResourceTrust(options: ResourceTrustRequestOptions): Thenable<boolean | undefined>;
    abstract requestWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Thenable<boolean | undefined>;
    asRelativePath(pathOrUri: string | Uri, includeWorkspaceFolder?: boolean): string;
    openTextDocumentAndSnapshot(uri: Uri): Promise<TextDocumentSnapshot>;
    openNotebookDocumentAndSnapshot(uri: Uri, format: 'xml' | 'json' | 'text'): Promise<NotebookDocumentSnapshot>;
    getWorkspaceFolder(resource: URI): URI | undefined;
}
export declare function getWorkspaceFileDisplayPath(workspaceService: IWorkspaceService, file: URI): string;
export declare class NullWorkspaceService extends AbstractWorkspaceService implements IDisposable {
    fs: FileSystem;
    private readonly disposables;
    readonly didOpenTextDocumentEmitter: Emitter<TextDocument>;
    readonly didCloseTextDocumentEmitter: Emitter<TextDocument>;
    readonly didOpenNotebookDocumentEmitter: Emitter<NotebookDocument>;
    readonly didCloseNotebookDocumentEmitter: Emitter<NotebookDocument>;
    readonly didChangeTextDocumentEmitter: Emitter<TextDocumentChangeEvent>;
    readonly didChangeWorkspaceFoldersEmitter: Emitter<WorkspaceFoldersChangeEvent>;
    readonly didChangeNotebookDocumentEmitter: Emitter<NotebookDocumentChangeEvent>;
    readonly didChangeTextEditorSelectionEmitter: Emitter<TextEditorSelectionChangeEvent>;
    readonly onDidChangeTextDocument: import("../../../util/vs/base/common/event").Event<TextDocumentChangeEvent>;
    readonly onDidCloseTextDocument: import("../../../util/vs/base/common/event").Event<TextDocument>;
    readonly onDidOpenNotebookDocument: import("../../../util/vs/base/common/event").Event<NotebookDocument>;
    readonly onDidCloseNotebookDocument: import("../../../util/vs/base/common/event").Event<NotebookDocument>;
    readonly onDidOpenTextDocument: import("../../../util/vs/base/common/event").Event<TextDocument>;
    readonly onDidChangeWorkspaceFolders: import("../../../util/vs/base/common/event").Event<WorkspaceFoldersChangeEvent>;
    readonly onDidChangeNotebookDocument: import("../../../util/vs/base/common/event").Event<NotebookDocumentChangeEvent>;
    readonly onDidChangeTextEditorSelection: import("../../../util/vs/base/common/event").Event<TextEditorSelectionChangeEvent>;
    private readonly workspaceFolder;
    private readonly _textDocuments;
    private readonly _notebookDocuments;
    constructor(workspaceFolders?: URI[], textDocuments?: TextDocument[], notebookDocuments?: NotebookDocument[]);
    get textDocuments(): TextDocument[];
    showTextDocument(document: TextDocument): Promise<void>;
    openTextDocument(uri: Uri): Promise<TextDocument>;
    openNotebookDocument(uri: Uri): Promise<NotebookDocument>;
    openNotebookDocument(notebookType: string, content?: NotebookData): Promise<NotebookDocument>;
    get notebookDocuments(): readonly NotebookDocument[];
    getWorkspaceFolders(): URI[];
    getWorkspaceFolderName(workspaceFolderUri: URI): string;
    ensureWorkspaceIsFullyLoaded(): Promise<void>;
    showWorkspaceFolderPicker(): Promise<undefined>;
    applyEdit(): Promise<boolean>;
    dispose(): void;
    isResourceTrusted(_resource: Uri): Thenable<boolean>;
    requestResourceTrust(options: ResourceTrustRequestOptions): Thenable<boolean | undefined>;
    requestWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Thenable<boolean | undefined>;
}
//# sourceMappingURL=workspaceService.d.ts.map