import { Socket } from 'socket.io';
export interface RateLimiterOptions {
    maxConnectionsPerIp?: number;
    maxMessagesPerMinute?: number;
    maxSubscriptionsPerClient?: number;
    blockDuration?: number;
    autoDisconnect?: boolean;
    enableBanning?: boolean;
    banThreshold?: number;
    banDuration?: number;
}
export declare class WebsocketRateLimiter {
    private readonly options;
    private readonly logger;
    private ipConnections;
    private clientMessages;
    private clientSubscriptions;
    private blockedIps;
    private ipViolations;
    private bannedIps;
    constructor(options?: RateLimiterOptions);
    isBanned(ip: string): boolean;
    isBlocked(ip: string): boolean;
    handleConnection(client: Socket): boolean;
    handleDisconnect(client: Socket): void;
    handleMessage(client: Socket): boolean;
    handleSubscription(client: Socket, channel: string): boolean;
    handleUnsubscription(client: Socket, channel: string): void;
    blockIp(ip: string): void;
    banIp(ip: string): void;
    private recordViolation;
    private resetMessageCounters;
    private cleanup;
    private getClientIp;
}
