import { Contents } from '@jupyterlab/services';
import { IStateDB } from '@jupyterlab/statedb';
import { ITranslator } from '@jupyterlab/translation';
import { SidePanel, Toolbar } from '@jupyterlab/ui-components';
import { ISignal } from '@lumino/signaling';
import { Panel } from '@lumino/widgets';
import { BreadCrumbs } from './crumbs';
import { DirListing } from './listing';
import { FilterFileBrowserModel } from './model';
/**
 * A widget which hosts a file browser.
 *
 * The widget uses the Jupyter Contents API to retrieve contents,
 * and presents itself as a flat list of files and directories with
 * breadcrumbs.
 */
export declare class FileBrowser extends SidePanel {
    /**
     * Construct a new file browser.
     *
     * @param options - The file browser options.
     */
    constructor(options: FileBrowser.IOptions);
    /**
     * The model used by the file browser.
     */
    readonly model: FilterFileBrowserModel;
    /**
     * Whether to show active file in file browser
     */
    get navigateToCurrentDirectory(): boolean;
    set navigateToCurrentDirectory(value: boolean);
    /**
     * Whether to show the last modified column
     */
    get showLastModifiedColumn(): boolean;
    set showLastModifiedColumn(value: boolean);
    /**
     * Number of directory items to show on the left side of the ellipsis in breadcrumbs.
     */
    get minimumBreadcrumbsLeftItems(): number;
    set minimumBreadcrumbsLeftItems(value: number);
    /**
     * Number of directory items to show on the right side of the ellipsis in breadcrumbs.
     */
    get minimumBreadcrumbsRightItems(): number;
    set minimumBreadcrumbsRightItems(value: number);
    /**
     * Whether to show the full path in the breadcrumbs
     */
    get showFullPath(): boolean;
    set showFullPath(value: boolean);
    /**
     * Whether to show the file size column
     */
    get showFileSizeColumn(): boolean;
    set showFileSizeColumn(value: boolean);
    /**
     * Whether to show hidden files
     */
    get showHiddenFiles(): boolean;
    set showHiddenFiles(value: boolean);
    /**
     * Whether to show checkboxes next to files and folders
     */
    get showFileCheckboxes(): boolean;
    set showFileCheckboxes(value: boolean);
    /**
     * Whether to show a text box to filter files by name.
     */
    get showFileFilter(): boolean;
    set showFileFilter(value: boolean);
    /**
     * Whether to sort notebooks above other files
     */
    get sortNotebooksFirst(): boolean;
    set sortNotebooksFirst(value: boolean);
    /**
     * Whether to allow single click files and directories
     */
    get singleClickNavigation(): boolean;
    set singleClickNavigation(value: boolean);
    /**
     * Whether to allow upload of files.
     */
    get allowFileUploads(): boolean;
    set allowFileUploads(value: boolean);
    /**
     * Create an iterator over the listing's selected items.
     *
     * @returns A new iterator over the listing's selected items.
     */
    selectedItems(): IterableIterator<Contents.IModel>;
    /**
     * A signal emitted when the selection changes in the file browser.
     */
    get selectionChanged(): ISignal<this, void>;
    /**
     * Select an item by name.
     *
     * @param name - The name of the item to select.
     */
    selectItemByName(name: string): Promise<void>;
    clearSelectedItems(): void;
    /**
     * Rename the first currently selected item.
     *
     * @returns A promise that resolves with the new name of the item.
     */
    rename(): Promise<string>;
    /**
     * Cut the selected items.
     */
    cut(): void;
    /**
     * Copy the selected items.
     */
    copy(): void;
    /**
     * Paste the items from the clipboard.
     *
     * @returns A promise that resolves when the operation is complete.
     */
    paste(): Promise<void>;
    private _createNew;
    /**
     * Create a new directory
     */
    createNewDirectory(): Promise<Contents.IModel>;
    /**
     * Create a new file
     */
    createNewFile(options: FileBrowser.IFileOptions): Promise<Contents.IModel>;
    /**
     * Delete the currently selected item(s).
     *
     * @returns A promise that resolves when the operation is complete.
     */
    delete(): Promise<void>;
    /**
     * Duplicate the currently selected item(s).
     *
     * @returns A promise that resolves when the operation is complete.
     */
    duplicate(): Promise<void>;
    /**
     * Select all listing items.
     */
    selectAll(): Promise<void>;
    /**
     * Download the currently selected item(s).
     */
    download(): Promise<void>;
    /**
     * cd ..
     *
     * Go up one level in the directory tree.
     */
    goUp(): Promise<void>;
    /**
     * Shut down kernels on the applicable currently selected items.
     *
     * @returns A promise that resolves when the operation is complete.
     */
    shutdownKernels(): Promise<void>;
    /**
     * Select next item.
     */
    selectNext(): void;
    /**
     * Select previous item.
     */
    selectPrevious(): void;
    /**
     * Find a model given a click.
     *
     * @param event - The mouse event.
     *
     * @returns The model for the selected file.
     */
    modelForClick(event: MouseEvent): Contents.IModel | undefined;
    /**
     * Create the underlying DirListing instance.
     *
     * @param options - The DirListing constructor options.
     *
     * @returns The created DirListing instance.
     */
    protected createDirListing(options: DirListing.IOptions): DirListing;
    protected translator: ITranslator;
    /**
     * Handle a connection lost signal from the model.
     */
    private _onConnectionFailure;
    /**
     * Given a drive name and a local path, return the full
     * drive path which includes the drive name and the local path.
     *
     * @param driveName the name of the drive
     * @param localPath the local path on the drive.
     *
     * @returns the full drive path
     */
    private _toDrivePath;
    protected filterToolbar: Toolbar;
    protected listing: DirListing;
    protected crumbs: BreadCrumbs;
    protected mainPanel: Panel;
    private _directoryPending;
    private _filePending;
    private _fileFilterRef;
    private _manager;
    private _navigateToCurrentDirectory;
    private _allowSingleClick;
    private _showFileCheckboxes;
    private _showFileFilter;
    private _showFileSizeColumn;
    private _showHiddenFiles;
    private _showLastModifiedColumn;
    private _sortNotebooksFirst;
    private _allowFileUploads;
    private _selectionChanged;
}
/**
 * The namespace for the `FileBrowser` class statics.
 */
export declare namespace FileBrowser {
    /**
     * An options object for initializing a file browser widget.
     */
    interface IOptions {
        /**
         * The widget/DOM id of the file browser.
         */
        id: string;
        /**
         * A file browser model instance.
         */
        model: FilterFileBrowserModel;
        /**
         * An optional renderer for the directory listing area.
         *
         * The default is a shared instance of `DirListing.Renderer`.
         */
        renderer?: DirListing.IRenderer;
        /**
         * Whether a file browser automatically restores state when instantiated.
         * The default is `true`.
         *
         * #### Notes
         * The file browser model will need to be restored manually for the file
         * browser to be able to save its state.
         */
        restore?: boolean;
        /**
         * The application language translator.
         */
        translator?: ITranslator;
        /**
         * An optional state database. If provided, the widget will restore
         * the columns sizes
         */
        state?: IStateDB;
        /**
         * Callback overriding action performed when user asks to open a file.
         * The default is to open the file in the main area if it is not open already, or to reveal it otherwise.
         */
        handleOpenFile?: (path: string) => void;
    }
    /**
     * An options object for creating a file.
     */
    interface IFileOptions {
        /**
         * The file extension.
         */
        ext: string;
    }
}
