// package: akkaserverless.component.eventsourcedentity
// file: akkaserverless/component/eventsourcedentity/event_sourced_entity.proto

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

import * as grpc from "@grpc/grpc-js";
import * as akkaserverless_component_eventsourcedentity_event_sourced_entity_pb from "../../../akkaserverless/component/eventsourcedentity/event_sourced_entity_pb";
import * as akkaserverless_component_component_pb from "../../../akkaserverless/component/component_pb";
import * as akkaserverless_component_entity_entity_pb from "../../../akkaserverless/component/entity/entity_pb";
import * as google_protobuf_any_pb from "google-protobuf/google/protobuf/any_pb";

interface IEventSourcedEntitiesService extends grpc.ServiceDefinition<grpc.UntypedServiceImplementation> {
    handle: IEventSourcedEntitiesService_IHandle;
}

interface IEventSourcedEntitiesService_IHandle extends grpc.MethodDefinition<akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamIn, akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamOut> {
    path: "/akkaserverless.component.eventsourcedentity.EventSourcedEntities/Handle";
    requestStream: true;
    responseStream: true;
    requestSerialize: grpc.serialize<akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamIn>;
    requestDeserialize: grpc.deserialize<akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamIn>;
    responseSerialize: grpc.serialize<akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamOut>;
    responseDeserialize: grpc.deserialize<akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamOut>;
}

export const EventSourcedEntitiesService: IEventSourcedEntitiesService;

export interface IEventSourcedEntitiesServer extends grpc.UntypedServiceImplementation {
    handle: grpc.handleBidiStreamingCall<akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamIn, akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamOut>;
}

export interface IEventSourcedEntitiesClient {
    handle(): grpc.ClientDuplexStream<akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamIn, akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamOut>;
    handle(options: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamIn, akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamOut>;
    handle(metadata: grpc.Metadata, options?: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamIn, akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamOut>;
}

export class EventSourcedEntitiesClient extends grpc.Client implements IEventSourcedEntitiesClient {
    constructor(address: string, credentials: grpc.ChannelCredentials, options?: Partial<grpc.ClientOptions>);
    public handle(options?: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamIn, akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamOut>;
    public handle(metadata?: grpc.Metadata, options?: Partial<grpc.CallOptions>): grpc.ClientDuplexStream<akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamIn, akkaserverless_component_eventsourcedentity_event_sourced_entity_pb.EventSourcedStreamOut>;
}
