// Code generated by protoc-gen-go-grpc. DO NOT EDIT.

package apigrpc

import (
	context "context"
	api "github.com/heroiclabs/nakama-common/api"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7

// NakamaClient is the client API for Nakama service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type NakamaClient interface {
	// Add friends by ID or username to a user's account.
	AddFriends(ctx context.Context, in *api.AddFriendsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Add users to a group.
	AddGroupUsers(ctx context.Context, in *api.AddGroupUsersRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Refresh a user's session using a refresh token retrieved from a previous authentication request.
	SessionRefresh(ctx context.Context, in *api.SessionRefreshRequest, opts ...grpc.CallOption) (*api.Session, error)
	// Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user.
	SessionLogout(ctx context.Context, in *api.SessionLogoutRequest, opts ...grpc.CallOption) (*emptypb.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) (*emptypb.Empty, error)
	// Block one or more users by ID or username.
	BlockFriends(ctx context.Context, in *api.BlockFriendsRequest, opts ...grpc.CallOption) (*emptypb.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) (*emptypb.Empty, error)
	// Delete a group by ID.
	DeleteGroup(ctx context.Context, in *api.DeleteGroupRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Delete a leaderboard record.
	DeleteLeaderboardRecord(ctx context.Context, in *api.DeleteLeaderboardRecordRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Delete one or more notifications for the current user.
	DeleteNotifications(ctx context.Context, in *api.DeleteNotificationsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Delete one or more objects by ID or username.
	DeleteStorageObjects(ctx context.Context, in *api.DeleteStorageObjectsRequest, opts ...grpc.CallOption) (*emptypb.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) (*emptypb.Empty, error)
	// Fetch the current user's account.
	GetAccount(ctx context.Context, in *emptypb.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 *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Import Facebook friends and add them to a user's account.
	ImportFacebookFriends(ctx context.Context, in *api.ImportFacebookFriendsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Import Steam friends and add them to a user's account.
	ImportSteamFriends(ctx context.Context, in *api.ImportSteamFriendsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Immediately join an open group, or request to join a closed one.
	JoinGroup(ctx context.Context, in *api.JoinGroupRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Attempt to join an open and running tournament.
	JoinTournament(ctx context.Context, in *api.JoinTournamentRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Kick a set of users from a group.
	KickGroupUsers(ctx context.Context, in *api.KickGroupUsersRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Leave a group the user is a member of.
	LeaveGroup(ctx context.Context, in *api.LeaveGroupRequest, opts ...grpc.CallOption) (*emptypb.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) (*emptypb.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) (*emptypb.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) (*emptypb.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) (*emptypb.Empty, error)
	// Add Facebook to the social profiles on the current user's account.
	LinkFacebook(ctx context.Context, in *api.LinkFacebookRequest, opts ...grpc.CallOption) (*emptypb.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) (*emptypb.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) (*emptypb.Empty, error)
	// Add Google to the social profiles on the current user's account.
	LinkGoogle(ctx context.Context, in *api.AccountGoogle, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Add Steam to the social profiles on the current user's account.
	LinkSteam(ctx context.Context, in *api.LinkSteamRequest, opts ...grpc.CallOption) (*emptypb.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) (*emptypb.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) (*emptypb.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) (*emptypb.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) (*emptypb.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) (*emptypb.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) (*emptypb.Empty, error)
	// Remove Facebook from the social profiles on the current user's account.
	UnlinkFacebook(ctx context.Context, in *api.AccountFacebook, opts ...grpc.CallOption) (*emptypb.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) (*emptypb.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) (*emptypb.Empty, error)
	// Remove Google from the social profiles on the current user's account.
	UnlinkGoogle(ctx context.Context, in *api.AccountGoogle, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Remove Steam from the social profiles on the current user's account.
	UnlinkSteam(ctx context.Context, in *api.AccountSteam, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Update fields in the current user's account.
	UpdateAccount(ctx context.Context, in *api.UpdateAccountRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Update fields in a given group.
	UpdateGroup(ctx context.Context, in *api.UpdateGroupRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Validate Apple IAP Receipt
	ValidatePurchaseApple(ctx context.Context, in *api.ValidatePurchaseAppleRequest, opts ...grpc.CallOption) (*api.ValidatePurchaseResponse, error)
	// Validate Google IAP Receipt
	ValidatePurchaseGoogle(ctx context.Context, in *api.ValidatePurchaseGoogleRequest, opts ...grpc.CallOption) (*api.ValidatePurchaseResponse, error)
	// Validate Huawei IAP Receipt
	ValidatePurchaseHuawei(ctx context.Context, in *api.ValidatePurchaseHuaweiRequest, opts ...grpc.CallOption) (*api.ValidatePurchaseResponse, 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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) SessionRefresh(ctx context.Context, in *api.SessionRefreshRequest, opts ...grpc.CallOption) (*api.Session, error) {
	out := new(api.Session)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/SessionRefresh", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nakamaClient) SessionLogout(ctx context.Context, in *api.SessionLogoutRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/SessionLogout", 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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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 *emptypb.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 *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) ImportSteamFriends(ctx context.Context, in *api.ImportSteamFriendsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ImportSteamFriends", 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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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.LinkSteamRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) (*emptypb.Empty, error) {
	out := new(emptypb.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) ValidatePurchaseApple(ctx context.Context, in *api.ValidatePurchaseAppleRequest, opts ...grpc.CallOption) (*api.ValidatePurchaseResponse, error) {
	out := new(api.ValidatePurchaseResponse)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ValidatePurchaseApple", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

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

func (c *nakamaClient) ValidatePurchaseHuawei(ctx context.Context, in *api.ValidatePurchaseHuaweiRequest, opts ...grpc.CallOption) (*api.ValidatePurchaseResponse, error) {
	out := new(api.ValidatePurchaseResponse)
	err := c.cc.Invoke(ctx, "/nakama.api.Nakama/ValidatePurchaseHuawei", 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.
// All implementations must embed UnimplementedNakamaServer
// for forward compatibility
type NakamaServer interface {
	// Add friends by ID or username to a user's account.
	AddFriends(context.Context, *api.AddFriendsRequest) (*emptypb.Empty, error)
	// Add users to a group.
	AddGroupUsers(context.Context, *api.AddGroupUsersRequest) (*emptypb.Empty, error)
	// Refresh a user's session using a refresh token retrieved from a previous authentication request.
	SessionRefresh(context.Context, *api.SessionRefreshRequest) (*api.Session, error)
	// Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user.
	SessionLogout(context.Context, *api.SessionLogoutRequest) (*emptypb.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) (*emptypb.Empty, error)
	// Block one or more users by ID or username.
	BlockFriends(context.Context, *api.BlockFriendsRequest) (*emptypb.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) (*emptypb.Empty, error)
	// Delete a group by ID.
	DeleteGroup(context.Context, *api.DeleteGroupRequest) (*emptypb.Empty, error)
	// Delete a leaderboard record.
	DeleteLeaderboardRecord(context.Context, *api.DeleteLeaderboardRecordRequest) (*emptypb.Empty, error)
	// Delete one or more notifications for the current user.
	DeleteNotifications(context.Context, *api.DeleteNotificationsRequest) (*emptypb.Empty, error)
	// Delete one or more objects by ID or username.
	DeleteStorageObjects(context.Context, *api.DeleteStorageObjectsRequest) (*emptypb.Empty, error)
	// Submit an event for processing in the server's registered runtime custom events handler.
	Event(context.Context, *api.Event) (*emptypb.Empty, error)
	// Fetch the current user's account.
	GetAccount(context.Context, *emptypb.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, *emptypb.Empty) (*emptypb.Empty, error)
	// Import Facebook friends and add them to a user's account.
	ImportFacebookFriends(context.Context, *api.ImportFacebookFriendsRequest) (*emptypb.Empty, error)
	// Import Steam friends and add them to a user's account.
	ImportSteamFriends(context.Context, *api.ImportSteamFriendsRequest) (*emptypb.Empty, error)
	// Immediately join an open group, or request to join a closed one.
	JoinGroup(context.Context, *api.JoinGroupRequest) (*emptypb.Empty, error)
	// Attempt to join an open and running tournament.
	JoinTournament(context.Context, *api.JoinTournamentRequest) (*emptypb.Empty, error)
	// Kick a set of users from a group.
	KickGroupUsers(context.Context, *api.KickGroupUsersRequest) (*emptypb.Empty, error)
	// Leave a group the user is a member of.
	LeaveGroup(context.Context, *api.LeaveGroupRequest) (*emptypb.Empty, error)
	// Add an Apple ID to the social profiles on the current user's account.
	LinkApple(context.Context, *api.AccountApple) (*emptypb.Empty, error)
	// Add a custom ID to the social profiles on the current user's account.
	LinkCustom(context.Context, *api.AccountCustom) (*emptypb.Empty, error)
	// Add a device ID to the social profiles on the current user's account.
	LinkDevice(context.Context, *api.AccountDevice) (*emptypb.Empty, error)
	// Add an email+password to the social profiles on the current user's account.
	LinkEmail(context.Context, *api.AccountEmail) (*emptypb.Empty, error)
	// Add Facebook to the social profiles on the current user's account.
	LinkFacebook(context.Context, *api.LinkFacebookRequest) (*emptypb.Empty, error)
	// Add Facebook Instant Game to the social profiles on the current user's account.
	LinkFacebookInstantGame(context.Context, *api.AccountFacebookInstantGame) (*emptypb.Empty, error)
	// Add Apple's GameCenter to the social profiles on the current user's account.
	LinkGameCenter(context.Context, *api.AccountGameCenter) (*emptypb.Empty, error)
	// Add Google to the social profiles on the current user's account.
	LinkGoogle(context.Context, *api.AccountGoogle) (*emptypb.Empty, error)
	// Add Steam to the social profiles on the current user's account.
	LinkSteam(context.Context, *api.LinkSteamRequest) (*emptypb.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) (*emptypb.Empty, error)
	// Demote a set of users in a group to the next role down.
	DemoteGroupUsers(context.Context, *api.DemoteGroupUsersRequest) (*emptypb.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) (*emptypb.Empty, error)
	// Remove the custom ID from the social profiles on the current user's account.
	UnlinkCustom(context.Context, *api.AccountCustom) (*emptypb.Empty, error)
	// Remove the device ID from the social profiles on the current user's account.
	UnlinkDevice(context.Context, *api.AccountDevice) (*emptypb.Empty, error)
	// Remove the email+password from the social profiles on the current user's account.
	UnlinkEmail(context.Context, *api.AccountEmail) (*emptypb.Empty, error)
	// Remove Facebook from the social profiles on the current user's account.
	UnlinkFacebook(context.Context, *api.AccountFacebook) (*emptypb.Empty, error)
	// Remove Facebook Instant Game profile from the social profiles on the current user's account.
	UnlinkFacebookInstantGame(context.Context, *api.AccountFacebookInstantGame) (*emptypb.Empty, error)
	// Remove Apple's GameCenter from the social profiles on the current user's account.
	UnlinkGameCenter(context.Context, *api.AccountGameCenter) (*emptypb.Empty, error)
	// Remove Google from the social profiles on the current user's account.
	UnlinkGoogle(context.Context, *api.AccountGoogle) (*emptypb.Empty, error)
	// Remove Steam from the social profiles on the current user's account.
	UnlinkSteam(context.Context, *api.AccountSteam) (*emptypb.Empty, error)
	// Update fields in the current user's account.
	UpdateAccount(context.Context, *api.UpdateAccountRequest) (*emptypb.Empty, error)
	// Update fields in a given group.
	UpdateGroup(context.Context, *api.UpdateGroupRequest) (*emptypb.Empty, error)
	// Validate Apple IAP Receipt
	ValidatePurchaseApple(context.Context, *api.ValidatePurchaseAppleRequest) (*api.ValidatePurchaseResponse, error)
	// Validate Google IAP Receipt
	ValidatePurchaseGoogle(context.Context, *api.ValidatePurchaseGoogleRequest) (*api.ValidatePurchaseResponse, error)
	// Validate Huawei IAP Receipt
	ValidatePurchaseHuawei(context.Context, *api.ValidatePurchaseHuaweiRequest) (*api.ValidatePurchaseResponse, 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)
	mustEmbedUnimplementedNakamaServer()
}

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

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

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

func RegisterNakamaServer(s grpc.ServiceRegistrar, 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_SessionRefresh_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.SessionRefreshRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).SessionRefresh(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/SessionRefresh",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).SessionRefresh(ctx, req.(*api.SessionRefreshRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Nakama_SessionLogout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.SessionLogoutRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).SessionLogout(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/SessionLogout",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).SessionLogout(ctx, req.(*api.SessionLogoutRequest))
	}
	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(emptypb.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.(*emptypb.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(emptypb.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.(*emptypb.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_ImportSteamFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ImportSteamFriendsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ImportSteamFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ImportSteamFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ImportSteamFriends(ctx, req.(*api.ImportSteamFriendsRequest))
	}
	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.LinkSteamRequest)
	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.LinkSteamRequest))
	}
	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_ValidatePurchaseApple_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ValidatePurchaseAppleRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ValidatePurchaseApple(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ValidatePurchaseApple",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ValidatePurchaseApple(ctx, req.(*api.ValidatePurchaseAppleRequest))
	}
	return interceptor(ctx, in, info, handler)
}

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

func _Nakama_ValidatePurchaseHuawei_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(api.ValidatePurchaseHuaweiRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NakamaServer).ValidatePurchaseHuawei(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/nakama.api.Nakama/ValidatePurchaseHuawei",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NakamaServer).ValidatePurchaseHuawei(ctx, req.(*api.ValidatePurchaseHuaweiRequest))
	}
	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)
}

// Nakama_ServiceDesc is the grpc.ServiceDesc for Nakama service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
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: "SessionRefresh",
			Handler:    _Nakama_SessionRefresh_Handler,
		},
		{
			MethodName: "SessionLogout",
			Handler:    _Nakama_SessionLogout_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: "ImportSteamFriends",
			Handler:    _Nakama_ImportSteamFriends_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: "ValidatePurchaseApple",
			Handler:    _Nakama_ValidatePurchaseApple_Handler,
		},
		{
			MethodName: "ValidatePurchaseGoogle",
			Handler:    _Nakama_ValidatePurchaseGoogle_Handler,
		},
		{
			MethodName: "ValidatePurchaseHuawei",
			Handler:    _Nakama_ValidatePurchaseHuawei_Handler,
		},
		{
			MethodName: "WriteLeaderboardRecord",
			Handler:    _Nakama_WriteLeaderboardRecord_Handler,
		},
		{
			MethodName: "WriteStorageObjects",
			Handler:    _Nakama_WriteStorageObjects_Handler,
		},
		{
			MethodName: "WriteTournamentRecord",
			Handler:    _Nakama_WriteTournamentRecord_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "apigrpc.proto",
}
