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

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

package keyapis_preset_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 (
	PresetService_PostPreset_FullMethodName       = "/keyapis.preset.v1.PresetService/PostPreset"
	PresetService_GetPreset_FullMethodName        = "/keyapis.preset.v1.PresetService/GetPreset"
	PresetService_GetPresetDefault_FullMethodName = "/keyapis.preset.v1.PresetService/GetPresetDefault"
	PresetService_GetPresetList_FullMethodName    = "/keyapis.preset.v1.PresetService/GetPresetList"
	PresetService_GetPresetCount_FullMethodName   = "/keyapis.preset.v1.PresetService/GetPresetCount"
	PresetService_DeletePreset_FullMethodName     = "/keyapis.preset.v1.PresetService/DeletePreset"
)

// PresetServiceClient is the client API for PresetService 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 PresetServiceClient interface {
	// Метод сохранения пресетов.
	// Поддерживает создание и обновление.
	// При обновлении пресета посылается задача PresetInstallTask в очередь key.preset.install.
	// Данное сообщение должно отправляться только если изменению подверглось одно из следующих полей:
	// - Sip;
	// - Ntp;
	// - Syslog;
	// - Room;
	// - VideoConfig;
	// - Dtmf.
	// Метод доступен для: admin, service
	PostPreset(ctx context.Context, in *PostPresetRequest, opts ...grpc.CallOption) (*PostPresetResponse, error)
	// Метод получения пресета по идентификатору.
	// Метод доступен для: admin, service, bti, ltp_first, owner, employee
	GetPreset(ctx context.Context, in *GetPresetRequest, opts ...grpc.CallOption) (*GetPresetResponse, error)
	// Метод получения дефолтного пресета.
	// Метод доступен для: admin, service, bti, ltp_first, owner, employee
	GetPresetDefault(ctx context.Context, in *GetPresetDefaultRequest, opts ...grpc.CallOption) (*GetPresetDefaultResponse, error)
	// Метод получения пресетов.
	// Метод доступен для: admin, service, bti, ltp_first, owner, employee
	GetPresetList(ctx context.Context, in *GetPresetListRequest, opts ...grpc.CallOption) (PresetService_GetPresetListClient, error)
	// Метод получения количества пресетов.
	// Метод доступен для: admin, service, bti, ltp_first, owner, employee
	GetPresetCount(ctx context.Context, in *GetPresetCountRequest, opts ...grpc.CallOption) (*GetPresetCountResponse, error)
	// Метод удаления пресета.
	// Нельзя удалить пресет, если он используется на устройстве.
	// Нельзя удалить дефолтный пресет.
	// Метод доступен для: admin, service
	DeletePreset(ctx context.Context, in *DeletePresetRequest, opts ...grpc.CallOption) (*DeletePresetResponse, error)
}

type presetServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewPresetServiceClient(cc grpc.ClientConnInterface) PresetServiceClient {
	return &presetServiceClient{cc}
}

func (c *presetServiceClient) PostPreset(ctx context.Context, in *PostPresetRequest, opts ...grpc.CallOption) (*PostPresetResponse, error) {
	out := new(PostPresetResponse)
	err := c.cc.Invoke(ctx, PresetService_PostPreset_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *presetServiceClient) GetPreset(ctx context.Context, in *GetPresetRequest, opts ...grpc.CallOption) (*GetPresetResponse, error) {
	out := new(GetPresetResponse)
	err := c.cc.Invoke(ctx, PresetService_GetPreset_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *presetServiceClient) GetPresetDefault(ctx context.Context, in *GetPresetDefaultRequest, opts ...grpc.CallOption) (*GetPresetDefaultResponse, error) {
	out := new(GetPresetDefaultResponse)
	err := c.cc.Invoke(ctx, PresetService_GetPresetDefault_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *presetServiceClient) GetPresetList(ctx context.Context, in *GetPresetListRequest, opts ...grpc.CallOption) (PresetService_GetPresetListClient, error) {
	stream, err := c.cc.NewStream(ctx, &PresetService_ServiceDesc.Streams[0], PresetService_GetPresetList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &presetServiceGetPresetListClient{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 PresetService_GetPresetListClient interface {
	Recv() (*GetPresetListResponse, error)
	grpc.ClientStream
}

type presetServiceGetPresetListClient struct {
	grpc.ClientStream
}

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

func (c *presetServiceClient) GetPresetCount(ctx context.Context, in *GetPresetCountRequest, opts ...grpc.CallOption) (*GetPresetCountResponse, error) {
	out := new(GetPresetCountResponse)
	err := c.cc.Invoke(ctx, PresetService_GetPresetCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *presetServiceClient) DeletePreset(ctx context.Context, in *DeletePresetRequest, opts ...grpc.CallOption) (*DeletePresetResponse, error) {
	out := new(DeletePresetResponse)
	err := c.cc.Invoke(ctx, PresetService_DeletePreset_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// PresetServiceServer is the server API for PresetService service.
// All implementations should embed UnimplementedPresetServiceServer
// for forward compatibility
type PresetServiceServer interface {
	// Метод сохранения пресетов.
	// Поддерживает создание и обновление.
	// При обновлении пресета посылается задача PresetInstallTask в очередь key.preset.install.
	// Данное сообщение должно отправляться только если изменению подверглось одно из следующих полей:
	// - Sip;
	// - Ntp;
	// - Syslog;
	// - Room;
	// - VideoConfig;
	// - Dtmf.
	// Метод доступен для: admin, service
	PostPreset(context.Context, *PostPresetRequest) (*PostPresetResponse, error)
	// Метод получения пресета по идентификатору.
	// Метод доступен для: admin, service, bti, ltp_first, owner, employee
	GetPreset(context.Context, *GetPresetRequest) (*GetPresetResponse, error)
	// Метод получения дефолтного пресета.
	// Метод доступен для: admin, service, bti, ltp_first, owner, employee
	GetPresetDefault(context.Context, *GetPresetDefaultRequest) (*GetPresetDefaultResponse, error)
	// Метод получения пресетов.
	// Метод доступен для: admin, service, bti, ltp_first, owner, employee
	GetPresetList(*GetPresetListRequest, PresetService_GetPresetListServer) error
	// Метод получения количества пресетов.
	// Метод доступен для: admin, service, bti, ltp_first, owner, employee
	GetPresetCount(context.Context, *GetPresetCountRequest) (*GetPresetCountResponse, error)
	// Метод удаления пресета.
	// Нельзя удалить пресет, если он используется на устройстве.
	// Нельзя удалить дефолтный пресет.
	// Метод доступен для: admin, service
	DeletePreset(context.Context, *DeletePresetRequest) (*DeletePresetResponse, error)
}

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

func (UnimplementedPresetServiceServer) PostPreset(context.Context, *PostPresetRequest) (*PostPresetResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostPreset not implemented")
}
func (UnimplementedPresetServiceServer) GetPreset(context.Context, *GetPresetRequest) (*GetPresetResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetPreset not implemented")
}
func (UnimplementedPresetServiceServer) GetPresetDefault(context.Context, *GetPresetDefaultRequest) (*GetPresetDefaultResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetPresetDefault not implemented")
}
func (UnimplementedPresetServiceServer) GetPresetList(*GetPresetListRequest, PresetService_GetPresetListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetPresetList not implemented")
}
func (UnimplementedPresetServiceServer) GetPresetCount(context.Context, *GetPresetCountRequest) (*GetPresetCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetPresetCount not implemented")
}
func (UnimplementedPresetServiceServer) DeletePreset(context.Context, *DeletePresetRequest) (*DeletePresetResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeletePreset not implemented")
}

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

func RegisterPresetServiceServer(s grpc.ServiceRegistrar, srv PresetServiceServer) {
	s.RegisterService(&PresetService_ServiceDesc, srv)
}

func _PresetService_PostPreset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostPresetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PresetServiceServer).PostPreset(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: PresetService_PostPreset_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PresetServiceServer).PostPreset(ctx, req.(*PostPresetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _PresetService_GetPreset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetPresetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PresetServiceServer).GetPreset(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: PresetService_GetPreset_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PresetServiceServer).GetPreset(ctx, req.(*GetPresetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _PresetService_GetPresetDefault_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetPresetDefaultRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PresetServiceServer).GetPresetDefault(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: PresetService_GetPresetDefault_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PresetServiceServer).GetPresetDefault(ctx, req.(*GetPresetDefaultRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _PresetService_GetPresetList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetPresetListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(PresetServiceServer).GetPresetList(m, &presetServiceGetPresetListServer{stream})
}

type PresetService_GetPresetListServer interface {
	Send(*GetPresetListResponse) error
	grpc.ServerStream
}

type presetServiceGetPresetListServer struct {
	grpc.ServerStream
}

func (x *presetServiceGetPresetListServer) Send(m *GetPresetListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _PresetService_GetPresetCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetPresetCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PresetServiceServer).GetPresetCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: PresetService_GetPresetCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PresetServiceServer).GetPresetCount(ctx, req.(*GetPresetCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _PresetService_DeletePreset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeletePresetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PresetServiceServer).DeletePreset(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: PresetService_DeletePreset_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PresetServiceServer).DeletePreset(ctx, req.(*DeletePresetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// PresetService_ServiceDesc is the grpc.ServiceDesc for PresetService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var PresetService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "keyapis.preset.v1.PresetService",
	HandlerType: (*PresetServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "PostPreset",
			Handler:    _PresetService_PostPreset_Handler,
		},
		{
			MethodName: "GetPreset",
			Handler:    _PresetService_GetPreset_Handler,
		},
		{
			MethodName: "GetPresetDefault",
			Handler:    _PresetService_GetPresetDefault_Handler,
		},
		{
			MethodName: "GetPresetCount",
			Handler:    _PresetService_GetPresetCount_Handler,
		},
		{
			MethodName: "DeletePreset",
			Handler:    _PresetService_DeletePreset_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "GetPresetList",
			Handler:       _PresetService_GetPresetList_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "keyapis/preset/v1/keyapis_preset_preset_v1.proto",
}
