import { FuncList, Logger, MethodDef, OnSend, OnRecv } from '../interfaces'; import { BinaryReader } from './binaryReader'; export interface Send { (data: string | Uint8Array): void; } export declare const enum MessageType { Version = 255, Resolved = 254, Rejected = 253, Error = 252 } export interface FunctionHandler { (funcId: number, func: Function, funcObj: any, args: any[]): void; } export declare const defaultHandler: FunctionHandler; export interface RemoteState { supportsBinary: boolean; sentSize: number; batch: boolean; } export declare type HandleResult = (funcId: number, funcBinary: boolean, result: Promise, messageId: number) => void; export interface HandlerOptions { forceBinary?: boolean; forceBinaryPackets?: boolean; useBinaryByDefault?: boolean; useBuffer?: boolean; debug?: boolean; development?: boolean; printGeneratedCode?: boolean; useBinaryResultByDefault?: boolean; onSend?: OnSend; onRecv?: OnRecv; } export interface PacketHandler { sendString(send: Send, id: number, funcId: number, messageId: number, result: any): number; sendBinary(send: Send, id: number, funcId: number, messageId: number, result: any): number; createRemote(remote: any, send: Send, state: RemoteState): void; recvString(data: string, funcList: FuncList, specialFuncList: FuncList, handleFunction?: FunctionHandler): void; recvBinary(reader: BinaryReader, funcList: FuncList, specialFuncList: FuncList, callsList: number[], messageId: number, strings: string[], handleResult?: HandleResult): void; writerBufferSize(): number; commitBatch(send: Send, state: RemoteState): void; } export declare function createPacketHandler(local: MethodDef[] | undefined, remote: MethodDef[] | undefined, options: HandlerOptions, log: Logger): PacketHandler;