/** ******************************************************************************
 * Copyright (C) 2018 Red Hat, Inc. and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/
import { IRPCProtocol } from '@opensumi/ide-connection';
import { IDisposable } from '@opensumi/ide-core-common';
import { FileStat } from '@opensumi/ide-file-service';
import { UriComponents } from '../../../common/vscode/ext-types';
import * as files from '../../../common/vscode/file-system';
import { ExtHostFileSystemInfo } from './ext.host.file-system-info';
import type vscode from 'vscode';
export declare function convertToVSCFileStat(stat: FileStat): vscode.FileStat;
export declare class ExtHostFileSystem implements files.IExtHostFileSystemShape {
    private readonly rpcProtocol;
    private readonly _fileSystemInfo;
    private readonly _proxy;
    private readonly _fsProvider;
    private readonly _usedSchemes;
    private readonly _watches;
    private _handlePool;
    readonly fileSystem: vscode.FileSystem;
    constructor(rpcProtocol: IRPCProtocol, _fileSystemInfo: ExtHostFileSystemInfo);
    registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, options?: {
        isCaseSensitive?: boolean;
        isReadonly?: boolean;
    }): IDisposable;
    private static _asIStat;
    $stat(handle: number, resource: UriComponents): Promise<files.FileStat>;
    $readdir(handle: number, resource: UriComponents): Promise<[string, files.FileType][]>;
    $readFile(handle: number, resource: UriComponents): Promise<Uint8Array>;
    $writeFile(handle: number, resource: UriComponents, content: Uint8Array, opts: files.FileWriteOptions): Promise<void>;
    $delete(handle: number, resource: UriComponents, opts: files.FileDeleteOptions): Promise<void>;
    $rename(handle: number, oldUri: UriComponents, newUri: UriComponents, opts: files.FileOverwriteOptions): Promise<void>;
    $copy(handle: number, oldUri: UriComponents, newUri: UriComponents, opts: files.FileOverwriteOptions): Promise<void>;
    $mkdir(handle: number, resource: UriComponents): Promise<void>;
    $watch(handle: number, session: number, resource: UriComponents, opts: files.IWatchOptions): void;
    $unwatch(_handle: number, session: number): void;
    private _getFsProvider;
}
//# sourceMappingURL=ext.host.file-system.d.ts.map