declare class Node$4 { value: T; next: Node$4 | null; constructor(value: T); } interface ILinkedList { push(value: T): Node$4; pop(): void; shift(): void; unshift(value: T): Node$4; get(index: number): Node$4 | null; set(index: number, value: T): Node$4 | null; insert(index: number, value: T): Node$4 | null; remove(index: number): void; reverse(): unknown; traverse(): void; } declare class LinkedList implements ILinkedList { private head; private tail; private length; push(value: T): Node$4; pop(): void; shift(): void; unshift(value: T): Node$4; get(index: number): Node$4 | null; set(index: number, value: T): Node$4 | null; insert(index: number, value: T): Node$4 | null; remove(index: number): void; reverse(): unknown; traverse(): void; } declare class Node$3 { value: T; next: Node$3 | null; prev: Node$3 | null; constructor(value: T); } interface IDoublyLinkedList { push(value: T): Node$3; pop(): void; shift(): void; unshift(value: T): Node$3; get(index: number): Node$3 | null; set(index: number, value: T): Node$3 | null; insert(index: number, value: T): Node$3 | null; remove(index: number): void; traverse(): unknown; } declare class DoublyLinkedList implements IDoublyLinkedList { private head; private tail; private length; push(value: T): Node$3; pop(): void; shift(): void; unshift(value: T): Node$3; get(index: number): Node$3 | null; set(index: number, value: T): Node$3 | null; insert(index: number, value: T): Node$3 | null; remove(index: number): void; traverse(): void; } declare class Node$2 { value: T; next: Node$2 | null; constructor(value: T); } interface IQueue { enqueue(value: T): Node$2; dequeue(): void; peek(): T | null; isEmpty(): boolean; getSize(): number; } declare class Queue implements IQueue { private front; private rear; private size; enqueue(value: T): Node$2; dequeue(): void; peek(): T | null; isEmpty(): boolean; getSize(): number; } declare class Node$1 { value: T; next: Node$1 | null; constructor(value: T); } interface IStack { push(value: T): Node$1; pop(): void; top(): T | null; isEmpty(): boolean; getSize(): number; } declare class Stack implements IStack { private first; private last; private size; push(value: T): Node$1; pop(): void; top(): T | null; isEmpty(): boolean; getSize(): number; } declare class BSTNode { value: T; left: BSTNode | null; right: BSTNode | null; constructor(value: T); } interface IBinarySearchTree { insert(value: T): BSTNode | null; isPresent(value: T): boolean; getRoot(): BSTNode | null; } declare class BinarySearchTree implements IBinarySearchTree { private root; insert(value: T): BSTNode | null; isPresent(value: T): boolean; getRoot(): BSTNode | null; } interface IMinHeap { insert(value: number): void; extractMin(): number | undefined; peek(): number | undefined; size(): number; isEmpty(): boolean; } declare class MinHeap implements IMinHeap { private heap; insert(value: number): void; extractMin(): number | undefined; peek(): number | undefined; size(): number; isEmpty(): boolean; private bubbleUp; private bubbleDown; private swap; } declare class HashMap { private buckets; private bucketCount; private _size; constructor(capacity?: number); getSize(): number; set(key: K, value: V): void; get(key: K): V | undefined; has(key: K): boolean; delete(key: K): boolean; keys(): K[]; values(): V[]; private hash; } interface GraphEdge { node: T; weight: number; } declare class Graph { private adjacency; private directed; constructor(directed?: boolean); addVertex(vertex: T): void; addEdge(from: T, to: T, weight?: number): void; getNeighbors(vertex: T): GraphEdge[]; getVertices(): T[]; isDirected(): boolean; } declare const linearSearch: (arr: number[], number: number) => number; declare const binarySearch: (arr: number[], num: number) => number; declare const jumpSearch: (arr: number[], target: number) => number; declare const exponentialSearch: (arr: number[], target: number) => number; declare const bubbleSort: (arr: number[]) => number[]; declare const insertionSort: (nums: number[]) => number[]; declare const selectionSort: (nums: number[]) => number[]; declare const mergeSort: (arr: number[]) => number[]; declare const quickSort: (arr: number[], left?: number, right?: number) => number[]; declare const heapSort: (arr: number[]) => number[]; declare const countingSort: (arr: number[]) => number[]; declare const radixSort: (arr: number[]) => number[]; declare class Node { value: T; left: Node | null; right: Node | null; constructor(value: T); } declare function bfs(root: Node | null): T[] | null; declare function preOrder(root: Node | null): T[] | null; declare function inOrder(root: Node | null): T[] | null; declare function postOrder(root: Node | null): T[] | null; declare function graphBfs(graph: Graph, start: T): T[]; declare function graphDfs(graph: Graph, start: T): T[]; interface DijkstraResult { distances: Map; previous: Map; path?: T[]; } declare function dijkstra(graph: Graph, start: T, end?: T): DijkstraResult; declare function topologicalSort(graph: Graph): T[]; export { BSTNode, BinarySearchTree, DijkstraResult, DoublyLinkedList, Graph, GraphEdge, HashMap, LinkedList, MinHeap, Node, Queue, Stack, bfs, binarySearch, bubbleSort, countingSort, dijkstra, exponentialSearch, graphBfs, graphDfs, heapSort, inOrder, insertionSort, jumpSearch, linearSearch, mergeSort, postOrder, preOrder, quickSort, radixSort, selectionSort, topologicalSort };