Skip to content

Commit 1d546ae

Browse files
author
François Wouts
authored
Add TypeScript definitions
1 parent 93177d9 commit 1d546ae

File tree

1 file changed

+212
-0
lines changed

1 file changed

+212
-0
lines changed

src/jsgraphs.d.ts

Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
// TODO: Delete methods that are only meant to be private.
2+
declare namespace Jss {
3+
function less(
4+
a1: any,
5+
a2: any,
6+
compare: (a1: any, a2: any) => number
7+
): boolean;
8+
9+
function exchange(a: any, i: number, j: number): void;
10+
11+
class Stack<T> {
12+
push(a: T): void;
13+
pop(): T;
14+
size(): number;
15+
isEmpty(): boolean;
16+
peep(): T;
17+
toArray(): T[];
18+
}
19+
20+
class Queue<T> {
21+
enqueue(item: T): number;
22+
dequeue(): T;
23+
size(): number;
24+
isEmpty(): boolean;
25+
toArray(): T[];
26+
}
27+
28+
class MinPQ<T> {
29+
constructor(compare: (a1: number, a2: number) => number);
30+
enqueue(item: T): void;
31+
swim(k: number): void;
32+
delMin(): T;
33+
sink(k: number): void;
34+
size(): number;
35+
isEmpty(): boolean;
36+
}
37+
38+
class QuickUnion {
39+
constructor(V: number);
40+
union(v: number, w: number): void;
41+
root(q: number): number;
42+
connected(v: number, w: number): boolean;
43+
}
44+
45+
class IndexMinPQ {
46+
constructor(N: number, compare: (a1: number, a2: number) => number);
47+
insert(index: number, key: number): void;
48+
decreaseKey(index: number, key: number): void;
49+
minKey(): number;
50+
min(): number;
51+
delMin(): number;
52+
swim(k: number): void;
53+
sink(k: number): void;
54+
containsIndex(index: number): boolean;
55+
isEmpty(): boolean;
56+
size(): number;
57+
}
58+
59+
type AnyGraph<T> =
60+
| Graph<T>
61+
| DiGraph<T>
62+
| WeightedGraph<T>
63+
| WeightedDiGraph<T>;
64+
65+
class Graph<T> {
66+
constructor(V: number);
67+
addEdge(v: number, w: number): void;
68+
adj(v: number): T[];
69+
node(v: number): T;
70+
edge(v: number, w: number): Edge | null;
71+
V: number;
72+
}
73+
74+
class DiGraph<T> {
75+
constructor(V: number);
76+
addEdge(v: number, w: number): void;
77+
adj(v: number): T[];
78+
node(v: number): T;
79+
edge(v: number, w: number): Edge | null;
80+
reverse(): DiGraph<T>;
81+
V: number;
82+
}
83+
84+
class Edge {
85+
constructor(v: number, w: number, weight: number);
86+
either(): number;
87+
other(x: number): number;
88+
from(): number;
89+
to(): number;
90+
}
91+
92+
class WeightedGraph<T> {
93+
constructor(V: number);
94+
addEdge(v: number, w: number): void;
95+
adj(v: number): T[];
96+
node(v: number): T;
97+
edge(v: number, w: number): Edge | null;
98+
V: number;
99+
}
100+
101+
class WeightedDiGraph<T> {
102+
constructor(V: number);
103+
addEdge(v: number, w: number): void;
104+
adj(v: number): T[];
105+
node(v: number): T;
106+
edge(v: number, w: number): Edge | null;
107+
toDiGraph(): DiGraph<T>;
108+
V: number;
109+
}
110+
111+
class FlowEdge {
112+
constructor(v: number, w: number, capacity: number);
113+
residualCapacityTo(x: number): number;
114+
addResidualFlowTo(x: number, deltaFlow: number): void;
115+
from(): number;
116+
to(): number;
117+
other(x: number): number;
118+
}
119+
120+
class FlowNetwork<T> {
121+
constructor(V: number);
122+
node(v: number): T;
123+
edge(v: number, w: number): Edge | null;
124+
addEdge(e: Edge): void;
125+
adj(v: number): T[];
126+
}
127+
128+
class DepthFirstSearch<T> {
129+
constructor(G: AnyGraph<T>, s: number);
130+
dfs(G: AnyGraph<T>, v: number): void;
131+
hasPathTo(v: number): boolean;
132+
pathTo(v: number): number[];
133+
}
134+
135+
class BreadthFirstSearch<T> {
136+
constructor(G: AnyGraph<T>, s: number);
137+
hasPathTo(v: number): boolean;
138+
pathTo(v: number): number[];
139+
}
140+
141+
class ConnectedComponents<T> {
142+
constructor(G: AnyGraph<T>);
143+
dfs(G: AnyGraph<T>, v: number): void;
144+
componentId(v: number): number;
145+
componetnCount(): number;
146+
}
147+
148+
class TopologicalSort<T> {
149+
constructor(G: AnyGraph<T>);
150+
dfs(G: AnyGraph<T>, v: number): void;
151+
order(): T[];
152+
}
153+
154+
class StronglyConnectedComponents<T> {
155+
constructor(G: AnyGraph<T>);
156+
dfs(G: AnyGraph<T>, v: number): void;
157+
componentId(v: number): number;
158+
componentCount(): number;
159+
}
160+
161+
class KruskalMST<T> {
162+
constructor(G: AnyGraph<T>);
163+
mst: Edge[];
164+
}
165+
166+
class LazyPrimMST<T> {
167+
constructor(G: AnyGraph<T>);
168+
visit(G: AnyGraph<T>, v: number): void;
169+
mst: Edge[];
170+
}
171+
172+
class EagerPrimMST<T> {
173+
constructor(G: AnyGraph<T>);
174+
visit(G: AnyGraph<T>, v: number): void;
175+
mst: Edge[];
176+
}
177+
178+
class Dijkstra<T> {
179+
constructor(G: AnyGraph<T>, s: number);
180+
relax(e: Edge): void;
181+
hasPathTo(v: number): boolean;
182+
pathTo(v: number): number[];
183+
distanceTo(v: number): number;
184+
}
185+
186+
class BellmanFord<T> {
187+
constructor(G: AnyGraph<T>, s: number);
188+
relax(e: Edge): void;
189+
hasPathTo(v: number): boolean;
190+
pathTo(v: number): number[];
191+
distanceTo(v: number): number;
192+
}
193+
194+
class TopologicalSortShortestPaths<T> {
195+
constructor(G: AnyGraph<T>, s: number);
196+
relax(e: Edge): void;
197+
hasPathTo(v: number): boolean;
198+
pathTo(v: number): number[];
199+
distanceTo(v: number): number;
200+
}
201+
202+
class FordFulkerson<T> {
203+
constructor(G: AnyGraph<T>, s: number, t: number);
204+
hasAugmentedPath(G: AnyGraph<T>): boolean;
205+
minCut(G: AnyGraph<T>): Edge[];
206+
value: number;
207+
}
208+
}
209+
210+
declare module "js-graph-algorithms" {
211+
export = Jss;
212+
}

0 commit comments

Comments
 (0)