import { Message } from "@bufbuild/protobuf"; import type { PartialMessage, ServiceType, MethodInfo, MethodInfoBiDiStreaming, MethodInfoClientStreaming, MethodInfoServerStreaming, MethodInfoUnary } from "@bufbuild/protobuf"; import type { Transport } from "./transport.js"; import type { CallOptions } from "./call-options.js"; /** * PromiseClient is a simple client that supports unary and server-streaming * methods. Methods will produce a promise for the response message, * or an asynchronous iterable of response messages. */ export type PromiseClient = { [P in keyof T["methods"]]: T["methods"][P] extends MethodInfoUnary ? (request: PartialMessage, options?: CallOptions) => Promise : T["methods"][P] extends MethodInfoServerStreaming ? (request: PartialMessage, options?: CallOptions) => AsyncIterable : T["methods"][P] extends MethodInfoClientStreaming ? (request: AsyncIterable>, options?: CallOptions) => Promise : T["methods"][P] extends MethodInfoBiDiStreaming ? (request: AsyncIterable>, options?: CallOptions) => AsyncIterable : never; }; /** * Create a PromiseClient for the given service, invoking RPCs through the * given transport. */ export declare function createPromiseClient(service: T, transport: Transport): PromiseClient; /** * ServerStreamingFn is the method signature for a server-streaming method of * a PromiseClient. */ type ServerStreamingFn, O extends Message> = (request: PartialMessage, options?: CallOptions) => AsyncIterable; export declare function createServerStreamingFn, O extends Message>(transport: Transport, service: ServiceType, method: MethodInfo): ServerStreamingFn; /** * ClientStreamFn is the method signature for a client streaming method of a * PromiseClient. */ type ClientStreamingFn, O extends Message> = (request: AsyncIterable>, options?: CallOptions) => Promise; export declare function createClientStreamingFn, O extends Message>(transport: Transport, service: ServiceType, method: MethodInfo): ClientStreamingFn; /** * BiDiStreamFn is the method signature for a bi-directional streaming method * of a PromiseClient. */ type BiDiStreamingFn, O extends Message> = (request: AsyncIterable>, options?: CallOptions) => AsyncIterable; export declare function createBiDiStreamingFn, O extends Message>(transport: Transport, service: ServiceType, method: MethodInfo): BiDiStreamingFn; export {};