import type { PriorityCompare } from './priorityQueue.js'; /** * # Splay Tree Set * * ## Description * A splay tree set is a self-balancing binary search tree that does not allow duplicate items. * The value of a splay tree is in it's amortized O(log n) for all insert, delete min/max, * and find min/max operations. * * ## Usage * * ```ts * import { VectorSet } from 'gis-tools-ts'; * * const vecSet = new VectorSet([], (a, b) => a - b); * * // If the item already exists, the existing item will be returned otherwise * // the new item will be both added and returned * let item = vecSet.add(1); * vecSet.add(2); * * console.log(vecSet.length); // 2 * // Get first and last items * let firstitem = vecSet.first(); // 1 * let lastitem = vecSet.last(); // 2 * // check if a value exists * console.log(vecSet.has(1)); // true * // look for a value right before one provided * console.log(vecSet.lastBefore(2)); // 1 * // look for a value right after one provided * console.log(vecSet.firstAfter(1)); // 2 * ``` * * ## Links * - TODO!() */ export declare class VectorSet { #private; private compare; /** @param compare - compare function */ constructor(compare?: PriorityCompare); /** @returns - the number of items in the set */ get length(): number; /** * Add an item * @param item - the item to add * @returns - the added item OR if the item already exists, the existing item */ add(item: T): T; /** * Check if an item exists * @param key - the item * @returns - true if the item exists */ has(key: T): boolean; /** * Delete an item. Return the deleted item if it exists otherwise undefined * @param key - the item * @returns - the deleted item */ delete(key: T): T | undefined; /** * Get the first item * @returns - the first item, undefined if the set is empty */ first(): T | undefined; /** * Get the last item * @returns - the last item, undefined if the set is empty */ last(): T | undefined; /** * Get the last item in the set that is strictly smaller than item. * Returns undefined if no item was not found. * @param item - the item to compare against * @returns - the last item before the comparison item provided */ lastBefore(item: T): T | undefined; /** * Get the first item in the set that is strictly larger than item. * Returns undefined if no item was not found. * @param item - the item to compare against * @returns - the first item after the comparison item provided */ firstAfter(item: T): T | undefined; } //# sourceMappingURL=vectorSet.d.ts.map