/// import { ChannelCredentials } from './channel-credentials'; import { ChannelOptions } from './channel-options'; import { Client } from './client'; import { UntypedServiceImplementation } from './server'; export interface Serialize { (value: T): Buffer; } export interface Deserialize { (bytes: Buffer): T; } export interface ClientMethodDefinition { path: string; requestStream: boolean; responseStream: boolean; requestSerialize: Serialize; responseDeserialize: Deserialize; originalName?: string; } export interface ServerMethodDefinition { path: string; requestStream: boolean; responseStream: boolean; responseSerialize: Serialize; requestDeserialize: Deserialize; originalName?: string; } export interface MethodDefinition extends ClientMethodDefinition, ServerMethodDefinition { } export declare type ServiceDefinition = { readonly [index in keyof ImplementationType]: MethodDefinition; }; export interface ProtobufTypeDefinition { format: string; type: object; fileDescriptorProtos: Buffer[]; } export interface PackageDefinition { [index: string]: ServiceDefinition | ProtobufTypeDefinition; } export interface ServiceClient extends Client { [methodName: string]: Function; } export interface ServiceClientConstructor { new (address: string, credentials: ChannelCredentials, options?: Partial): ServiceClient; service: ServiceDefinition; serviceName: string; } /** * Creates a constructor for a client with the given methods, as specified in * the methods argument. The resulting class will have an instance method for * each method in the service, which is a partial application of one of the * [Client]{@link grpc.Client} request methods, depending on `requestSerialize` * and `responseSerialize`, with the `method`, `serialize`, and `deserialize` * arguments predefined. * @param methods An object mapping method names to * method attributes * @param serviceName The fully qualified name of the service * @param classOptions An options object. * @return New client constructor, which is a subclass of * {@link grpc.Client}, and has the same arguments as that constructor. */ export declare function makeClientConstructor(methods: ServiceDefinition, serviceName: string, classOptions?: {}): ServiceClientConstructor; export interface GrpcObject { [index: string]: GrpcObject | ServiceClientConstructor | ProtobufTypeDefinition; } /** * Load a gRPC package definition as a gRPC object hierarchy. * @param packageDef The package definition object. * @return The resulting gRPC object. */ export declare function loadPackageDefinition(packageDef: PackageDefinition): GrpcObject;