/// /// import { Duplex } from 'stream'; import { ConnectedPeer } from './ConnectedPeer'; import { OnNetworkEvent } from './event'; import { Peer } from './Peer'; import { Endpoint } from './types'; export interface PeerHealthBase { readonly healthy: boolean; } export interface NegotiateResult { readonly data: PeerData; readonly relay: boolean; } export interface Network { readonly connectedPeers: ReadonlyArray>; readonly blacklistAndClose: (peer: ConnectedPeer) => void; readonly start: () => void; readonly stop: () => void; readonly relay: (buffer: Buffer) => void; readonly permanentlyBlacklist: (endpoint: Endpoint) => void; readonly addEndpoint: (endpoint: Endpoint) => void; } export interface NetworkCreateOptions { readonly negotiate: (peer: Peer) => Promise>; readonly checkPeerHealth: (connectedPeer: ConnectedPeer, previousHealth?: PeerHealth) => PeerHealth; readonly createMessageTransform: () => Duplex; readonly onMessageReceived: (peer: ConnectedPeer, message: Message) => void; readonly onRequestEndpoints: () => void; readonly onEvent?: OnNetworkEvent; } export declare type CreateNetwork = (options: NetworkCreateOptions) => Network;