// package: skywalking.v3
// file: service-mesh-probe/service-mesh.proto

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

import * as grpc from "@grpc/grpc-js";
import * as service_mesh_probe_service_mesh_pb from "../service-mesh-probe/service-mesh_pb";
import * as common_Common_pb from "../common/Common_pb";

interface IServiceMeshMetricServiceService extends grpc.ServiceDefinition<grpc.UntypedServiceImplementation> {
    collect: IServiceMeshMetricServiceService_Icollect;
}

interface IServiceMeshMetricServiceService_Icollect extends grpc.MethodDefinition<service_mesh_probe_service_mesh_pb.ServiceMeshMetric, service_mesh_probe_service_mesh_pb.MeshProbeDownstream> {
    path: "/skywalking.v3.ServiceMeshMetricService/collect";
    requestStream: true;
    responseStream: false;
    requestSerialize: grpc.serialize<service_mesh_probe_service_mesh_pb.ServiceMeshMetric>;
    requestDeserialize: grpc.deserialize<service_mesh_probe_service_mesh_pb.ServiceMeshMetric>;
    responseSerialize: grpc.serialize<service_mesh_probe_service_mesh_pb.MeshProbeDownstream>;
    responseDeserialize: grpc.deserialize<service_mesh_probe_service_mesh_pb.MeshProbeDownstream>;
}

export const ServiceMeshMetricServiceService: IServiceMeshMetricServiceService;

export interface IServiceMeshMetricServiceServer extends grpc.UntypedServiceImplementation {
    collect: grpc.handleClientStreamingCall<service_mesh_probe_service_mesh_pb.ServiceMeshMetric, service_mesh_probe_service_mesh_pb.MeshProbeDownstream>;
}

export interface IServiceMeshMetricServiceClient {
    collect(callback: (error: grpc.ServiceError | null, response: service_mesh_probe_service_mesh_pb.MeshProbeDownstream) => void): grpc.ClientWritableStream<service_mesh_probe_service_mesh_pb.ServiceMeshMetric>;
    collect(metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: service_mesh_probe_service_mesh_pb.MeshProbeDownstream) => void): grpc.ClientWritableStream<service_mesh_probe_service_mesh_pb.ServiceMeshMetric>;
    collect(options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: service_mesh_probe_service_mesh_pb.MeshProbeDownstream) => void): grpc.ClientWritableStream<service_mesh_probe_service_mesh_pb.ServiceMeshMetric>;
    collect(metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: service_mesh_probe_service_mesh_pb.MeshProbeDownstream) => void): grpc.ClientWritableStream<service_mesh_probe_service_mesh_pb.ServiceMeshMetric>;
}

export class ServiceMeshMetricServiceClient extends grpc.Client implements IServiceMeshMetricServiceClient {
    constructor(address: string, credentials: grpc.ChannelCredentials, options?: Partial<grpc.ClientOptions>);
    public collect(callback: (error: grpc.ServiceError | null, response: service_mesh_probe_service_mesh_pb.MeshProbeDownstream) => void): grpc.ClientWritableStream<service_mesh_probe_service_mesh_pb.ServiceMeshMetric>;
    public collect(metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: service_mesh_probe_service_mesh_pb.MeshProbeDownstream) => void): grpc.ClientWritableStream<service_mesh_probe_service_mesh_pb.ServiceMeshMetric>;
    public collect(options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: service_mesh_probe_service_mesh_pb.MeshProbeDownstream) => void): grpc.ClientWritableStream<service_mesh_probe_service_mesh_pb.ServiceMeshMetric>;
    public collect(metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: service_mesh_probe_service_mesh_pb.MeshProbeDownstream) => void): grpc.ClientWritableStream<service_mesh_probe_service_mesh_pb.ServiceMeshMetric>;
}
