export type GrpcMetadata = Record; export type GrpcConfig = { host: string; isInsecure: boolean; }; export type RemoveListener = () => void; export type DataCallback = (data: Uint8Array) => void; export type ErrorCallback = (reason: any) => void; export type CompleteCallback = () => void; export type ServerOutputEvent = 'data' | 'error' | 'complete'; export type ServerOutputEventCallback = T extends 'data' ? DataCallback : T extends 'complete' ? CompleteCallback : T extends 'error' ? ErrorCallback : never; export interface GrpcServerOutputStream { on( event: T, callback: ServerOutputEventCallback ): RemoveListener; } export type CompletedGrpcCall = { readonly method: string; readonly requestHeaders: GrpcMetadata; readonly headers?: GrpcMetadata; readonly responses?: GrpcServerOutputStream; readonly status?: number; readonly trailers?: GrpcMetadata; readonly onSendMessage?: (data: Uint8Array) => Promise; readonly onFinishSendMessage?: () => Promise; }; export type GrpcMethodType = | 'unary' | 'serverStreaming' | 'clientStreaming' | 'bidiStreaming';