import * as grpc from '@grpc/grpc-js'; import { ReactiveNodeClientUnaryMethod, ReactiveNodeClientRequestStreamMethod, ReactiveNodeClientResponseStreamMethod, ReactiveNodeClientBidirectionalStreamMethod } from './client_methods'; /** * Mapped type that transforms all gRPC method signatures within the gRPC client * into their reactive counterparts. */ export declare type ReactiveNodeClient = { [rpc in keyof ClientType]: ClientType[rpc] extends (metadata: grpc.Metadata, options: Partial) => grpc.ClientDuplexStream ? ReactiveNodeClientBidirectionalStreamMethod : ClientType[rpc] extends (request: infer RequestType, metadata: grpc.Metadata, options: Partial) => grpc.ClientReadableStream ? ReactiveNodeClientResponseStreamMethod : ClientType[rpc] extends (metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: infer ResponseType) => void) => grpc.ClientWritableStream ? ReactiveNodeClientRequestStreamMethod : ClientType[rpc] extends (request: infer RequestType, metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: infer ResponseType) => void) => grpc.ClientUnaryCall ? ReactiveNodeClientUnaryMethod : unknown; }; /** * Wraps a non-reactive gRPC client so that all methods can be called reactively. * @param serviceDefinition The gRPC service definition which the client implements. * @param client The standard non-reactive gRPC client to be wrapped. * @returns A reactive client which uses the regular client. */ export declare function reactifyNodeClient(serviceDefinition: grpc.ServiceDefinition, client: ClientType): ReactiveNodeClient;