Files
turftracker/frontend/node_modules/splaytree/dist/index.d.ts
2026-04-09 13:19:47 -05:00

83 lines
2.6 KiB
TypeScript

import { default as Node } from './node';
import { Key } from './types';
export type Comparator<Key> = (a: Key, b: Key) => number;
export type Visitor<Key, Value> = (node: Node<Key, Value>) => undefined | boolean | void;
export type NodePrinter<Key, Value> = (node: Node<Key, Value>) => string;
declare function DEFAULT_COMPARE(a: Key, b: Key): number;
export default class Tree<Key = number, Value = any> {
private _comparator;
private _root;
private _size;
constructor(comparator?: typeof DEFAULT_COMPARE);
/**
* Inserts a key, allows duplicates
*/
insert(key: Key, data?: Value): Node<Key, Value>;
/**
* Adds a key, if it is not present in the tree
*/
add(key: Key, data?: Value): Node<Key, Value>;
/**
* @param {Key} key
* @return {Node|null}
*/
remove(key: Key): void;
/**
* Deletes i from the tree if it's there
*/
private _remove;
/**
* Removes and returns the node with smallest key
*/
pop(): {
key: Key;
data: Value;
} | null;
/**
* Find without splaying
*/
findStatic(key: Key): Node<Key, Value> | null;
find(key: Key): Node<Key, Value> | null;
contains(key: Key): boolean;
forEach(visitor: Visitor<Key, Value>, ctx?: any): Tree<Key, Value>;
/**
* Walk key range from `low` to `high`. Stops if `fn` returns a value.
*/
range(low: Key, high: Key, fn: Visitor<Key, Value>, ctx?: any): Tree<Key, Value>;
/**
* Returns array of keys
*/
keys(): Key[];
/**
* Returns array of all the data in the nodes
*/
values(): Value[];
min(): Key | null;
max(): Key | null;
minNode(t?: Node<Key, Value> | null): Node<Key, Value> | null;
maxNode(t?: Node<Key, Value> | null): Node<Key, Value> | null;
/**
* Returns node at given index
*/
at(index: number): Node<Key, Value> | null;
next(d: Node<Key, Value>): Node<Key, Value> | null;
prev(d: Node<Key, Value>): Node<Key, Value> | null;
clear(): Tree<Key, Value>;
toList(): Node<any, any>;
/**
* Bulk-load items. Both array have to be same size
*/
load(keys: Key[], values?: Value[], presort?: boolean): this;
isEmpty(): boolean;
get size(): number;
get root(): Node<Key, Value> | null;
toString(printNode?: NodePrinter<Key, Value>): string;
update(key: Key, newKey: Key, newData?: Value): void;
split(key: Key): {
left: Node<import('./types').Key, import('./types').Value> | null;
right: Node<import('./types').Key, import('./types').Value> | null;
};
[Symbol.iterator](): Generator<Node<Key, Value>, void, unknown>;
}
export {};