/// import { Duplex } from 'stream'; export declare type SocketType = string; export interface Swarm { join(dk: Buffer, options?: JoinOptions): void; leave(dk: Buffer): void; on(name: K, cb: SwarmEvents[K]): this; off(name: K, cb: SwarmEvents[K]): this; destroy(cb: () => void): void; } export interface SwarmEvents { connection(socket: Duplex, details: ConnectionDetails): void; peer(peer: PeerInfo): void; } export interface JoinOptions { announce?: boolean; lookup?: boolean; } export interface ConnectionDetails { type: SocketType; reconnect?(shouldReconnect: boolean): void; ban?(): void; client: boolean; peer: PeerInfo | null; } export interface PeerInfo { port: number; host: string; local: boolean; }