// Code generated by protoc-gen-go. DO NOT EDIT.
// source: apigrpc/apigrpc.proto

package apigrpc

import (
	context "context"
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	empty "github.com/golang/protobuf/ptypes/empty"
	_ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options"
	api "github.com/heroiclabs/nakama-common/api"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	math "math"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

func init() { proto.RegisterFile("apigrpc/apigrpc.proto", fileDescriptor_84e2d31978c605c7) }

var fileDescriptor_84e2d31978c605c7 = []byte{
	// 2197 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5a, 0x5d, 0x6f, 0xdb, 0xc8,
	0xd5, 0x7e, 0xe9, 0x7d, 0x9b, 0x8f, 0x91, 0xed, 0xd8, 0xe3, 0x8f, 0xc4, 0xf2, 0x47, 0x64, 0xc6,
	0xf1, 0x66, 0xb5, 0x89, 0x68, 0x3b, 0x2d, 0x82, 0xfa, 0x66, 0x57, 0x76, 0x62, 0x27, 0x1b, 0x6f,
	0x36, 0x75, 0x36, 0x0d, 0x1a, 0xa0, 0x48, 0x47, 0xe4, 0x58, 0x62, 0x24, 0x71, 0x18, 0x72, 0xe4,
	0x34, 0x30, 0x82, 0x05, 0x0a, 0x14, 0x05, 0x5a, 0xa0, 0x58, 0x64, 0x8b, 0x5e, 0xf5, 0x2a, 0x97,
	0xbd, 0x29, 0xd0, 0x9b, 0xde, 0xb4, 0xbf, 0xa2, 0x7f, 0xa1, 0x3f, 0xa4, 0x98, 0x0f, 0x8a, 0x33,
	0xe4, 0x50, 0x4c, 0x9c, 0xe6, 0x4a, 0x36, 0xcf, 0x99, 0xf3, 0x3c, 0x1c, 0x9e, 0x73, 0xe6, 0x39,
	0x94, 0xc0, 0x1c, 0x0a, 0xfd, 0x76, 0x14, 0xba, 0x8e, 0xfc, 0x6c, 0x84, 0x11, 0xa1, 0x04, 0x82,
	0x00, 0x75, 0x51, 0x1f, 0x35, 0x50, 0xe8, 0x57, 0x97, 0xda, 0x84, 0xb4, 0x7b, 0x98, 0x79, 0x38,
	0x28, 0x08, 0x08, 0x45, 0xd4, 0x27, 0x41, 0x2c, 0x3c, 0xab, 0x8b, 0xd2, 0xca, 0xff, 0x6b, 0x0d,
	0x8e, 0x1c, 0xdc, 0x0f, 0xe9, 0x2b, 0x69, 0xbc, 0xce, 0x3f, 0xdc, 0x1b, 0x6d, 0x1c, 0xdc, 0x88,
	0x5f, 0xa2, 0x76, 0x1b, 0x47, 0x0e, 0x09, 0xf9, 0x72, 0x43, 0xa8, 0xcd, 0xb6, 0x4f, 0x3b, 0x83,
	0x56, 0xc3, 0x25, 0x7d, 0xa7, 0x83, 0x23, 0xe2, 0xbb, 0x3d, 0xd4, 0x8a, 0x1d, 0x41, 0xe5, 0x86,
	0x4b, 0xfa, 0x7d, 0x12, 0x08, 0x16, 0xa1, 0x2f, 0x96, 0x6c, 0xfd, 0xed, 0x0b, 0x70, 0xe6, 0x01,
	0xb7, 0xc3, 0x27, 0x00, 0x34, 0x3d, 0x6f, 0x2f, 0xf2, 0x71, 0xe0, 0xc5, 0x70, 0xb9, 0x91, 0xde,
	0x41, 0x23, 0xbd, 0x7e, 0x88, 0x5f, 0x0c, 0x70, 0x4c, 0xab, 0xf3, 0x0d, 0x41, 0xbb, 0x91, 0xd0,
	0x6e, 0xdc, 0x61, 0xb4, 0x6d, 0xf8, 0x9b, 0x7f, 0xff, 0xe7, 0x87, 0xb1, 0x71, 0x1b, 0x38, 0xc7,
	0x5b, 0xce, 0x11, 0x5f, 0x03, 0xbb, 0x60, 0xa2, 0xe9, 0x79, 0xfb, 0x11, 0x19, 0x84, 0x8f, 0x63,
	0x1c, 0xc5, 0xb0, 0x96, 0x89, 0x9d, 0x9a, 0xca, 0xc2, 0xd7, 0x78, 0xf8, 0xaa, 0x7d, 0x89, 0x85,
	0x6f, 0xb3, 0x65, 0xce, 0x09, 0xff, 0x78, 0xe6, 0x7b, 0xaf, 0x1d, 0xe4, 0x79, 0xf0, 0x07, 0x0b,
	0x4c, 0x37, 0x07, 0xb4, 0x83, 0x03, 0xea, 0xbb, 0x88, 0xe2, 0x66, 0x18, 0xf6, 0x30, 0x5c, 0xd3,
	0x10, 0xb3, 0xe6, 0x04, 0x75, 0x46, 0xf5, 0x7a, 0x84, 0xe3, 0xd8, 0x27, 0x81, 0xbd, 0xfb, 0xa6,
	0x39, 0xdd, 0xba, 0x00, 0x26, 0xc0, 0xf9, 0x1d, 0x14, 0xfb, 0x2e, 0x5b, 0x0c, 0xff, 0x8f, 0xd3,
	0xf8, 0xcc, 0x5e, 0x61, 0x34, 0x90, 0xeb, 0x92, 0x41, 0x40, 0x1d, 0xa4, 0x84, 0x75, 0x10, 0x8b,
	0xbb, 0x7d, 0x56, 0xda, 0xe0, 0x9f, 0x2d, 0x00, 0x55, 0xd8, 0xdd, 0x41, 0x4c, 0x49, 0x1f, 0x5e,
	0x2d, 0xa2, 0x25, 0xec, 0x23, 0x79, 0xdd, 0x2e, 0xe4, 0x55, 0xb7, 0x2f, 0x17, 0xf2, 0x72, 0x79,
	0xe0, 0x62, 0x62, 0xb7, 0xf1, 0xb1, 0xef, 0xe2, 0x62, 0x62, 0xc2, 0xfe, 0x11, 0x88, 0x79, 0x3c,
	0x70, 0x4a, 0x2c, 0xfb, 0x1c, 0xef, 0xf4, 0x91, 0xdf, 0x2b, 0x7e, 0x8e, 0xdc, 0xfc, 0x11, 0x9e,
	0x23, 0x66, 0x71, 0x53, 0x56, 0x7f, 0xb1, 0xc0, 0xac, 0x0a, 0xbb, 0x87, 0x5c, 0xdc, 0x22, 0xa4,
	0x0b, 0x3f, 0x2d, 0x22, 0x96, 0x78, 0x8c, 0xe4, 0xb6, 0x57, 0xc8, 0xed, 0xba, 0xbd, 0x5a, 0xc8,
	0xed, 0x48, 0x86, 0x4e, 0xe9, 0xfd, 0xcb, 0x02, 0x97, 0x4d, 0xe0, 0xf7, 0x82, 0x98, 0xa2, 0x80,
	0xee, 0xa3, 0x3e, 0x86, 0x5b, 0x65, 0x4c, 0x15, 0xe7, 0x91, 0xa4, 0x7f, 0x56, 0x48, 0xfa, 0x96,
	0x7d, 0xbd, 0x94, 0xb4, 0x2f, 0x50, 0xda, 0xa8, 0xaf, 0x3c, 0xf4, 0xb7, 0x16, 0x98, 0x57, 0x29,
	0x31, 0x0e, 0xbb, 0x38, 0xa0, 0x38, 0x82, 0x9f, 0x15, 0xd1, 0x4e, 0x7d, 0x46, 0xb2, 0xbd, 0x5b,
	0xc8, 0xb6, 0x61, 0x5f, 0x29, 0x64, 0xcb, 0xe8, 0xb9, 0x3c, 0x78, 0x71, 0xc9, 0xec, 0xf3, 0x4e,
	0x55, 0x5c, 0x32, 0xc2, 0xfe, 0x11, 0x4a, 0x46, 0xb4, 0xc8, 0xe2, 0x92, 0x79, 0x44, 0x31, 0xea,
	0x17, 0x97, 0x0c, 0x37, 0x7f, 0x84, 0x92, 0x89, 0x59, 0xdc, 0x94, 0x55, 0x17, 0x4c, 0xec, 0xa0,
	0xa0, 0xa8, 0xfb, 0x6b, 0xa6, 0x0f, 0xeb, 0xfe, 0x2d, 0x14, 0x40, 0x04, 0xc6, 0x77, 0x7a, 0xc4,
	0xed, 0x26, 0xa7, 0xd8, 0x65, 0x0d, 0x4b, 0xb1, 0x94, 0x41, 0x5d, 0xe2, 0x50, 0xd0, 0x9e, 0x4a,
	0xcf, 0x31, 0xa7, 0xc5, 0xd6, 0xc3, 0x9f, 0x83, 0xca, 0x6e, 0x84, 0xd9, 0x73, 0x65, 0xc8, 0x70,
	0x45, 0x45, 0x50, 0x0c, 0x09, 0xc0, 0xb4, 0x6a, 0xe7, 0x16, 0x7b, 0x96, 0xc7, 0x9e, 0xb4, 0xcf,
	0x0f, 0x6f, 0x63, 0xdb, 0xaa, 0xc3, 0x5f, 0x82, 0x89, 0xdb, 0xb8, 0x87, 0x29, 0x4e, 0xb8, 0x6b,
	0xfb, 0xa4, 0x99, 0xde, 0xf1, 0x10, 0xae, 0xab, 0x87, 0xb0, 0x0b, 0x2a, 0x22, 0x86, 0x81, 0xb6,
	0x62, 0x28, 0x0b, 0xbd, 0xc4, 0x43, 0xcf, 0xd7, 0x67, 0x4d, 0x8f, 0x00, 0xfe, 0xce, 0x02, 0x17,
	0x45, 0xb0, 0x03, 0x8c, 0x3c, 0x1c, 0xb5, 0x08, 0x8a, 0xbc, 0x43, 0xec, 0x92, 0xc8, 0x83, 0xf5,
	0x3c, 0x62, 0xce, 0xa9, 0x0c, 0xfd, 0x1a, 0x47, 0xb7, 0xeb, 0x35, 0x86, 0xde, 0x4b, 0x57, 0x3b,
	0x27, 0xca, 0x3f, 0x9c, 0x09, 0x01, 0x33, 0x02, 0xe3, 0x01, 0xa1, 0xfe, 0x11, 0x4b, 0x4c, 0xa6,
	0x93, 0xe0, 0x7a, 0x9e, 0x84, 0xe6, 0xf0, 0x8e, 0x69, 0x51, 0xe7, 0x69, 0x11, 0x28, 0x2b, 0xe1,
	0x31, 0x98, 0x15, 0xf1, 0x1e, 0x51, 0x12, 0xa1, 0x36, 0xfe, 0xa6, 0xf5, 0x1c, 0xbb, 0x34, 0xd6,
	0x0f, 0x06, 0x93, 0x47, 0x19, 0xe4, 0x32, 0x87, 0xbc, 0x58, 0x85, 0x0c, 0x32, 0x16, 0x4b, 0x1d,
	0x8f, 0x07, 0x62, 0x69, 0x73, 0x17, 0xfc, 0xe8, 0xce, 0x31, 0x0e, 0x28, 0xd4, 0x12, 0x8d, 0x5f,
	0x2a, 0x0c, 0xa9, 0x25, 0x20, 0x66, 0xae, 0x2c, 0xd2, 0x03, 0x00, 0xf6, 0x31, 0x6d, 0xca, 0xb2,
	0x2d, 0x58, 0xab, 0x37, 0x0a, 0xe9, 0x6c, 0xcf, 0xf0, 0x80, 0x13, 0xb0, 0xa2, 0x34, 0x05, 0x78,
	0x00, 0xce, 0xed, 0x63, 0x2a, 0x6a, 0x7e, 0x51, 0xab, 0x02, 0x79, 0xd5, 0x58, 0x22, 0xdc, 0x62,
	0x4f, 0xf1, 0x80, 0x00, 0x9e, 0x63, 0x01, 0x07, 0x31, 0x8e, 0xe0, 0x23, 0x50, 0xb9, 0x8b, 0x51,
	0x8f, 0x76, 0xdc, 0x0e, 0x76, 0xbb, 0x85, 0xf4, 0x4a, 0x6e, 0x19, 0x8e, 0x3b, 0x1d, 0x25, 0xca,
	0x77, 0x60, 0xee, 0x5e, 0x3f, 0x24, 0x11, 0x4d, 0xce, 0xbe, 0xa4, 0xf6, 0xae, 0xa9, 0x94, 0x8c,
	0x2e, 0x65, 0x8f, 0x6d, 0x8d, 0x03, 0xae, 0xd8, 0x33, 0x4a, 0x03, 0xc9, 0x1f, 0xd8, 0x1e, 0x38,
	0xff, 0x15, 0xf1, 0x45, 0x0b, 0x84, 0x4b, 0x2a, 0xe8, 0xf0, 0x72, 0x19, 0xd0, 0x2a, 0x07, 0x5a,
	0xb4, 0x17, 0x8c, 0x4d, 0xf1, 0x39, 0xf1, 0x03, 0xf8, 0x6b, 0x30, 0xc9, 0xc2, 0x7d, 0x4b, 0x06,
	0x51, 0x80, 0xfa, 0x2c, 0x59, 0x56, 0xb3, 0x50, 0xa9, 0xad, 0x0c, 0xef, 0x73, 0x8e, 0x77, 0x55,
	0x1c, 0x9a, 0x74, 0xb8, 0xcc, 0x39, 0x49, 0xff, 0x4e, 0x91, 0x03, 0x30, 0x79, 0xdf, 0x77, 0xbb,
	0x4a, 0xf7, 0xd7, 0x90, 0x75, 0xdb, 0x87, 0xdd, 0x69, 0xd7, 0x77, 0xbb, 0xb0, 0x0d, 0xc0, 0x01,
	0x46, 0xc7, 0xb2, 0xc9, 0x69, 0x33, 0x4c, 0x7a, 0xbd, 0x0c, 0xc7, 0xe6, 0x38, 0x4b, 0x76, 0xd5,
	0x88, 0xd3, 0x63, 0x71, 0xe0, 0xaf, 0xc0, 0xf9, 0x03, 0x3f, 0xe8, 0x8a, 0xe9, 0xe2, 0x92, 0xa1,
	0x26, 0xb8, 0xa5, 0xf4, 0x56, 0xe6, 0xd5, 0x53, 0xb4, 0xe7, 0x07, 0x5d, 0x39, 0x38, 0x58, 0x75,
	0xe8, 0x02, 0xc0, 0x10, 0xe4, 0xa4, 0xb0, 0x60, 0x80, 0x10, 0xa6, 0xd2, 0xdb, 0xb8, 0x98, 0xc3,
	0x90, 0x43, 0x40, 0x0a, 0x22, 0x55, 0xbf, 0x09, 0x44, 0x98, 0x4e, 0x01, 0x22, 0x05, 0xbd, 0x55,
	0x4f, 0xf6, 0x4a, 0x28, 0x78, 0xd3, 0x5e, 0x71, 0xcb, 0x29, 0xf6, 0x4a, 0x88, 0x73, 0xab, 0x0e,
	0x63, 0x30, 0xce, 0x10, 0x86, 0x6a, 0x5c, 0x3b, 0xf6, 0x55, 0x4b, 0xd9, 0xa3, 0xaf, 0x73, 0xac,
	0x35, 0x91, 0x62, 0x1a, 0x56, 0xbe, 0x76, 0x7f, 0x6f, 0x81, 0x8b, 0x6a, 0x6c, 0x55, 0x64, 0xaf,
	0x1b, 0xee, 0xd2, 0xe0, 0x57, 0xc8, 0xc3, 0x91, 0x2a, 0x6b, 0xad, 0x90, 0x87, 0xaa, 0x9f, 0xad,
	0x3a, 0x24, 0x60, 0x92, 0x71, 0x51, 0x04, 0xf3, 0xb2, 0x81, 0x42, 0x6a, 0x2e, 0x44, 0x5e, 0xe7,
	0xc8, 0x35, 0x7b, 0x31, 0x87, 0xac, 0x68, 0xe1, 0x34, 0x73, 0xa4, 0xf8, 0x35, 0x65, 0x8e, 0x30,
	0x9d, 0x22, 0x73, 0xa4, 0xae, 0x4d, 0x33, 0x47, 0x08, 0x59, 0x53, 0xe6, 0x70, 0xcb, 0x29, 0x32,
	0x47, 0x68, 0x54, 0xab, 0x0e, 0xbf, 0x03, 0x33, 0x07, 0x7e, 0x4c, 0x77, 0x3b, 0x28, 0x08, 0x70,
	0xef, 0x6b, 0x1c, 0xc7, 0xa8, 0x8d, 0x33, 0x3a, 0xc1, 0xe0, 0x90, 0xe4, 0x91, 0xae, 0xfe, 0x34,
	0x1f, 0xb6, 0x2a, 0x51, 0xac, 0x90, 0x2b, 0x56, 0x57, 0xd8, 0x9d, 0x13, 0xf9, 0x07, 0x17, 0x2a,
	0xbf, 0x00, 0x15, 0xe6, 0x99, 0x1c, 0x3c, 0x2b, 0x59, 0xe0, 0xdc, 0x71, 0xa3, 0xd8, 0x85, 0x8d,
	0x03, 0x49, 0xc9, 0x07, 0x55, 0xc9, 0xf7, 0x98, 0x3d, 0xa2, 0x98, 0xf2, 0x9e, 0x97, 0x79, 0xa1,
	0x93, 0x5e, 0x4f, 0x02, 0xcf, 0xe5, 0x74, 0x2a, 0x8f, 0x3b, 0xcd, 0xe3, 0x56, 0x60, 0xaa, 0x55,
	0xe1, 0x0b, 0x96, 0x6a, 0x72, 0xb9, 0xa1, 0xa7, 0xeb, 0xb6, 0x24, 0xfc, 0x42, 0x2e, 0x3c, 0x33,
	0x73, 0x08, 0xf9, 0x94, 0xa0, 0xb9, 0xad, 0xf3, 0xc3, 0xff, 0x7b, 0x0b, 0xcc, 0x33, 0xdf, 0x9c,
	0x60, 0x8c, 0xf5, 0xb9, 0xd0, 0xec, 0x93, 0x70, 0x58, 0xcd, 0x1c, 0x07, 0xba, 0x1b, 0xe7, 0x22,
	0x05, 0x26, 0x2c, 0x17, 0x98, 0xff, 0xb0, 0xc0, 0xaa, 0x19, 0xae, 0x19, 0x91, 0x41, 0xe0, 0x7d,
	0xf3, 0x32, 0xc0, 0x11, 0xfc, 0x71, 0x39, 0x3b, 0xc5, 0xfd, 0x3d, 0x88, 0xfe, 0x94, 0x13, 0xbd,
	0x09, 0x37, 0xcb, 0x88, 0x3a, 0x84, 0x45, 0x76, 0x4e, 0xf8, 0x07, 0x67, 0xfe, 0x44, 0x64, 0xdc,
	0xd7, 0x88, 0xba, 0x1d, 0x6c, 0xc8, 0x38, 0x69, 0x30, 0x26, 0x06, 0xb7, 0xe5, 0x13, 0xa3, 0xcf,
	0x2e, 0xc3, 0x17, 0x60, 0x9a, 0x99, 0x74, 0xc5, 0xbd, 0x96, 0x0d, 0x6f, 0xd4, 0xdb, 0x9a, 0xf4,
	0x51, 0x3d, 0x38, 0x96, 0x54, 0xdd, 0x30, 0xaf, 0xba, 0xdf, 0x5a, 0x00, 0x32, 0x97, 0x8c, 0xe8,
	0xbe, 0x9a, 0x05, 0x35, 0x4b, 0x6e, 0xad, 0x24, 0x34, 0x17, 0x0e, 0xbb, 0xc7, 0x61, 0xbf, 0x14,
	0xc5, 0x9b, 0x28, 0xef, 0x13, 0x97, 0xf4, 0x7a, 0xd8, 0x65, 0xe8, 0xaf, 0x9f, 0xae, 0x41, 0xbb,
	0xc8, 0xe6, 0x9c, 0xb0, 0xcc, 0xe5, 0x1b, 0xee, 0x83, 0x0b, 0x2c, 0x5e, 0x2a, 0xb1, 0x62, 0x68,
	0x67, 0x09, 0x2a, 0xc6, 0x84, 0x5d, 0x55, 0xf5, 0x49, 0xed, 0x9c, 0xda, 0x3c, 0xa7, 0x36, 0x05,
	0x27, 0x75, 0x11, 0x06, 0xff, 0x60, 0x81, 0x39, 0x3d, 0x5c, 0x52, 0x27, 0xd7, 0x8a, 0x11, 0x33,
	0x65, 0x52, 0x33, 0xe3, 0x2a, 0xc9, 0x27, 0xcf, 0x08, 0xb8, 0x32, 0x5a, 0x02, 0xc2, 0xbf, 0x5b,
	0xa0, 0x66, 0x84, 0x52, 0x4b, 0xe4, 0x66, 0x29, 0x31, 0x43, 0x85, 0x94, 0x73, 0xbc, 0xc5, 0x39,
	0x6e, 0x42, 0xa7, 0x44, 0xa6, 0xe6, 0xca, 0x23, 0x14, 0xed, 0x8d, 0xb5, 0x27, 0xd9, 0x39, 0x73,
	0xed, 0x2d, 0xb5, 0x19, 0xdb, 0xdb, 0xd0, 0x9c, 0x3f, 0x02, 0x58, 0x4e, 0xa4, 0x99, 0x21, 0x1b,
	0xea, 0x4b, 0x30, 0xfd, 0x30, 0x22, 0x7d, 0x22, 0x47, 0x70, 0xd1, 0x53, 0xb5, 0xba, 0xc9, 0x99,
	0xdf, 0x75, 0xfa, 0x58, 0x32, 0xf6, 0xd4, 0x50, 0x84, 0x83, 0x14, 0x4c, 0xdd, 0xc6, 0x19, 0xdc,
	0x2b, 0xfa, 0xbc, 0xfa, 0x7e, 0xb0, 0x57, 0x38, 0xec, 0xb2, 0x10, 0x0f, 0x39, 0x58, 0x8f, 0x47,
	0x83, 0x04, 0xc0, 0x43, 0x8c, 0xbc, 0x51, 0x25, 0x9b, 0xb7, 0x1b, 0x8b, 0x42, 0x77, 0x49, 0x8a,
	0xc2, 0xae, 0x28, 0x35, 0x29, 0xce, 0xf8, 0xb3, 0x87, 0xa1, 0xbb, 0x37, 0x08, 0x5c, 0x78, 0x41,
	0x43, 0x09, 0xdd, 0x6a, 0xf6, 0x82, 0x7d, 0xf8, 0xa6, 0x69, 0xb7, 0x6a, 0xe0, 0x02, 0xa8, 0xdc,
	0xa5, 0x34, 0xbc, 0x8f, 0x5f, 0x89, 0xb7, 0x5e, 0xfc, 0x25, 0x18, 0x46, 0x11, 0x8e, 0xbe, 0x7a,
	0x49, 0xe5, 0x4b, 0xb0, 0x4f, 0xed, 0x71, 0x86, 0x14, 0x85, 0xae, 0x73, 0xe2, 0x7b, 0xaf, 0xb7,
	0xcf, 0x86, 0xe8, 0x55, 0x8f, 0x20, 0xef, 0x29, 0x1b, 0x33, 0x15, 0x03, 0xf4, 0x40, 0xe5, 0x71,
	0xd0, 0xfb, 0x80, 0x71, 0x21, 0xd9, 0xd7, 0x4b, 0xaa, 0x90, 0x19, 0x04, 0xfa, 0xc0, 0xd0, 0x06,
	0xe3, 0x02, 0xe5, 0xf4, 0x23, 0x43, 0x92, 0x36, 0x0b, 0x06, 0x9c, 0x74, 0x68, 0x18, 0x02, 0x9d,
	0x7e, 0x6c, 0x18, 0x05, 0x94, 0x0e, 0x0e, 0xc3, 0x7d, 0x3b, 0xed, 0xe8, 0x30, 0x6a, 0xdf, 0x86,
	0xc3, 0x43, 0x1f, 0x4c, 0x0a, 0x94, 0xe1, 0xf8, 0xb0, 0x38, 0x42, 0xbd, 0xbf, 0x9f, 0x70, 0x96,
	0x58, 0xc3, 0xe1, 0xc1, 0xaa, 0xc3, 0x3f, 0x5a, 0x60, 0x41, 0xc7, 0xfb, 0x5f, 0x0e, 0x0e, 0x9b,
	0x9c, 0xc5, 0xe7, 0xf6, 0xfa, 0x08, 0x16, 0x99, 0xd1, 0x21, 0x06, 0x53, 0x82, 0xcf, 0x87, 0x0f,
	0x0f, 0x52, 0x3e, 0xd9, 0xcb, 0x06, 0x74, 0x7d, 0x7c, 0x18, 0xe6, 0xd0, 0xe9, 0x07, 0x88, 0x51,
	0x39, 0x94, 0x8e, 0x10, 0xc3, 0x1c, 0x3a, 0xed, 0x10, 0x31, 0x2a, 0x87, 0x86, 0x63, 0x04, 0x02,
	0x13, 0x8f, 0x43, 0x0f, 0x51, 0x9c, 0xbc, 0x3e, 0xd3, 0x0e, 0x28, 0xcd, 0x54, 0xd6, 0x43, 0x65,
	0x17, 0xab, 0xaa, 0xef, 0xd2, 0x18, 0xc4, 0x11, 0xa8, 0x88, 0x38, 0x86, 0x17, 0xb8, 0x8a, 0xa1,
	0x2c, 0xfc, 0x65, 0x1e, 0x7e, 0xa1, 0x6a, 0x7c, 0x81, 0xcb, 0x70, 0xfe, 0x64, 0x81, 0xf9, 0x27,
	0x91, 0x6f, 0x7a, 0x85, 0xab, 0x69, 0x6d, 0xb3, 0x8f, 0x51, 0x5a, 0xe5, 0xbc, 0xec, 0x0d, 0xf9,
	0xe5, 0x46, 0xa9, 0xce, 0xde, 0x3e, 0x13, 0x09, 0x6c, 0x0a, 0x66, 0x38, 0x62, 0xe6, 0xd8, 0x58,
	0xcf, 0x51, 0x7a, 0x5f, 0xa9, 0xd7, 0x74, 0xbb, 0xb1, 0xbe, 0xe9, 0xca, 0xd1, 0xf1, 0xbd, 0x05,
	0xe6, 0x78, 0xd4, 0xac, 0xc6, 0xd0, 0xf5, 0x94, 0xd1, 0xe5, 0x1d, 0xb7, 0xa2, 0xc1, 0xa1, 0xaf,
	0x55, 0x4b, 0xc4, 0x54, 0xb2, 0x11, 0x3b, 0xbf, 0xfd, 0xe4, 0x4d, 0xf3, 0x9f, 0x63, 0x70, 0x00,
	0x26, 0xc4, 0xf7, 0xf6, 0xb5, 0xe6, 0xc3, 0x7b, 0xb5, 0xe3, 0x2d, 0xfb, 0x19, 0x58, 0xfd, 0xb6,
	0x83, 0x6b, 0xc9, 0xc5, 0x01, 0xed, 0x90, 0x28, 0xae, 0xad, 0xd7, 0x76, 0x49, 0x40, 0x23, 0xbf,
	0x35, 0xa0, 0x84, 0xa9, 0x8a, 0x0e, 0xa5, 0x61, 0xbc, 0xed, 0x38, 0xa3, 0x7e, 0x29, 0x50, 0x9d,
	0xed, 0xe0, 0x5e, 0x8f, 0x7c, 0x99, 0x1a, 0x98, 0xdf, 0xd6, 0x27, 0x5b, 0x8d, 0x8d, 0xea, 0xe4,
	0xe6, 0xd6, 0xad, 0xc6, 0x46, 0x63, 0xa3, 0xb1, 0xb9, 0x7d, 0xeb, 0xe6, 0x4f, 0x36, 0xea, 0x96,
	0xb5, 0x35, 0xc5, 0x4e, 0x20, 0x29, 0xc8, 0x9d, 0xe7, 0x31, 0x09, 0xb6, 0x73, 0x57, 0x9e, 0x7e,
	0x01, 0x2e, 0xa8, 0x5f, 0x22, 0x8d, 0x9d, 0xb3, 0x32, 0x07, 0x2a, 0x58, 0xd6, 0x0f, 0xdc, 0xc9,
	0x73, 0x63, 0xd5, 0x73, 0x8c, 0xec, 0xb3, 0x2e, 0x7e, 0x55, 0x1b, 0x93, 0xdf, 0x42, 0xa5, 0xfe,
	0xd1, 0x36, 0x58, 0x94, 0xb7, 0x1a, 0xe3, 0xe8, 0x18, 0x47, 0x35, 0x8f, 0xb8, 0x03, 0xb6, 0x59,
	0x62, 0x30, 0x58, 0x4c, 0x6e, 0x54, 0xbf, 0x09, 0xc7, 0x23, 0x6e, 0x0c, 0x16, 0x5c, 0xd2, 0x6f,
	0x28, 0x86, 0xf4, 0xf9, 0xec, 0xc8, 0x4d, 0x6d, 0x86, 0xfe, 0x7e, 0x14, 0xba, 0x0f, 0xad, 0xa7,
	0x67, 0xe5, 0xef, 0x3a, 0xde, 0x8e, 0xfd, 0xff, 0x83, 0xfb, 0x0f, 0x77, 0xfe, 0x3a, 0x26, 0x7f,
	0x2e, 0xd1, 0x3a, 0xc3, 0x0b, 0xeb, 0xe6, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x20, 0xbe, 0x68,
	0xf2, 0x01, 0x22, 0x00, 0x00,
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// NakamaClient is the client API for Nakama service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type NakamaClient interface {
	// Add friends by ID or username to a user's account.
	AddFriends(ctx context.Context, in *api.AddFriendsRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Add users to a group.
	AddGroupUsers(ctx context.Context, in *api.AddGroupUsersRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Authenticate a user with an Apple ID against the server.
	AuthenticateApple(ctx context.Context, in *api.AuthenticateAppleRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Authenticate a user with a custom id against the server.
	AuthenticateCustom(ctx context.Context, in *api.AuthenticateCustomRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Authenticate a user with a device id against the server.
	AuthenticateDevice(ctx context.Context, in *api.AuthenticateDeviceRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Authenticate a user with an email+password against the server.
	AuthenticateEmail(ctx context.Context, in *api.AuthenticateEmailRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Authenticate a user with a Facebook OAuth token against the server.
	AuthenticateFacebook(ctx context.Context, in *api.AuthenticateFacebookRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Authenticate a user with a Facebook Instant Game token against the server.
	AuthenticateFacebookInstantGame(ctx context.Context, in *api.AuthenticateFacebookInstantGameRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Authenticate a user with Apple's GameCenter against the server.
	AuthenticateGameCenter(ctx context.Context, in *api.AuthenticateGameCenterRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Authenticate a user with Google against the server.
	AuthenticateGoogle(ctx context.Context, in *api.AuthenticateGoogleRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Authenticate a user with Steam against the server.
	AuthenticateSteam(ctx context.Context, in *api.AuthenticateSteamRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Ban a set of users from a group.
	BanGroupUsers(ctx context.Context, in *api.BanGroupUsersRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Block one or more users by ID or username.
	BlockFriends(ctx context.Context, in *api.BlockFriendsRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Create a new group with the current user as the owner.
	CreateGroup(ctx context.Context, in *api.CreateGroupRequest, opts ...grpc.CallOption) (*api.Group, error)
	// Delete one or more users by ID or username.
	DeleteFriends(ctx context.Context, in *api.DeleteFriendsRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Delete a group by ID.
	DeleteGroup(ctx context.Context, in *api.DeleteGroupRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Delete a leaderboard record.
	DeleteLeaderboardRecord(ctx context.Context, in *api.DeleteLeaderboardRecordRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Delete one or more notifications for the current user.
	DeleteNotifications(ctx context.Context, in *api.DeleteNotificationsRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Delete one or more objects by ID or username.
	DeleteStorageObjects(ctx context.Context, in *api.DeleteStorageObjectsRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Submit an event for processing in the server's registered runtime custom events handler.
	Event(ctx context.Context, in *api.Event, opts ...grpc.CallOption) (*empty.Empty, error)
	// Fetch the current user's account.
	GetAccount(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*api.Account, error)
	// Fetch zero or more users by ID and/or username.
	GetUsers(ctx context.Context, in *api.GetUsersRequest, opts ...grpc.CallOption) (*api.Users, error)
	// A healthcheck which load balancers can use to check the service.
	Healthcheck(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*empty.Empty, error)
	// Import Facebook friends and add them to a user's account.
	ImportFacebookFriends(ctx context.Context, in *api.ImportFacebookFriendsRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Immediately join an open group, or request to join a closed one.
	JoinGroup(ctx context.Context, in *api.JoinGroupRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Attempt to join an open and running tournament.
	JoinTournament(ctx context.Context, in *api.JoinTournamentRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Kick a set of users from a group.
	KickGroupUsers(ctx context.Context, in *api.KickGroupUsersRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Leave a group the user is a member of.
	LeaveGroup(ctx context.Context, in *api.LeaveGroupRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Add an Apple ID to the social profiles on the current user's account.
	LinkApple(ctx context.Context, in *api.AccountApple, opts ...grpc.CallOption) (*empty.Empty, error)
	// Add a custom ID to the social profiles on the current user's account.
	LinkCustom(ctx context.Context, in *api.AccountCustom, opts ...grpc.CallOption) (*empty.Empty, error)
	// Add a device ID to the social profiles on the current user's account.
	LinkDevice(ctx context.Context, in *api.AccountDevice, opts ...grpc.CallOption) (*empty.Empty, error)
	// Add an email+password to the social profiles on the current user's account.
	LinkEmail(ctx context.Context, in *api.AccountEmail, opts ...grpc.CallOption) (*empty.Empty, error)
	// Add Facebook to the social profiles on the current user's account.
	LinkFacebook(ctx context.Context, in *api.LinkFacebookRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Add Facebook Instant Game to the social profiles on the current user's account.
	LinkFacebookInstantGame(ctx context.Context, in *api.AccountFacebookInstantGame, opts ...grpc.CallOption) (*empty.Empty, error)
	// Add Apple's GameCenter to the social profiles on the current user's account.
	LinkGameCenter(ctx context.Context, in *api.AccountGameCenter, opts ...grpc.CallOption) (*empty.Empty, error)
	// Add Google to the social profiles on the current user's account.
	LinkGoogle(ctx context.Context, in *api.AccountGoogle, opts ...grpc.CallOption) (*empty.Empty, error)
	// Add Steam to the social profiles on the current user's account.
	LinkSteam(ctx context.Context, in *api.AccountSteam, opts ...grpc.CallOption) (*empty.Empty, error)
	// List a channel's message history.
	ListChannelMessages(ctx context.Context, in *api.ListChannelMessagesRequest, opts ...grpc.CallOption) (*api.ChannelMessageList, error)
	// List all friends for the current user.
	ListFriends(ctx context.Context, in *api.ListFriendsRequest, opts ...grpc.CallOption) (*api.FriendList, error)
	// List groups based on given filters.
	ListGroups(ctx context.Context, in *api.ListGroupsRequest, opts ...grpc.CallOption) (*api.GroupList, error)
	// List all users that are part of a group.
	ListGroupUsers(ctx context.Context, in *api.ListGroupUsersRequest, opts ...grpc.CallOption) (*api.GroupUserList, error)
	// List leaderboard records.
	ListLeaderboardRecords(ctx context.Context, in *api.ListLeaderboardRecordsRequest, opts ...grpc.CallOption) (*api.LeaderboardRecordList, error)
	// List leaderboard records that belong to a user.
	ListLeaderboardRecordsAroundOwner(ctx context.Context, in *api.ListLeaderboardRecordsAroundOwnerRequest, opts ...grpc.CallOption) (*api.LeaderboardRecordList, error)
	// Fetch list of running matches.
	ListMatches(ctx context.Context, in *api.ListMatchesRequest, opts ...grpc.CallOption) (*api.MatchList, error)
	// Fetch list of notifications.
	ListNotifications(ctx context.Context, in *api.ListNotificationsRequest, opts ...grpc.CallOption) (*api.NotificationList, error)
	// List publicly readable storage objects in a given collection.
	ListStorageObjects(ctx context.Context, in *api.ListStorageObjectsRequest, opts ...grpc.CallOption) (*api.StorageObjectList, error)
	// List current or upcoming tournaments.
	ListTournaments(ctx context.Context, in *api.ListTournamentsRequest, opts ...grpc.CallOption) (*api.TournamentList, error)
	// List tournament records.
	ListTournamentRecords(ctx context.Context, in *api.ListTournamentRecordsRequest, opts ...grpc.CallOption) (*api.TournamentRecordList, error)
	// List tournament records for a given owner.
	ListTournamentRecordsAroundOwner(ctx context.Context, in *api.ListTournamentRecordsAroundOwnerRequest, opts ...grpc.CallOption) (*api.TournamentRecordList, error)
	// List groups the current user belongs to.
	ListUserGroups(ctx context.Context, in *api.ListUserGroupsRequest, opts ...grpc.CallOption) (*api.UserGroupList, error)
	// Promote a set of users in a group to the next role up.
	PromoteGroupUsers(ctx context.Context, in *api.PromoteGroupUsersRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Demote a set of users in a group to the next role down.
	DemoteGroupUsers(ctx context.Context, in *api.DemoteGroupUsersRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Get storage objects.
	ReadStorageObjects(ctx context.Context, in *api.ReadStorageObjectsRequest, opts ...grpc.CallOption) (*api.StorageObjects, error)
	// Execute a Lua function on the server.
	RpcFunc(ctx context.Context, in *api.Rpc, opts ...grpc.CallOption) (*api.Rpc, error)
	// Remove the Apple ID from the social profiles on the current user's account.
	UnlinkApple(ctx context.Context, in *api.AccountApple, opts ...grpc.CallOption) (*empty.Empty, error)
	// Remove the custom ID from the social profiles on the current user's account.
	UnlinkCustom(ctx context.Context, in *api.AccountCustom, opts ...grpc.CallOption) (*empty.Empty, error)
	// Remove the device ID from the social profiles on the current user's account.
	UnlinkDevice(ctx context.Context, in *api.AccountDevice, opts ...grpc.CallOption) (*empty.Empty, error)
	// Remove the email+password from the social profiles on the current user's account.
	UnlinkEmail(ctx context.Context, in *api.AccountEmail, opts ...grpc.CallOption) (*empty.Empty, error)
	// Remove Facebook from the social profiles on the current user's account.
	UnlinkFacebook(ctx context.Context, in *api.AccountFacebook, opts ...grpc.CallOption) (*empty.Empty, error)
	// Remove Facebook Instant Game profile from the social profiles on the current user's account.
	UnlinkFacebookInstantGame(ctx context.Context, in *api.AccountFacebookInstantGame, opts ...grpc.CallOption) (*empty.Empty, error)
	// Remove Apple's GameCenter from the social profiles on the current user's account.
	UnlinkGameCenter(ctx context.Context, in *api.AccountGameCenter, opts ...grpc.CallOption) (*empty.Empty, error)
	// Remove Google from the social profiles on the current user's account.
	UnlinkGoogle(ctx context.Context, in *api.AccountGoogle, opts ...grpc.CallOption) (*empty.Empty, error)
	// Remove Steam from the social profiles on the current user's account.
	UnlinkSteam(ctx context.Context, in *api.AccountSteam, opts ...grpc.CallOption) (*empty.Empty, error)
	// Update fields in the current user's account.
	UpdateAccount(ctx context.Context, in *api.UpdateAccountRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Update fields in a given group.
	UpdateGroup(ctx context.Context, in *api.UpdateGroupRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Write a record to a leaderboard.
	WriteLeaderboardRecord(ctx context.Context, in *api.WriteLeaderboardRecordRequest, opts ...grpc.CallOption) (*api.LeaderboardRecord, error)
	// Write objects into the storage engine.
	WriteStorageObjects(ctx context.Context, in *api.WriteStorageObjectsRequest, opts ...grpc.CallOption) (*api.StorageObjectAcks, error)
	// Write a record to a tournament.
	WriteTournamentRecord(ctx context.Context, in *api.WriteTournamentRecordRequest, opts ...grpc.CallOption) (*api.LeaderboardRecord, error)
}

type nakamaClient struct {
	cc grpc.ClientConnInterface
}

func NewNakamaClient(cc grpc.ClientConnInterface) NakamaClient {
	return &nakamaClient{cc}
}

func (c *nakamaClient) AddFriends(ctx context.Context, in *api.AddFriendsRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AddFriends", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AddGroupUsers(ctx context.Context, in *api.AddGroupUsersRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AddGroupUsers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateApple(ctx context.Context, in *api.AuthenticateAppleRequest, opts ...grpc.CallOption) (*api.Session, error) {
	out := new(api.Session)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateApple", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateCustom(ctx context.Context, in *api.AuthenticateCustomRequest, opts ...grpc.CallOption) (*api.Session, error) {
	out := new(api.Session)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateCustom", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateDevice(ctx context.Context, in *api.AuthenticateDeviceRequest, opts ...grpc.CallOption) (*api.Session, error) {
	out := new(api.Session)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateDevice", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateEmail(ctx context.Context, in *api.AuthenticateEmailRequest, opts ...grpc.CallOption) (*api.Session, error) {
	out := new(api.Session)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateEmail", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateFacebook(ctx context.Context, in *api.AuthenticateFacebookRequest, opts ...grpc.CallOption) (*api.Session, error) {
	out := new(api.Session)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateFacebook", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateFacebookInstantGame(ctx context.Context, in *api.AuthenticateFacebookInstantGameRequest, opts ...grpc.CallOption) (*api.Session, error) {
	out := new(api.Session)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateFacebookInstantGame", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateGameCenter(ctx context.Context, in *api.AuthenticateGameCenterRequest, opts ...grpc.CallOption) (*api.Session, error) {
	out := new(api.Session)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateGameCenter", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateGoogle(ctx context.Context, in *api.AuthenticateGoogleRequest, opts ...grpc.CallOption) (*api.Session, error) {
	out := new(api.Session)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateGoogle", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) AuthenticateSteam(ctx context.Context, in *api.AuthenticateSteamRequest, opts ...grpc.CallOption) (*api.Session, error) {
	out := new(api.Session)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/AuthenticateSteam", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) BanGroupUsers(ctx context.Context, in *api.BanGroupUsersRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/BanGroupUsers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) BlockFriends(ctx context.Context, in *api.BlockFriendsRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/BlockFriends", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) CreateGroup(ctx context.Context, in *api.CreateGroupRequest, opts ...grpc.CallOption) (*api.Group, error) {
	out := new(api.Group)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/CreateGroup", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) DeleteFriends(ctx context.Context, in *api.DeleteFriendsRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/DeleteFriends", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) DeleteGroup(ctx context.Context, in *api.DeleteGroupRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/DeleteGroup", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) DeleteLeaderboardRecord(ctx context.Context, in *api.DeleteLeaderboardRecordRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/DeleteLeaderboardRecord", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) DeleteNotifications(ctx context.Context, in *api.DeleteNotificationsRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/DeleteNotifications", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) DeleteStorageObjects(ctx context.Context, in *api.DeleteStorageObjectsRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/DeleteStorageObjects", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) Event(ctx context.Context, in *api.Event, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/Event", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) GetAccount(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*api.Account, error) {
	out := new(api.Account)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/GetAccount", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) GetUsers(ctx context.Context, in *api.GetUsersRequest, opts ...grpc.CallOption) (*api.Users, error) {
	out := new(api.Users)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/GetUsers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) Healthcheck(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/Healthcheck", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ImportFacebookFriends(ctx context.Context, in *api.ImportFacebookFriendsRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ImportFacebookFriends", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) JoinGroup(ctx context.Context, in *api.JoinGroupRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/JoinGroup", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) JoinTournament(ctx context.Context, in *api.JoinTournamentRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/JoinTournament", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) KickGroupUsers(ctx context.Context, in *api.KickGroupUsersRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/KickGroupUsers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LeaveGroup(ctx context.Context, in *api.LeaveGroupRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/LeaveGroup", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkApple(ctx context.Context, in *api.AccountApple, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/LinkApple", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkCustom(ctx context.Context, in *api.AccountCustom, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/LinkCustom", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkDevice(ctx context.Context, in *api.AccountDevice, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/LinkDevice", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkEmail(ctx context.Context, in *api.AccountEmail, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/LinkEmail", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkFacebook(ctx context.Context, in *api.LinkFacebookRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/LinkFacebook", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkFacebookInstantGame(ctx context.Context, in *api.AccountFacebookInstantGame, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/LinkFacebookInstantGame", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkGameCenter(ctx context.Context, in *api.AccountGameCenter, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/LinkGameCenter", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkGoogle(ctx context.Context, in *api.AccountGoogle, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/LinkGoogle", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) LinkSteam(ctx context.Context, in *api.AccountSteam, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/LinkSteam", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListChannelMessages(ctx context.Context, in *api.ListChannelMessagesRequest, opts ...grpc.CallOption) (*api.ChannelMessageList, error) {
	out := new(api.ChannelMessageList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListChannelMessages", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListFriends(ctx context.Context, in *api.ListFriendsRequest, opts ...grpc.CallOption) (*api.FriendList, error) {
	out := new(api.FriendList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListFriends", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListGroups(ctx context.Context, in *api.ListGroupsRequest, opts ...grpc.CallOption) (*api.GroupList, error) {
	out := new(api.GroupList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListGroups", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListGroupUsers(ctx context.Context, in *api.ListGroupUsersRequest, opts ...grpc.CallOption) (*api.GroupUserList, error) {
	out := new(api.GroupUserList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListGroupUsers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListLeaderboardRecords(ctx context.Context, in *api.ListLeaderboardRecordsRequest, opts ...grpc.CallOption) (*api.LeaderboardRecordList, error) {
	out := new(api.LeaderboardRecordList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListLeaderboardRecords", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListLeaderboardRecordsAroundOwner(ctx context.Context, in *api.ListLeaderboardRecordsAroundOwnerRequest, opts ...grpc.CallOption) (*api.LeaderboardRecordList, error) {
	out := new(api.LeaderboardRecordList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListLeaderboardRecordsAroundOwner", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListMatches(ctx context.Context, in *api.ListMatchesRequest, opts ...grpc.CallOption) (*api.MatchList, error) {
	out := new(api.MatchList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListMatches", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListNotifications(ctx context.Context, in *api.ListNotificationsRequest, opts ...grpc.CallOption) (*api.NotificationList, error) {
	out := new(api.NotificationList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListNotifications", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListStorageObjects(ctx context.Context, in *api.ListStorageObjectsRequest, opts ...grpc.CallOption) (*api.StorageObjectList, error) {
	out := new(api.StorageObjectList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListStorageObjects", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListTournaments(ctx context.Context, in *api.ListTournamentsRequest, opts ...grpc.CallOption) (*api.TournamentList, error) {
	out := new(api.TournamentList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListTournaments", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListTournamentRecords(ctx context.Context, in *api.ListTournamentRecordsRequest, opts ...grpc.CallOption) (*api.TournamentRecordList, error) {
	out := new(api.TournamentRecordList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListTournamentRecords", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListTournamentRecordsAroundOwner(ctx context.Context, in *api.ListTournamentRecordsAroundOwnerRequest, opts ...grpc.CallOption) (*api.TournamentRecordList, error) {
	out := new(api.TournamentRecordList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListTournamentRecordsAroundOwner", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ListUserGroups(ctx context.Context, in *api.ListUserGroupsRequest, opts ...grpc.CallOption) (*api.UserGroupList, error) {
	out := new(api.UserGroupList)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ListUserGroups", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) PromoteGroupUsers(ctx context.Context, in *api.PromoteGroupUsersRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/PromoteGroupUsers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) DemoteGroupUsers(ctx context.Context, in *api.DemoteGroupUsersRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/DemoteGroupUsers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) ReadStorageObjects(ctx context.Context, in *api.ReadStorageObjectsRequest, opts ...grpc.CallOption) (*api.StorageObjects, error) {
	out := new(api.StorageObjects)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ReadStorageObjects", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) RpcFunc(ctx context.Context, in *api.Rpc, opts ...grpc.CallOption) (*api.Rpc, error) {
	out := new(api.Rpc)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/RpcFunc", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkApple(ctx context.Context, in *api.AccountApple, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/UnlinkApple", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkCustom(ctx context.Context, in *api.AccountCustom, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/UnlinkCustom", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkDevice(ctx context.Context, in *api.AccountDevice, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/UnlinkDevice", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkEmail(ctx context.Context, in *api.AccountEmail, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/UnlinkEmail", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkFacebook(ctx context.Context, in *api.AccountFacebook, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/UnlinkFacebook", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkFacebookInstantGame(ctx context.Context, in *api.AccountFacebookInstantGame, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/UnlinkFacebookInstantGame", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkGameCenter(ctx context.Context, in *api.AccountGameCenter, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/UnlinkGameCenter", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkGoogle(ctx context.Context, in *api.AccountGoogle, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/UnlinkGoogle", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UnlinkSteam(ctx context.Context, in *api.AccountSteam, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/UnlinkSteam", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UpdateAccount(ctx context.Context, in *api.UpdateAccountRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/UpdateAccount", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) UpdateGroup(ctx context.Context, in *api.UpdateGroupRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/UpdateGroup", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) WriteLeaderboardRecord(ctx context.Context, in *api.WriteLeaderboardRecordRequest, opts ...grpc.CallOption) (*api.LeaderboardRecord, error) {
	out := new(api.LeaderboardRecord)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/WriteLeaderboardRecord", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) WriteStorageObjects(ctx context.Context, in *api.WriteStorageObjectsRequest, opts ...grpc.CallOption) (*api.StorageObjectAcks, error) {
	out := new(api.StorageObjectAcks)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/WriteStorageObjects", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) WriteTournamentRecord(ctx context.Context, in *api.WriteTournamentRecordRequest, opts ...grpc.CallOption) (*api.LeaderboardRecord, error) {
	out := new(api.LeaderboardRecord)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/WriteTournamentRecord", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// NakamaServer is the server API for Nakama service.
type NakamaServer interface {
	// Add friends by ID or username to a user's account.
	AddFriends(context.Context, *api.AddFriendsRequest) (*empty.Empty, error)
	// Add users to a group.
	AddGroupUsers(context.Context, *api.AddGroupUsersRequest) (*empty.Empty, error)
	// Authenticate a user with an Apple ID against the server.
	AuthenticateApple(context.Context, *api.AuthenticateAppleRequest) (*api.Session, error)
	// Authenticate a user with a custom id against the server.
	AuthenticateCustom(context.Context, *api.AuthenticateCustomRequest) (*api.Session, error)
	// Authenticate a user with a device id against the server.
	AuthenticateDevice(context.Context, *api.AuthenticateDeviceRequest) (*api.Session, error)
	// Authenticate a user with an email+password against the server.
	AuthenticateEmail(context.Context, *api.AuthenticateEmailRequest) (*api.Session, error)
	// Authenticate a user with a Facebook OAuth token against the server.
	AuthenticateFacebook(context.Context, *api.AuthenticateFacebookRequest) (*api.Session, error)
	// Authenticate a user with a Facebook Instant Game token against the server.
	AuthenticateFacebookInstantGame(context.Context, *api.AuthenticateFacebookInstantGameRequest) (*api.Session, error)
	// Authenticate a user with Apple's GameCenter against the server.
	AuthenticateGameCenter(context.Context, *api.AuthenticateGameCenterRequest) (*api.Session, error)
	// Authenticate a user with Google against the server.
	AuthenticateGoogle(context.Context, *api.AuthenticateGoogleRequest) (*api.Session, error)
	// Authenticate a user with Steam against the server.
	AuthenticateSteam(context.Context, *api.AuthenticateSteamRequest) (*api.Session, error)
	// Ban a set of users from a group.
	BanGroupUsers(context.Context, *api.BanGroupUsersRequest) (*empty.Empty, error)
	// Block one or more users by ID or username.
	BlockFriends(context.Context, *api.BlockFriendsRequest) (*empty.Empty, error)
	// Create a new group with the current user as the owner.
	CreateGroup(context.Context, *api.CreateGroupRequest) (*api.Group, error)
	// Delete one or more users by ID or username.
	DeleteFriends(context.Context, *api.DeleteFriendsRequest) (*empty.Empty, error)
	// Delete a group by ID.
	DeleteGroup(context.Context, *api.DeleteGroupRequest) (*empty.Empty, error)
	// Delete a leaderboard record.
	DeleteLeaderboardRecord(context.Context, *api.DeleteLeaderboardRecordRequest) (*empty.Empty, error)
	// Delete one or more notifications for the current user.
	DeleteNotifications(context.Context, *api.DeleteNotificationsRequest) (*empty.Empty, error)
	// Delete one or more objects by ID or username.
	DeleteStorageObjects(context.Context, *api.DeleteStorageObjectsRequest) (*empty.Empty, error)
	// Submit an event for processing in the server's registered runtime custom events handler.
	Event(context.Context, *api.Event) (*empty.Empty, error)
	// Fetch the current user's account.
	GetAccount(context.Context, *empty.Empty) (*api.Account, error)
	// Fetch zero or more users by ID and/or username.
	GetUsers(context.Context, *api.GetUsersRequest) (*api.Users, error)
	// A healthcheck which load balancers can use to check the service.
	Healthcheck(context.Context, *empty.Empty) (*empty.Empty, error)
	// Import Facebook friends and add them to a user's account.
	ImportFacebookFriends(context.Context, *api.ImportFacebookFriendsRequest) (*empty.Empty, error)
	// Immediately join an open group, or request to join a closed one.
	JoinGroup(context.Context, *api.JoinGroupRequest) (*empty.Empty, error)
	// Attempt to join an open and running tournament.
	JoinTournament(context.Context, *api.JoinTournamentRequest) (*empty.Empty, error)
	// Kick a set of users from a group.
	KickGroupUsers(context.Context, *api.KickGroupUsersRequest) (*empty.Empty, error)
	// Leave a group the user is a member of.
	LeaveGroup(context.Context, *api.LeaveGroupRequest) (*empty.Empty, error)
	// Add an Apple ID to the social profiles on the current user's account.
	LinkApple(context.Context, *api.AccountApple) (*empty.Empty, error)
	// Add a custom ID to the social profiles on the current user's account.
	LinkCustom(context.Context, *api.AccountCustom) (*empty.Empty, error)
	// Add a device ID to the social profiles on the current user's account.
	LinkDevice(context.Context, *api.AccountDevice) (*empty.Empty, error)
	// Add an email+password to the social profiles on the current user's account.
	LinkEmail(context.Context, *api.AccountEmail) (*empty.Empty, error)
	// Add Facebook to the social profiles on the current user's account.
	LinkFacebook(context.Context, *api.LinkFacebookRequest) (*empty.Empty, error)
	// Add Facebook Instant Game to the social profiles on the current user's account.
	LinkFacebookInstantGame(context.Context, *api.AccountFacebookInstantGame) (*empty.Empty, error)
	// Add Apple's GameCenter to the social profiles on the current user's account.
	LinkGameCenter(context.Context, *api.AccountGameCenter) (*empty.Empty, error)
	// Add Google to the social profiles on the current user's account.
	LinkGoogle(context.Context, *api.AccountGoogle) (*empty.Empty, error)
	// Add Steam to the social profiles on the current user's account.
	LinkSteam(context.Context, *api.AccountSteam) (*empty.Empty, error)
	// List a channel's message history.
	ListChannelMessages(context.Context, *api.ListChannelMessagesRequest) (*api.ChannelMessageList, error)
	// List all friends for the current user.
	ListFriends(context.Context, *api.ListFriendsRequest) (*api.FriendList, error)
	// List groups based on given filters.
	ListGroups(context.Context, *api.ListGroupsRequest) (*api.GroupList, error)
	// List all users that are part of a group.
	ListGroupUsers(context.Context, *api.ListGroupUsersRequest) (*api.GroupUserList, error)
	// List leaderboard records.
	ListLeaderboardRecords(context.Context, *api.ListLeaderboardRecordsRequest) (*api.LeaderboardRecordList, error)
	// List leaderboard records that belong to a user.
	ListLeaderboardRecordsAroundOwner(context.Context, *api.ListLeaderboardRecordsAroundOwnerRequest) (*api.LeaderboardRecordList, error)
	// Fetch list of running matches.
	ListMatches(context.Context, *api.ListMatchesRequest) (*api.MatchList, error)
	// Fetch list of notifications.
	ListNotifications(context.Context, *api.ListNotificationsRequest) (*api.NotificationList, error)
	// List publicly readable storage objects in a given collection.
	ListStorageObjects(context.Context, *api.ListStorageObjectsRequest) (*api.StorageObjectList, error)
	// List current or upcoming tournaments.
	ListTournaments(context.Context, *api.ListTournamentsRequest) (*api.TournamentList, error)
	// List tournament records.
	ListTournamentRecords(context.Context, *api.ListTournamentRecordsRequest) (*api.TournamentRecordList, error)
	// List tournament records for a given owner.
	ListTournamentRecordsAroundOwner(context.Context, *api.ListTournamentRecordsAroundOwnerRequest) (*api.TournamentRecordList, error)
	// List groups the current user belongs to.
	ListUserGroups(context.Context, *api.ListUserGroupsRequest) (*api.UserGroupList, error)
	// Promote a set of users in a group to the next role up.
	PromoteGroupUsers(context.Context, *api.PromoteGroupUsersRequest) (*empty.Empty, error)
	// Demote a set of users in a group to the next role down.
	DemoteGroupUsers(context.Context, *api.DemoteGroupUsersRequest) (*empty.Empty, error)
	// Get storage objects.
	ReadStorageObjects(context.Context, *api.ReadStorageObjectsRequest) (*api.StorageObjects, error)
	// Execute a Lua function on the server.
	RpcFunc(context.Context, *api.Rpc) (*api.Rpc, error)
	// Remove the Apple ID from the social profiles on the current user's account.
	UnlinkApple(context.Context, *api.AccountApple) (*empty.Empty, error)
	// Remove the custom ID from the social profiles on the current user's account.
	UnlinkCustom(context.Context, *api.AccountCustom) (*empty.Empty, error)
	// Remove the device ID from the social profiles on the current user's account.
	UnlinkDevice(context.Context, *api.AccountDevice) (*empty.Empty, error)
	// Remove the email+password from the social profiles on the current user's account.
	UnlinkEmail(context.Context, *api.AccountEmail) (*empty.Empty, error)
	// Remove Facebook from the social profiles on the current user's account.
	UnlinkFacebook(context.Context, *api.AccountFacebook) (*empty.Empty, error)
	// Remove Facebook Instant Game profile from the social profiles on the current user's account.
	UnlinkFacebookInstantGame(context.Context, *api.AccountFacebookInstantGame) (*empty.Empty, error)
	// Remove Apple's GameCenter from the social profiles on the current user's account.
	UnlinkGameCenter(context.Context, *api.AccountGameCenter) (*empty.Empty, error)
	// Remove Google from the social profiles on the current user's account.
	UnlinkGoogle(context.Context, *api.AccountGoogle) (*empty.Empty, error)
	// Remove Steam from the social profiles on the current user's account.
	UnlinkSteam(context.Context, *api.AccountSteam) (*empty.Empty, error)
	// Update fields in the current user's account.
	UpdateAccount(context.Context, *api.UpdateAccountRequest) (*empty.Empty, error)
	// Update fields in a given group.
	UpdateGroup(context.Context, *api.UpdateGroupRequest) (*empty.Empty, error)
	// Write a record to a leaderboard.
	WriteLeaderboardRecord(context.Context, *api.WriteLeaderboardRecordRequest) (*api.LeaderboardRecord, error)
	// Write objects into the storage engine.
	WriteStorageObjects(context.Context, *api.WriteStorageObjectsRequest) (*api.StorageObjectAcks, error)
	// Write a record to a tournament.
	WriteTournamentRecord(context.Context, *api.WriteTournamentRecordRequest) (*api.LeaderboardRecord, error)
}

// UnimplementedNakamaServer can be embedded to have forward compatible implementations.
type UnimplementedNakamaServer struct {
}

func (*UnimplementedNakamaServer) AddFriends(ctx context.Context, req *api.AddFriendsRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AddFriends not implemented")
}
func (*UnimplementedNakamaServer) AddGroupUsers(ctx context.Context, req *api.AddGroupUsersRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AddGroupUsers not implemented")
}
func (*UnimplementedNakamaServer) AuthenticateApple(ctx context.Context, req *api.AuthenticateAppleRequest) (*api.Session, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AuthenticateApple not implemented")
}
func (*UnimplementedNakamaServer) AuthenticateCustom(ctx context.Context, req *api.AuthenticateCustomRequest) (*api.Session, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AuthenticateCustom not implemented")
}
func (*UnimplementedNakamaServer) AuthenticateDevice(ctx context.Context, req *api.AuthenticateDeviceRequest) (*api.Session, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AuthenticateDevice not implemented")
}
func (*UnimplementedNakamaServer) AuthenticateEmail(ctx context.Context, req *api.AuthenticateEmailRequest) (*api.Session, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AuthenticateEmail not implemented")
}
func (*UnimplementedNakamaServer) AuthenticateFacebook(ctx context.Context, req *api.AuthenticateFacebookRequest) (*api.Session, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AuthenticateFacebook not implemented")
}
func (*UnimplementedNakamaServer) AuthenticateFacebookInstantGame(ctx context.Context, req *api.AuthenticateFacebookInstantGameRequest) (*api.Session, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AuthenticateFacebookInstantGame not implemented")
}
func (*UnimplementedNakamaServer) AuthenticateGameCenter(ctx context.Context, req *api.AuthenticateGameCenterRequest) (*api.Session, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AuthenticateGameCenter not implemented")
}
func (*UnimplementedNakamaServer) AuthenticateGoogle(ctx context.Context, req *api.AuthenticateGoogleRequest) (*api.Session, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AuthenticateGoogle not implemented")
}
func (*UnimplementedNakamaServer) AuthenticateSteam(ctx context.Context, req *api.AuthenticateSteamRequest) (*api.Session, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AuthenticateSteam not implemented")
}
func (*UnimplementedNakamaServer) BanGroupUsers(ctx context.Context, req *api.BanGroupUsersRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method BanGroupUsers not implemented")
}
func (*UnimplementedNakamaServer) BlockFriends(ctx context.Context, req *api.BlockFriendsRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method BlockFriends not implemented")
}
func (*UnimplementedNakamaServer) CreateGroup(ctx context.Context, req *api.CreateGroupRequest) (*api.Group, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateGroup not implemented")
}
func (*UnimplementedNakamaServer) DeleteFriends(ctx context.Context, req *api.DeleteFriendsRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteFriends not implemented")
}
func (*UnimplementedNakamaServer) DeleteGroup(ctx context.Context, req *api.DeleteGroupRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteGroup not implemented")
}
func (*UnimplementedNakamaServer) DeleteLeaderboardRecord(ctx context.Context, req *api.DeleteLeaderboardRecordRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteLeaderboardRecord not implemented")
}
func (*UnimplementedNakamaServer) DeleteNotifications(ctx context.Context, req *api.DeleteNotificationsRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteNotifications not implemented")
}
func (*UnimplementedNakamaServer) DeleteStorageObjects(ctx context.Context, req *api.DeleteStorageObjectsRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteStorageObjects not implemented")
}
func (*UnimplementedNakamaServer) Event(ctx context.Context, req *api.Event) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Event not implemented")
}
func (*UnimplementedNakamaServer) GetAccount(ctx context.Context, req *empty.Empty) (*api.Account, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetAccount not implemented")
}
func (*UnimplementedNakamaServer) GetUsers(ctx context.Context, req *api.GetUsersRequest) (*api.Users, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetUsers not implemented")
}
func (*UnimplementedNakamaServer) Healthcheck(ctx context.Context, req *empty.Empty) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Healthcheck not implemented")
}
func (*UnimplementedNakamaServer) ImportFacebookFriends(ctx context.Context, req *api.ImportFacebookFriendsRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ImportFacebookFriends not implemented")
}
func (*UnimplementedNakamaServer) JoinGroup(ctx context.Context, req *api.JoinGroupRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method JoinGroup not implemented")
}
func (*UnimplementedNakamaServer) JoinTournament(ctx context.Context, req *api.JoinTournamentRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method JoinTournament not implemented")
}
func (*UnimplementedNakamaServer) KickGroupUsers(ctx context.Context, req *api.KickGroupUsersRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method KickGroupUsers not implemented")
}
func (*UnimplementedNakamaServer) LeaveGroup(ctx context.Context, req *api.LeaveGroupRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method LeaveGroup not implemented")
}
func (*UnimplementedNakamaServer) LinkApple(ctx context.Context, req *api.AccountApple) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method LinkApple not implemented")
}
func (*UnimplementedNakamaServer) LinkCustom(ctx context.Context, req *api.AccountCustom) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method LinkCustom not implemented")
}
func (*UnimplementedNakamaServer) LinkDevice(ctx context.Context, req *api.AccountDevice) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method LinkDevice not implemented")
}
func (*UnimplementedNakamaServer) LinkEmail(ctx context.Context, req *api.AccountEmail) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method LinkEmail not implemented")
}
func (*UnimplementedNakamaServer) LinkFacebook(ctx context.Context, req *api.LinkFacebookRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method LinkFacebook not implemented")
}
func (*UnimplementedNakamaServer) LinkFacebookInstantGame(ctx context.Context, req *api.AccountFacebookInstantGame) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method LinkFacebookInstantGame not implemented")
}
func (*UnimplementedNakamaServer) LinkGameCenter(ctx context.Context, req *api.AccountGameCenter) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method LinkGameCenter not implemented")
}
func (*UnimplementedNakamaServer) LinkGoogle(ctx context.Context, req *api.AccountGoogle) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method LinkGoogle not implemented")
}
func (*UnimplementedNakamaServer) LinkSteam(ctx context.Context, req *api.AccountSteam) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method LinkSteam not implemented")
}
func (*UnimplementedNakamaServer) ListChannelMessages(ctx context.Context, req *api.ListChannelMessagesRequest) (*api.ChannelMessageList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListChannelMessages not implemented")
}
func (*UnimplementedNakamaServer) ListFriends(ctx context.Context, req *api.ListFriendsRequest) (*api.FriendList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListFriends not implemented")
}
func (*UnimplementedNakamaServer) ListGroups(ctx context.Context, req *api.ListGroupsRequest) (*api.GroupList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListGroups not implemented")
}
func (*UnimplementedNakamaServer) ListGroupUsers(ctx context.Context, req *api.ListGroupUsersRequest) (*api.GroupUserList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListGroupUsers not implemented")
}
func (*UnimplementedNakamaServer) ListLeaderboardRecords(ctx context.Context, req *api.ListLeaderboardRecordsRequest) (*api.LeaderboardRecordList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListLeaderboardRecords not implemented")
}
func (*UnimplementedNakamaServer) ListLeaderboardRecordsAroundOwner(ctx context.Context, req *api.ListLeaderboardRecordsAroundOwnerRequest) (*api.LeaderboardRecordList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListLeaderboardRecordsAroundOwner not implemented")
}
func (*UnimplementedNakamaServer) ListMatches(ctx context.Context, req *api.ListMatchesRequest) (*api.MatchList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListMatches not implemented")
}
func (*UnimplementedNakamaServer) ListNotifications(ctx context.Context, req *api.ListNotificationsRequest) (*api.NotificationList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListNotifications not implemented")
}
func (*UnimplementedNakamaServer) ListStorageObjects(ctx context.Context, req *api.ListStorageObjectsRequest) (*api.StorageObjectList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListStorageObjects not implemented")
}
func (*UnimplementedNakamaServer) ListTournaments(ctx context.Context, req *api.ListTournamentsRequest) (*api.TournamentList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListTournaments not implemented")
}
func (*UnimplementedNakamaServer) ListTournamentRecords(ctx context.Context, req *api.ListTournamentRecordsRequest) (*api.TournamentRecordList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListTournamentRecords not implemented")
}
func (*UnimplementedNakamaServer) ListTournamentRecordsAroundOwner(ctx context.Context, req *api.ListTournamentRecordsAroundOwnerRequest) (*api.TournamentRecordList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListTournamentRecordsAroundOwner not implemented")
}
func (*UnimplementedNakamaServer) ListUserGroups(ctx context.Context, req *api.ListUserGroupsRequest) (*api.UserGroupList, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListUserGroups not implemented")
}
func (*UnimplementedNakamaServer) PromoteGroupUsers(ctx context.Context, req *api.PromoteGroupUsersRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PromoteGroupUsers not implemented")
}
func (*UnimplementedNakamaServer) DemoteGroupUsers(ctx context.Context, req *api.DemoteGroupUsersRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DemoteGroupUsers not implemented")
}
func (*UnimplementedNakamaServer) ReadStorageObjects(ctx context.Context, req *api.ReadStorageObjectsRequest) (*api.StorageObjects, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ReadStorageObjects not implemented")
}
func (*UnimplementedNakamaServer) RpcFunc(ctx context.Context, req *api.Rpc) (*api.Rpc, error) {
	return nil, status.Errorf(codes.Unimplemented, "method RpcFunc not implemented")
}
func (*UnimplementedNakamaServer) UnlinkApple(ctx context.Context, req *api.AccountApple) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UnlinkApple not implemented")
}
func (*UnimplementedNakamaServer) UnlinkCustom(ctx context.Context, req *api.AccountCustom) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UnlinkCustom not implemented")
}
func (*UnimplementedNakamaServer) UnlinkDevice(ctx context.Context, req *api.AccountDevice) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UnlinkDevice not implemented")
}
func (*UnimplementedNakamaServer) UnlinkEmail(ctx context.Context, req *api.AccountEmail) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UnlinkEmail not implemented")
}
func (*UnimplementedNakamaServer) UnlinkFacebook(ctx context.Context, req *api.AccountFacebook) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UnlinkFacebook not implemented")
}
func (*UnimplementedNakamaServer) UnlinkFacebookInstantGame(ctx context.Context, req *api.AccountFacebookInstantGame) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UnlinkFacebookInstantGame not implemented")
}
func (*UnimplementedNakamaServer) UnlinkGameCenter(ctx context.Context, req *api.AccountGameCenter) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UnlinkGameCenter not implemented")
}
func (*UnimplementedNakamaServer) UnlinkGoogle(ctx context.Context, req *api.AccountGoogle) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UnlinkGoogle not implemented")
}
func (*UnimplementedNakamaServer) UnlinkSteam(ctx context.Context, req *api.AccountSteam) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UnlinkSteam not implemented")
}
func (*UnimplementedNakamaServer) UpdateAccount(ctx context.Context, req *api.UpdateAccountRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UpdateAccount not implemented")
}
func (*UnimplementedNakamaServer) UpdateGroup(ctx context.Context, req *api.UpdateGroupRequest) (*empty.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UpdateGroup not implemented")
}
func (*UnimplementedNakamaServer) WriteLeaderboardRecord(ctx context.Context, req *api.WriteLeaderboardRecordRequest) (*api.LeaderboardRecord, error) {
	return nil, status.Errorf(codes.Unimplemented, "method WriteLeaderboardRecord not implemented")
}
func (*UnimplementedNakamaServer) WriteStorageObjects(ctx context.Context, req *api.WriteStorageObjectsRequest) (*api.StorageObjectAcks, error) {
	return nil, status.Errorf(codes.Unimplemented, "method WriteStorageObjects not implemented")
}
func (*UnimplementedNakamaServer) WriteTournamentRecord(ctx context.Context, req *api.WriteTournamentRecordRequest) (*api.LeaderboardRecord, error) {
	return nil, status.Errorf(codes.Unimplemented, "method WriteTournamentRecord not implemented")
}

func RegisterNakamaServer(s *grpc.Server, srv NakamaServer) {
	s.RegisterService(&_Nakama_serviceDesc, srv)
}

func _Nakama_AddFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AddFriendsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AddFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AddFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AddFriends(ctx, req.(*api.AddFriendsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AddGroupUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AddGroupUsersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AddGroupUsers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AddGroupUsers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AddGroupUsers(ctx, req.(*api.AddGroupUsersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateApple_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AuthenticateAppleRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateApple(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateApple",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateApple(ctx, req.(*api.AuthenticateAppleRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateCustom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AuthenticateCustomRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateCustom(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateCustom",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateCustom(ctx, req.(*api.AuthenticateCustomRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AuthenticateDeviceRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateDevice",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateDevice(ctx, req.(*api.AuthenticateDeviceRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateEmail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AuthenticateEmailRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateEmail(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateEmail",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateEmail(ctx, req.(*api.AuthenticateEmailRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateFacebook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AuthenticateFacebookRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateFacebook(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateFacebook",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateFacebook(ctx, req.(*api.AuthenticateFacebookRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateFacebookInstantGame_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AuthenticateFacebookInstantGameRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateFacebookInstantGame(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateFacebookInstantGame",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateFacebookInstantGame(ctx, req.(*api.AuthenticateFacebookInstantGameRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateGameCenter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AuthenticateGameCenterRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateGameCenter(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateGameCenter",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateGameCenter(ctx, req.(*api.AuthenticateGameCenterRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateGoogle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AuthenticateGoogleRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateGoogle(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateGoogle",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateGoogle(ctx, req.(*api.AuthenticateGoogleRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_AuthenticateSteam_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AuthenticateSteamRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).AuthenticateSteam(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/AuthenticateSteam",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).AuthenticateSteam(ctx, req.(*api.AuthenticateSteamRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_BanGroupUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.BanGroupUsersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).BanGroupUsers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/BanGroupUsers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).BanGroupUsers(ctx, req.(*api.BanGroupUsersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_BlockFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.BlockFriendsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).BlockFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/BlockFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).BlockFriends(ctx, req.(*api.BlockFriendsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_CreateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.CreateGroupRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).CreateGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/CreateGroup",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).CreateGroup(ctx, req.(*api.CreateGroupRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_DeleteFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.DeleteFriendsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).DeleteFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/DeleteFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).DeleteFriends(ctx, req.(*api.DeleteFriendsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_DeleteGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.DeleteGroupRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).DeleteGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/DeleteGroup",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).DeleteGroup(ctx, req.(*api.DeleteGroupRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_DeleteLeaderboardRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.DeleteLeaderboardRecordRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).DeleteLeaderboardRecord(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/DeleteLeaderboardRecord",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).DeleteLeaderboardRecord(ctx, req.(*api.DeleteLeaderboardRecordRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_DeleteNotifications_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.DeleteNotificationsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).DeleteNotifications(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/DeleteNotifications",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).DeleteNotifications(ctx, req.(*api.DeleteNotificationsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_DeleteStorageObjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.DeleteStorageObjectsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).DeleteStorageObjects(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/DeleteStorageObjects",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).DeleteStorageObjects(ctx, req.(*api.DeleteStorageObjectsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_Event_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.Event)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).Event(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/Event",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).Event(ctx, req.(*api.Event))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_GetAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(empty.Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).GetAccount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/GetAccount",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).GetAccount(ctx, req.(*empty.Empty))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_GetUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.GetUsersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).GetUsers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/GetUsers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).GetUsers(ctx, req.(*api.GetUsersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_Healthcheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(empty.Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).Healthcheck(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/Healthcheck",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).Healthcheck(ctx, req.(*empty.Empty))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ImportFacebookFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ImportFacebookFriendsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ImportFacebookFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ImportFacebookFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ImportFacebookFriends(ctx, req.(*api.ImportFacebookFriendsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_JoinGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.JoinGroupRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).JoinGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/JoinGroup",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).JoinGroup(ctx, req.(*api.JoinGroupRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_JoinTournament_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.JoinTournamentRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).JoinTournament(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/JoinTournament",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).JoinTournament(ctx, req.(*api.JoinTournamentRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_KickGroupUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.KickGroupUsersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).KickGroupUsers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/KickGroupUsers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).KickGroupUsers(ctx, req.(*api.KickGroupUsersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LeaveGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.LeaveGroupRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LeaveGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LeaveGroup",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LeaveGroup(ctx, req.(*api.LeaveGroupRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkApple_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountApple)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkApple(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkApple",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkApple(ctx, req.(*api.AccountApple))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkCustom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountCustom)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkCustom(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkCustom",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkCustom(ctx, req.(*api.AccountCustom))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountDevice)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkDevice",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkDevice(ctx, req.(*api.AccountDevice))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkEmail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountEmail)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkEmail(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkEmail",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkEmail(ctx, req.(*api.AccountEmail))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkFacebook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.LinkFacebookRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkFacebook(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkFacebook",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkFacebook(ctx, req.(*api.LinkFacebookRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkFacebookInstantGame_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountFacebookInstantGame)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkFacebookInstantGame(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkFacebookInstantGame",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkFacebookInstantGame(ctx, req.(*api.AccountFacebookInstantGame))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkGameCenter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountGameCenter)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkGameCenter(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkGameCenter",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkGameCenter(ctx, req.(*api.AccountGameCenter))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkGoogle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountGoogle)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkGoogle(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkGoogle",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkGoogle(ctx, req.(*api.AccountGoogle))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_LinkSteam_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountSteam)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).LinkSteam(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/LinkSteam",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).LinkSteam(ctx, req.(*api.AccountSteam))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListChannelMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListChannelMessagesRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListChannelMessages(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListChannelMessages",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListChannelMessages(ctx, req.(*api.ListChannelMessagesRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListFriendsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListFriends(ctx, req.(*api.ListFriendsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListGroupsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListGroups(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListGroups",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListGroups(ctx, req.(*api.ListGroupsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListGroupUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListGroupUsersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListGroupUsers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListGroupUsers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListGroupUsers(ctx, req.(*api.ListGroupUsersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListLeaderboardRecords_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListLeaderboardRecordsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListLeaderboardRecords(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListLeaderboardRecords",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListLeaderboardRecords(ctx, req.(*api.ListLeaderboardRecordsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListLeaderboardRecordsAroundOwner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListLeaderboardRecordsAroundOwnerRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListLeaderboardRecordsAroundOwner(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListLeaderboardRecordsAroundOwner",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListLeaderboardRecordsAroundOwner(ctx, req.(*api.ListLeaderboardRecordsAroundOwnerRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListMatches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListMatchesRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListMatches(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListMatches",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListMatches(ctx, req.(*api.ListMatchesRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListNotifications_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListNotificationsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListNotifications(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListNotifications",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListNotifications(ctx, req.(*api.ListNotificationsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListStorageObjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListStorageObjectsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListStorageObjects(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListStorageObjects",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListStorageObjects(ctx, req.(*api.ListStorageObjectsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListTournaments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListTournamentsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListTournaments(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListTournaments",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListTournaments(ctx, req.(*api.ListTournamentsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListTournamentRecords_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListTournamentRecordsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListTournamentRecords(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListTournamentRecords",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListTournamentRecords(ctx, req.(*api.ListTournamentRecordsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListTournamentRecordsAroundOwner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListTournamentRecordsAroundOwnerRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListTournamentRecordsAroundOwner(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListTournamentRecordsAroundOwner",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListTournamentRecordsAroundOwner(ctx, req.(*api.ListTournamentRecordsAroundOwnerRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ListUserGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ListUserGroupsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ListUserGroups(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ListUserGroups",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ListUserGroups(ctx, req.(*api.ListUserGroupsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_PromoteGroupUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.PromoteGroupUsersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).PromoteGroupUsers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/PromoteGroupUsers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).PromoteGroupUsers(ctx, req.(*api.PromoteGroupUsersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_DemoteGroupUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.DemoteGroupUsersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).DemoteGroupUsers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/DemoteGroupUsers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).DemoteGroupUsers(ctx, req.(*api.DemoteGroupUsersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_ReadStorageObjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ReadStorageObjectsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ReadStorageObjects(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ReadStorageObjects",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ReadStorageObjects(ctx, req.(*api.ReadStorageObjectsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_RpcFunc_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.Rpc)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).RpcFunc(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/RpcFunc",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).RpcFunc(ctx, req.(*api.Rpc))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkApple_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountApple)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkApple(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkApple",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkApple(ctx, req.(*api.AccountApple))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkCustom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountCustom)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkCustom(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkCustom",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkCustom(ctx, req.(*api.AccountCustom))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountDevice)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkDevice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkDevice",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkDevice(ctx, req.(*api.AccountDevice))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkEmail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountEmail)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkEmail(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkEmail",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkEmail(ctx, req.(*api.AccountEmail))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkFacebook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountFacebook)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkFacebook(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkFacebook",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkFacebook(ctx, req.(*api.AccountFacebook))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkFacebookInstantGame_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountFacebookInstantGame)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkFacebookInstantGame(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkFacebookInstantGame",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkFacebookInstantGame(ctx, req.(*api.AccountFacebookInstantGame))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkGameCenter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountGameCenter)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkGameCenter(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkGameCenter",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkGameCenter(ctx, req.(*api.AccountGameCenter))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkGoogle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountGoogle)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkGoogle(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkGoogle",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkGoogle(ctx, req.(*api.AccountGoogle))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UnlinkSteam_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.AccountSteam)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UnlinkSteam(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UnlinkSteam",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UnlinkSteam(ctx, req.(*api.AccountSteam))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UpdateAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.UpdateAccountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UpdateAccount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UpdateAccount",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UpdateAccount(ctx, req.(*api.UpdateAccountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_UpdateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.UpdateGroupRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).UpdateGroup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/UpdateGroup",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).UpdateGroup(ctx, req.(*api.UpdateGroupRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_WriteLeaderboardRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.WriteLeaderboardRecordRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).WriteLeaderboardRecord(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/WriteLeaderboardRecord",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).WriteLeaderboardRecord(ctx, req.(*api.WriteLeaderboardRecordRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_WriteStorageObjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.WriteStorageObjectsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).WriteStorageObjects(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/WriteStorageObjects",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).WriteStorageObjects(ctx, req.(*api.WriteStorageObjectsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_WriteTournamentRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.WriteTournamentRecordRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).WriteTournamentRecord(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/WriteTournamentRecord",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).WriteTournamentRecord(ctx, req.(*api.WriteTournamentRecordRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _Nakama_serviceDesc = grpc.ServiceDesc{
	ServiceName: "nakama.api.Nakama",
	HandlerType: (*NakamaServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "AddFriends",
			Handler:    _Nakama_AddFriends_Handler,
		},
		{
			MethodName: "AddGroupUsers",
			Handler:    _Nakama_AddGroupUsers_Handler,
		},
		{
			MethodName: "AuthenticateApple",
			Handler:    _Nakama_AuthenticateApple_Handler,
		},
		{
			MethodName: "AuthenticateCustom",
			Handler:    _Nakama_AuthenticateCustom_Handler,
		},
		{
			MethodName: "AuthenticateDevice",
			Handler:    _Nakama_AuthenticateDevice_Handler,
		},
		{
			MethodName: "AuthenticateEmail",
			Handler:    _Nakama_AuthenticateEmail_Handler,
		},
		{
			MethodName: "AuthenticateFacebook",
			Handler:    _Nakama_AuthenticateFacebook_Handler,
		},
		{
			MethodName: "AuthenticateFacebookInstantGame",
			Handler:    _Nakama_AuthenticateFacebookInstantGame_Handler,
		},
		{
			MethodName: "AuthenticateGameCenter",
			Handler:    _Nakama_AuthenticateGameCenter_Handler,
		},
		{
			MethodName: "AuthenticateGoogle",
			Handler:    _Nakama_AuthenticateGoogle_Handler,
		},
		{
			MethodName: "AuthenticateSteam",
			Handler:    _Nakama_AuthenticateSteam_Handler,
		},
		{
			MethodName: "BanGroupUsers",
			Handler:    _Nakama_BanGroupUsers_Handler,
		},
		{
			MethodName: "BlockFriends",
			Handler:    _Nakama_BlockFriends_Handler,
		},
		{
			MethodName: "CreateGroup",
			Handler:    _Nakama_CreateGroup_Handler,
		},
		{
			MethodName: "DeleteFriends",
			Handler:    _Nakama_DeleteFriends_Handler,
		},
		{
			MethodName: "DeleteGroup",
			Handler:    _Nakama_DeleteGroup_Handler,
		},
		{
			MethodName: "DeleteLeaderboardRecord",
			Handler:    _Nakama_DeleteLeaderboardRecord_Handler,
		},
		{
			MethodName: "DeleteNotifications",
			Handler:    _Nakama_DeleteNotifications_Handler,
		},
		{
			MethodName: "DeleteStorageObjects",
			Handler:    _Nakama_DeleteStorageObjects_Handler,
		},
		{
			MethodName: "Event",
			Handler:    _Nakama_Event_Handler,
		},
		{
			MethodName: "GetAccount",
			Handler:    _Nakama_GetAccount_Handler,
		},
		{
			MethodName: "GetUsers",
			Handler:    _Nakama_GetUsers_Handler,
		},
		{
			MethodName: "Healthcheck",
			Handler:    _Nakama_Healthcheck_Handler,
		},
		{
			MethodName: "ImportFacebookFriends",
			Handler:    _Nakama_ImportFacebookFriends_Handler,
		},
		{
			MethodName: "JoinGroup",
			Handler:    _Nakama_JoinGroup_Handler,
		},
		{
			MethodName: "JoinTournament",
			Handler:    _Nakama_JoinTournament_Handler,
		},
		{
			MethodName: "KickGroupUsers",
			Handler:    _Nakama_KickGroupUsers_Handler,
		},
		{
			MethodName: "LeaveGroup",
			Handler:    _Nakama_LeaveGroup_Handler,
		},
		{
			MethodName: "LinkApple",
			Handler:    _Nakama_LinkApple_Handler,
		},
		{
			MethodName: "LinkCustom",
			Handler:    _Nakama_LinkCustom_Handler,
		},
		{
			MethodName: "LinkDevice",
			Handler:    _Nakama_LinkDevice_Handler,
		},
		{
			MethodName: "LinkEmail",
			Handler:    _Nakama_LinkEmail_Handler,
		},
		{
			MethodName: "LinkFacebook",
			Handler:    _Nakama_LinkFacebook_Handler,
		},
		{
			MethodName: "LinkFacebookInstantGame",
			Handler:    _Nakama_LinkFacebookInstantGame_Handler,
		},
		{
			MethodName: "LinkGameCenter",
			Handler:    _Nakama_LinkGameCenter_Handler,
		},
		{
			MethodName: "LinkGoogle",
			Handler:    _Nakama_LinkGoogle_Handler,
		},
		{
			MethodName: "LinkSteam",
			Handler:    _Nakama_LinkSteam_Handler,
		},
		{
			MethodName: "ListChannelMessages",
			Handler:    _Nakama_ListChannelMessages_Handler,
		},
		{
			MethodName: "ListFriends",
			Handler:    _Nakama_ListFriends_Handler,
		},
		{
			MethodName: "ListGroups",
			Handler:    _Nakama_ListGroups_Handler,
		},
		{
			MethodName: "ListGroupUsers",
			Handler:    _Nakama_ListGroupUsers_Handler,
		},
		{
			MethodName: "ListLeaderboardRecords",
			Handler:    _Nakama_ListLeaderboardRecords_Handler,
		},
		{
			MethodName: "ListLeaderboardRecordsAroundOwner",
			Handler:    _Nakama_ListLeaderboardRecordsAroundOwner_Handler,
		},
		{
			MethodName: "ListMatches",
			Handler:    _Nakama_ListMatches_Handler,
		},
		{
			MethodName: "ListNotifications",
			Handler:    _Nakama_ListNotifications_Handler,
		},
		{
			MethodName: "ListStorageObjects",
			Handler:    _Nakama_ListStorageObjects_Handler,
		},
		{
			MethodName: "ListTournaments",
			Handler:    _Nakama_ListTournaments_Handler,
		},
		{
			MethodName: "ListTournamentRecords",
			Handler:    _Nakama_ListTournamentRecords_Handler,
		},
		{
			MethodName: "ListTournamentRecordsAroundOwner",
			Handler:    _Nakama_ListTournamentRecordsAroundOwner_Handler,
		},
		{
			MethodName: "ListUserGroups",
			Handler:    _Nakama_ListUserGroups_Handler,
		},
		{
			MethodName: "PromoteGroupUsers",
			Handler:    _Nakama_PromoteGroupUsers_Handler,
		},
		{
			MethodName: "DemoteGroupUsers",
			Handler:    _Nakama_DemoteGroupUsers_Handler,
		},
		{
			MethodName: "ReadStorageObjects",
			Handler:    _Nakama_ReadStorageObjects_Handler,
		},
		{
			MethodName: "RpcFunc",
			Handler:    _Nakama_RpcFunc_Handler,
		},
		{
			MethodName: "UnlinkApple",
			Handler:    _Nakama_UnlinkApple_Handler,
		},
		{
			MethodName: "UnlinkCustom",
			Handler:    _Nakama_UnlinkCustom_Handler,
		},
		{
			MethodName: "UnlinkDevice",
			Handler:    _Nakama_UnlinkDevice_Handler,
		},
		{
			MethodName: "UnlinkEmail",
			Handler:    _Nakama_UnlinkEmail_Handler,
		},
		{
			MethodName: "UnlinkFacebook",
			Handler:    _Nakama_UnlinkFacebook_Handler,
		},
		{
			MethodName: "UnlinkFacebookInstantGame",
			Handler:    _Nakama_UnlinkFacebookInstantGame_Handler,
		},
		{
			MethodName: "UnlinkGameCenter",
			Handler:    _Nakama_UnlinkGameCenter_Handler,
		},
		{
			MethodName: "UnlinkGoogle",
			Handler:    _Nakama_UnlinkGoogle_Handler,
		},
		{
			MethodName: "UnlinkSteam",
			Handler:    _Nakama_UnlinkSteam_Handler,
		},
		{
			MethodName: "UpdateAccount",
			Handler:    _Nakama_UpdateAccount_Handler,
		},
		{
			MethodName: "UpdateGroup",
			Handler:    _Nakama_UpdateGroup_Handler,
		},
		{
			MethodName: "WriteLeaderboardRecord",
			Handler:    _Nakama_WriteLeaderboardRecord_Handler,
		},
		{
			MethodName: "WriteStorageObjects",
			Handler:    _Nakama_WriteStorageObjects_Handler,
		},
		{
			MethodName: "WriteTournamentRecord",
			Handler:    _Nakama_WriteTournamentRecord_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "apigrpc/apigrpc.proto",
}
