import { WS2PServer } from "./WS2PServer"; import { Server } from "../../../../server"; import { WS2PClient } from "./WS2PClient"; import { WS2PConnection } from "./WS2PConnection"; import { WS2PMessageHandler } from "./impl/WS2PMessageHandler"; export interface WS2PHead { message: string; sig: string; messageV2?: string; sigV2?: string; step?: number; } export interface WS2pHeadCache extends WS2PHead { blockstamp: string; } export declare class WS2PCluster { private server; static getFullAddress(host: string, port: number, path?: string | null | undefined): string; private ws2pServer; private ws2pClients; private host; private port; private syncBlockInterval; private syncDocpoolInterval; private fifo; private maxLevel1Size; private messageHandler; private banned; private ok4reconnect; private banned4Sync; private blockstampsCache; private memberkeysCache; private headsCache; private newHeads; private headsTimeout; private reconnectionInteval; private constructor(); getKnownHeads(): Promise; headsReceived(heads: WS2PHead[]): Promise; private headReceived; private isMemberKey; private isConnectedKey; private existsBlock; static plugOn(server: Server): WS2PCluster; set maxLevel1Peers(newValue: number); get maxLevel2Peers(): number; listen(host: string, port: number): Promise; close(): Promise; clientsCount(): number; numberOfConnectedPublicNodesWithSameKey(): number; servedCount(): number; privilegedNodes(): string[]; connectToRemoteWS(endpointVersion: number, host: string, port: number, path: string, messageHandler: WS2PMessageHandler, expectedPub: string, ws2pEndpointUUID?: string): Promise; connectToWS2Peers(): Promise; private numberOfFreeRooms; listenServerFlow(): void; private broadcastHead; private spreadNewHeads; private incrementHeadsStep; private sayHeadChangedTo; private getApi; private countFreeRooms; trimServerConnections(): Promise; removeLowPriorityConnections(preferedKeys: string[]): Promise; keyPriorityLevel(pubkey: string, preferedOrPrivilegedKeys: string[]): Promise; private getPreferedNodes; protected acceptPubkey(pub: string, isSync: boolean, syncConnectedPubkeys: string[], connectedPubkeys: string[], connectedWS2PUID: string[], getConcurrentConnexionsCount: () => number, maxConcurrentConnexionsSize: number, priorityKeys: string[], priorityKeysOnly: boolean, targetWS2PUID?: string): Promise; isNewSiblingNode(pub: string, targetWS2PUID: string, connectedWS2PUID: string[]): boolean; getLevel1Connections(): Promise; getLevel2Connections(): Promise; getAllConnections(): WS2PConnection[]; startCrawling(waitConnection?: boolean): Promise; stopCrawling(): Promise; pullBlocks(): Promise; private makeApullShot; pullDocpool(): Promise; getConnectedPubkeys(): string[]; getConnectedWS2PUID(): string[]; banConnection(c: WS2PConnection, reason: string): void; rememberAndPrepareBanSyncConnection(pub: string): void; }