UNPKG

kademlia-table

Version:

XOR distance based routing table used for P2P networks, based on the Kademlia DHT paper

44 lines (41 loc) 1.61 kB
declare const getBitwiseDistance: (a: Uint8Array, b: Uint8Array, byteLength?: number) => number; declare namespace KademliaTable { interface Options<Node> { bucketSize?: number; errorLimit?: number; getId: (node: Node) => Uint8Array; } interface Bucket<T> { items: Array<Item<T>>; replacementItems: Array<Item<T>>; } interface Item<T> { node: T; errorCount: number; } } declare class KademliaTable<T> { readonly id: Uint8Array; readonly bucketSize: number; readonly buckets: Array<KademliaTable.Bucket<T>>; readonly errorLimit: number; getId: (node: T) => Uint8Array; constructor(id: Uint8Array, options: KademliaTable.Options<T>); get length(): number; [Symbol.iterator](): IterableIterator<T>; add(node: T, d?: number): boolean; clear(): void; iterateClosestToId(id: Uint8Array): IterableIterator<T>; listClosestToId(id: Uint8Array, limit?: number): Array<T>; get(id: Uint8Array, d?: number): T | undefined; getBucket(d: number): KademliaTable.Bucket<T> | undefined; getDistance(id: Uint8Array): number; protected iterateNodes(id: Uint8Array, d?: number): IterableIterator<T>; protected listNodes(id: Uint8Array, d?: number, limit?: number): Array<T>; has(id: Uint8Array, d?: number): boolean; markError(id: Uint8Array, d?: number): boolean; markSuccess(id: Uint8Array, d?: number): boolean; update(node: T, d?: number): boolean; remove(id: Uint8Array, d?: number, force?: boolean): boolean; } export { KademliaTable, getBitwiseDistance };