///
///
import { Readable, Writable } from "stream";
import type { TypedEmitter } from "tiny-typed-emitter";
export declare class Controller {
events: TypedEmitter;
private handlers;
private sources;
private nextEndpointId;
private requests;
private nextRequestId;
constructor();
open(label: string, details?: StreamDetails): OutgoingStream;
receive(packet: Packet): void;
private onCreate;
private onFinish;
private onWrite;
_request(name: StanzaName, payload: StanzaPayload, data: Buffer | null): Promise;
private onRequest;
private resolve;
private reject;
private onNotification;
}
export default Controller;
type ControllerEvents = {
stream: (stream: IncomingStream) => void;
send: (packet: Packet) => void;
};
export interface IncomingStream extends Readable {
label: string;
details: StreamDetails;
}
export interface OutgoingStream extends Writable {
}
export interface StreamDetails {
[key: string]: any;
}
export interface Packet {
stanza: {
[key: string]: any;
};
data: Buffer | null;
}
type StanzaName = string;
interface StanzaPayload {
[key: string]: any;
}