//
//Сервис реализует функционал управления устройствами

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

package keyapis_device_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 (
	DeviceService_GetDevice_FullMethodName                                = "/keyapis.device.v1.DeviceService/GetDevice"
	DeviceService_GetDeviceList_FullMethodName                            = "/keyapis.device.v1.DeviceService/GetDeviceList"
	DeviceService_GetDeviceCount_FullMethodName                           = "/keyapis.device.v1.DeviceService/GetDeviceCount"
	DeviceService_PostDevice_FullMethodName                               = "/keyapis.device.v1.DeviceService/PostDevice"
	DeviceService_PutDevice_FullMethodName                                = "/keyapis.device.v1.DeviceService/PutDevice"
	DeviceService_PostDeviceInstallPreset_FullMethodName                  = "/keyapis.device.v1.DeviceService/PostDeviceInstallPreset"
	DeviceService_PostDeviceReplace_FullMethodName                        = "/keyapis.device.v1.DeviceService/PostDeviceReplace"
	DeviceService_PostDeviceReconfigure_FullMethodName                    = "/keyapis.device.v1.DeviceService/PostDeviceReconfigure"
	DeviceService_GetDeviceConfigurationStatuses_FullMethodName           = "/keyapis.device.v1.DeviceService/GetDeviceConfigurationStatuses"
	DeviceService_PostDeviceConfigurationStatus_FullMethodName            = "/keyapis.device.v1.DeviceService/PostDeviceConfigurationStatus"
	DeviceService_GetDeviceConfigurationStatusGroupedList_FullMethodName  = "/keyapis.device.v1.DeviceService/GetDeviceConfigurationStatusGroupedList"
	DeviceService_GetDeviceConfigurationStatusGroupedCount_FullMethodName = "/keyapis.device.v1.DeviceService/GetDeviceConfigurationStatusGroupedCount"
	DeviceService_DeleteDevice_FullMethodName                             = "/keyapis.device.v1.DeviceService/DeleteDevice"
	DeviceService_GetDeviceLite_FullMethodName                            = "/keyapis.device.v1.DeviceService/GetDeviceLite"
)

// DeviceServiceClient is the client API for DeviceService 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 DeviceServiceClient interface {
	// Метод получаения устройства.
	// Метод доступен для: admin, service, owner, employee, bti, ltp_first
	GetDevice(ctx context.Context, in *GetDeviceRequest, opts ...grpc.CallOption) (*GetDeviceResponse, error)
	// Метод получения списка устройств.
	// Метод доступен для: admin, service, owner, employee, bti, ltp_first
	GetDeviceList(ctx context.Context, in *GetDeviceListRequest, opts ...grpc.CallOption) (DeviceService_GetDeviceListClient, error)
	// Метод получения количества устройств.
	// Метод доступен для: admin, service, owner, employee, bti, ltp_first
	GetDeviceCount(ctx context.Context, in *GetDeviceCountRequest, opts ...grpc.CallOption) (*GetDeviceCountResponse, error)
	// Метод создания устройства.
	// Метод доступен для: admin, bti, service, owner, employee.
	// Для owner, employee доступно создание и редактирование только в КВГ, привязанных к компании пользователя
	PostDevice(ctx context.Context, in *PostDeviceRequest, opts ...grpc.CallOption) (*PostDeviceResponse, error)
	// Deprecated: Do not use.
	// Метод изменения устройства.
	// Метод доступен для: admin, bti, service
	PutDevice(ctx context.Context, in *PutDeviceRequest, opts ...grpc.CallOption) (*PutDeviceResponse, error)
	// Метод установки пресета на устройство.
	// Метод доступен для: admin, service
	PostDeviceInstallPreset(ctx context.Context, in *PostDeviceInstallPresetRequest, opts ...grpc.CallOption) (*PostDeviceInstallPresetResponse, error)
	// Метод замены устройста.
	// Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=655256574.
	// Метод доступен для: admin, bti, service
	PostDeviceReplace(ctx context.Context, in *PostDeviceReplaceRequest, opts ...grpc.CallOption) (*PostDeviceReplaceResponse, error)
	// Метод переконфигурирования устройста.
	// Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=630337555.
	// Метод доступен для: admin, bti, service
	PostDeviceReconfigure(ctx context.Context, in *PostDeviceReconfigureRequest, opts ...grpc.CallOption) (*PostDeviceReconfigureResponse, error)
	// Метод получения статусов конфигурации устройства.
	// Метод доступен для: admin, service, bti, ltp_first
	GetDeviceConfigurationStatuses(ctx context.Context, in *GetDeviceConfigurationStatusesRequest, opts ...grpc.CallOption) (*GetDeviceConfigurationStatusesResponse, error)
	// Метод изменения статуса конфигурации устройства.
	// Метод доступен для: admin, service
	PostDeviceConfigurationStatus(ctx context.Context, in *PostDeviceConfigurationStatusRequest, opts ...grpc.CallOption) (*PostDeviceConfigurationStatusResponse, error)
	// Метод получения списка конфигураций сгруппированных по устройствам.
	// Метод доступен для: admin, service
	GetDeviceConfigurationStatusGroupedList(ctx context.Context, in *GetDeviceConfigurationStatusGroupedListRequest, opts ...grpc.CallOption) (DeviceService_GetDeviceConfigurationStatusGroupedListClient, error)
	// Метод получения количества конфигураций сгруппированных по устройствам.
	// Метод доступен для: admin, service
	GetDeviceConfigurationStatusGroupedCount(ctx context.Context, in *GetDeviceConfigurationStatusGroupedCountRequest, opts ...grpc.CallOption) (*GetDeviceConfigurationStatusGroupedCountResponse, error)
	// Метод удаления устройства.
	// Метод доступен для: admin, service
	DeleteDevice(ctx context.Context, in *DeleteDeviceRequest, opts ...grpc.CallOption) (*DeleteDeviceResponse, error)
	// Метод получаения упрощенного устройства.
	// Метод доступен для: admin, service, owner, employee, bti, ltp_first.
	// Метод доступен для: ApiKey
	GetDeviceLite(ctx context.Context, in *GetDeviceLiteRequest, opts ...grpc.CallOption) (*GetDeviceLiteResponse, error)
}

type deviceServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewDeviceServiceClient(cc grpc.ClientConnInterface) DeviceServiceClient {
	return &deviceServiceClient{cc}
}

func (c *deviceServiceClient) GetDevice(ctx context.Context, in *GetDeviceRequest, opts ...grpc.CallOption) (*GetDeviceResponse, error) {
	out := new(GetDeviceResponse)
	err := c.cc.Invoke(ctx, DeviceService_GetDevice_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *deviceServiceClient) GetDeviceList(ctx context.Context, in *GetDeviceListRequest, opts ...grpc.CallOption) (DeviceService_GetDeviceListClient, error) {
	stream, err := c.cc.NewStream(ctx, &DeviceService_ServiceDesc.Streams[0], DeviceService_GetDeviceList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &deviceServiceGetDeviceListClient{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 DeviceService_GetDeviceListClient interface {
	Recv() (*GetDeviceListResponse, error)
	grpc.ClientStream
}

type deviceServiceGetDeviceListClient struct {
	grpc.ClientStream
}

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

func (c *deviceServiceClient) GetDeviceCount(ctx context.Context, in *GetDeviceCountRequest, opts ...grpc.CallOption) (*GetDeviceCountResponse, error) {
	out := new(GetDeviceCountResponse)
	err := c.cc.Invoke(ctx, DeviceService_GetDeviceCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *deviceServiceClient) PostDevice(ctx context.Context, in *PostDeviceRequest, opts ...grpc.CallOption) (*PostDeviceResponse, error) {
	out := new(PostDeviceResponse)
	err := c.cc.Invoke(ctx, DeviceService_PostDevice_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Deprecated: Do not use.
func (c *deviceServiceClient) PutDevice(ctx context.Context, in *PutDeviceRequest, opts ...grpc.CallOption) (*PutDeviceResponse, error) {
	out := new(PutDeviceResponse)
	err := c.cc.Invoke(ctx, DeviceService_PutDevice_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *deviceServiceClient) PostDeviceInstallPreset(ctx context.Context, in *PostDeviceInstallPresetRequest, opts ...grpc.CallOption) (*PostDeviceInstallPresetResponse, error) {
	out := new(PostDeviceInstallPresetResponse)
	err := c.cc.Invoke(ctx, DeviceService_PostDeviceInstallPreset_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *deviceServiceClient) PostDeviceReplace(ctx context.Context, in *PostDeviceReplaceRequest, opts ...grpc.CallOption) (*PostDeviceReplaceResponse, error) {
	out := new(PostDeviceReplaceResponse)
	err := c.cc.Invoke(ctx, DeviceService_PostDeviceReplace_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *deviceServiceClient) PostDeviceReconfigure(ctx context.Context, in *PostDeviceReconfigureRequest, opts ...grpc.CallOption) (*PostDeviceReconfigureResponse, error) {
	out := new(PostDeviceReconfigureResponse)
	err := c.cc.Invoke(ctx, DeviceService_PostDeviceReconfigure_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *deviceServiceClient) GetDeviceConfigurationStatuses(ctx context.Context, in *GetDeviceConfigurationStatusesRequest, opts ...grpc.CallOption) (*GetDeviceConfigurationStatusesResponse, error) {
	out := new(GetDeviceConfigurationStatusesResponse)
	err := c.cc.Invoke(ctx, DeviceService_GetDeviceConfigurationStatuses_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *deviceServiceClient) PostDeviceConfigurationStatus(ctx context.Context, in *PostDeviceConfigurationStatusRequest, opts ...grpc.CallOption) (*PostDeviceConfigurationStatusResponse, error) {
	out := new(PostDeviceConfigurationStatusResponse)
	err := c.cc.Invoke(ctx, DeviceService_PostDeviceConfigurationStatus_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *deviceServiceClient) GetDeviceConfigurationStatusGroupedList(ctx context.Context, in *GetDeviceConfigurationStatusGroupedListRequest, opts ...grpc.CallOption) (DeviceService_GetDeviceConfigurationStatusGroupedListClient, error) {
	stream, err := c.cc.NewStream(ctx, &DeviceService_ServiceDesc.Streams[1], DeviceService_GetDeviceConfigurationStatusGroupedList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &deviceServiceGetDeviceConfigurationStatusGroupedListClient{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 DeviceService_GetDeviceConfigurationStatusGroupedListClient interface {
	Recv() (*GetDeviceConfigurationStatusGroupedListResponse, error)
	grpc.ClientStream
}

type deviceServiceGetDeviceConfigurationStatusGroupedListClient struct {
	grpc.ClientStream
}

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

func (c *deviceServiceClient) GetDeviceConfigurationStatusGroupedCount(ctx context.Context, in *GetDeviceConfigurationStatusGroupedCountRequest, opts ...grpc.CallOption) (*GetDeviceConfigurationStatusGroupedCountResponse, error) {
	out := new(GetDeviceConfigurationStatusGroupedCountResponse)
	err := c.cc.Invoke(ctx, DeviceService_GetDeviceConfigurationStatusGroupedCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *deviceServiceClient) DeleteDevice(ctx context.Context, in *DeleteDeviceRequest, opts ...grpc.CallOption) (*DeleteDeviceResponse, error) {
	out := new(DeleteDeviceResponse)
	err := c.cc.Invoke(ctx, DeviceService_DeleteDevice_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *deviceServiceClient) GetDeviceLite(ctx context.Context, in *GetDeviceLiteRequest, opts ...grpc.CallOption) (*GetDeviceLiteResponse, error) {
	out := new(GetDeviceLiteResponse)
	err := c.cc.Invoke(ctx, DeviceService_GetDeviceLite_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// DeviceServiceServer is the server API for DeviceService service.
// All implementations should embed UnimplementedDeviceServiceServer
// for forward compatibility
type DeviceServiceServer interface {
	// Метод получаения устройства.
	// Метод доступен для: admin, service, owner, employee, bti, ltp_first
	GetDevice(context.Context, *GetDeviceRequest) (*GetDeviceResponse, error)
	// Метод получения списка устройств.
	// Метод доступен для: admin, service, owner, employee, bti, ltp_first
	GetDeviceList(*GetDeviceListRequest, DeviceService_GetDeviceListServer) error
	// Метод получения количества устройств.
	// Метод доступен для: admin, service, owner, employee, bti, ltp_first
	GetDeviceCount(context.Context, *GetDeviceCountRequest) (*GetDeviceCountResponse, error)
	// Метод создания устройства.
	// Метод доступен для: admin, bti, service, owner, employee.
	// Для owner, employee доступно создание и редактирование только в КВГ, привязанных к компании пользователя
	PostDevice(context.Context, *PostDeviceRequest) (*PostDeviceResponse, error)
	// Deprecated: Do not use.
	// Метод изменения устройства.
	// Метод доступен для: admin, bti, service
	PutDevice(context.Context, *PutDeviceRequest) (*PutDeviceResponse, error)
	// Метод установки пресета на устройство.
	// Метод доступен для: admin, service
	PostDeviceInstallPreset(context.Context, *PostDeviceInstallPresetRequest) (*PostDeviceInstallPresetResponse, error)
	// Метод замены устройста.
	// Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=655256574.
	// Метод доступен для: admin, bti, service
	PostDeviceReplace(context.Context, *PostDeviceReplaceRequest) (*PostDeviceReplaceResponse, error)
	// Метод переконфигурирования устройста.
	// Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=630337555.
	// Метод доступен для: admin, bti, service
	PostDeviceReconfigure(context.Context, *PostDeviceReconfigureRequest) (*PostDeviceReconfigureResponse, error)
	// Метод получения статусов конфигурации устройства.
	// Метод доступен для: admin, service, bti, ltp_first
	GetDeviceConfigurationStatuses(context.Context, *GetDeviceConfigurationStatusesRequest) (*GetDeviceConfigurationStatusesResponse, error)
	// Метод изменения статуса конфигурации устройства.
	// Метод доступен для: admin, service
	PostDeviceConfigurationStatus(context.Context, *PostDeviceConfigurationStatusRequest) (*PostDeviceConfigurationStatusResponse, error)
	// Метод получения списка конфигураций сгруппированных по устройствам.
	// Метод доступен для: admin, service
	GetDeviceConfigurationStatusGroupedList(*GetDeviceConfigurationStatusGroupedListRequest, DeviceService_GetDeviceConfigurationStatusGroupedListServer) error
	// Метод получения количества конфигураций сгруппированных по устройствам.
	// Метод доступен для: admin, service
	GetDeviceConfigurationStatusGroupedCount(context.Context, *GetDeviceConfigurationStatusGroupedCountRequest) (*GetDeviceConfigurationStatusGroupedCountResponse, error)
	// Метод удаления устройства.
	// Метод доступен для: admin, service
	DeleteDevice(context.Context, *DeleteDeviceRequest) (*DeleteDeviceResponse, error)
	// Метод получаения упрощенного устройства.
	// Метод доступен для: admin, service, owner, employee, bti, ltp_first.
	// Метод доступен для: ApiKey
	GetDeviceLite(context.Context, *GetDeviceLiteRequest) (*GetDeviceLiteResponse, error)
}

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

func (UnimplementedDeviceServiceServer) GetDevice(context.Context, *GetDeviceRequest) (*GetDeviceResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetDevice not implemented")
}
func (UnimplementedDeviceServiceServer) GetDeviceList(*GetDeviceListRequest, DeviceService_GetDeviceListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetDeviceList not implemented")
}
func (UnimplementedDeviceServiceServer) GetDeviceCount(context.Context, *GetDeviceCountRequest) (*GetDeviceCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetDeviceCount not implemented")
}
func (UnimplementedDeviceServiceServer) PostDevice(context.Context, *PostDeviceRequest) (*PostDeviceResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostDevice not implemented")
}
func (UnimplementedDeviceServiceServer) PutDevice(context.Context, *PutDeviceRequest) (*PutDeviceResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PutDevice not implemented")
}
func (UnimplementedDeviceServiceServer) PostDeviceInstallPreset(context.Context, *PostDeviceInstallPresetRequest) (*PostDeviceInstallPresetResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostDeviceInstallPreset not implemented")
}
func (UnimplementedDeviceServiceServer) PostDeviceReplace(context.Context, *PostDeviceReplaceRequest) (*PostDeviceReplaceResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostDeviceReplace not implemented")
}
func (UnimplementedDeviceServiceServer) PostDeviceReconfigure(context.Context, *PostDeviceReconfigureRequest) (*PostDeviceReconfigureResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostDeviceReconfigure not implemented")
}
func (UnimplementedDeviceServiceServer) GetDeviceConfigurationStatuses(context.Context, *GetDeviceConfigurationStatusesRequest) (*GetDeviceConfigurationStatusesResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetDeviceConfigurationStatuses not implemented")
}
func (UnimplementedDeviceServiceServer) PostDeviceConfigurationStatus(context.Context, *PostDeviceConfigurationStatusRequest) (*PostDeviceConfigurationStatusResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostDeviceConfigurationStatus not implemented")
}
func (UnimplementedDeviceServiceServer) GetDeviceConfigurationStatusGroupedList(*GetDeviceConfigurationStatusGroupedListRequest, DeviceService_GetDeviceConfigurationStatusGroupedListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetDeviceConfigurationStatusGroupedList not implemented")
}
func (UnimplementedDeviceServiceServer) GetDeviceConfigurationStatusGroupedCount(context.Context, *GetDeviceConfigurationStatusGroupedCountRequest) (*GetDeviceConfigurationStatusGroupedCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetDeviceConfigurationStatusGroupedCount not implemented")
}
func (UnimplementedDeviceServiceServer) DeleteDevice(context.Context, *DeleteDeviceRequest) (*DeleteDeviceResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteDevice not implemented")
}
func (UnimplementedDeviceServiceServer) GetDeviceLite(context.Context, *GetDeviceLiteRequest) (*GetDeviceLiteResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetDeviceLite not implemented")
}

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

func RegisterDeviceServiceServer(s grpc.ServiceRegistrar, srv DeviceServiceServer) {
	s.RegisterService(&DeviceService_ServiceDesc, srv)
}

func _DeviceService_GetDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetDeviceRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).GetDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_GetDevice_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).GetDevice(ctx, req.(*GetDeviceRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _DeviceService_GetDeviceList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetDeviceListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(DeviceServiceServer).GetDeviceList(m, &deviceServiceGetDeviceListServer{stream})
}

type DeviceService_GetDeviceListServer interface {
	Send(*GetDeviceListResponse) error
	grpc.ServerStream
}

type deviceServiceGetDeviceListServer struct {
	grpc.ServerStream
}

func (x *deviceServiceGetDeviceListServer) Send(m *GetDeviceListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _DeviceService_GetDeviceCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetDeviceCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).GetDeviceCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_GetDeviceCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).GetDeviceCount(ctx, req.(*GetDeviceCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _DeviceService_PostDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostDeviceRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).PostDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_PostDevice_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).PostDevice(ctx, req.(*PostDeviceRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _DeviceService_PutDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PutDeviceRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).PutDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_PutDevice_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).PutDevice(ctx, req.(*PutDeviceRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _DeviceService_PostDeviceInstallPreset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostDeviceInstallPresetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).PostDeviceInstallPreset(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_PostDeviceInstallPreset_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).PostDeviceInstallPreset(ctx, req.(*PostDeviceInstallPresetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _DeviceService_PostDeviceReplace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostDeviceReplaceRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).PostDeviceReplace(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_PostDeviceReplace_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).PostDeviceReplace(ctx, req.(*PostDeviceReplaceRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _DeviceService_PostDeviceReconfigure_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostDeviceReconfigureRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).PostDeviceReconfigure(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_PostDeviceReconfigure_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).PostDeviceReconfigure(ctx, req.(*PostDeviceReconfigureRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _DeviceService_GetDeviceConfigurationStatuses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetDeviceConfigurationStatusesRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).GetDeviceConfigurationStatuses(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_GetDeviceConfigurationStatuses_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).GetDeviceConfigurationStatuses(ctx, req.(*GetDeviceConfigurationStatusesRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _DeviceService_PostDeviceConfigurationStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostDeviceConfigurationStatusRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).PostDeviceConfigurationStatus(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_PostDeviceConfigurationStatus_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).PostDeviceConfigurationStatus(ctx, req.(*PostDeviceConfigurationStatusRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _DeviceService_GetDeviceConfigurationStatusGroupedList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetDeviceConfigurationStatusGroupedListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(DeviceServiceServer).GetDeviceConfigurationStatusGroupedList(m, &deviceServiceGetDeviceConfigurationStatusGroupedListServer{stream})
}

type DeviceService_GetDeviceConfigurationStatusGroupedListServer interface {
	Send(*GetDeviceConfigurationStatusGroupedListResponse) error
	grpc.ServerStream
}

type deviceServiceGetDeviceConfigurationStatusGroupedListServer struct {
	grpc.ServerStream
}

func (x *deviceServiceGetDeviceConfigurationStatusGroupedListServer) Send(m *GetDeviceConfigurationStatusGroupedListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _DeviceService_GetDeviceConfigurationStatusGroupedCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetDeviceConfigurationStatusGroupedCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).GetDeviceConfigurationStatusGroupedCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_GetDeviceConfigurationStatusGroupedCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).GetDeviceConfigurationStatusGroupedCount(ctx, req.(*GetDeviceConfigurationStatusGroupedCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _DeviceService_DeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteDeviceRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).DeleteDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_DeleteDevice_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).DeleteDevice(ctx, req.(*DeleteDeviceRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _DeviceService_GetDeviceLite_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetDeviceLiteRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DeviceServiceServer).GetDeviceLite(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: DeviceService_GetDeviceLite_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DeviceServiceServer).GetDeviceLite(ctx, req.(*GetDeviceLiteRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// DeviceService_ServiceDesc is the grpc.ServiceDesc for DeviceService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var DeviceService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "keyapis.device.v1.DeviceService",
	HandlerType: (*DeviceServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetDevice",
			Handler:    _DeviceService_GetDevice_Handler,
		},
		{
			MethodName: "GetDeviceCount",
			Handler:    _DeviceService_GetDeviceCount_Handler,
		},
		{
			MethodName: "PostDevice",
			Handler:    _DeviceService_PostDevice_Handler,
		},
		{
			MethodName: "PutDevice",
			Handler:    _DeviceService_PutDevice_Handler,
		},
		{
			MethodName: "PostDeviceInstallPreset",
			Handler:    _DeviceService_PostDeviceInstallPreset_Handler,
		},
		{
			MethodName: "PostDeviceReplace",
			Handler:    _DeviceService_PostDeviceReplace_Handler,
		},
		{
			MethodName: "PostDeviceReconfigure",
			Handler:    _DeviceService_PostDeviceReconfigure_Handler,
		},
		{
			MethodName: "GetDeviceConfigurationStatuses",
			Handler:    _DeviceService_GetDeviceConfigurationStatuses_Handler,
		},
		{
			MethodName: "PostDeviceConfigurationStatus",
			Handler:    _DeviceService_PostDeviceConfigurationStatus_Handler,
		},
		{
			MethodName: "GetDeviceConfigurationStatusGroupedCount",
			Handler:    _DeviceService_GetDeviceConfigurationStatusGroupedCount_Handler,
		},
		{
			MethodName: "DeleteDevice",
			Handler:    _DeviceService_DeleteDevice_Handler,
		},
		{
			MethodName: "GetDeviceLite",
			Handler:    _DeviceService_GetDeviceLite_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "GetDeviceList",
			Handler:       _DeviceService_GetDeviceList_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "GetDeviceConfigurationStatusGroupedList",
			Handler:       _DeviceService_GetDeviceConfigurationStatusGroupedList_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "keyapis/device/v1/keyapis_device_device_v1.proto",
}
