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

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

package keyapis_access_management_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 (
	GroupService_GetGroup_FullMethodName             = "/keyapis.access_management.v1.GroupService/GetGroup"
	GroupService_GetGroupList_FullMethodName         = "/keyapis.access_management.v1.GroupService/GetGroupList"
	GroupService_GetGroupCount_FullMethodName        = "/keyapis.access_management.v1.GroupService/GetGroupCount"
	GroupService_PostGroup_FullMethodName            = "/keyapis.access_management.v1.GroupService/PostGroup"
	GroupService_DeleteGroup_FullMethodName          = "/keyapis.access_management.v1.GroupService/DeleteGroup"
	GroupService_PostGroupByTemplate_FullMethodName  = "/keyapis.access_management.v1.GroupService/PostGroupByTemplate"
	GroupService_PutGroupUserAttach_FullMethodName   = "/keyapis.access_management.v1.GroupService/PutGroupUserAttach"
	GroupService_PutGroupUserDetach_FullMethodName   = "/keyapis.access_management.v1.GroupService/PutGroupUserDetach"
	GroupService_GetGroupUserList_FullMethodName     = "/keyapis.access_management.v1.GroupService/GetGroupUserList"
	GroupService_GetGroupUserCount_FullMethodName    = "/keyapis.access_management.v1.GroupService/GetGroupUserCount"
	GroupService_GetGroupClaimList_FullMethodName    = "/keyapis.access_management.v1.GroupService/GetGroupClaimList"
	GroupService_GetGroupClaimCount_FullMethodName   = "/keyapis.access_management.v1.GroupService/GetGroupClaimCount"
	GroupService_GetGroupClaimExist_FullMethodName   = "/keyapis.access_management.v1.GroupService/GetGroupClaimExist"
	GroupService_PutGroupApiKeyCreate_FullMethodName = "/keyapis.access_management.v1.GroupService/PutGroupApiKeyCreate"
	GroupService_PutGroupApiKeyDelete_FullMethodName = "/keyapis.access_management.v1.GroupService/PutGroupApiKeyDelete"
)

// GroupServiceClient is the client API for GroupService 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 GroupServiceClient interface {
	// Метод получения группы.
	// Метод доступен для: admin, service, bti, seller
	GetGroup(ctx context.Context, in *GetGroupRequest, opts ...grpc.CallOption) (*GetGroupResponse, error)
	// Метод получения списка групп.
	// Метод доступен для: admin, service, bti, seller
	GetGroupList(ctx context.Context, in *GetGroupListRequest, opts ...grpc.CallOption) (GroupService_GetGroupListClient, error)
	// Метод получения количества групп.
	// Метод доступен для: admin, service, bti, seller
	GetGroupCount(ctx context.Context, in *GetGroupCountRequest, opts ...grpc.CallOption) (*GetGroupCountResponse, error)
	// Метод сохранения группы.
	// Поддерживает создание и обновление как UPSERT по Group.id.
	// Метод доступен для: admin, service
	PostGroup(ctx context.Context, in *PostGroupRequest, opts ...grpc.CallOption) (*PostGroupResponse, error)
	// Метод удаления группы.
	// Метод доступен для: admin, service
	DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*DeleteGroupResponse, error)
	// Метод создания группы по шаблону.
	// Метод доступен для: admin, service, bti, seller
	PostGroupByTemplate(ctx context.Context, in *PostGroupByTemplateRequest, opts ...grpc.CallOption) (*PostGroupByTemplateResponse, error)
	// Метод привязки пользователя к группе.
	// Метод доступен для: admin, owner, service, bti, seller
	PutGroupUserAttach(ctx context.Context, in *PutGroupUserAttachRequest, opts ...grpc.CallOption) (*PutGroupUserAttachResponse, error)
	// Метод удаления привязки пользователя к группе.
	// Метод доступен для: admin, owner, service, bti, seller
	PutGroupUserDetach(ctx context.Context, in *PutGroupUserDetachRequest, opts ...grpc.CallOption) (*PutGroupUserDetachResponse, error)
	// Метод получения списка связей пользователей и групп.
	// Метод доступен для: admin, owner, service, bti, seller
	GetGroupUserList(ctx context.Context, in *GetGroupUserListRequest, opts ...grpc.CallOption) (GroupService_GetGroupUserListClient, error)
	// Метод получения количества связей пользователей и групп.
	// Метод доступен для: admin, owner, service, bti, seller
	GetGroupUserCount(ctx context.Context, in *GetGroupUserCountRequest, opts ...grpc.CallOption) (*GetGroupUserCountResponse, error)
	// Метод получения уникальных назначенных атрибутов пользователя.
	// Метод также возвращает группы пользователя в виде атрибута (Claim) {key=GROUP_ID,value=Group.id}.
	// Бизнес-пользователи получают только свои разрешения, поэтому для всех пользователей, кроме admin, owner, service, bti, seller игнорируются GroupClaimFilter.user_id, GroupClaimFilter.user_data, GroupClaimFilter.api_key_hash, а значения для них берутся из токена.
	// Для admin, owner, service, bti, seller при наличии GroupClaimFilter.user_id отдаем разрешения для указанного GroupClaimFilter.user_id и GroupClaimFilter.user_data, при отсутствии GroupClaimFilter.user_id значения берутся из токена.
	// Для admin, service при наличии GroupClaimFilter.api_key_hash возвращаем Claim с учетом только GroupClaimFilter.api_key_hash.
	// Метод доступен для: admin, master, slave, owner, employee, service, bti, seller, external_seller, ltp_first, mrf, manager
	GetGroupClaimList(ctx context.Context, in *GetGroupClaimListRequest, opts ...grpc.CallOption) (GroupService_GetGroupClaimListClient, error)
	// Метод получения количества уникальных назначенных атрибутов пользователя.
	// Метод также сосчитает и атрибуты групп {key=GROUP_ID,value=Group.id}.
	// Бизнес-пользователи получают только свои разрешения, поэтому для всех пользователей, кроме admin, owner, service, bti, seller игнорируются GroupClaimFilter.user_id, GroupClaimFilter.user_data, GroupClaimFilter.api_key_hash, а значения для них берутся из токена.
	// Для admin, owner, service, bti, seller при наличии GroupClaimFilter.user_id отдаем разрешения для указанного GroupClaimFilter.user_id и GroupClaimFilter.user_data, при отсутствии GroupClaimFilter.user_id значения берутся из токена.
	// Для admin, service при наличии GroupClaimFilter.api_key_hash возвращаем Claim с учетом только GroupClaimFilter.api_key_hash.
	// Метод доступен для: admin, master, slave, owner, employee, service, bti, seller, external_seller, ltp_first, mrf, manager
	GetGroupClaimCount(ctx context.Context, in *GetGroupClaimCountRequest, opts ...grpc.CallOption) (*GetGroupClaimCountResponse, error)
	// Метод проверки наличия назначенных атрибутов пользователя.
	// Метод также проверит и атрибуты групп {key=GROUP_ID,value=Group.id}.
	// Бизнес-пользователи получают только свои разрешения, поэтому для всех пользователей, кроме admin, owner, service, bti, seller игнорируются GroupClaimFilter.user_id, GroupClaimFilter.user_data, GroupClaimFilter.api_key_hash, а значения для них берутся из токена.
	// Для admin, owner, service, bti, seller при наличии GroupClaimFilter.user_id отдаем разрешения для указанного GroupClaimFilter.user_id и GroupClaimFilter.user_data, при отсутствии GroupClaimFilter.user_id значения берутся из токена.
	// Для admin, service при наличии GroupClaimFilter.api_key_hash возвращаем Claim с учетом только GroupClaimFilter.api_key_hash.
	// Метод доступен для: admin, master, slave, owner, employee, service, bti, seller, external_seller, ltp_first, mrf, manager
	GetGroupClaimExist(ctx context.Context, in *GetGroupClaimExistRequest, opts ...grpc.CallOption) (*GetGroupClaimExistResponse, error)
	// Метод добавления ключа доступа ApiKey.
	// Метод доступен для: admin
	PutGroupApiKeyCreate(ctx context.Context, in *PutGroupApiKeyCreateRequest, opts ...grpc.CallOption) (*PutGroupApiKeyCreateResponse, error)
	// Метод удаления ключей доступа ApiKey.
	// Метод доступен для: admin
	PutGroupApiKeyDelete(ctx context.Context, in *PutGroupApiKeyDeleteRequest, opts ...grpc.CallOption) (*PutGroupApiKeyDeleteResponse, error)
}

type groupServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewGroupServiceClient(cc grpc.ClientConnInterface) GroupServiceClient {
	return &groupServiceClient{cc}
}

func (c *groupServiceClient) GetGroup(ctx context.Context, in *GetGroupRequest, opts ...grpc.CallOption) (*GetGroupResponse, error) {
	out := new(GetGroupResponse)
	err := c.cc.Invoke(ctx, GroupService_GetGroup_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *groupServiceClient) GetGroupList(ctx context.Context, in *GetGroupListRequest, opts ...grpc.CallOption) (GroupService_GetGroupListClient, error) {
	stream, err := c.cc.NewStream(ctx, &GroupService_ServiceDesc.Streams[0], GroupService_GetGroupList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &groupServiceGetGroupListClient{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 GroupService_GetGroupListClient interface {
	Recv() (*GetGroupListResponse, error)
	grpc.ClientStream
}

type groupServiceGetGroupListClient struct {
	grpc.ClientStream
}

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

func (c *groupServiceClient) GetGroupCount(ctx context.Context, in *GetGroupCountRequest, opts ...grpc.CallOption) (*GetGroupCountResponse, error) {
	out := new(GetGroupCountResponse)
	err := c.cc.Invoke(ctx, GroupService_GetGroupCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *groupServiceClient) PostGroup(ctx context.Context, in *PostGroupRequest, opts ...grpc.CallOption) (*PostGroupResponse, error) {
	out := new(PostGroupResponse)
	err := c.cc.Invoke(ctx, GroupService_PostGroup_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *groupServiceClient) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*DeleteGroupResponse, error) {
	out := new(DeleteGroupResponse)
	err := c.cc.Invoke(ctx, GroupService_DeleteGroup_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *groupServiceClient) PostGroupByTemplate(ctx context.Context, in *PostGroupByTemplateRequest, opts ...grpc.CallOption) (*PostGroupByTemplateResponse, error) {
	out := new(PostGroupByTemplateResponse)
	err := c.cc.Invoke(ctx, GroupService_PostGroupByTemplate_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *groupServiceClient) PutGroupUserAttach(ctx context.Context, in *PutGroupUserAttachRequest, opts ...grpc.CallOption) (*PutGroupUserAttachResponse, error) {
	out := new(PutGroupUserAttachResponse)
	err := c.cc.Invoke(ctx, GroupService_PutGroupUserAttach_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *groupServiceClient) PutGroupUserDetach(ctx context.Context, in *PutGroupUserDetachRequest, opts ...grpc.CallOption) (*PutGroupUserDetachResponse, error) {
	out := new(PutGroupUserDetachResponse)
	err := c.cc.Invoke(ctx, GroupService_PutGroupUserDetach_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *groupServiceClient) GetGroupUserList(ctx context.Context, in *GetGroupUserListRequest, opts ...grpc.CallOption) (GroupService_GetGroupUserListClient, error) {
	stream, err := c.cc.NewStream(ctx, &GroupService_ServiceDesc.Streams[1], GroupService_GetGroupUserList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &groupServiceGetGroupUserListClient{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 GroupService_GetGroupUserListClient interface {
	Recv() (*GetGroupUserListResponse, error)
	grpc.ClientStream
}

type groupServiceGetGroupUserListClient struct {
	grpc.ClientStream
}

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

func (c *groupServiceClient) GetGroupUserCount(ctx context.Context, in *GetGroupUserCountRequest, opts ...grpc.CallOption) (*GetGroupUserCountResponse, error) {
	out := new(GetGroupUserCountResponse)
	err := c.cc.Invoke(ctx, GroupService_GetGroupUserCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *groupServiceClient) GetGroupClaimList(ctx context.Context, in *GetGroupClaimListRequest, opts ...grpc.CallOption) (GroupService_GetGroupClaimListClient, error) {
	stream, err := c.cc.NewStream(ctx, &GroupService_ServiceDesc.Streams[2], GroupService_GetGroupClaimList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &groupServiceGetGroupClaimListClient{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 GroupService_GetGroupClaimListClient interface {
	Recv() (*GetGroupClaimListResponse, error)
	grpc.ClientStream
}

type groupServiceGetGroupClaimListClient struct {
	grpc.ClientStream
}

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

func (c *groupServiceClient) GetGroupClaimCount(ctx context.Context, in *GetGroupClaimCountRequest, opts ...grpc.CallOption) (*GetGroupClaimCountResponse, error) {
	out := new(GetGroupClaimCountResponse)
	err := c.cc.Invoke(ctx, GroupService_GetGroupClaimCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *groupServiceClient) GetGroupClaimExist(ctx context.Context, in *GetGroupClaimExistRequest, opts ...grpc.CallOption) (*GetGroupClaimExistResponse, error) {
	out := new(GetGroupClaimExistResponse)
	err := c.cc.Invoke(ctx, GroupService_GetGroupClaimExist_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *groupServiceClient) PutGroupApiKeyCreate(ctx context.Context, in *PutGroupApiKeyCreateRequest, opts ...grpc.CallOption) (*PutGroupApiKeyCreateResponse, error) {
	out := new(PutGroupApiKeyCreateResponse)
	err := c.cc.Invoke(ctx, GroupService_PutGroupApiKeyCreate_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *groupServiceClient) PutGroupApiKeyDelete(ctx context.Context, in *PutGroupApiKeyDeleteRequest, opts ...grpc.CallOption) (*PutGroupApiKeyDeleteResponse, error) {
	out := new(PutGroupApiKeyDeleteResponse)
	err := c.cc.Invoke(ctx, GroupService_PutGroupApiKeyDelete_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// GroupServiceServer is the server API for GroupService service.
// All implementations should embed UnimplementedGroupServiceServer
// for forward compatibility
type GroupServiceServer interface {
	// Метод получения группы.
	// Метод доступен для: admin, service, bti, seller
	GetGroup(context.Context, *GetGroupRequest) (*GetGroupResponse, error)
	// Метод получения списка групп.
	// Метод доступен для: admin, service, bti, seller
	GetGroupList(*GetGroupListRequest, GroupService_GetGroupListServer) error
	// Метод получения количества групп.
	// Метод доступен для: admin, service, bti, seller
	GetGroupCount(context.Context, *GetGroupCountRequest) (*GetGroupCountResponse, error)
	// Метод сохранения группы.
	// Поддерживает создание и обновление как UPSERT по Group.id.
	// Метод доступен для: admin, service
	PostGroup(context.Context, *PostGroupRequest) (*PostGroupResponse, error)
	// Метод удаления группы.
	// Метод доступен для: admin, service
	DeleteGroup(context.Context, *DeleteGroupRequest) (*DeleteGroupResponse, error)
	// Метод создания группы по шаблону.
	// Метод доступен для: admin, service, bti, seller
	PostGroupByTemplate(context.Context, *PostGroupByTemplateRequest) (*PostGroupByTemplateResponse, error)
	// Метод привязки пользователя к группе.
	// Метод доступен для: admin, owner, service, bti, seller
	PutGroupUserAttach(context.Context, *PutGroupUserAttachRequest) (*PutGroupUserAttachResponse, error)
	// Метод удаления привязки пользователя к группе.
	// Метод доступен для: admin, owner, service, bti, seller
	PutGroupUserDetach(context.Context, *PutGroupUserDetachRequest) (*PutGroupUserDetachResponse, error)
	// Метод получения списка связей пользователей и групп.
	// Метод доступен для: admin, owner, service, bti, seller
	GetGroupUserList(*GetGroupUserListRequest, GroupService_GetGroupUserListServer) error
	// Метод получения количества связей пользователей и групп.
	// Метод доступен для: admin, owner, service, bti, seller
	GetGroupUserCount(context.Context, *GetGroupUserCountRequest) (*GetGroupUserCountResponse, error)
	// Метод получения уникальных назначенных атрибутов пользователя.
	// Метод также возвращает группы пользователя в виде атрибута (Claim) {key=GROUP_ID,value=Group.id}.
	// Бизнес-пользователи получают только свои разрешения, поэтому для всех пользователей, кроме admin, owner, service, bti, seller игнорируются GroupClaimFilter.user_id, GroupClaimFilter.user_data, GroupClaimFilter.api_key_hash, а значения для них берутся из токена.
	// Для admin, owner, service, bti, seller при наличии GroupClaimFilter.user_id отдаем разрешения для указанного GroupClaimFilter.user_id и GroupClaimFilter.user_data, при отсутствии GroupClaimFilter.user_id значения берутся из токена.
	// Для admin, service при наличии GroupClaimFilter.api_key_hash возвращаем Claim с учетом только GroupClaimFilter.api_key_hash.
	// Метод доступен для: admin, master, slave, owner, employee, service, bti, seller, external_seller, ltp_first, mrf, manager
	GetGroupClaimList(*GetGroupClaimListRequest, GroupService_GetGroupClaimListServer) error
	// Метод получения количества уникальных назначенных атрибутов пользователя.
	// Метод также сосчитает и атрибуты групп {key=GROUP_ID,value=Group.id}.
	// Бизнес-пользователи получают только свои разрешения, поэтому для всех пользователей, кроме admin, owner, service, bti, seller игнорируются GroupClaimFilter.user_id, GroupClaimFilter.user_data, GroupClaimFilter.api_key_hash, а значения для них берутся из токена.
	// Для admin, owner, service, bti, seller при наличии GroupClaimFilter.user_id отдаем разрешения для указанного GroupClaimFilter.user_id и GroupClaimFilter.user_data, при отсутствии GroupClaimFilter.user_id значения берутся из токена.
	// Для admin, service при наличии GroupClaimFilter.api_key_hash возвращаем Claim с учетом только GroupClaimFilter.api_key_hash.
	// Метод доступен для: admin, master, slave, owner, employee, service, bti, seller, external_seller, ltp_first, mrf, manager
	GetGroupClaimCount(context.Context, *GetGroupClaimCountRequest) (*GetGroupClaimCountResponse, error)
	// Метод проверки наличия назначенных атрибутов пользователя.
	// Метод также проверит и атрибуты групп {key=GROUP_ID,value=Group.id}.
	// Бизнес-пользователи получают только свои разрешения, поэтому для всех пользователей, кроме admin, owner, service, bti, seller игнорируются GroupClaimFilter.user_id, GroupClaimFilter.user_data, GroupClaimFilter.api_key_hash, а значения для них берутся из токена.
	// Для admin, owner, service, bti, seller при наличии GroupClaimFilter.user_id отдаем разрешения для указанного GroupClaimFilter.user_id и GroupClaimFilter.user_data, при отсутствии GroupClaimFilter.user_id значения берутся из токена.
	// Для admin, service при наличии GroupClaimFilter.api_key_hash возвращаем Claim с учетом только GroupClaimFilter.api_key_hash.
	// Метод доступен для: admin, master, slave, owner, employee, service, bti, seller, external_seller, ltp_first, mrf, manager
	GetGroupClaimExist(context.Context, *GetGroupClaimExistRequest) (*GetGroupClaimExistResponse, error)
	// Метод добавления ключа доступа ApiKey.
	// Метод доступен для: admin
	PutGroupApiKeyCreate(context.Context, *PutGroupApiKeyCreateRequest) (*PutGroupApiKeyCreateResponse, error)
	// Метод удаления ключей доступа ApiKey.
	// Метод доступен для: admin
	PutGroupApiKeyDelete(context.Context, *PutGroupApiKeyDeleteRequest) (*PutGroupApiKeyDeleteResponse, error)
}

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

func (UnimplementedGroupServiceServer) GetGroup(context.Context, *GetGroupRequest) (*GetGroupResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetGroup not implemented")
}
func (UnimplementedGroupServiceServer) GetGroupList(*GetGroupListRequest, GroupService_GetGroupListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetGroupList not implemented")
}
func (UnimplementedGroupServiceServer) GetGroupCount(context.Context, *GetGroupCountRequest) (*GetGroupCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetGroupCount not implemented")
}
func (UnimplementedGroupServiceServer) PostGroup(context.Context, *PostGroupRequest) (*PostGroupResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostGroup not implemented")
}
func (UnimplementedGroupServiceServer) DeleteGroup(context.Context, *DeleteGroupRequest) (*DeleteGroupResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteGroup not implemented")
}
func (UnimplementedGroupServiceServer) PostGroupByTemplate(context.Context, *PostGroupByTemplateRequest) (*PostGroupByTemplateResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostGroupByTemplate not implemented")
}
func (UnimplementedGroupServiceServer) PutGroupUserAttach(context.Context, *PutGroupUserAttachRequest) (*PutGroupUserAttachResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PutGroupUserAttach not implemented")
}
func (UnimplementedGroupServiceServer) PutGroupUserDetach(context.Context, *PutGroupUserDetachRequest) (*PutGroupUserDetachResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PutGroupUserDetach not implemented")
}
func (UnimplementedGroupServiceServer) GetGroupUserList(*GetGroupUserListRequest, GroupService_GetGroupUserListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetGroupUserList not implemented")
}
func (UnimplementedGroupServiceServer) GetGroupUserCount(context.Context, *GetGroupUserCountRequest) (*GetGroupUserCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetGroupUserCount not implemented")
}
func (UnimplementedGroupServiceServer) GetGroupClaimList(*GetGroupClaimListRequest, GroupService_GetGroupClaimListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetGroupClaimList not implemented")
}
func (UnimplementedGroupServiceServer) GetGroupClaimCount(context.Context, *GetGroupClaimCountRequest) (*GetGroupClaimCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetGroupClaimCount not implemented")
}
func (UnimplementedGroupServiceServer) GetGroupClaimExist(context.Context, *GetGroupClaimExistRequest) (*GetGroupClaimExistResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetGroupClaimExist not implemented")
}
func (UnimplementedGroupServiceServer) PutGroupApiKeyCreate(context.Context, *PutGroupApiKeyCreateRequest) (*PutGroupApiKeyCreateResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PutGroupApiKeyCreate not implemented")
}
func (UnimplementedGroupServiceServer) PutGroupApiKeyDelete(context.Context, *PutGroupApiKeyDeleteRequest) (*PutGroupApiKeyDeleteResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PutGroupApiKeyDelete not implemented")
}

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

func RegisterGroupServiceServer(s grpc.ServiceRegistrar, srv GroupServiceServer) {
	s.RegisterService(&GroupService_ServiceDesc, srv)
}

func _GroupService_GetGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetGroupRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).GetGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_GetGroup_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).GetGroup(ctx, req.(*GetGroupRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GroupService_GetGroupList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetGroupListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(GroupServiceServer).GetGroupList(m, &groupServiceGetGroupListServer{stream})
}

type GroupService_GetGroupListServer interface {
	Send(*GetGroupListResponse) error
	grpc.ServerStream
}

type groupServiceGetGroupListServer struct {
	grpc.ServerStream
}

func (x *groupServiceGetGroupListServer) Send(m *GetGroupListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _GroupService_GetGroupCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetGroupCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).GetGroupCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_GetGroupCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).GetGroupCount(ctx, req.(*GetGroupCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GroupService_PostGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostGroupRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).PostGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_PostGroup_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).PostGroup(ctx, req.(*PostGroupRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GroupService_DeleteGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteGroupRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).DeleteGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_DeleteGroup_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).DeleteGroup(ctx, req.(*DeleteGroupRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GroupService_PostGroupByTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostGroupByTemplateRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).PostGroupByTemplate(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_PostGroupByTemplate_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).PostGroupByTemplate(ctx, req.(*PostGroupByTemplateRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GroupService_PutGroupUserAttach_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PutGroupUserAttachRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).PutGroupUserAttach(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_PutGroupUserAttach_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).PutGroupUserAttach(ctx, req.(*PutGroupUserAttachRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GroupService_PutGroupUserDetach_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PutGroupUserDetachRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).PutGroupUserDetach(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_PutGroupUserDetach_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).PutGroupUserDetach(ctx, req.(*PutGroupUserDetachRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GroupService_GetGroupUserList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetGroupUserListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(GroupServiceServer).GetGroupUserList(m, &groupServiceGetGroupUserListServer{stream})
}

type GroupService_GetGroupUserListServer interface {
	Send(*GetGroupUserListResponse) error
	grpc.ServerStream
}

type groupServiceGetGroupUserListServer struct {
	grpc.ServerStream
}

func (x *groupServiceGetGroupUserListServer) Send(m *GetGroupUserListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _GroupService_GetGroupUserCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetGroupUserCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).GetGroupUserCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_GetGroupUserCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).GetGroupUserCount(ctx, req.(*GetGroupUserCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GroupService_GetGroupClaimList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetGroupClaimListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(GroupServiceServer).GetGroupClaimList(m, &groupServiceGetGroupClaimListServer{stream})
}

type GroupService_GetGroupClaimListServer interface {
	Send(*GetGroupClaimListResponse) error
	grpc.ServerStream
}

type groupServiceGetGroupClaimListServer struct {
	grpc.ServerStream
}

func (x *groupServiceGetGroupClaimListServer) Send(m *GetGroupClaimListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _GroupService_GetGroupClaimCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetGroupClaimCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).GetGroupClaimCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_GetGroupClaimCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).GetGroupClaimCount(ctx, req.(*GetGroupClaimCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GroupService_GetGroupClaimExist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetGroupClaimExistRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).GetGroupClaimExist(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_GetGroupClaimExist_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).GetGroupClaimExist(ctx, req.(*GetGroupClaimExistRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GroupService_PutGroupApiKeyCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PutGroupApiKeyCreateRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).PutGroupApiKeyCreate(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_PutGroupApiKeyCreate_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).PutGroupApiKeyCreate(ctx, req.(*PutGroupApiKeyCreateRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GroupService_PutGroupApiKeyDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PutGroupApiKeyDeleteRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GroupServiceServer).PutGroupApiKeyDelete(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: GroupService_PutGroupApiKeyDelete_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GroupServiceServer).PutGroupApiKeyDelete(ctx, req.(*PutGroupApiKeyDeleteRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// GroupService_ServiceDesc is the grpc.ServiceDesc for GroupService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var GroupService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "keyapis.access_management.v1.GroupService",
	HandlerType: (*GroupServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetGroup",
			Handler:    _GroupService_GetGroup_Handler,
		},
		{
			MethodName: "GetGroupCount",
			Handler:    _GroupService_GetGroupCount_Handler,
		},
		{
			MethodName: "PostGroup",
			Handler:    _GroupService_PostGroup_Handler,
		},
		{
			MethodName: "DeleteGroup",
			Handler:    _GroupService_DeleteGroup_Handler,
		},
		{
			MethodName: "PostGroupByTemplate",
			Handler:    _GroupService_PostGroupByTemplate_Handler,
		},
		{
			MethodName: "PutGroupUserAttach",
			Handler:    _GroupService_PutGroupUserAttach_Handler,
		},
		{
			MethodName: "PutGroupUserDetach",
			Handler:    _GroupService_PutGroupUserDetach_Handler,
		},
		{
			MethodName: "GetGroupUserCount",
			Handler:    _GroupService_GetGroupUserCount_Handler,
		},
		{
			MethodName: "GetGroupClaimCount",
			Handler:    _GroupService_GetGroupClaimCount_Handler,
		},
		{
			MethodName: "GetGroupClaimExist",
			Handler:    _GroupService_GetGroupClaimExist_Handler,
		},
		{
			MethodName: "PutGroupApiKeyCreate",
			Handler:    _GroupService_PutGroupApiKeyCreate_Handler,
		},
		{
			MethodName: "PutGroupApiKeyDelete",
			Handler:    _GroupService_PutGroupApiKeyDelete_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "GetGroupList",
			Handler:       _GroupService_GetGroupList_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "GetGroupUserList",
			Handler:       _GroupService_GetGroupUserList_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "GetGroupClaimList",
			Handler:       _GroupService_GetGroupClaimList_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "keyapis/access_management/v1/keyapis_access_management_group_v1.proto",
}
