// package: skywalking.v3
// file: language-agent/Meter.proto

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

import * as grpc from "@grpc/grpc-js";
import * as language_agent_Meter_pb from "../language-agent/Meter_pb";
import * as common_Common_pb from "../common/Common_pb";

interface IMeterReportServiceService extends grpc.ServiceDefinition<grpc.UntypedServiceImplementation> {
    collect: IMeterReportServiceService_Icollect;
    collectBatch: IMeterReportServiceService_IcollectBatch;
}

interface IMeterReportServiceService_Icollect extends grpc.MethodDefinition<language_agent_Meter_pb.MeterData, common_Common_pb.Commands> {
    path: "/skywalking.v3.MeterReportService/collect";
    requestStream: true;
    responseStream: false;
    requestSerialize: grpc.serialize<language_agent_Meter_pb.MeterData>;
    requestDeserialize: grpc.deserialize<language_agent_Meter_pb.MeterData>;
    responseSerialize: grpc.serialize<common_Common_pb.Commands>;
    responseDeserialize: grpc.deserialize<common_Common_pb.Commands>;
}
interface IMeterReportServiceService_IcollectBatch extends grpc.MethodDefinition<language_agent_Meter_pb.MeterDataCollection, common_Common_pb.Commands> {
    path: "/skywalking.v3.MeterReportService/collectBatch";
    requestStream: true;
    responseStream: false;
    requestSerialize: grpc.serialize<language_agent_Meter_pb.MeterDataCollection>;
    requestDeserialize: grpc.deserialize<language_agent_Meter_pb.MeterDataCollection>;
    responseSerialize: grpc.serialize<common_Common_pb.Commands>;
    responseDeserialize: grpc.deserialize<common_Common_pb.Commands>;
}

export const MeterReportServiceService: IMeterReportServiceService;

export interface IMeterReportServiceServer extends grpc.UntypedServiceImplementation {
    collect: grpc.handleClientStreamingCall<language_agent_Meter_pb.MeterData, common_Common_pb.Commands>;
    collectBatch: grpc.handleClientStreamingCall<language_agent_Meter_pb.MeterDataCollection, common_Common_pb.Commands>;
}

export interface IMeterReportServiceClient {
    collect(callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterData>;
    collect(metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterData>;
    collect(options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterData>;
    collect(metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterData>;
    collectBatch(callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterDataCollection>;
    collectBatch(metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterDataCollection>;
    collectBatch(options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterDataCollection>;
    collectBatch(metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterDataCollection>;
}

export class MeterReportServiceClient extends grpc.Client implements IMeterReportServiceClient {
    constructor(address: string, credentials: grpc.ChannelCredentials, options?: Partial<grpc.ClientOptions>);
    public collect(callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterData>;
    public collect(metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterData>;
    public collect(options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterData>;
    public collect(metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterData>;
    public collectBatch(callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterDataCollection>;
    public collectBatch(metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterDataCollection>;
    public collectBatch(options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterDataCollection>;
    public collectBatch(metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<language_agent_Meter_pb.MeterDataCollection>;
}
