import { URI as Uri } from 'vscode-uri'; import { Iterator } from './iterator'; export declare function values(set: Set): V[]; export declare function values(map: Map): V[]; export declare function keys(map: Map): K[]; export declare function getOrSet(map: Map, key: K, value: V): V; export declare function mapToString(map: Map): string; export declare function setToString(set: Set): string; export declare function mapToSerializable(map: Map): [string, T][]; export declare function serializableToMap(serializable: [string, T][]): Map; export interface IKeyIterator { reset(key: string): this; next(): this; hasNext(): boolean; cmp(a: string): number; value(): string; } export declare class StringIterator implements IKeyIterator { private _value; private _pos; reset(key: string): this; next(): this; hasNext(): boolean; cmp(a: string): number; value(): string; } export declare class PathIterator implements IKeyIterator { private _value; private _from; private _to; reset(key: string): this; hasNext(): boolean; next(): this; cmp(a: string): number; value(): string; } export declare class TernarySearchTree { static forPaths(): TernarySearchTree; static forStrings(): TernarySearchTree; private _iter; private _root; constructor(segments: IKeyIterator); clear(): void; set(key: string, element: E): E | undefined; get(key: string): E | undefined; delete(key: string): void; findSubstr(key: string): E | undefined; findSuperstr(key: string): Iterator | undefined; private _nodeIterator; forEach(callback: (value: E, index: string) => any): void; private _forEach; } export declare class ResourceMap { protected readonly map: Map; protected readonly ignoreCase?: boolean; constructor(); set(resource: Uri, value: T): void; get(resource: Uri): T | undefined; has(resource: Uri): boolean; get size(): number; clear(): void; delete(resource: Uri): boolean; forEach(clb: (value: T) => void): void; values(): T[]; private toKey; keys(): Uri[]; clone(): ResourceMap; } export declare const enum Touch { None = 0, AsOld = 1, AsNew = 2 } export declare class LinkedMap { private _map; private _head; private _tail; private _size; constructor(); clear(): void; isEmpty(): boolean; get size(): number; has(key: K): boolean; get(key: K, touch?: Touch): V | undefined; set(key: K, value: V, touch?: Touch): void; delete(key: K): boolean; remove(key: K): V | undefined; shift(): V | undefined; forEach(callbackfn: (value: V, key: K, map: LinkedMap) => void, thisArg?: any): void; values(): V[]; keys(): K[]; protected trimOld(newSize: number): void; private addItemFirst; private addItemLast; private removeItem; private touch; toJSON(): [K, V][]; fromJSON(data: [K, V][]): void; } export declare class LRUCache extends LinkedMap { private _limit; private _ratio; constructor(limit: number, ratio?: number); get limit(): number; set limit(limit: number); get ratio(): number; set ratio(ratio: number); get(key: K): V | undefined; peek(key: K): V | undefined; set(key: K, value: V): void; private checkTrim; } export declare class DefaultMap { private defaultValue; private map; constructor(defaultValue: () => V); get(key: K): V; has(key: K): boolean; set(key: K, value: V): void; delete(key: K): void; clear(): void; forEach(fn: (value: V, key: K) => void): void; } export declare class SetMap { private map; add(key: K, value: V): void; delete(key: K, value: V): void; forEach(key: K, fn: (value: V) => void): void; } export declare class CaseInsensitiveMap extends Map { set(key: K, value: V): this; get(key: K): V | undefined; has(key: K): boolean; } export declare class MultiMap { private _map; get size(): number; get keys(): K[]; get values(): V[]; get(key: K): V[] | undefined; set(key: K, value: V): void; delete(key: K): void; } //# sourceMappingURL=map.d.ts.map