export interface RecursiveMap extends Map | V> { } export interface RecursiveEntries extends Array<[K, RecursiveEntries | V]> { } export declare type CompositeMapCopyMethod = "on-write" | "keys"; export interface CompositeMapOptions { /** * Indicates when CompositeMap key data passed to the constructor is copied. * * "on-write": Copy the data as necessary when changes are made. Incurs a performance pentalty, but preserves * the original data. * * "keys": Copy the key data. More performant than "on-write" when there are few entries, but less performant * when there are many. This is the default option. */ copy?: CompositeMapCopyMethod; /** * Indicates the length of the key for this map. Only used when constructing using RecursiveEntries since the * key-length cannot be inferred. */ keyLength?: number; } export declare class CompositeMap { private data; private keyLength; private copiedSet?; constructor(); constructor(entries: CompositeMap | CompositeMap1 | CompositeMap2 | CompositeMap3 | CompositeMap4 | CompositeMap5 | CompositeMap6 | CompositeMap7 | CompositeMap8 | CompositeMap9, options?: CompositeMapOptions); constructor(entries: RecursiveEntries, options: CompositeMapOptions & { keyLength: number; }); set(key: K[], value: V): this; clear(): void; delete(key: K[]): boolean; has(key: K[]): boolean; get(key: K[]): V | RecursiveMap | undefined; forEach(callbackfn: (value: V, key: K[]) => void): void; keys(): IterableIterator; values(): IterableIterator; entries(): IterableIterator<[K[], V]>; [Symbol.iterator](): IterableIterator<[K[], V]>; toJSON(): RecursiveEntries; private copySection; } export interface RecursiveMap1 extends Map {} export interface RecursiveMap2 extends Map> {} export interface RecursiveMap3 extends Map> {} export interface RecursiveMap4 extends Map> {} export interface RecursiveMap5 extends Map> {} export interface RecursiveMap6 extends Map> {} export interface RecursiveMap7 extends Map> {} export interface RecursiveMap8 extends Map> {} export interface RecursiveMap9 extends Map> {} export interface RecursiveEntries1 extends Array<[K1, V]> {} export interface RecursiveEntries2 extends Array<[K1, RecursiveEntries1]> {} export interface RecursiveEntries3 extends Array<[K1, RecursiveEntries2]> {} export interface RecursiveEntries4 extends Array<[K1, RecursiveEntries3]> {} export interface RecursiveEntries5 extends Array<[K1, RecursiveEntries4]> {} export interface RecursiveEntries6 extends Array<[K1, RecursiveEntries5]> {} export interface RecursiveEntries7 extends Array<[K1, RecursiveEntries6]> {} export interface RecursiveEntries8 extends Array<[K1, RecursiveEntries7]> {} export interface RecursiveEntries9 extends Array<[K1, RecursiveEntries8]> {} export declare class CompositeMap1 { constructor(); constructor(entries: CompositeMap1 | CompositeMap, options?: CompositeMapOptions); constructor(entries: RecursiveEntries1 | RecursiveEntries, options: CompositeMapOptions & { keyLength: 1 }); set(key: [K1], value: V): this; clear(): void; delete(key: [K1] | []): boolean; has(key: [K1] | []): boolean; get(key: [K1]): V | undefined; get(key: []): RecursiveMap1 | undefined; forEach(callbackfn: (value: V, key: [K1]) => void): void; keys(): IterableIterator<[K1]>; values(): IterableIterator; entries(): IterableIterator<[[K1], V]>; [Symbol.iterator](): IterableIterator<[[K1], V]>; toJSON(): RecursiveEntries1; } export declare class CompositeMap2 { constructor(); constructor(entries: CompositeMap2 | CompositeMap, options?: CompositeMapOptions); constructor(entries: RecursiveEntries2 | RecursiveEntries, options: CompositeMapOptions & { keyLength: 2 }); set(key: [K1, K2], value: V): this; clear(): void; delete(key: [K1, K2] | [K1] | []): boolean; has(key: [K1, K2] | [K1] | []): boolean; get(key: [K1, K2]): V | undefined; get(key: [K1]): RecursiveMap1 | undefined; get(key: []): RecursiveMap2 | undefined; forEach(callbackfn: (value: V, key: [K1, K2]) => void): void; keys(): IterableIterator<[K1, K2]>; values(): IterableIterator; entries(): IterableIterator<[[K1, K2], V]>; [Symbol.iterator](): IterableIterator<[[K1, K2], V]>; toJSON(): RecursiveEntries2; } export declare class CompositeMap3 { constructor(); constructor(entries: CompositeMap3 | CompositeMap, options?: CompositeMapOptions); constructor(entries: RecursiveEntries3 | RecursiveEntries, options: CompositeMapOptions & { keyLength: 3 }); set(key: [K1, K2, K3], value: V): this; clear(): void; delete(key: [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; has(key: [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; get(key: [K1, K2, K3]): V | undefined; get(key: [K1, K2]): RecursiveMap1 | undefined; get(key: [K1]): RecursiveMap2 | undefined; get(key: []): RecursiveMap3 | undefined; forEach(callbackfn: (value: V, key: [K1, K2, K3]) => void): void; keys(): IterableIterator<[K1, K2, K3]>; values(): IterableIterator; entries(): IterableIterator<[[K1, K2, K3], V]>; [Symbol.iterator](): IterableIterator<[[K1, K2, K3], V]>; toJSON(): RecursiveEntries3; } export declare class CompositeMap4 { constructor(); constructor(entries: CompositeMap4 | CompositeMap, options?: CompositeMapOptions); constructor(entries: RecursiveEntries4 | RecursiveEntries, options: CompositeMapOptions & { keyLength: 4 }); set(key: [K1, K2, K3, K4], value: V): this; clear(): void; delete(key: [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; has(key: [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; get(key: [K1, K2, K3, K4]): V | undefined; get(key: [K1, K2, K3]): RecursiveMap1 | undefined; get(key: [K1, K2]): RecursiveMap2 | undefined; get(key: [K1]): RecursiveMap3 | undefined; get(key: []): RecursiveMap4 | undefined; forEach(callbackfn: (value: V, key: [K1, K2, K3, K4]) => void): void; keys(): IterableIterator<[K1, K2, K3, K4]>; values(): IterableIterator; entries(): IterableIterator<[[K1, K2, K3, K4], V]>; [Symbol.iterator](): IterableIterator<[[K1, K2, K3, K4], V]>; toJSON(): RecursiveEntries4; } export declare class CompositeMap5 { constructor(); constructor(entries: CompositeMap5 | CompositeMap, options?: CompositeMapOptions); constructor(entries: RecursiveEntries5 | RecursiveEntries, options: CompositeMapOptions & { keyLength: 5 }); set(key: [K1, K2, K3, K4, K5], value: V): this; clear(): void; delete(key: [K1, K2, K3, K4, K5] | [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; has(key: [K1, K2, K3, K4, K5] | [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; get(key: [K1, K2, K3, K4, K5]): V | undefined; get(key: [K1, K2, K3, K4]): RecursiveMap1 | undefined; get(key: [K1, K2, K3]): RecursiveMap2 | undefined; get(key: [K1, K2]): RecursiveMap3 | undefined; get(key: [K1]): RecursiveMap4 | undefined; get(key: []): RecursiveMap5 | undefined; forEach(callbackfn: (value: V, key: [K1, K2, K3, K4, K5]) => void): void; keys(): IterableIterator<[K1, K2, K3, K4, K5]>; values(): IterableIterator; entries(): IterableIterator<[[K1, K2, K3, K4, K5], V]>; [Symbol.iterator](): IterableIterator<[[K1, K2, K3, K4, K5], V]>; toJSON(): RecursiveEntries5; } export declare class CompositeMap6 { constructor(); constructor(entries: CompositeMap6 | CompositeMap, options?: CompositeMapOptions); constructor(entries: RecursiveEntries6 | RecursiveEntries, options: CompositeMapOptions & { keyLength: 6 }); set(key: [K1, K2, K3, K4, K5, K6], value: V): this; clear(): void; delete(key: [K1, K2, K3, K4, K5, K6] | [K1, K2, K3, K4, K5] | [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; has(key: [K1, K2, K3, K4, K5, K6] | [K1, K2, K3, K4, K5] | [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; get(key: [K1, K2, K3, K4, K5, K6]): V | undefined; get(key: [K1, K2, K3, K4, K5]): RecursiveMap1 | undefined; get(key: [K1, K2, K3, K4]): RecursiveMap2 | undefined; get(key: [K1, K2, K3]): RecursiveMap3 | undefined; get(key: [K1, K2]): RecursiveMap4 | undefined; get(key: [K1]): RecursiveMap5 | undefined; get(key: []): RecursiveMap6 | undefined; forEach(callbackfn: (value: V, key: [K1, K2, K3, K4, K5, K6]) => void): void; keys(): IterableIterator<[K1, K2, K3, K4, K5, K6]>; values(): IterableIterator; entries(): IterableIterator<[[K1, K2, K3, K4, K5, K6], V]>; [Symbol.iterator](): IterableIterator<[[K1, K2, K3, K4, K5, K6], V]>; toJSON(): RecursiveEntries6; } export declare class CompositeMap7 { constructor(); constructor(entries: CompositeMap7 | CompositeMap, options?: CompositeMapOptions); constructor(entries: RecursiveEntries7 | RecursiveEntries, options: CompositeMapOptions & { keyLength: 7 }); set(key: [K1, K2, K3, K4, K5, K6, K7], value: V): this; clear(): void; delete(key: [K1, K2, K3, K4, K5, K6, K7] | [K1, K2, K3, K4, K5, K6] | [K1, K2, K3, K4, K5] | [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; has(key: [K1, K2, K3, K4, K5, K6, K7] | [K1, K2, K3, K4, K5, K6] | [K1, K2, K3, K4, K5] | [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; get(key: [K1, K2, K3, K4, K5, K6, K7]): V | undefined; get(key: [K1, K2, K3, K4, K5, K6]): RecursiveMap1 | undefined; get(key: [K1, K2, K3, K4, K5]): RecursiveMap2 | undefined; get(key: [K1, K2, K3, K4]): RecursiveMap3 | undefined; get(key: [K1, K2, K3]): RecursiveMap4 | undefined; get(key: [K1, K2]): RecursiveMap5 | undefined; get(key: [K1]): RecursiveMap6 | undefined; get(key: []): RecursiveMap7 | undefined; forEach(callbackfn: (value: V, key: [K1, K2, K3, K4, K5, K6, K7]) => void): void; keys(): IterableIterator<[K1, K2, K3, K4, K5, K6, K7]>; values(): IterableIterator; entries(): IterableIterator<[[K1, K2, K3, K4, K5, K6, K7], V]>; [Symbol.iterator](): IterableIterator<[[K1, K2, K3, K4, K5, K6, K7], V]>; toJSON(): RecursiveEntries7; } export declare class CompositeMap8 { constructor(); constructor(entries: CompositeMap8 | CompositeMap, options?: CompositeMapOptions); constructor(entries: RecursiveEntries8 | RecursiveEntries, options: CompositeMapOptions & { keyLength: 8 }); set(key: [K1, K2, K3, K4, K5, K6, K7, K8], value: V): this; clear(): void; delete(key: [K1, K2, K3, K4, K5, K6, K7, K8] | [K1, K2, K3, K4, K5, K6, K7] | [K1, K2, K3, K4, K5, K6] | [K1, K2, K3, K4, K5] | [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; has(key: [K1, K2, K3, K4, K5, K6, K7, K8] | [K1, K2, K3, K4, K5, K6, K7] | [K1, K2, K3, K4, K5, K6] | [K1, K2, K3, K4, K5] | [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; get(key: [K1, K2, K3, K4, K5, K6, K7, K8]): V | undefined; get(key: [K1, K2, K3, K4, K5, K6, K7]): RecursiveMap1 | undefined; get(key: [K1, K2, K3, K4, K5, K6]): RecursiveMap2 | undefined; get(key: [K1, K2, K3, K4, K5]): RecursiveMap3 | undefined; get(key: [K1, K2, K3, K4]): RecursiveMap4 | undefined; get(key: [K1, K2, K3]): RecursiveMap5 | undefined; get(key: [K1, K2]): RecursiveMap6 | undefined; get(key: [K1]): RecursiveMap7 | undefined; get(key: []): RecursiveMap8 | undefined; forEach(callbackfn: (value: V, key: [K1, K2, K3, K4, K5, K6, K7, K8]) => void): void; keys(): IterableIterator<[K1, K2, K3, K4, K5, K6, K7, K8]>; values(): IterableIterator; entries(): IterableIterator<[[K1, K2, K3, K4, K5, K6, K7, K8], V]>; [Symbol.iterator](): IterableIterator<[[K1, K2, K3, K4, K5, K6, K7, K8], V]>; toJSON(): RecursiveEntries8; } export declare class CompositeMap9 { constructor(); constructor(entries: CompositeMap9 | CompositeMap, options?: CompositeMapOptions); constructor(entries: RecursiveEntries9 | RecursiveEntries, options: CompositeMapOptions & { keyLength: 9 }); set(key: [K1, K2, K3, K4, K5, K6, K7, K8, K9], value: V): this; clear(): void; delete(key: [K1, K2, K3, K4, K5, K6, K7, K8, K9] | [K1, K2, K3, K4, K5, K6, K7, K8] | [K1, K2, K3, K4, K5, K6, K7] | [K1, K2, K3, K4, K5, K6] | [K1, K2, K3, K4, K5] | [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; has(key: [K1, K2, K3, K4, K5, K6, K7, K8, K9] | [K1, K2, K3, K4, K5, K6, K7, K8] | [K1, K2, K3, K4, K5, K6, K7] | [K1, K2, K3, K4, K5, K6] | [K1, K2, K3, K4, K5] | [K1, K2, K3, K4] | [K1, K2, K3] | [K1, K2] | [K1] | []): boolean; get(key: [K1, K2, K3, K4, K5, K6, K7, K8, K9]): V | undefined; get(key: [K1, K2, K3, K4, K5, K6, K7, K8]): RecursiveMap1 | undefined; get(key: [K1, K2, K3, K4, K5, K6, K7]): RecursiveMap2 | undefined; get(key: [K1, K2, K3, K4, K5, K6]): RecursiveMap3 | undefined; get(key: [K1, K2, K3, K4, K5]): RecursiveMap4 | undefined; get(key: [K1, K2, K3, K4]): RecursiveMap5 | undefined; get(key: [K1, K2, K3]): RecursiveMap6 | undefined; get(key: [K1, K2]): RecursiveMap7 | undefined; get(key: [K1]): RecursiveMap8 | undefined; get(key: []): RecursiveMap9 | undefined; forEach(callbackfn: (value: V, key: [K1, K2, K3, K4, K5, K6, K7, K8, K9]) => void): void; keys(): IterableIterator<[K1, K2, K3, K4, K5, K6, K7, K8, K9]>; values(): IterableIterator; entries(): IterableIterator<[[K1, K2, K3, K4, K5, K6, K7, K8, K9], V]>; [Symbol.iterator](): IterableIterator<[[K1, K2, K3, K4, K5, K6, K7, K8, K9], V]>; toJSON(): RecursiveEntries9; }