///
import net from 'net';
import { Event } from '../../event';
import { Config } from '../../fileStores/config';
import { Logger } from '../../logger';
import { SetTimeoutToken } from '../../utils';
import { DisconnectReason } from './constants';
import { StratumServer } from './stratumServer';
import { StratumServerClient } from './stratumServerClient';
export declare class StratumPeers {
readonly logger: Logger;
readonly maxConnectionsByIp: number;
readonly server: StratumServer;
readonly banning: boolean;
readonly onBanned: Event<[StratumServerClient]>;
banCount: number;
protected readonly bannedByIp: Map;
protected readonly connectionsByIp: Map;
protected readonly scoreByIp: Map;
protected readonly shadowBans: Set;
protected eventLoopTimeout: SetTimeoutToken | null;
constructor(options: {
maxConnectionsPerIp?: number;
config: Config;
logger?: Logger;
banning?: boolean;
server: StratumServer;
});
start(): void;
stop(): void;
punish(client: StratumServerClient, message?: string, amount?: number): void;
shadowBan(client: StratumServerClient): void;
ban(client: StratumServerClient, options?: {
reason?: DisconnectReason;
message?: string;
until?: number;
versionExpected?: number;
}): void;
sendBanMessage(socket: net.Socket): void;
isShadowBanned(client: StratumServerClient): boolean;
isBanned(socket: net.Socket): boolean;
isAllowed(socket: net.Socket): boolean;
addConnectionCount(client: StratumServerClient): void;
removeConnectionCount(client: StratumServerClient): void;
unpunish(remoteAddress: string, reduceBy?: number): void;
eventLoop(): void;
}
//# sourceMappingURL=stratumPeers.d.ts.map