import { IRPCProtocol } from '@opensumi/ide-connection';
import { CancellationToken, ILogger, URI, WithEventBus } from '@opensumi/ide-core-browser';
import { WorkbenchEditorService } from '@opensumi/ide-editor';
import { IExtensionStorageService } from '@opensumi/ide-extension-storage';
import { FileStat } from '@opensumi/ide-file-service';
import { IWorkspaceService } from '@opensumi/ide-workspace';
import { IBulkEditServiceShape, WorkspaceEditDidRenameFileEvent } from '@opensumi/ide-workspace-edit';
import { IExtHostStorage, IMainThreadWorkspace } from '../../../common/vscode';
import type * as model from '../../../common/vscode/model.api';
export declare class MainThreadWorkspace extends WithEventBus implements IMainThreadWorkspace {
    private rpcProtocol;
    private readonly proxy;
    private roots;
    workspaceService: IWorkspaceService;
    editorService: WorkbenchEditorService;
    private readonly fileSearchService;
    extensionStorageService: IExtensionStorageService;
    protected readonly bulkEditService: IBulkEditServiceShape;
    storageProxy: IExtHostStorage;
    logger: ILogger;
    private workspaceChangeEvent;
    constructor(rpcProtocol: IRPCProtocol);
    $startFileSearch(includePattern: string, options: {
        cwd?: string;
        absolute: boolean;
    }, excludePatternOrDisregardExcludes: string | false | undefined, maxResult: number | undefined, token: CancellationToken): Promise<string[]>;
    private isAnyRootChanged;
    processWorkspaceFoldersChanged(roots: FileStat[]): void;
    dispose(): void;
    $updateWorkspaceFolders(start: number, deleteCount?: number, workspaceToName?: {
        [key: string]: string;
    }, ...rootsToAdd: string[]): Promise<void>;
    $tryApplyWorkspaceEdit(dto: model.WorkspaceEditDto, metadata?: model.WorkspaceEditMetadataDto): Promise<boolean>;
    $save(uri: URI): Promise<URI | undefined>;
    $saveAs(uri: URI): Promise<URI | undefined>;
    $saveAll(): Promise<boolean>;
    onRenameFile(e: WorkspaceEditDidRenameFileEvent): void;
}
//# sourceMappingURL=main.thread.workspace.d.ts.map