// package: akkaserverless.protocol
// file: akkaserverless/protocol/discovery.proto

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

import * as grpc from "@grpc/grpc-js";
import * as akkaserverless_protocol_discovery_pb from "../../akkaserverless/protocol/discovery_pb";
import * as google_protobuf_descriptor_pb from "google-protobuf/google/protobuf/descriptor_pb";
import * as google_protobuf_empty_pb from "google-protobuf/google/protobuf/empty_pb";

interface IDiscoveryService extends grpc.ServiceDefinition<grpc.UntypedServiceImplementation> {
    discover: IDiscoveryService_IDiscover;
    reportError: IDiscoveryService_IReportError;
    proxyTerminated: IDiscoveryService_IProxyTerminated;
    healthCheck: IDiscoveryService_IHealthCheck;
}

interface IDiscoveryService_IDiscover extends grpc.MethodDefinition<akkaserverless_protocol_discovery_pb.ProxyInfo, akkaserverless_protocol_discovery_pb.Spec> {
    path: "/akkaserverless.protocol.Discovery/Discover";
    requestStream: false;
    responseStream: false;
    requestSerialize: grpc.serialize<akkaserverless_protocol_discovery_pb.ProxyInfo>;
    requestDeserialize: grpc.deserialize<akkaserverless_protocol_discovery_pb.ProxyInfo>;
    responseSerialize: grpc.serialize<akkaserverless_protocol_discovery_pb.Spec>;
    responseDeserialize: grpc.deserialize<akkaserverless_protocol_discovery_pb.Spec>;
}
interface IDiscoveryService_IReportError extends grpc.MethodDefinition<akkaserverless_protocol_discovery_pb.UserFunctionError, google_protobuf_empty_pb.Empty> {
    path: "/akkaserverless.protocol.Discovery/ReportError";
    requestStream: false;
    responseStream: false;
    requestSerialize: grpc.serialize<akkaserverless_protocol_discovery_pb.UserFunctionError>;
    requestDeserialize: grpc.deserialize<akkaserverless_protocol_discovery_pb.UserFunctionError>;
    responseSerialize: grpc.serialize<google_protobuf_empty_pb.Empty>;
    responseDeserialize: grpc.deserialize<google_protobuf_empty_pb.Empty>;
}
interface IDiscoveryService_IProxyTerminated extends grpc.MethodDefinition<google_protobuf_empty_pb.Empty, google_protobuf_empty_pb.Empty> {
    path: "/akkaserverless.protocol.Discovery/ProxyTerminated";
    requestStream: false;
    responseStream: false;
    requestSerialize: grpc.serialize<google_protobuf_empty_pb.Empty>;
    requestDeserialize: grpc.deserialize<google_protobuf_empty_pb.Empty>;
    responseSerialize: grpc.serialize<google_protobuf_empty_pb.Empty>;
    responseDeserialize: grpc.deserialize<google_protobuf_empty_pb.Empty>;
}
interface IDiscoveryService_IHealthCheck extends grpc.MethodDefinition<google_protobuf_empty_pb.Empty, google_protobuf_empty_pb.Empty> {
    path: "/akkaserverless.protocol.Discovery/HealthCheck";
    requestStream: false;
    responseStream: false;
    requestSerialize: grpc.serialize<google_protobuf_empty_pb.Empty>;
    requestDeserialize: grpc.deserialize<google_protobuf_empty_pb.Empty>;
    responseSerialize: grpc.serialize<google_protobuf_empty_pb.Empty>;
    responseDeserialize: grpc.deserialize<google_protobuf_empty_pb.Empty>;
}

export const DiscoveryService: IDiscoveryService;

export interface IDiscoveryServer extends grpc.UntypedServiceImplementation {
    discover: grpc.handleUnaryCall<akkaserverless_protocol_discovery_pb.ProxyInfo, akkaserverless_protocol_discovery_pb.Spec>;
    reportError: grpc.handleUnaryCall<akkaserverless_protocol_discovery_pb.UserFunctionError, google_protobuf_empty_pb.Empty>;
    proxyTerminated: grpc.handleUnaryCall<google_protobuf_empty_pb.Empty, google_protobuf_empty_pb.Empty>;
    healthCheck: grpc.handleUnaryCall<google_protobuf_empty_pb.Empty, google_protobuf_empty_pb.Empty>;
}

export interface IDiscoveryClient {
    discover(request: akkaserverless_protocol_discovery_pb.ProxyInfo, callback: (error: grpc.ServiceError | null, response: akkaserverless_protocol_discovery_pb.Spec) => void): grpc.ClientUnaryCall;
    discover(request: akkaserverless_protocol_discovery_pb.ProxyInfo, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: akkaserverless_protocol_discovery_pb.Spec) => void): grpc.ClientUnaryCall;
    discover(request: akkaserverless_protocol_discovery_pb.ProxyInfo, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: akkaserverless_protocol_discovery_pb.Spec) => void): grpc.ClientUnaryCall;
    reportError(request: akkaserverless_protocol_discovery_pb.UserFunctionError, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    reportError(request: akkaserverless_protocol_discovery_pb.UserFunctionError, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    reportError(request: akkaserverless_protocol_discovery_pb.UserFunctionError, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    proxyTerminated(request: google_protobuf_empty_pb.Empty, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    proxyTerminated(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    proxyTerminated(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    healthCheck(request: google_protobuf_empty_pb.Empty, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    healthCheck(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    healthCheck(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
}

export class DiscoveryClient extends grpc.Client implements IDiscoveryClient {
    constructor(address: string, credentials: grpc.ChannelCredentials, options?: Partial<grpc.ClientOptions>);
    public discover(request: akkaserverless_protocol_discovery_pb.ProxyInfo, callback: (error: grpc.ServiceError | null, response: akkaserverless_protocol_discovery_pb.Spec) => void): grpc.ClientUnaryCall;
    public discover(request: akkaserverless_protocol_discovery_pb.ProxyInfo, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: akkaserverless_protocol_discovery_pb.Spec) => void): grpc.ClientUnaryCall;
    public discover(request: akkaserverless_protocol_discovery_pb.ProxyInfo, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: akkaserverless_protocol_discovery_pb.Spec) => void): grpc.ClientUnaryCall;
    public reportError(request: akkaserverless_protocol_discovery_pb.UserFunctionError, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    public reportError(request: akkaserverless_protocol_discovery_pb.UserFunctionError, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    public reportError(request: akkaserverless_protocol_discovery_pb.UserFunctionError, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    public proxyTerminated(request: google_protobuf_empty_pb.Empty, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    public proxyTerminated(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    public proxyTerminated(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    public healthCheck(request: google_protobuf_empty_pb.Empty, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    public healthCheck(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
    public healthCheck(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: google_protobuf_empty_pb.Empty) => void): grpc.ClientUnaryCall;
}
