UNPKG

kademlia-table

Version:

XOR based routing table used for P2P networks such as a Kademlia DHT.

36 lines (32 loc) 1.46 kB
declare const createCompareBitwiseDistance: (id: Uint8Array) => (a: Uint8Array, b: Uint8Array) => 0 | 1 | -1; declare const getBitwiseDistance: (a: Uint8Array, b: Uint8Array, byteLength?: number) => number; declare namespace KademliaTable { interface Options<Node> { bucketSize?: number; compare?: (nodeA: Node, nodeB: Node) => number; getId: (node: Node) => Uint8Array; } } declare class KademliaTable<Node> { readonly id: Uint8Array; readonly bucketSize: number; readonly buckets: Array<Array<Node>>; compare?: (nodeA: Node, nodeB: Node) => number; getId: (node: Node) => Uint8Array; constructor(id: Uint8Array, options: KademliaTable.Options<Node>); get length(): number; [Symbol.iterator](): IterableIterator<Node>; add(node: Node, d?: number): boolean; clear(): void; listClosestToId(id: Uint8Array, limit?: number): Array<Node>; get(d: number): Node | undefined; getById(id: Uint8Array, d?: number): Node | undefined; getBitwiseDistance(id: Uint8Array): number; protected getNodes(d: number, limit: number, depth?: number): Array<Node>; has(id: Uint8Array, d?: number): boolean; peek(d: number): Node | undefined; peekById(id: Uint8Array, d?: number): Node | undefined; update(node: Node, d?: number): boolean; remove(id: Uint8Array, d?: number): boolean; } export { KademliaTable, createCompareBitwiseDistance, getBitwiseDistance };