import Net from 'node:net';
import Socket from './socket.js';
import EventEmitter from 'node:events';
import Client from '../client.js';
import SocketOptions from '../../models/SocketOptions.js';
/**
 * enforce EventEmitter typing
 */
interface IEmissions {
    listening: () => void;
    close: () => void;
    connection: (socket: Socket) => void;
    error: (data: Error) => void;
}
export default class Server extends EventEmitter {
    private readonly client;
    private readonly serial;
    private readonly options;
    private readonly server;
    private connections;
    constructor(client: Client, serial: string, options: SocketOptions);
    on: <K extends keyof IEmissions>(event: K, listener: IEmissions[K]) => this;
    off: <K extends keyof IEmissions>(event: K, listener: IEmissions[K]) => this;
    once: <K extends keyof IEmissions>(event: K, listener: IEmissions[K]) => this;
    emit: <K extends keyof IEmissions>(event: K, ...args: Parameters<IEmissions[K]>) => boolean;
    listen(...args: Parameters<Net.Server['listen']>): Server;
    close(): Server;
    end(): Server;
}
export {};
//# sourceMappingURL=server.d.ts.map