// package: 
// file: profile/ProfileCompat.proto

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

import * as grpc from "@grpc/grpc-js";
import * as profile_ProfileCompat_pb from "../profile/ProfileCompat_pb";
import * as common_Common_pb from "../common/Common_pb";
import * as profile_Profile_pb from "../profile/Profile_pb";

interface IProfileTaskService extends grpc.ServiceDefinition<grpc.UntypedServiceImplementation> {
    getProfileTaskCommands: IProfileTaskService_IgetProfileTaskCommands;
    collectSnapshot: IProfileTaskService_IcollectSnapshot;
    reportTaskFinish: IProfileTaskService_IreportTaskFinish;
}

interface IProfileTaskService_IgetProfileTaskCommands extends grpc.MethodDefinition<profile_Profile_pb.ProfileTaskCommandQuery, common_Common_pb.Commands> {
    path: "/ProfileTask/getProfileTaskCommands";
    requestStream: false;
    responseStream: false;
    requestSerialize: grpc.serialize<profile_Profile_pb.ProfileTaskCommandQuery>;
    requestDeserialize: grpc.deserialize<profile_Profile_pb.ProfileTaskCommandQuery>;
    responseSerialize: grpc.serialize<common_Common_pb.Commands>;
    responseDeserialize: grpc.deserialize<common_Common_pb.Commands>;
}
interface IProfileTaskService_IcollectSnapshot extends grpc.MethodDefinition<profile_Profile_pb.ThreadSnapshot, common_Common_pb.Commands> {
    path: "/ProfileTask/collectSnapshot";
    requestStream: true;
    responseStream: false;
    requestSerialize: grpc.serialize<profile_Profile_pb.ThreadSnapshot>;
    requestDeserialize: grpc.deserialize<profile_Profile_pb.ThreadSnapshot>;
    responseSerialize: grpc.serialize<common_Common_pb.Commands>;
    responseDeserialize: grpc.deserialize<common_Common_pb.Commands>;
}
interface IProfileTaskService_IreportTaskFinish extends grpc.MethodDefinition<profile_Profile_pb.ProfileTaskFinishReport, common_Common_pb.Commands> {
    path: "/ProfileTask/reportTaskFinish";
    requestStream: false;
    responseStream: false;
    requestSerialize: grpc.serialize<profile_Profile_pb.ProfileTaskFinishReport>;
    requestDeserialize: grpc.deserialize<profile_Profile_pb.ProfileTaskFinishReport>;
    responseSerialize: grpc.serialize<common_Common_pb.Commands>;
    responseDeserialize: grpc.deserialize<common_Common_pb.Commands>;
}

export const ProfileTaskService: IProfileTaskService;

export interface IProfileTaskServer extends grpc.UntypedServiceImplementation {
    getProfileTaskCommands: grpc.handleUnaryCall<profile_Profile_pb.ProfileTaskCommandQuery, common_Common_pb.Commands>;
    collectSnapshot: grpc.handleClientStreamingCall<profile_Profile_pb.ThreadSnapshot, common_Common_pb.Commands>;
    reportTaskFinish: grpc.handleUnaryCall<profile_Profile_pb.ProfileTaskFinishReport, common_Common_pb.Commands>;
}

export interface IProfileTaskClient {
    getProfileTaskCommands(request: profile_Profile_pb.ProfileTaskCommandQuery, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
    getProfileTaskCommands(request: profile_Profile_pb.ProfileTaskCommandQuery, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
    getProfileTaskCommands(request: profile_Profile_pb.ProfileTaskCommandQuery, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
    collectSnapshot(callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<profile_Profile_pb.ThreadSnapshot>;
    collectSnapshot(metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<profile_Profile_pb.ThreadSnapshot>;
    collectSnapshot(options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<profile_Profile_pb.ThreadSnapshot>;
    collectSnapshot(metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<profile_Profile_pb.ThreadSnapshot>;
    reportTaskFinish(request: profile_Profile_pb.ProfileTaskFinishReport, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
    reportTaskFinish(request: profile_Profile_pb.ProfileTaskFinishReport, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
    reportTaskFinish(request: profile_Profile_pb.ProfileTaskFinishReport, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
}

export class ProfileTaskClient extends grpc.Client implements IProfileTaskClient {
    constructor(address: string, credentials: grpc.ChannelCredentials, options?: Partial<grpc.ClientOptions>);
    public getProfileTaskCommands(request: profile_Profile_pb.ProfileTaskCommandQuery, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
    public getProfileTaskCommands(request: profile_Profile_pb.ProfileTaskCommandQuery, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
    public getProfileTaskCommands(request: profile_Profile_pb.ProfileTaskCommandQuery, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
    public collectSnapshot(callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<profile_Profile_pb.ThreadSnapshot>;
    public collectSnapshot(metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<profile_Profile_pb.ThreadSnapshot>;
    public collectSnapshot(options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<profile_Profile_pb.ThreadSnapshot>;
    public collectSnapshot(metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientWritableStream<profile_Profile_pb.ThreadSnapshot>;
    public reportTaskFinish(request: profile_Profile_pb.ProfileTaskFinishReport, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
    public reportTaskFinish(request: profile_Profile_pb.ProfileTaskFinishReport, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
    public reportTaskFinish(request: profile_Profile_pb.ProfileTaskFinishReport, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: common_Common_pb.Commands) => void): grpc.ClientUnaryCall;
}
