///
import { EventEmitter } from "events";
import { ClientDuplexStream } from "@grpc/grpc-js";
export declare const enum StreamCallerEvent {
PushReceived = "PushReceived"
}
export declare enum PacketDirection {
Request = 0,
Response = 1
}
export interface KeyGenerator {
(direction: PacketDirection.Request, request: RequestType): string;
(direction: PacketDirection.Response, response: ResponseType): string;
}
export declare class StreamCaller extends EventEmitter {
private readonly streamCreator;
private readonly keyGenerator;
private readonly timeout;
private callStream;
private activeRequests;
constructor(streamCreator: () => ClientDuplexStream, keyGenerator: KeyGenerator, timeout: number);
init(): void;
request(request: RequestType): Promise;
close(e?: Error): void;
private handleResponse;
}