import TreeContainer from './Base'; import TreeIterator from './Base/TreeIterator'; import { TreeNode } from './Base/TreeNode'; import { initContainer, IteratorType } from "../ContainerBase"; declare class OrderedSetIterator extends TreeIterator { container: OrderedSet; constructor(node: TreeNode, header: TreeNode, container: OrderedSet, iteratorType?: IteratorType); get pointer(): NonNullable; copy(): OrderedSetIterator; equals(iter: OrderedSetIterator): boolean; } export type { OrderedSetIterator }; declare class OrderedSet extends TreeContainer { /** * @param container - The initialization container. * @param cmp - The compare function. * @param enableIndex - Whether to enable iterator indexing function. * @example * new OrderedSet(); * new OrderedSet([0, 1, 2]); * new OrderedSet([0, 1, 2], (x, y) => x - y); * new OrderedSet([0, 1, 2], (x, y) => x - y, true); */ constructor(container?: initContainer, cmp?: (x: K, y: K) => number, enableIndex?: boolean); begin(): OrderedSetIterator; end(): OrderedSetIterator; rBegin(): OrderedSetIterator; rEnd(): OrderedSetIterator; front(): K | undefined; back(): K | undefined; /** * @description Insert element to set. * @param key - The key want to insert. * @param hint - You can give an iterator hint to improve insertion efficiency. * @return The size of container after setting. * @example * const st = new OrderedSet([2, 4, 5]); * const iter = st.begin(); * st.insert(1); * st.insert(3, iter); // give a hint will be faster. */ insert(key: K, hint?: OrderedSetIterator): number; find(element: K): OrderedSetIterator; lowerBound(key: K): OrderedSetIterator; upperBound(key: K): OrderedSetIterator; reverseLowerBound(key: K): OrderedSetIterator; reverseUpperBound(key: K): OrderedSetIterator; union(other: OrderedSet): number; [Symbol.iterator](): Generator; eraseElementByIterator(iter: OrderedSetIterator): OrderedSetIterator; forEach(callback: (element: K, index: number, tree: OrderedSet) => void): void; getElementByPos(pos: number): K; } export default OrderedSet;