@firaenix/bittorrent-protocol
Version:
Simple, robust, BitTorrent peer wire protocol implementation
44 lines (43 loc) • 1.64 kB
TypeScript
/// <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;
}