import { AsyncEventEmitter } from '@devgrid/async-emitter';
import { LocalPeer } from './local-peer';
import { RemotePeer } from './remote-peer';
import { ServiceStub } from './service-stub';
import { Task, TaskManager } from './task-manager';
import { Abilities, NetronOptions } from './types';
export declare class Netron extends AsyncEventEmitter {
    options?: NetronOptions | undefined;
    id: string;
    private wss?;
    private ownEvents;
    peer: LocalPeer;
    peers: Map<string, RemotePeer>;
    taskManager: TaskManager;
    private isStarted;
    services: Map<string, ServiceStub>;
    constructor(options?: NetronOptions | undefined);
    start(): Promise<void>;
    stop(): Promise<void>;
    connect(address: string, abilities?: Abilities): Promise<RemotePeer>;
    disconnect(peerId: string): void;
    getServiceNames(): string[];
    addTask(fn: Task): void;
    runTask(peer: RemotePeer, name: string, ...args: any[]): Promise<any>;
    deleteSpecialEvents(id: string): void;
    emitSpecial(event: string, id: string, data: any): Promise<void>;
    static create(options?: NetronOptions): Promise<Netron>;
}
