//
//Сервис предоставляет возможность управлять шаблонами приборов телеметрии

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

package keyapis_telemetry_control_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 (
	TemplateService_GetTemplateDevice_FullMethodName         = "/keyapis.telemetry_control.v1.TemplateService/GetTemplateDevice"
	TemplateService_GetTemplateDeviceList_FullMethodName     = "/keyapis.telemetry_control.v1.TemplateService/GetTemplateDeviceList"
	TemplateService_GetTemplateDeviceCount_FullMethodName    = "/keyapis.telemetry_control.v1.TemplateService/GetTemplateDeviceCount"
	TemplateService_PostTemplateDevice_FullMethodName        = "/keyapis.telemetry_control.v1.TemplateService/PostTemplateDevice"
	TemplateService_DeleteTemplateDevice_FullMethodName      = "/keyapis.telemetry_control.v1.TemplateService/DeleteTemplateDevice"
	TemplateService_GetTemplateIndicator_FullMethodName      = "/keyapis.telemetry_control.v1.TemplateService/GetTemplateIndicator"
	TemplateService_GetTemplateIndicatorList_FullMethodName  = "/keyapis.telemetry_control.v1.TemplateService/GetTemplateIndicatorList"
	TemplateService_GetTemplateIndicatorCount_FullMethodName = "/keyapis.telemetry_control.v1.TemplateService/GetTemplateIndicatorCount"
	TemplateService_PostTemplateIndicator_FullMethodName     = "/keyapis.telemetry_control.v1.TemplateService/PostTemplateIndicator"
	TemplateService_DeleteTemplateIndicator_FullMethodName   = "/keyapis.telemetry_control.v1.TemplateService/DeleteTemplateIndicator"
)

// TemplateServiceClient is the client API for TemplateService 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 TemplateServiceClient interface {
	// Метод получения шаблона ПУ.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateDevice(ctx context.Context, in *GetTemplateDeviceRequest, opts ...grpc.CallOption) (*GetTemplateDeviceResponse, error)
	// Метод получения списка шаблонов ПУ.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateDeviceList(ctx context.Context, in *GetTemplateDeviceListRequest, opts ...grpc.CallOption) (TemplateService_GetTemplateDeviceListClient, error)
	// Метод получения количества шаблонов ПУ.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateDeviceCount(ctx context.Context, in *GetTemplateDeviceCountRequest, opts ...grpc.CallOption) (*GetTemplateDeviceCountResponse, error)
	// Метод сохранения шаблона ПУ.
	// Поддерживает создание и обновление.
	// Метод доступен для: Token: admin, service, application. Без учета разрешений
	PostTemplateDevice(ctx context.Context, in *PostTemplateDeviceRequest, opts ...grpc.CallOption) (*PostTemplateDeviceResponse, error)
	// Метод удаления шаблона ПУ.
	// Метод доступен для: Token: admin, service, application. Без учета разрешений
	DeleteTemplateDevice(ctx context.Context, in *DeleteTemplateDeviceRequest, opts ...grpc.CallOption) (*DeleteTemplateDeviceResponse, error)
	// Метод получения шаблона индикатора.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateIndicator(ctx context.Context, in *GetTemplateIndicatorRequest, opts ...grpc.CallOption) (*GetTemplateIndicatorResponse, error)
	// Метод получения списка шаблонов индикаторов.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateIndicatorList(ctx context.Context, in *GetTemplateIndicatorListRequest, opts ...grpc.CallOption) (TemplateService_GetTemplateIndicatorListClient, error)
	// Метод получения количества шаблонов индикаторов.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateIndicatorCount(ctx context.Context, in *GetTemplateIndicatorCountRequest, opts ...grpc.CallOption) (*GetTemplateIndicatorCountResponse, error)
	// Метод сохранения шаблонов индикатора.
	// Поддерживает создание и обновление.
	// Метод доступен для: Token: admin, service, application. Без учета разрешений
	PostTemplateIndicator(ctx context.Context, in *PostTemplateIndicatorRequest, opts ...grpc.CallOption) (*PostTemplateIndicatorResponse, error)
	// Метод удаления шаблона шаблона индикатора.
	// Метод доступен для: Token: admin, service, application. Без учета разрешений
	DeleteTemplateIndicator(ctx context.Context, in *DeleteTemplateIndicatorRequest, opts ...grpc.CallOption) (*DeleteTemplateIndicatorResponse, error)
}

type templateServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewTemplateServiceClient(cc grpc.ClientConnInterface) TemplateServiceClient {
	return &templateServiceClient{cc}
}

func (c *templateServiceClient) GetTemplateDevice(ctx context.Context, in *GetTemplateDeviceRequest, opts ...grpc.CallOption) (*GetTemplateDeviceResponse, error) {
	out := new(GetTemplateDeviceResponse)
	err := c.cc.Invoke(ctx, TemplateService_GetTemplateDevice_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *templateServiceClient) GetTemplateDeviceList(ctx context.Context, in *GetTemplateDeviceListRequest, opts ...grpc.CallOption) (TemplateService_GetTemplateDeviceListClient, error) {
	stream, err := c.cc.NewStream(ctx, &TemplateService_ServiceDesc.Streams[0], TemplateService_GetTemplateDeviceList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &templateServiceGetTemplateDeviceListClient{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 TemplateService_GetTemplateDeviceListClient interface {
	Recv() (*GetTemplateDeviceListResponse, error)
	grpc.ClientStream
}

type templateServiceGetTemplateDeviceListClient struct {
	grpc.ClientStream
}

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

func (c *templateServiceClient) GetTemplateDeviceCount(ctx context.Context, in *GetTemplateDeviceCountRequest, opts ...grpc.CallOption) (*GetTemplateDeviceCountResponse, error) {
	out := new(GetTemplateDeviceCountResponse)
	err := c.cc.Invoke(ctx, TemplateService_GetTemplateDeviceCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *templateServiceClient) PostTemplateDevice(ctx context.Context, in *PostTemplateDeviceRequest, opts ...grpc.CallOption) (*PostTemplateDeviceResponse, error) {
	out := new(PostTemplateDeviceResponse)
	err := c.cc.Invoke(ctx, TemplateService_PostTemplateDevice_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *templateServiceClient) DeleteTemplateDevice(ctx context.Context, in *DeleteTemplateDeviceRequest, opts ...grpc.CallOption) (*DeleteTemplateDeviceResponse, error) {
	out := new(DeleteTemplateDeviceResponse)
	err := c.cc.Invoke(ctx, TemplateService_DeleteTemplateDevice_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *templateServiceClient) GetTemplateIndicator(ctx context.Context, in *GetTemplateIndicatorRequest, opts ...grpc.CallOption) (*GetTemplateIndicatorResponse, error) {
	out := new(GetTemplateIndicatorResponse)
	err := c.cc.Invoke(ctx, TemplateService_GetTemplateIndicator_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *templateServiceClient) GetTemplateIndicatorList(ctx context.Context, in *GetTemplateIndicatorListRequest, opts ...grpc.CallOption) (TemplateService_GetTemplateIndicatorListClient, error) {
	stream, err := c.cc.NewStream(ctx, &TemplateService_ServiceDesc.Streams[1], TemplateService_GetTemplateIndicatorList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &templateServiceGetTemplateIndicatorListClient{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 TemplateService_GetTemplateIndicatorListClient interface {
	Recv() (*GetTemplateIndicatorListResponse, error)
	grpc.ClientStream
}

type templateServiceGetTemplateIndicatorListClient struct {
	grpc.ClientStream
}

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

func (c *templateServiceClient) GetTemplateIndicatorCount(ctx context.Context, in *GetTemplateIndicatorCountRequest, opts ...grpc.CallOption) (*GetTemplateIndicatorCountResponse, error) {
	out := new(GetTemplateIndicatorCountResponse)
	err := c.cc.Invoke(ctx, TemplateService_GetTemplateIndicatorCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *templateServiceClient) PostTemplateIndicator(ctx context.Context, in *PostTemplateIndicatorRequest, opts ...grpc.CallOption) (*PostTemplateIndicatorResponse, error) {
	out := new(PostTemplateIndicatorResponse)
	err := c.cc.Invoke(ctx, TemplateService_PostTemplateIndicator_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *templateServiceClient) DeleteTemplateIndicator(ctx context.Context, in *DeleteTemplateIndicatorRequest, opts ...grpc.CallOption) (*DeleteTemplateIndicatorResponse, error) {
	out := new(DeleteTemplateIndicatorResponse)
	err := c.cc.Invoke(ctx, TemplateService_DeleteTemplateIndicator_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// TemplateServiceServer is the server API for TemplateService service.
// All implementations should embed UnimplementedTemplateServiceServer
// for forward compatibility
type TemplateServiceServer interface {
	// Метод получения шаблона ПУ.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateDevice(context.Context, *GetTemplateDeviceRequest) (*GetTemplateDeviceResponse, error)
	// Метод получения списка шаблонов ПУ.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateDeviceList(*GetTemplateDeviceListRequest, TemplateService_GetTemplateDeviceListServer) error
	// Метод получения количества шаблонов ПУ.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateDeviceCount(context.Context, *GetTemplateDeviceCountRequest) (*GetTemplateDeviceCountResponse, error)
	// Метод сохранения шаблона ПУ.
	// Поддерживает создание и обновление.
	// Метод доступен для: Token: admin, service, application. Без учета разрешений
	PostTemplateDevice(context.Context, *PostTemplateDeviceRequest) (*PostTemplateDeviceResponse, error)
	// Метод удаления шаблона ПУ.
	// Метод доступен для: Token: admin, service, application. Без учета разрешений
	DeleteTemplateDevice(context.Context, *DeleteTemplateDeviceRequest) (*DeleteTemplateDeviceResponse, error)
	// Метод получения шаблона индикатора.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateIndicator(context.Context, *GetTemplateIndicatorRequest) (*GetTemplateIndicatorResponse, error)
	// Метод получения списка шаблонов индикаторов.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateIndicatorList(*GetTemplateIndicatorListRequest, TemplateService_GetTemplateIndicatorListServer) error
	// Метод получения количества шаблонов индикаторов.
	// Метод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений
	GetTemplateIndicatorCount(context.Context, *GetTemplateIndicatorCountRequest) (*GetTemplateIndicatorCountResponse, error)
	// Метод сохранения шаблонов индикатора.
	// Поддерживает создание и обновление.
	// Метод доступен для: Token: admin, service, application. Без учета разрешений
	PostTemplateIndicator(context.Context, *PostTemplateIndicatorRequest) (*PostTemplateIndicatorResponse, error)
	// Метод удаления шаблона шаблона индикатора.
	// Метод доступен для: Token: admin, service, application. Без учета разрешений
	DeleteTemplateIndicator(context.Context, *DeleteTemplateIndicatorRequest) (*DeleteTemplateIndicatorResponse, error)
}

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

func (UnimplementedTemplateServiceServer) GetTemplateDevice(context.Context, *GetTemplateDeviceRequest) (*GetTemplateDeviceResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetTemplateDevice not implemented")
}
func (UnimplementedTemplateServiceServer) GetTemplateDeviceList(*GetTemplateDeviceListRequest, TemplateService_GetTemplateDeviceListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetTemplateDeviceList not implemented")
}
func (UnimplementedTemplateServiceServer) GetTemplateDeviceCount(context.Context, *GetTemplateDeviceCountRequest) (*GetTemplateDeviceCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetTemplateDeviceCount not implemented")
}
func (UnimplementedTemplateServiceServer) PostTemplateDevice(context.Context, *PostTemplateDeviceRequest) (*PostTemplateDeviceResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostTemplateDevice not implemented")
}
func (UnimplementedTemplateServiceServer) DeleteTemplateDevice(context.Context, *DeleteTemplateDeviceRequest) (*DeleteTemplateDeviceResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteTemplateDevice not implemented")
}
func (UnimplementedTemplateServiceServer) GetTemplateIndicator(context.Context, *GetTemplateIndicatorRequest) (*GetTemplateIndicatorResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetTemplateIndicator not implemented")
}
func (UnimplementedTemplateServiceServer) GetTemplateIndicatorList(*GetTemplateIndicatorListRequest, TemplateService_GetTemplateIndicatorListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetTemplateIndicatorList not implemented")
}
func (UnimplementedTemplateServiceServer) GetTemplateIndicatorCount(context.Context, *GetTemplateIndicatorCountRequest) (*GetTemplateIndicatorCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetTemplateIndicatorCount not implemented")
}
func (UnimplementedTemplateServiceServer) PostTemplateIndicator(context.Context, *PostTemplateIndicatorRequest) (*PostTemplateIndicatorResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostTemplateIndicator not implemented")
}
func (UnimplementedTemplateServiceServer) DeleteTemplateIndicator(context.Context, *DeleteTemplateIndicatorRequest) (*DeleteTemplateIndicatorResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteTemplateIndicator not implemented")
}

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

func RegisterTemplateServiceServer(s grpc.ServiceRegistrar, srv TemplateServiceServer) {
	s.RegisterService(&TemplateService_ServiceDesc, srv)
}

func _TemplateService_GetTemplateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetTemplateDeviceRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TemplateServiceServer).GetTemplateDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TemplateService_GetTemplateDevice_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TemplateServiceServer).GetTemplateDevice(ctx, req.(*GetTemplateDeviceRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TemplateService_GetTemplateDeviceList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetTemplateDeviceListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(TemplateServiceServer).GetTemplateDeviceList(m, &templateServiceGetTemplateDeviceListServer{stream})
}

type TemplateService_GetTemplateDeviceListServer interface {
	Send(*GetTemplateDeviceListResponse) error
	grpc.ServerStream
}

type templateServiceGetTemplateDeviceListServer struct {
	grpc.ServerStream
}

func (x *templateServiceGetTemplateDeviceListServer) Send(m *GetTemplateDeviceListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _TemplateService_GetTemplateDeviceCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetTemplateDeviceCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TemplateServiceServer).GetTemplateDeviceCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TemplateService_GetTemplateDeviceCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TemplateServiceServer).GetTemplateDeviceCount(ctx, req.(*GetTemplateDeviceCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TemplateService_PostTemplateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostTemplateDeviceRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TemplateServiceServer).PostTemplateDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TemplateService_PostTemplateDevice_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TemplateServiceServer).PostTemplateDevice(ctx, req.(*PostTemplateDeviceRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TemplateService_DeleteTemplateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteTemplateDeviceRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TemplateServiceServer).DeleteTemplateDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TemplateService_DeleteTemplateDevice_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TemplateServiceServer).DeleteTemplateDevice(ctx, req.(*DeleteTemplateDeviceRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TemplateService_GetTemplateIndicator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetTemplateIndicatorRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TemplateServiceServer).GetTemplateIndicator(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TemplateService_GetTemplateIndicator_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TemplateServiceServer).GetTemplateIndicator(ctx, req.(*GetTemplateIndicatorRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TemplateService_GetTemplateIndicatorList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetTemplateIndicatorListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(TemplateServiceServer).GetTemplateIndicatorList(m, &templateServiceGetTemplateIndicatorListServer{stream})
}

type TemplateService_GetTemplateIndicatorListServer interface {
	Send(*GetTemplateIndicatorListResponse) error
	grpc.ServerStream
}

type templateServiceGetTemplateIndicatorListServer struct {
	grpc.ServerStream
}

func (x *templateServiceGetTemplateIndicatorListServer) Send(m *GetTemplateIndicatorListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _TemplateService_GetTemplateIndicatorCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetTemplateIndicatorCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TemplateServiceServer).GetTemplateIndicatorCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TemplateService_GetTemplateIndicatorCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TemplateServiceServer).GetTemplateIndicatorCount(ctx, req.(*GetTemplateIndicatorCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TemplateService_PostTemplateIndicator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostTemplateIndicatorRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TemplateServiceServer).PostTemplateIndicator(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TemplateService_PostTemplateIndicator_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TemplateServiceServer).PostTemplateIndicator(ctx, req.(*PostTemplateIndicatorRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TemplateService_DeleteTemplateIndicator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteTemplateIndicatorRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TemplateServiceServer).DeleteTemplateIndicator(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TemplateService_DeleteTemplateIndicator_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TemplateServiceServer).DeleteTemplateIndicator(ctx, req.(*DeleteTemplateIndicatorRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// TemplateService_ServiceDesc is the grpc.ServiceDesc for TemplateService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var TemplateService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "keyapis.telemetry_control.v1.TemplateService",
	HandlerType: (*TemplateServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetTemplateDevice",
			Handler:    _TemplateService_GetTemplateDevice_Handler,
		},
		{
			MethodName: "GetTemplateDeviceCount",
			Handler:    _TemplateService_GetTemplateDeviceCount_Handler,
		},
		{
			MethodName: "PostTemplateDevice",
			Handler:    _TemplateService_PostTemplateDevice_Handler,
		},
		{
			MethodName: "DeleteTemplateDevice",
			Handler:    _TemplateService_DeleteTemplateDevice_Handler,
		},
		{
			MethodName: "GetTemplateIndicator",
			Handler:    _TemplateService_GetTemplateIndicator_Handler,
		},
		{
			MethodName: "GetTemplateIndicatorCount",
			Handler:    _TemplateService_GetTemplateIndicatorCount_Handler,
		},
		{
			MethodName: "PostTemplateIndicator",
			Handler:    _TemplateService_PostTemplateIndicator_Handler,
		},
		{
			MethodName: "DeleteTemplateIndicator",
			Handler:    _TemplateService_DeleteTemplateIndicator_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "GetTemplateDeviceList",
			Handler:       _TemplateService_GetTemplateDeviceList_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "GetTemplateIndicatorList",
			Handler:       _TemplateService_GetTemplateIndicatorList_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "keyapis/telemetry_control/v1/keyapis_telemetry_control_template_v1.proto",
}
