kademlia-table
Version:
XOR based routing table used for P2P networks such as a Kademlia DHT.
36 lines (32 loc) • 1.46 kB
text/typescript
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 };