// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc             v4.25.1
// source: bot.proto

package proto

import (
	context "context"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7

const (
	BotService_PopBotTask_FullMethodName           = "/bot.BotService/PopBotTask"
	BotService_PushBotMarkers_FullMethodName       = "/bot.BotService/PushBotMarkers"
	BotService_PushBotEvent_FullMethodName         = "/bot.BotService/PushBotEvent"
	BotService_PushBotEventBlocking_FullMethodName = "/bot.BotService/PushBotEventBlocking"
)

// BotServiceClient is the client API for BotService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type BotServiceClient interface {
	PopBotTask(ctx context.Context, in *PopBotTaskRequest, opts ...grpc.CallOption) (*PopBotTaskResponse, error)
	PushBotMarkers(ctx context.Context, in *PushBotMarkersRequest, opts ...grpc.CallOption) (*PushBotMarkersResponse, error)
	PushBotEvent(ctx context.Context, in *PushBotEventRequest, opts ...grpc.CallOption) (*PushBotEventResponse, error)
	PushBotEventBlocking(ctx context.Context, in *PushBotEventBlockingRequest, opts ...grpc.CallOption) (*PushBotEventBlockingResponse, error)
}

type botServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewBotServiceClient(cc grpc.ClientConnInterface) BotServiceClient {
	return &botServiceClient{cc}
}

func (c *botServiceClient) PopBotTask(ctx context.Context, in *PopBotTaskRequest, opts ...grpc.CallOption) (*PopBotTaskResponse, error) {
	out := new(PopBotTaskResponse)
	err := c.cc.Invoke(ctx, BotService_PopBotTask_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *botServiceClient) PushBotMarkers(ctx context.Context, in *PushBotMarkersRequest, opts ...grpc.CallOption) (*PushBotMarkersResponse, error) {
	out := new(PushBotMarkersResponse)
	err := c.cc.Invoke(ctx, BotService_PushBotMarkers_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *botServiceClient) PushBotEvent(ctx context.Context, in *PushBotEventRequest, opts ...grpc.CallOption) (*PushBotEventResponse, error) {
	out := new(PushBotEventResponse)
	err := c.cc.Invoke(ctx, BotService_PushBotEvent_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *botServiceClient) PushBotEventBlocking(ctx context.Context, in *PushBotEventBlockingRequest, opts ...grpc.CallOption) (*PushBotEventBlockingResponse, error) {
	out := new(PushBotEventBlockingResponse)
	err := c.cc.Invoke(ctx, BotService_PushBotEventBlocking_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// BotServiceServer is the server API for BotService service.
// All implementations must embed UnimplementedBotServiceServer
// for forward compatibility
type BotServiceServer interface {
	PopBotTask(context.Context, *PopBotTaskRequest) (*PopBotTaskResponse, error)
	PushBotMarkers(context.Context, *PushBotMarkersRequest) (*PushBotMarkersResponse, error)
	PushBotEvent(context.Context, *PushBotEventRequest) (*PushBotEventResponse, error)
	PushBotEventBlocking(context.Context, *PushBotEventBlockingRequest) (*PushBotEventBlockingResponse, error)
	mustEmbedUnimplementedBotServiceServer()
}

// UnimplementedBotServiceServer must be embedded to have forward compatible implementations.
type UnimplementedBotServiceServer struct {
}

func (UnimplementedBotServiceServer) PopBotTask(context.Context, *PopBotTaskRequest) (*PopBotTaskResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PopBotTask not implemented")
}
func (UnimplementedBotServiceServer) PushBotMarkers(context.Context, *PushBotMarkersRequest) (*PushBotMarkersResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PushBotMarkers not implemented")
}
func (UnimplementedBotServiceServer) PushBotEvent(context.Context, *PushBotEventRequest) (*PushBotEventResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PushBotEvent not implemented")
}
func (UnimplementedBotServiceServer) PushBotEventBlocking(context.Context, *PushBotEventBlockingRequest) (*PushBotEventBlockingResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PushBotEventBlocking not implemented")
}
func (UnimplementedBotServiceServer) mustEmbedUnimplementedBotServiceServer() {}

// UnsafeBotServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to BotServiceServer will
// result in compilation errors.
type UnsafeBotServiceServer interface {
	mustEmbedUnimplementedBotServiceServer()
}

func RegisterBotServiceServer(s grpc.ServiceRegistrar, srv BotServiceServer) {
	s.RegisterService(&BotService_ServiceDesc, srv)
}

func _BotService_PopBotTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PopBotTaskRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(BotServiceServer).PopBotTask(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: BotService_PopBotTask_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(BotServiceServer).PopBotTask(ctx, req.(*PopBotTaskRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _BotService_PushBotMarkers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PushBotMarkersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(BotServiceServer).PushBotMarkers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: BotService_PushBotMarkers_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(BotServiceServer).PushBotMarkers(ctx, req.(*PushBotMarkersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _BotService_PushBotEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PushBotEventRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(BotServiceServer).PushBotEvent(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: BotService_PushBotEvent_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(BotServiceServer).PushBotEvent(ctx, req.(*PushBotEventRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _BotService_PushBotEventBlocking_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PushBotEventBlockingRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(BotServiceServer).PushBotEventBlocking(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: BotService_PushBotEventBlocking_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(BotServiceServer).PushBotEventBlocking(ctx, req.(*PushBotEventBlockingRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// BotService_ServiceDesc is the grpc.ServiceDesc for BotService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var BotService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "bot.BotService",
	HandlerType: (*BotServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "PopBotTask",
			Handler:    _BotService_PopBotTask_Handler,
		},
		{
			MethodName: "PushBotMarkers",
			Handler:    _BotService_PushBotMarkers_Handler,
		},
		{
			MethodName: "PushBotEvent",
			Handler:    _BotService_PushBotEvent_Handler,
		},
		{
			MethodName: "PushBotEventBlocking",
			Handler:    _BotService_PushBotEventBlocking_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "bot.proto",
}
