//
//Сервис получения trunk-конфигурации для определенного города

// 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_trunk_config.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 (
	TrunkConfigService_GetTrunkConfig_FullMethodName         = "/keyapis.device.v1.TrunkConfigService/GetTrunkConfig"
	TrunkConfigService_GetTrunkConfigList_FullMethodName     = "/keyapis.device.v1.TrunkConfigService/GetTrunkConfigList"
	TrunkConfigService_GetTrunkConfigCount_FullMethodName    = "/keyapis.device.v1.TrunkConfigService/GetTrunkConfigCount"
	TrunkConfigService_PostTrunkConfig_FullMethodName        = "/keyapis.device.v1.TrunkConfigService/PostTrunkConfig"
	TrunkConfigService_DeleteTrunkConfig_FullMethodName      = "/keyapis.device.v1.TrunkConfigService/DeleteTrunkConfig"
	TrunkConfigService_PostTrunkConfigRestore_FullMethodName = "/keyapis.device.v1.TrunkConfigService/PostTrunkConfigRestore"
)

// TrunkConfigServiceClient is the client API for TrunkConfigService 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 TrunkConfigServiceClient interface {
	// Метод получения trunk-конфигурации.
	// Метод доступен для: admin, bti, service, ltp_first
	GetTrunkConfig(ctx context.Context, in *GetTrunkConfigRequest, opts ...grpc.CallOption) (*GetTrunkConfigResponse, error)
	// Метод получения списка trunk-конфигураций.
	// Метод доступен для: admin, bti, service, ltp_first
	GetTrunkConfigList(ctx context.Context, in *GetTrunkConfigListRequest, opts ...grpc.CallOption) (TrunkConfigService_GetTrunkConfigListClient, error)
	// Метод получения количества trunk-конфигураций.
	// Метод доступен для: admin, bti, service, ltp_first
	GetTrunkConfigCount(ctx context.Context, in *GetTrunkConfigCountRequest, opts ...grpc.CallOption) (*GetTrunkConfigCountResponse, error)
	// Метод создания trunk-конфигурации.
	// Поддерживает создание и обновление.
	// Метод доступен для: admin, bti, service, ltp_first
	PostTrunkConfig(ctx context.Context, in *PostTrunkConfigRequest, opts ...grpc.CallOption) (*PostTrunkConfigResponse, error)
	// Метод архивации trunk-конфигурации.
	// Метод доступен для: admin, service, device_admin
	DeleteTrunkConfig(ctx context.Context, in *DeleteTrunkConfigRequest, opts ...grpc.CallOption) (*DeleteTrunkConfigResponse, error)
	// Метод разархивации trunk-конфигурации.
	// Метод доступен для: admin, service, device_admin
	PostTrunkConfigRestore(ctx context.Context, in *PostTrunkConfigRestoreRequest, opts ...grpc.CallOption) (*PostTrunkConfigRestoreResponse, error)
}

type trunkConfigServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewTrunkConfigServiceClient(cc grpc.ClientConnInterface) TrunkConfigServiceClient {
	return &trunkConfigServiceClient{cc}
}

func (c *trunkConfigServiceClient) GetTrunkConfig(ctx context.Context, in *GetTrunkConfigRequest, opts ...grpc.CallOption) (*GetTrunkConfigResponse, error) {
	out := new(GetTrunkConfigResponse)
	err := c.cc.Invoke(ctx, TrunkConfigService_GetTrunkConfig_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *trunkConfigServiceClient) GetTrunkConfigList(ctx context.Context, in *GetTrunkConfigListRequest, opts ...grpc.CallOption) (TrunkConfigService_GetTrunkConfigListClient, error) {
	stream, err := c.cc.NewStream(ctx, &TrunkConfigService_ServiceDesc.Streams[0], TrunkConfigService_GetTrunkConfigList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &trunkConfigServiceGetTrunkConfigListClient{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 TrunkConfigService_GetTrunkConfigListClient interface {
	Recv() (*GetTrunkConfigListResponse, error)
	grpc.ClientStream
}

type trunkConfigServiceGetTrunkConfigListClient struct {
	grpc.ClientStream
}

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

func (c *trunkConfigServiceClient) GetTrunkConfigCount(ctx context.Context, in *GetTrunkConfigCountRequest, opts ...grpc.CallOption) (*GetTrunkConfigCountResponse, error) {
	out := new(GetTrunkConfigCountResponse)
	err := c.cc.Invoke(ctx, TrunkConfigService_GetTrunkConfigCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *trunkConfigServiceClient) PostTrunkConfig(ctx context.Context, in *PostTrunkConfigRequest, opts ...grpc.CallOption) (*PostTrunkConfigResponse, error) {
	out := new(PostTrunkConfigResponse)
	err := c.cc.Invoke(ctx, TrunkConfigService_PostTrunkConfig_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *trunkConfigServiceClient) DeleteTrunkConfig(ctx context.Context, in *DeleteTrunkConfigRequest, opts ...grpc.CallOption) (*DeleteTrunkConfigResponse, error) {
	out := new(DeleteTrunkConfigResponse)
	err := c.cc.Invoke(ctx, TrunkConfigService_DeleteTrunkConfig_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *trunkConfigServiceClient) PostTrunkConfigRestore(ctx context.Context, in *PostTrunkConfigRestoreRequest, opts ...grpc.CallOption) (*PostTrunkConfigRestoreResponse, error) {
	out := new(PostTrunkConfigRestoreResponse)
	err := c.cc.Invoke(ctx, TrunkConfigService_PostTrunkConfigRestore_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// TrunkConfigServiceServer is the server API for TrunkConfigService service.
// All implementations should embed UnimplementedTrunkConfigServiceServer
// for forward compatibility
type TrunkConfigServiceServer interface {
	// Метод получения trunk-конфигурации.
	// Метод доступен для: admin, bti, service, ltp_first
	GetTrunkConfig(context.Context, *GetTrunkConfigRequest) (*GetTrunkConfigResponse, error)
	// Метод получения списка trunk-конфигураций.
	// Метод доступен для: admin, bti, service, ltp_first
	GetTrunkConfigList(*GetTrunkConfigListRequest, TrunkConfigService_GetTrunkConfigListServer) error
	// Метод получения количества trunk-конфигураций.
	// Метод доступен для: admin, bti, service, ltp_first
	GetTrunkConfigCount(context.Context, *GetTrunkConfigCountRequest) (*GetTrunkConfigCountResponse, error)
	// Метод создания trunk-конфигурации.
	// Поддерживает создание и обновление.
	// Метод доступен для: admin, bti, service, ltp_first
	PostTrunkConfig(context.Context, *PostTrunkConfigRequest) (*PostTrunkConfigResponse, error)
	// Метод архивации trunk-конфигурации.
	// Метод доступен для: admin, service, device_admin
	DeleteTrunkConfig(context.Context, *DeleteTrunkConfigRequest) (*DeleteTrunkConfigResponse, error)
	// Метод разархивации trunk-конфигурации.
	// Метод доступен для: admin, service, device_admin
	PostTrunkConfigRestore(context.Context, *PostTrunkConfigRestoreRequest) (*PostTrunkConfigRestoreResponse, error)
}

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

func (UnimplementedTrunkConfigServiceServer) GetTrunkConfig(context.Context, *GetTrunkConfigRequest) (*GetTrunkConfigResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetTrunkConfig not implemented")
}
func (UnimplementedTrunkConfigServiceServer) GetTrunkConfigList(*GetTrunkConfigListRequest, TrunkConfigService_GetTrunkConfigListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetTrunkConfigList not implemented")
}
func (UnimplementedTrunkConfigServiceServer) GetTrunkConfigCount(context.Context, *GetTrunkConfigCountRequest) (*GetTrunkConfigCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetTrunkConfigCount not implemented")
}
func (UnimplementedTrunkConfigServiceServer) PostTrunkConfig(context.Context, *PostTrunkConfigRequest) (*PostTrunkConfigResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostTrunkConfig not implemented")
}
func (UnimplementedTrunkConfigServiceServer) DeleteTrunkConfig(context.Context, *DeleteTrunkConfigRequest) (*DeleteTrunkConfigResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteTrunkConfig not implemented")
}
func (UnimplementedTrunkConfigServiceServer) PostTrunkConfigRestore(context.Context, *PostTrunkConfigRestoreRequest) (*PostTrunkConfigRestoreResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostTrunkConfigRestore not implemented")
}

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

func RegisterTrunkConfigServiceServer(s grpc.ServiceRegistrar, srv TrunkConfigServiceServer) {
	s.RegisterService(&TrunkConfigService_ServiceDesc, srv)
}

func _TrunkConfigService_GetTrunkConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetTrunkConfigRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TrunkConfigServiceServer).GetTrunkConfig(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TrunkConfigService_GetTrunkConfig_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TrunkConfigServiceServer).GetTrunkConfig(ctx, req.(*GetTrunkConfigRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TrunkConfigService_GetTrunkConfigList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetTrunkConfigListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(TrunkConfigServiceServer).GetTrunkConfigList(m, &trunkConfigServiceGetTrunkConfigListServer{stream})
}

type TrunkConfigService_GetTrunkConfigListServer interface {
	Send(*GetTrunkConfigListResponse) error
	grpc.ServerStream
}

type trunkConfigServiceGetTrunkConfigListServer struct {
	grpc.ServerStream
}

func (x *trunkConfigServiceGetTrunkConfigListServer) Send(m *GetTrunkConfigListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _TrunkConfigService_GetTrunkConfigCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetTrunkConfigCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TrunkConfigServiceServer).GetTrunkConfigCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TrunkConfigService_GetTrunkConfigCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TrunkConfigServiceServer).GetTrunkConfigCount(ctx, req.(*GetTrunkConfigCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TrunkConfigService_PostTrunkConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostTrunkConfigRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TrunkConfigServiceServer).PostTrunkConfig(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TrunkConfigService_PostTrunkConfig_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TrunkConfigServiceServer).PostTrunkConfig(ctx, req.(*PostTrunkConfigRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TrunkConfigService_DeleteTrunkConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteTrunkConfigRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TrunkConfigServiceServer).DeleteTrunkConfig(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TrunkConfigService_DeleteTrunkConfig_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TrunkConfigServiceServer).DeleteTrunkConfig(ctx, req.(*DeleteTrunkConfigRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TrunkConfigService_PostTrunkConfigRestore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostTrunkConfigRestoreRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TrunkConfigServiceServer).PostTrunkConfigRestore(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: TrunkConfigService_PostTrunkConfigRestore_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TrunkConfigServiceServer).PostTrunkConfigRestore(ctx, req.(*PostTrunkConfigRestoreRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// TrunkConfigService_ServiceDesc is the grpc.ServiceDesc for TrunkConfigService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var TrunkConfigService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "keyapis.device.v1.TrunkConfigService",
	HandlerType: (*TrunkConfigServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetTrunkConfig",
			Handler:    _TrunkConfigService_GetTrunkConfig_Handler,
		},
		{
			MethodName: "GetTrunkConfigCount",
			Handler:    _TrunkConfigService_GetTrunkConfigCount_Handler,
		},
		{
			MethodName: "PostTrunkConfig",
			Handler:    _TrunkConfigService_PostTrunkConfig_Handler,
		},
		{
			MethodName: "DeleteTrunkConfig",
			Handler:    _TrunkConfigService_DeleteTrunkConfig_Handler,
		},
		{
			MethodName: "PostTrunkConfigRestore",
			Handler:    _TrunkConfigService_PostTrunkConfigRestore_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "GetTrunkConfigList",
			Handler:       _TrunkConfigService_GetTrunkConfigList_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "keyapis/device/v1/keyapis_device_trunk_config.proto",
}
