import { ReadonlyJSONObject, ReadonlyJSONValue } from '@lumino/coreutils';
export declare function sleep(timeout: number): Promise<void>;
export type ModifierKey = 'Shift' | 'Alt' | 'AltGraph' | 'Control' | 'Meta' | 'Accel';
/**
 * CodeMirror-proof implementation of event.getModifierState()
 */
export declare function getModifierState(event: MouseEvent | KeyboardEvent, modifierKey: ModifierKey): boolean;
export declare class DefaultMap<K, V> extends Map<K, V> {
    private defaultFactory;
    constructor(defaultFactory: (...args: any[]) => V, entries?: ReadonlyArray<readonly [K, V]> | null);
    get(k: K): V;
    getOrCreate(k: K, ...args: any[]): V;
}
/**
 * compare two URIs, discounting:
 * - drive capitalization
 * - uri encoding
 * TODO: probably use vscode-uri
 */
export declare function urisEqual(a: string, b: string): boolean;
/**
 * grossly detect whether a URI represents a file on a windows drive
 */
export declare function isWinPath(uri: string): RegExpMatchArray | null;
/**
 * lowercase the drive component of a URI
 */
export declare function normalizeWinPath(uri: string): string;
export declare function uriToContentsPath(child: string, parent?: string): string | null;
/**
 * The docs for many language servers show settings in the
 * VSCode format, e.g.: "pyls.plugins.pyflakes.enabled"
 *
 * VSCode converts that dot notation to JSON behind the scenes,
 * as the language servers themselves don't accept that syntax.
 */
export declare const expandPath: (path: string[], value: ReadonlyJSONValue) => ReadonlyJSONObject;
export declare const expandDottedPaths: (obj: ReadonlyJSONObject) => ReadonlyJSONObject;
interface ICollapsingResult {
    result: Record<string, ReadonlyJSONValue>;
    conflicts: Record<string, any[]>;
}
export declare function collapseToDotted(obj: ReadonlyJSONObject): ICollapsingResult;
export declare function escapeMarkdown(text: string): string;
export {};
