// package: grpc.reflection.v1
// file: grpc/reflection/v1/reflection.proto

/* tslint:disable */
/* eslint-disable */

import * as grpc from "@grpc/grpc-js";
import * as grpc_reflection_v1_reflection_pb from "../../../grpc/reflection/v1/reflection_pb";

interface IServerReflectionService extends grpc.ServiceDefinition<grpc.UntypedServiceImplementation> {
    serverReflectionInfo: IServerReflectionService_IServerReflectionInfo;
}

interface IServerReflectionService_IServerReflectionInfo extends grpc.MethodDefinition<grpc_reflection_v1_reflection_pb.ServerReflectionRequest, grpc_reflection_v1_reflection_pb.ServerReflectionResponse> {
    path: "/grpc.reflection.v1.ServerReflection/ServerReflectionInfo";
    requestStream: true;
    responseStream: true;
    requestSerialize: grpc.serialize<grpc_reflection_v1_reflection_pb.ServerReflectionRequest>;
    requestDeserialize: grpc.deserialize<grpc_reflection_v1_reflection_pb.ServerReflectionRequest>;
    responseSerialize: grpc.serialize<grpc_reflection_v1_reflection_pb.ServerReflectionResponse>;
    responseDeserialize: grpc.deserialize<grpc_reflection_v1_reflection_pb.ServerReflectionResponse>;
}

export const ServerReflectionService: IServerReflectionService;

export interface IServerReflectionServer extends grpc.UntypedServiceImplementation {
    serverReflectionInfo: grpc.handleBidiStreamingCall<grpc_reflection_v1_reflection_pb.ServerReflectionRequest, grpc_reflection_v1_reflection_pb.ServerReflectionResponse>;
}

export interface IServerReflectionClient {
    serverReflectionInfo(): grpc.ClientDuplexStream<grpc_reflection_v1_reflection_pb.ServerReflectionRequest, grpc_reflection_v1_reflection_pb.ServerReflectionResponse>;
    serverReflectionInfo(options: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<grpc_reflection_v1_reflection_pb.ServerReflectionRequest, grpc_reflection_v1_reflection_pb.ServerReflectionResponse>;
    serverReflectionInfo(metadata: grpc.Metadata, options?: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<grpc_reflection_v1_reflection_pb.ServerReflectionRequest, grpc_reflection_v1_reflection_pb.ServerReflectionResponse>;
}

export class ServerReflectionClient extends grpc.Client implements IServerReflectionClient {
    constructor(address: string, credentials: grpc.ChannelCredentials, options?: Partial<grpc.ClientOptions>);
    public serverReflectionInfo(options?: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<grpc_reflection_v1_reflection_pb.ServerReflectionRequest, grpc_reflection_v1_reflection_pb.ServerReflectionResponse>;
    public serverReflectionInfo(metadata?: grpc.Metadata, options?: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<grpc_reflection_v1_reflection_pb.ServerReflectionRequest, grpc_reflection_v1_reflection_pb.ServerReflectionResponse>;
}
