declare module "grpc-web" { export interface Metadata { [s: string]: string; } export class AbstractClientBase { thenableCall ( method: string, request: REQ, metadata: Metadata, methodDescriptor: MethodDescriptor ): Promise; rpcCall ( method: string, request: REQ, metadata: Metadata, methodDescriptor: MethodDescriptor, callback: (err: RpcError, response: RESP) => void ): ClientReadableStream; serverStreaming ( method: string, request: REQ, metadata: Metadata, methodDescriptor: MethodDescriptor ): ClientReadableStream; } export class ClientReadableStream { on (eventType: "error", callback: (err: RpcError) => void): ClientReadableStream; on (eventType: "status", callback: (status: Status) => void): ClientReadableStream; on (eventType: "metadata", callback: (status: Metadata) => void): ClientReadableStream; on (eventType: "data", callback: (response: RESP) => void): ClientReadableStream; on (eventType: "end", callback: () => void): ClientReadableStream; removeListener (eventType: "error", callback: (err: RpcError) => void): void; removeListener (eventType: "status", callback: (status: Status) => void): void; removeListener (eventType: "metadata", callback: (status: Metadata) => void): void; removeListener (eventType: "data", callback: (response: RESP) => void): void; removeListener (eventType: "end", callback: () => void): void; cancel (): void; } export interface StreamInterceptor { intercept(request: Request, invoker: (request: Request) => ClientReadableStream): ClientReadableStream; } export interface UnaryInterceptor { intercept(request: Request, invoker: (request: Request) => Promise>): Promise>; } export class CallOptions { constructor(options: { [index: string]: any; }); } export class MethodDescriptor { constructor(name: string, methodType: string, requestType: new (...args: unknown[]) => REQ, responseType: new (...args: unknown[]) => RESP, requestSerializeFn: any, responseDeserializeFn: any); getName(): string; } export class Request { getRequestMessage(): REQ; getMethodDescriptor(): MethodDescriptor; getMetadata(): Metadata; getCallOptions(): CallOptions; } export class UnaryResponse { getResponseMessage(): RESP; getMetadata(): Metadata; getMethodDescriptor(): MethodDescriptor; getStatus(): Status; } export interface GrpcWebClientBaseOptions { format?: string; suppressCorsPreflight?: boolean; withCredentials?: boolean; unaryInterceptors?: UnaryInterceptor[]; streamInterceptors?: StreamInterceptor[]; } export class GrpcWebClientBase extends AbstractClientBase { constructor(options?: GrpcWebClientBaseOptions); } export class RpcError extends Error { constructor(code: StatusCode, message: string, metadata: Metadata); code: StatusCode; metadata: Metadata; } export interface Status { code: number; details: string; metadata?: Metadata; } export enum StatusCode { OK, CANCELLED, UNKNOWN, INVALID_ARGUMENT, DEADLINE_EXCEEDED, NOT_FOUND, ALREADY_EXISTS, PERMISSION_DENIED, RESOURCE_EXHAUSTED, FAILED_PRECONDITION, ABORTED, OUT_OF_RANGE, UNIMPLEMENTED, INTERNAL, UNAVAILABLE, DATA_LOSS, UNAUTHENTICATED, } export namespace MethodType { const UNARY: string; const SERVER_STREAMING: string; } }