///
///
///
///
///
///
///
///
///
///
import rx = require('rx');
import stream = require('stream');
import apihandler = require('apihandler');
export interface IRPC {
getUser(): any | undefined;
call(name: string, params?: any): rx.Observable;
accept(name: string, service: any): this;
open(): void;
on(event: string, listener: Function): this;
emit(event: string | symbol, ...args: any[]): boolean;
}
export interface IAuth {
handshake(): Buffer;
accept(buffer: Buffer): rx.Observable>;
}
export interface Options {
name: string;
auth: IAuth;
duplex: stream.Duplex;
loader?: apihandler.ILoader;
timeout?: number;
}
export declare class Peer implements IRPC {
private options;
private user?;
private idgen;
private context;
private pending;
private streamBuffer;
private recvBuffer;
private timer;
private state;
private emitter;
constructor(options: Options);
getUser(): any | undefined;
on(event: string, listener: Function): this;
emit(event: string | symbol, ...args: any[]): boolean;
open(): void;
close(): void;
call(name: string, params?: any): rx.Observable;
accept(name: string, service: any): this;
private init();
private handleTimeout();
private handlshake();
private onResponse(data);
private handleRequest(code, data);
private handleResponse(code, data);
private handleAuth(code, data);
private handleAuthResp(code, data);
private onData(code, data);
}