import type TypedEmitter from 'typed-emitter'; import { type StructuredLogger } from '../../../logger'; import { type TextStreamReader } from '../../data-stream/incoming/StreamReader'; import type OutgoingDataStreamManager from '../../data-stream/outgoing/OutgoingDataStreamManager'; import type Participant from '../../participant/Participant'; import { type PerformRpcParams, RpcError } from '../utils'; import type { RpcClientManagerCallbacks } from './events'; declare const RpcClientManager_base: new () => TypedEmitter; /** * Manages the client (caller) side of RPC: sending requests, tracking pending * ack/response state, and handling incoming ack/response packets. * @internal */ export default class RpcClientManager extends RpcClientManager_base { private log; private outgoingDataStreamManager; private getRemoteParticipantClientProtocol; private getServerVersion; private pendingAcks; private pendingResponses; constructor(log: StructuredLogger, outgoingDataStreamManager: OutgoingDataStreamManager, getRemoteParticipantClientProtocol: (identity: Participant['identity']) => number, getServerVersion: () => string | undefined); performRpc({ destinationIdentity, method, payload, responseTimeout: responseTimeoutMs, }: PerformRpcParams): Promise<[id: string, completionPromise: Promise]>; private publishRpcRequest; /** * Handle an incoming data stream containing an RPC response payload. * @internal */ handleIncomingDataStream(reader: TextStreamReader, senderIdentity: Participant['identity'], attributes: Record): Promise; /** @internal */ handleIncomingRpcResponseSuccess(requestId: string, payload: string): void; /** @internal */ handleIncomingRpcResponseFailure(requestId: string, error: RpcError): void; /** @internal */ handleIncomingRpcAck(requestId: string): void; /** @internal */ handleParticipantDisconnected(participantIdentity: string): void; } export {}; //# sourceMappingURL=RpcClientManager.d.ts.map