UNPKG

@firaenix/bittorrent-protocol

Version:

Simple, robust, BitTorrent peer wire protocol implementation

44 lines (43 loc) 1.64 kB
/// <reference types="node" /> import Wire from './Wire'; import { IExtension, ExtensionExtraFields } from './models/IExtension'; import { TypedEmitter, ListenerSignature } from 'tiny-typed-emitter'; export declare type ExtendedHandshakeMessageParams = { [key: string]: any; }; /** * http://www.bittorrent.org/beps/bep_0010.html */ export declare type ExtendedHandshake = { m?: { [name: string]: number; }; exts: { [extName: string]: ExtensionExtraFields; }; } & ExtendedHandshakeMessageParams; export declare type HandshakeExtensions = { [name: string]: boolean; }; export declare abstract class Extension implements IExtension { wire: Wire; abstract name: string; abstract requirePeer?: boolean; extraFields?: ExtensionExtraFields; constructor(wire: Wire); sendExtendedMessage: (data: object) => void; abstract onHandshake: (infoHash: string, peerId: string, extensions: HandshakeExtensions) => void; abstract onExtendedHandshake: (handshake: ExtendedHandshake) => void; abstract onMessage: (buf: Buffer) => void; } export declare abstract class EventExtension<L extends ListenerSignature<L>> extends TypedEmitter<L> implements IExtension { wire: Wire; abstract name: string; abstract requirePeer?: boolean; extraFields?: ExtensionExtraFields; constructor(wire: Wire); sendExtendedMessage: (data: object) => void; abstract onHandshake: (infoHash: string, peerId: string, extensions: HandshakeExtensions) => void; abstract onExtendedHandshake: (handshake: ExtendedHandshake) => void; abstract onMessage: (buf: Buffer) => void; }