//
//Сервис реализует устаревший функционал управления услугами.
//Услуги это составные части привилегии на квартиру, сейчас считаются устаревшими, использовать нужно привилегии, сделаны тут для совместимости

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

package keyapis_subscription_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 (
	ServiceService_GetServiceList_FullMethodName           = "/keyapis.subscription.v1.ServiceService/GetServiceList"
	ServiceService_GetServicePrivilegeList_FullMethodName  = "/keyapis.subscription.v1.ServiceService/GetServicePrivilegeList"
	ServiceService_GetServicePrivilegeCount_FullMethodName = "/keyapis.subscription.v1.ServiceService/GetServicePrivilegeCount"
	ServiceService_GetServiceKindList_FullMethodName       = "/keyapis.subscription.v1.ServiceService/GetServiceKindList"
)

// ServiceServiceClient is the client API for ServiceService 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 ServiceServiceClient interface {
	// Метод получения услуг квартиры.
	// Вернёт все услуги на квартире и недоступные по адресу как неактивные.
	// Метод доступен для: admin, master, service, application(subscription:read или subscription:edit)
	GetServiceList(ctx context.Context, in *GetServiceListRequest, opts ...grpc.CallOption) (ServiceService_GetServiceListClient, error)
	// Метод получения списка услуг.
	// Вернёт все услуги на квартире и недоступные по адресу как неактивные.
	// Метод доступен для: admin, service
	GetServicePrivilegeList(ctx context.Context, in *GetServicePrivilegeListRequest, opts ...grpc.CallOption) (ServiceService_GetServicePrivilegeListClient, error)
	// Метод получения количества услуг.
	// Вернёт все услуги на квартире и недоступные по адресу как неактивные.
	// Метод доступен для: admin, service
	GetServicePrivilegeCount(ctx context.Context, in *GetServicePrivilegeCountRequest, opts ...grpc.CallOption) (*GetServicePrivilegeCountResponse, error)
	// Метод получения справочника видов услуг.
	// Метод доступен для: admin, service
	GetServiceKindList(ctx context.Context, in *GetServiceKindListRequest, opts ...grpc.CallOption) (ServiceService_GetServiceKindListClient, error)
}

type serviceServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewServiceServiceClient(cc grpc.ClientConnInterface) ServiceServiceClient {
	return &serviceServiceClient{cc}
}

func (c *serviceServiceClient) GetServiceList(ctx context.Context, in *GetServiceListRequest, opts ...grpc.CallOption) (ServiceService_GetServiceListClient, error) {
	stream, err := c.cc.NewStream(ctx, &ServiceService_ServiceDesc.Streams[0], ServiceService_GetServiceList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &serviceServiceGetServiceListClient{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 ServiceService_GetServiceListClient interface {
	Recv() (*GetServiceListResponse, error)
	grpc.ClientStream
}

type serviceServiceGetServiceListClient struct {
	grpc.ClientStream
}

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

func (c *serviceServiceClient) GetServicePrivilegeList(ctx context.Context, in *GetServicePrivilegeListRequest, opts ...grpc.CallOption) (ServiceService_GetServicePrivilegeListClient, error) {
	stream, err := c.cc.NewStream(ctx, &ServiceService_ServiceDesc.Streams[1], ServiceService_GetServicePrivilegeList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &serviceServiceGetServicePrivilegeListClient{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 ServiceService_GetServicePrivilegeListClient interface {
	Recv() (*GetServicePrivilegeListResponse, error)
	grpc.ClientStream
}

type serviceServiceGetServicePrivilegeListClient struct {
	grpc.ClientStream
}

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

func (c *serviceServiceClient) GetServicePrivilegeCount(ctx context.Context, in *GetServicePrivilegeCountRequest, opts ...grpc.CallOption) (*GetServicePrivilegeCountResponse, error) {
	out := new(GetServicePrivilegeCountResponse)
	err := c.cc.Invoke(ctx, ServiceService_GetServicePrivilegeCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *serviceServiceClient) GetServiceKindList(ctx context.Context, in *GetServiceKindListRequest, opts ...grpc.CallOption) (ServiceService_GetServiceKindListClient, error) {
	stream, err := c.cc.NewStream(ctx, &ServiceService_ServiceDesc.Streams[2], ServiceService_GetServiceKindList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &serviceServiceGetServiceKindListClient{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 ServiceService_GetServiceKindListClient interface {
	Recv() (*GetServiceKindListResponse, error)
	grpc.ClientStream
}

type serviceServiceGetServiceKindListClient struct {
	grpc.ClientStream
}

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

// ServiceServiceServer is the server API for ServiceService service.
// All implementations should embed UnimplementedServiceServiceServer
// for forward compatibility
type ServiceServiceServer interface {
	// Метод получения услуг квартиры.
	// Вернёт все услуги на квартире и недоступные по адресу как неактивные.
	// Метод доступен для: admin, master, service, application(subscription:read или subscription:edit)
	GetServiceList(*GetServiceListRequest, ServiceService_GetServiceListServer) error
	// Метод получения списка услуг.
	// Вернёт все услуги на квартире и недоступные по адресу как неактивные.
	// Метод доступен для: admin, service
	GetServicePrivilegeList(*GetServicePrivilegeListRequest, ServiceService_GetServicePrivilegeListServer) error
	// Метод получения количества услуг.
	// Вернёт все услуги на квартире и недоступные по адресу как неактивные.
	// Метод доступен для: admin, service
	GetServicePrivilegeCount(context.Context, *GetServicePrivilegeCountRequest) (*GetServicePrivilegeCountResponse, error)
	// Метод получения справочника видов услуг.
	// Метод доступен для: admin, service
	GetServiceKindList(*GetServiceKindListRequest, ServiceService_GetServiceKindListServer) error
}

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

func (UnimplementedServiceServiceServer) GetServiceList(*GetServiceListRequest, ServiceService_GetServiceListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetServiceList not implemented")
}
func (UnimplementedServiceServiceServer) GetServicePrivilegeList(*GetServicePrivilegeListRequest, ServiceService_GetServicePrivilegeListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetServicePrivilegeList not implemented")
}
func (UnimplementedServiceServiceServer) GetServicePrivilegeCount(context.Context, *GetServicePrivilegeCountRequest) (*GetServicePrivilegeCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetServicePrivilegeCount not implemented")
}
func (UnimplementedServiceServiceServer) GetServiceKindList(*GetServiceKindListRequest, ServiceService_GetServiceKindListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetServiceKindList not implemented")
}

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

func RegisterServiceServiceServer(s grpc.ServiceRegistrar, srv ServiceServiceServer) {
	s.RegisterService(&ServiceService_ServiceDesc, srv)
}

func _ServiceService_GetServiceList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetServiceListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ServiceServiceServer).GetServiceList(m, &serviceServiceGetServiceListServer{stream})
}

type ServiceService_GetServiceListServer interface {
	Send(*GetServiceListResponse) error
	grpc.ServerStream
}

type serviceServiceGetServiceListServer struct {
	grpc.ServerStream
}

func (x *serviceServiceGetServiceListServer) Send(m *GetServiceListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _ServiceService_GetServicePrivilegeList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetServicePrivilegeListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ServiceServiceServer).GetServicePrivilegeList(m, &serviceServiceGetServicePrivilegeListServer{stream})
}

type ServiceService_GetServicePrivilegeListServer interface {
	Send(*GetServicePrivilegeListResponse) error
	grpc.ServerStream
}

type serviceServiceGetServicePrivilegeListServer struct {
	grpc.ServerStream
}

func (x *serviceServiceGetServicePrivilegeListServer) Send(m *GetServicePrivilegeListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _ServiceService_GetServicePrivilegeCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetServicePrivilegeCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ServiceServiceServer).GetServicePrivilegeCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ServiceService_GetServicePrivilegeCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ServiceServiceServer).GetServicePrivilegeCount(ctx, req.(*GetServicePrivilegeCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ServiceService_GetServiceKindList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetServiceKindListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ServiceServiceServer).GetServiceKindList(m, &serviceServiceGetServiceKindListServer{stream})
}

type ServiceService_GetServiceKindListServer interface {
	Send(*GetServiceKindListResponse) error
	grpc.ServerStream
}

type serviceServiceGetServiceKindListServer struct {
	grpc.ServerStream
}

func (x *serviceServiceGetServiceKindListServer) Send(m *GetServiceKindListResponse) error {
	return x.ServerStream.SendMsg(m)
}

// ServiceService_ServiceDesc is the grpc.ServiceDesc for ServiceService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var ServiceService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "keyapis.subscription.v1.ServiceService",
	HandlerType: (*ServiceServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetServicePrivilegeCount",
			Handler:    _ServiceService_GetServicePrivilegeCount_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "GetServiceList",
			Handler:       _ServiceService_GetServiceList_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "GetServicePrivilegeList",
			Handler:       _ServiceService_GetServicePrivilegeList_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "GetServiceKindList",
			Handler:       _ServiceService_GetServiceKindList_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "keyapis/subscription/v1/keyapis_subscription_service_v1.proto",
}
