-
Notifications
You must be signed in to change notification settings - Fork 5
/
index.d.ts
129 lines (76 loc) · 3.01 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/**
* Based on :
*
* dts-gen -e "const {TreeMap} = require('jstreemap'); new TreeMap()"
*
* dts-gen -e "const {TreeSet} = require('jstreemap'); new TreeSet()"
*/
declare module 'jstreemap' {
export type Entry<K, V> = [K, V];
interface Iterator<T, I extends Iterator<T, I>> {
next(): void;
prev(): void;
}
export interface SetIterator<T> extends Iterator<T, SetIterator<T>> {
key: T;
equals(it: SetIterator<T>): boolean;
}
export interface MapIterator<K, V> extends Iterator<K, MapIterator<K, V>> {
key: K;
value: V;
equals(it: MapIterator<K, V>): boolean;
}
export interface InsertionResult<T, I extends Iterator<T, I>> {
wasAdded: boolean;
wasReplaced: boolean;
iterator: I;
}
class Tree<K, V, E, I> {
compareFunc: (l: K, r: K) => 0 | 1 | -1;
size: number;
[Symbol.iterator](): IterableIterator<E>;
begin(): I;
end(): I;
rbegin(): I;
rend(): I;
clear(): void;
delete(key: K): void;
erase(it: I): void;
entries(): IterableIterator<E>;
keys(): IterableIterator<K>;
values(): IterableIterator<V>;
backward(): IterableIterator<E>;
find(key: K): I;
first(): E;
last(): E;
lowerBound(key: K): I;
upperBound(key: K): I;
forEach(callback : (element: E) => void): void;
has(key: K): boolean;
toString(): string;
}
export class TreeSet<T> extends Tree<T, T, T, SetIterator<T>> {
add(key: T): void;
insertOrReplace(key: T): InsertionResult<T, SetIterator<T>>;
insertUnique(key: T): InsertionResult<T, SetIterator<T>>;
}
export class TreeMap<K, V> extends Tree<K, V, Entry<K, V>, MapIterator<K, V>> {
get(key: K): V | undefined;
set(key: K, value: V): void;
insertOrReplace(key: K, value: V): InsertionResult<Entry<K, V>, MapIterator<K, V>>;
insertUnique(key: K, value: V): InsertionResult<Entry<K, V>, MapIterator<K, V>>;
}
export class TreeMultiMap<K, V> extends Tree<K, V, Entry<K, V>, MapIterator<K, V>> {
get(key: K): V | undefined;
set(key: K, value: V): void;
insertMulti(key: K, value: V): InsertionResult<Entry<K, V>, MapIterator<K, V>>;
insertOrReplace(key: K, value: V): InsertionResult<Entry<K, V>, MapIterator<K, V>>;
insertUnique(key: K, value: V): InsertionResult<Entry<K, V>, MapIterator<K, V>>;
}
export class TreeMultiSet<T> extends Tree<T, T, T, SetIterator<T>> {
add(key: T): void;
insertMulti(key: T): InsertionResult<T, SetIterator<T>>;
insertOrReplace(key: T): InsertionResult<T, SetIterator<T>>;
insertUnique(key: T): InsertionResult<T, SetIterator<T>>;
}
}