import { Libp2p } from 'libp2p'; import { Multiaddr } from '@multiformats/multiaddr'; type CallMode = "unary" | "server-streaming" | "client-streaming" | "bidirectional"; type TransportProfile = "flow-control" | "compatibility"; interface CallOptions { batchSize?: number; maxBatchWaitMs?: number; freshConnection?: boolean; transportProfile?: TransportProfile; } declare class Libp2pGrpcClient { node: Libp2p; protocol: string; peerAddr: Multiaddr; token: string; private connectionStreamManagers; private connectionStates; private connectionPool; constructor(node: Libp2p, peerAddr: Multiaddr, token: string, protocol?: string); private getStreamManagerFor; private getConnectionState; private notifyStreamSlotAvailable; private rejectStreamWaiters; private waitForStreamSlot; private sendFrameWithFlowControl; private acquireConnection; private getDefaultTransportProfile; setToken(token: string): void; /** 从 peerAddr 提取 HTTP/2 :authority 字段(host:port 格式) */ private getAuthority; unaryCall(method: string, requestData: Uint8Array, timeout?: number): Promise; /** * 执行GRPC调用,支持通过context和返回的取消函数控制终止 * @param method GRPC方法名 * @param requestData 请求数据 * @param timeout 超时时间(毫秒) * @param mode 调用模式: 'unary'|'server-streaming'|'client-streaming'|'bidirectional' * @param onDataCallback 数据回调函数 * @param dataSourceCallback 客户端流数据源回调,支持单个chunk或批量chunks(使用frames策略优化) * @param onEndCallback 结束回调函数 * @param onErrorCallback 错误回调函数 * @param context 操作上下文,包含AbortSignal用于取消操作 * @param options 调用选项(可配置批处理、连接行为以及传输策略) * @param options.transportProfile 传输策略: 'flow-control'(默认,适合上传/双向流)或 'compatibility'(兼容旧逻辑,适合高并发 server-streaming) * @returns 取消函数,可随时调用终止操作 */ Call(method: string, requestData: Uint8Array, timeout: number | undefined, mode: CallMode, onDataCallback: (payload: Uint8Array) => void, dataSourceCallback?: () => AsyncIterable, onEndCallback?: () => void, onErrorCallback?: (error: unknown) => void, context?: { signal?: AbortSignal; }, options?: CallOptions): Promise<() => void>; } export { Libp2pGrpcClient };