// package: 
// file: tunnel/http.proto

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

import * as grpc from "@grpc/grpc-js";
import * as tunnel_http_pb from "../tunnel/http_pb";

interface IHttpReportServiceService extends grpc.ServiceDefinition<grpc.UntypedServiceImplementation> {
    invoke: IHttpReportServiceService_Iinvoke;
    stream: IHttpReportServiceService_Istream;
}

interface IHttpReportServiceService_Iinvoke extends grpc.MethodDefinition<tunnel_http_pb.HttpReqObject, tunnel_http_pb.HttpRespObject> {
    path: "/HttpReportService/invoke";
    requestStream: true;
    responseStream: false;
    requestSerialize: grpc.serialize<tunnel_http_pb.HttpReqObject>;
    requestDeserialize: grpc.deserialize<tunnel_http_pb.HttpReqObject>;
    responseSerialize: grpc.serialize<tunnel_http_pb.HttpRespObject>;
    responseDeserialize: grpc.deserialize<tunnel_http_pb.HttpRespObject>;
}
interface IHttpReportServiceService_Istream extends grpc.MethodDefinition<tunnel_http_pb.Bytes, tunnel_http_pb.Bytes> {
    path: "/HttpReportService/stream";
    requestStream: true;
    responseStream: true;
    requestSerialize: grpc.serialize<tunnel_http_pb.Bytes>;
    requestDeserialize: grpc.deserialize<tunnel_http_pb.Bytes>;
    responseSerialize: grpc.serialize<tunnel_http_pb.Bytes>;
    responseDeserialize: grpc.deserialize<tunnel_http_pb.Bytes>;
}

export const HttpReportServiceService: IHttpReportServiceService;

export interface IHttpReportServiceServer extends grpc.UntypedServiceImplementation {
    invoke: grpc.handleClientStreamingCall<tunnel_http_pb.HttpReqObject, tunnel_http_pb.HttpRespObject>;
    stream: grpc.handleBidiStreamingCall<tunnel_http_pb.Bytes, tunnel_http_pb.Bytes>;
}

export interface IHttpReportServiceClient {
    invoke(callback: (error: grpc.ServiceError | null, response: tunnel_http_pb.HttpRespObject) => void): grpc.ClientWritableStream<tunnel_http_pb.HttpReqObject>;
    invoke(metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: tunnel_http_pb.HttpRespObject) => void): grpc.ClientWritableStream<tunnel_http_pb.HttpReqObject>;
    invoke(options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: tunnel_http_pb.HttpRespObject) => void): grpc.ClientWritableStream<tunnel_http_pb.HttpReqObject>;
    invoke(metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: tunnel_http_pb.HttpRespObject) => void): grpc.ClientWritableStream<tunnel_http_pb.HttpReqObject>;
    stream(): grpc.ClientDuplexStream<tunnel_http_pb.Bytes, tunnel_http_pb.Bytes>;
    stream(options: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<tunnel_http_pb.Bytes, tunnel_http_pb.Bytes>;
    stream(metadata: grpc.Metadata, options?: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<tunnel_http_pb.Bytes, tunnel_http_pb.Bytes>;
}

export class HttpReportServiceClient extends grpc.Client implements IHttpReportServiceClient {
    constructor(address: string, credentials: grpc.ChannelCredentials, options?: Partial<grpc.ClientOptions>);
    public invoke(callback: (error: grpc.ServiceError | null, response: tunnel_http_pb.HttpRespObject) => void): grpc.ClientWritableStream<tunnel_http_pb.HttpReqObject>;
    public invoke(metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: tunnel_http_pb.HttpRespObject) => void): grpc.ClientWritableStream<tunnel_http_pb.HttpReqObject>;
    public invoke(options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: tunnel_http_pb.HttpRespObject) => void): grpc.ClientWritableStream<tunnel_http_pb.HttpReqObject>;
    public invoke(metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: tunnel_http_pb.HttpRespObject) => void): grpc.ClientWritableStream<tunnel_http_pb.HttpReqObject>;
    public stream(options?: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<tunnel_http_pb.Bytes, tunnel_http_pb.Bytes>;
    public stream(metadata?: grpc.Metadata, options?: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<tunnel_http_pb.Bytes, tunnel_http_pb.Bytes>;
}
