/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
import EventEmitter from 'events';
import { RLPx, DPT } from '@ethereumjs/devp2p';
declare type Options = {
    dnsNetworks?: string[];
    bootnodes?: {
        id: Buffer;
        ip: string;
        port: number;
    }[];
    refreshInterval?: number;
    maxPeers?: number;
    dnsAddress?: string;
};
declare interface Server {
    on(event: 'error', listener: (error: Error) => void): this;
    on(event: 'peer', listener: (data: string) => void): this;
}
declare class Server extends EventEmitter {
    key: Buffer;
    bootnodes: NonNullable<Options['bootnodes']>;
    dnsNetworks: NonNullable<Options['dnsNetworks']>;
    refreshInterval: NonNullable<Options['refreshInterval']>;
    peers: Map<any, any>;
    rlpx: RLPx | undefined;
    dpt: DPT | undefined;
    name: string;
    maxPeers: NonNullable<Options['maxPeers']>;
    dnsAddress: NonNullable<Options['dnsAddress']>;
    constructor(options: Options);
    start(): Promise<(void | undefined)[]>;
    stop(): void;
    initDpt(): Promise<void>;
    initRlpx(): void;
}
export default Server;
