lisk-framework
Version:
Lisk blockchain application platform
71 lines (70 loc) • 2.5 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
import { Database } from '@liskhq/lisk-db';
import { EventEmitter } from 'events';
import * as liskP2P from '@liskhq/lisk-p2p';
import { Logger } from '../../logger';
import { NetworkConfig } from '../../types';
import { Endpoint } from './endpoint';
interface NodeInfoOptions {
[key: string]: unknown;
readonly lastBlockID: Buffer;
readonly height: number;
readonly maxHeightPrevoted: number;
readonly blockVersion: number;
readonly legacy?: Buffer[];
}
interface NetworkConstructor {
readonly options: NetworkConfig;
}
interface P2PRequestPacket extends liskP2P.p2pTypes.P2PRequestPacket {
readonly peerId: string;
}
interface P2PMessagePacket extends liskP2P.p2pTypes.P2PMessagePacket {
readonly peerId: string;
}
type P2PRPCEndpointHandler = (input: {
data: unknown;
peerId: string;
}) => unknown;
type P2PEventHandler = (input: {
data: Buffer | undefined;
peerId: string;
}) => void;
interface NetworkInitArgs {
chainID: Buffer;
logger: Logger;
nodeDB: Database;
}
export declare class Network {
readonly events: EventEmitter;
private readonly _options;
private readonly _endpoint;
private _logger;
private _nodeDB;
private _chainID;
private _secret;
private _p2p;
private _endpoints;
private _eventHandlers;
private _saveIntervalID?;
private _nodeInfoOptions;
constructor({ options }: NetworkConstructor);
init(args: NetworkInitArgs): Promise<void>;
start(): Promise<void>;
stop(): Promise<void>;
get endpoint(): Endpoint;
registerEndpoint(endpoint: string, handler: P2PRPCEndpointHandler): void;
registerHandler(event: string, handler: P2PEventHandler): void;
request(requestPacket: liskP2P.p2pTypes.P2PRequestPacket): Promise<liskP2P.p2pTypes.P2PResponsePacket>;
send(sendPacket: liskP2P.p2pTypes.P2PMessagePacket): void;
requestFromPeer(requestPacket: P2PRequestPacket): Promise<liskP2P.p2pTypes.P2PResponsePacket>;
sendToPeer(sendPacket: P2PMessagePacket): void;
broadcast(broadcastPacket: liskP2P.p2pTypes.P2PMessagePacket): void;
getConnectedPeers(): ReadonlyArray<liskP2P.p2pTypes.PeerInfo>;
getNetworkStats(): liskP2P.p2pTypes.NetworkStats;
getDisconnectedPeers(): ReadonlyArray<liskP2P.p2pTypes.PeerInfo>;
applyPenaltyOnPeer(penaltyPacket: liskP2P.p2pTypes.P2PPenalty): void;
applyNodeInfo(data: Partial<NodeInfoOptions>): void;
}
export {};