//
//Сервис реализует функционал управления баннерами.
//Используются как источник Критичнх уведомления, White label компаний и объявления рекламных акций

// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc             v4.23.1
// source: keyapis/banner/v1/keyapis_banner_banner_v1.proto

package keyapis_banner_v1

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 (
	BannerService_PostBanner_FullMethodName            = "/keyapis.banner.v1.BannerService/PostBanner"
	BannerService_GetBanner_FullMethodName             = "/keyapis.banner.v1.BannerService/GetBanner"
	BannerService_GetBannerLite_FullMethodName         = "/keyapis.banner.v1.BannerService/GetBannerLite"
	BannerService_GetBannerList_FullMethodName         = "/keyapis.banner.v1.BannerService/GetBannerList"
	BannerService_GetBannerLiteList_FullMethodName     = "/keyapis.banner.v1.BannerService/GetBannerLiteList"
	BannerService_GetBannerCount_FullMethodName        = "/keyapis.banner.v1.BannerService/GetBannerCount"
	BannerService_PostBannerUploadImage_FullMethodName = "/keyapis.banner.v1.BannerService/PostBannerUploadImage"
)

// BannerServiceClient is the client API for BannerService 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 BannerServiceClient interface {
	// Метод сохранения баннера.
	// Поддерживает создание и обновление.
	// Метод доступен для: admin, manager, service
	PostBanner(ctx context.Context, in *PostBannerRequest, opts ...grpc.CallOption) (*PostBannerResponse, error)
	// Метод получения баннера.
	// Метод доступен для: admin, manager, service
	GetBanner(ctx context.Context, in *GetBannerRequest, opts ...grpc.CallOption) (*GetBannerResponse, error)
	// Метод получения упрощённого баннера.
	// Не требует авторизации
	GetBannerLite(ctx context.Context, in *GetBannerLiteRequest, opts ...grpc.CallOption) (*GetBannerLiteResponse, error)
	// Метод получения списка баннеров.
	// Метод доступен для: admin, manager, service
	GetBannerList(ctx context.Context, in *GetBannerListRequest, opts ...grpc.CallOption) (BannerService_GetBannerListClient, error)
	// Метод получения списка упрощённых баннеров.
	// Возвращает всегда активные баннеры.
	// По умолчанию возвращает первые 20 баннеров осортированных по приоритету, затем по дате начала акции(от самых важных к не важным, затем от самых новых акций к самым старым).
	// Если запрос выполнен хотя бы без одного изпризнака приложения возвращает пустой список.
	// Если запрос выполнен без признаков пользователя метод возвращает пустой список.
	// Не требует авторизации
	GetBannerLiteList(ctx context.Context, in *GetBannerLiteListRequest, opts ...grpc.CallOption) (BannerService_GetBannerLiteListClient, error)
	// Метод получения количества баннеров.
	// Метод доступен для: admin, manager, service
	GetBannerCount(ctx context.Context, in *GetBannerCountRequest, opts ...grpc.CallOption) (*GetBannerCountResponse, error)
	// Метод загрузки картинки баннера.
	// Метод доступен для: admin, manager, service
	PostBannerUploadImage(ctx context.Context, in *PostBannerUploadImageRequest, opts ...grpc.CallOption) (*PostBannerUploadImageResponse, error)
}

type bannerServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewBannerServiceClient(cc grpc.ClientConnInterface) BannerServiceClient {
	return &bannerServiceClient{cc}
}

func (c *bannerServiceClient) PostBanner(ctx context.Context, in *PostBannerRequest, opts ...grpc.CallOption) (*PostBannerResponse, error) {
	out := new(PostBannerResponse)
	err := c.cc.Invoke(ctx, BannerService_PostBanner_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *bannerServiceClient) GetBanner(ctx context.Context, in *GetBannerRequest, opts ...grpc.CallOption) (*GetBannerResponse, error) {
	out := new(GetBannerResponse)
	err := c.cc.Invoke(ctx, BannerService_GetBanner_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *bannerServiceClient) GetBannerLite(ctx context.Context, in *GetBannerLiteRequest, opts ...grpc.CallOption) (*GetBannerLiteResponse, error) {
	out := new(GetBannerLiteResponse)
	err := c.cc.Invoke(ctx, BannerService_GetBannerLite_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *bannerServiceClient) GetBannerList(ctx context.Context, in *GetBannerListRequest, opts ...grpc.CallOption) (BannerService_GetBannerListClient, error) {
	stream, err := c.cc.NewStream(ctx, &BannerService_ServiceDesc.Streams[0], BannerService_GetBannerList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &bannerServiceGetBannerListClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type BannerService_GetBannerListClient interface {
	Recv() (*GetBannerListResponse, error)
	grpc.ClientStream
}

type bannerServiceGetBannerListClient struct {
	grpc.ClientStream
}

func (x *bannerServiceGetBannerListClient) Recv() (*GetBannerListResponse, error) {
	m := new(GetBannerListResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *bannerServiceClient) GetBannerLiteList(ctx context.Context, in *GetBannerLiteListRequest, opts ...grpc.CallOption) (BannerService_GetBannerLiteListClient, error) {
	stream, err := c.cc.NewStream(ctx, &BannerService_ServiceDesc.Streams[1], BannerService_GetBannerLiteList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &bannerServiceGetBannerLiteListClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type BannerService_GetBannerLiteListClient interface {
	Recv() (*GetBannerLiteListResponse, error)
	grpc.ClientStream
}

type bannerServiceGetBannerLiteListClient struct {
	grpc.ClientStream
}

func (x *bannerServiceGetBannerLiteListClient) Recv() (*GetBannerLiteListResponse, error) {
	m := new(GetBannerLiteListResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *bannerServiceClient) GetBannerCount(ctx context.Context, in *GetBannerCountRequest, opts ...grpc.CallOption) (*GetBannerCountResponse, error) {
	out := new(GetBannerCountResponse)
	err := c.cc.Invoke(ctx, BannerService_GetBannerCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *bannerServiceClient) PostBannerUploadImage(ctx context.Context, in *PostBannerUploadImageRequest, opts ...grpc.CallOption) (*PostBannerUploadImageResponse, error) {
	out := new(PostBannerUploadImageResponse)
	err := c.cc.Invoke(ctx, BannerService_PostBannerUploadImage_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// BannerServiceServer is the server API for BannerService service.
// All implementations should embed UnimplementedBannerServiceServer
// for forward compatibility
type BannerServiceServer interface {
	// Метод сохранения баннера.
	// Поддерживает создание и обновление.
	// Метод доступен для: admin, manager, service
	PostBanner(context.Context, *PostBannerRequest) (*PostBannerResponse, error)
	// Метод получения баннера.
	// Метод доступен для: admin, manager, service
	GetBanner(context.Context, *GetBannerRequest) (*GetBannerResponse, error)
	// Метод получения упрощённого баннера.
	// Не требует авторизации
	GetBannerLite(context.Context, *GetBannerLiteRequest) (*GetBannerLiteResponse, error)
	// Метод получения списка баннеров.
	// Метод доступен для: admin, manager, service
	GetBannerList(*GetBannerListRequest, BannerService_GetBannerListServer) error
	// Метод получения списка упрощённых баннеров.
	// Возвращает всегда активные баннеры.
	// По умолчанию возвращает первые 20 баннеров осортированных по приоритету, затем по дате начала акции(от самых важных к не важным, затем от самых новых акций к самым старым).
	// Если запрос выполнен хотя бы без одного изпризнака приложения возвращает пустой список.
	// Если запрос выполнен без признаков пользователя метод возвращает пустой список.
	// Не требует авторизации
	GetBannerLiteList(*GetBannerLiteListRequest, BannerService_GetBannerLiteListServer) error
	// Метод получения количества баннеров.
	// Метод доступен для: admin, manager, service
	GetBannerCount(context.Context, *GetBannerCountRequest) (*GetBannerCountResponse, error)
	// Метод загрузки картинки баннера.
	// Метод доступен для: admin, manager, service
	PostBannerUploadImage(context.Context, *PostBannerUploadImageRequest) (*PostBannerUploadImageResponse, error)
}

// UnimplementedBannerServiceServer should be embedded to have forward compatible implementations.
type UnimplementedBannerServiceServer struct {
}

func (UnimplementedBannerServiceServer) PostBanner(context.Context, *PostBannerRequest) (*PostBannerResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostBanner not implemented")
}
func (UnimplementedBannerServiceServer) GetBanner(context.Context, *GetBannerRequest) (*GetBannerResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetBanner not implemented")
}
func (UnimplementedBannerServiceServer) GetBannerLite(context.Context, *GetBannerLiteRequest) (*GetBannerLiteResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetBannerLite not implemented")
}
func (UnimplementedBannerServiceServer) GetBannerList(*GetBannerListRequest, BannerService_GetBannerListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetBannerList not implemented")
}
func (UnimplementedBannerServiceServer) GetBannerLiteList(*GetBannerLiteListRequest, BannerService_GetBannerLiteListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetBannerLiteList not implemented")
}
func (UnimplementedBannerServiceServer) GetBannerCount(context.Context, *GetBannerCountRequest) (*GetBannerCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetBannerCount not implemented")
}
func (UnimplementedBannerServiceServer) PostBannerUploadImage(context.Context, *PostBannerUploadImageRequest) (*PostBannerUploadImageResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostBannerUploadImage not implemented")
}

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

func RegisterBannerServiceServer(s grpc.ServiceRegistrar, srv BannerServiceServer) {
	s.RegisterService(&BannerService_ServiceDesc, srv)
}

func _BannerService_PostBanner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostBannerRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(BannerServiceServer).PostBanner(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: BannerService_PostBanner_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(BannerServiceServer).PostBanner(ctx, req.(*PostBannerRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _BannerService_GetBanner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetBannerRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(BannerServiceServer).GetBanner(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: BannerService_GetBanner_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(BannerServiceServer).GetBanner(ctx, req.(*GetBannerRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _BannerService_GetBannerLite_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetBannerLiteRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(BannerServiceServer).GetBannerLite(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: BannerService_GetBannerLite_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(BannerServiceServer).GetBannerLite(ctx, req.(*GetBannerLiteRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _BannerService_GetBannerList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetBannerListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(BannerServiceServer).GetBannerList(m, &bannerServiceGetBannerListServer{stream})
}

type BannerService_GetBannerListServer interface {
	Send(*GetBannerListResponse) error
	grpc.ServerStream
}

type bannerServiceGetBannerListServer struct {
	grpc.ServerStream
}

func (x *bannerServiceGetBannerListServer) Send(m *GetBannerListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _BannerService_GetBannerLiteList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetBannerLiteListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(BannerServiceServer).GetBannerLiteList(m, &bannerServiceGetBannerLiteListServer{stream})
}

type BannerService_GetBannerLiteListServer interface {
	Send(*GetBannerLiteListResponse) error
	grpc.ServerStream
}

type bannerServiceGetBannerLiteListServer struct {
	grpc.ServerStream
}

func (x *bannerServiceGetBannerLiteListServer) Send(m *GetBannerLiteListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _BannerService_GetBannerCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetBannerCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(BannerServiceServer).GetBannerCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: BannerService_GetBannerCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(BannerServiceServer).GetBannerCount(ctx, req.(*GetBannerCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _BannerService_PostBannerUploadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostBannerUploadImageRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(BannerServiceServer).PostBannerUploadImage(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: BannerService_PostBannerUploadImage_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(BannerServiceServer).PostBannerUploadImage(ctx, req.(*PostBannerUploadImageRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// BannerService_ServiceDesc is the grpc.ServiceDesc for BannerService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var BannerService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "keyapis.banner.v1.BannerService",
	HandlerType: (*BannerServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "PostBanner",
			Handler:    _BannerService_PostBanner_Handler,
		},
		{
			MethodName: "GetBanner",
			Handler:    _BannerService_GetBanner_Handler,
		},
		{
			MethodName: "GetBannerLite",
			Handler:    _BannerService_GetBannerLite_Handler,
		},
		{
			MethodName: "GetBannerCount",
			Handler:    _BannerService_GetBannerCount_Handler,
		},
		{
			MethodName: "PostBannerUploadImage",
			Handler:    _BannerService_PostBannerUploadImage_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "GetBannerList",
			Handler:       _BannerService_GetBannerList_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "GetBannerLiteList",
			Handler:       _BannerService_GetBannerLiteList_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "keyapis/banner/v1/keyapis_banner_banner_v1.proto",
}
