///
import { EventEmitter } from "events";
import StrictEventEmitter from "strict-event-emitter-types";
import { Multiaddr } from "multiaddr";
import { IPacket } from "../packet";
export interface ISocketAddr {
port: number;
address: string;
}
export declare type SocketAddrStr = string;
export interface IRemoteInfo {
address: string;
family: "IPv4" | "IPv6";
port: number;
size: number;
}
export interface ITransportEvents {
packet: (src: Multiaddr, packet: IPacket) => void;
decodeError: (err: Error, src: Multiaddr) => void;
}
export declare type TransportEventEmitter = StrictEventEmitter;
export interface ITransportService extends TransportEventEmitter {
multiaddr: Multiaddr;
start(): Promise;
stop(): Promise;
send(to: Multiaddr, toId: string, packet: IPacket): Promise;
}