using SVSim.Database.Enums;

namespace SVSim.Database.Repositories.Viewer;

public interface IViewerRepository
{
    Task<Models.Viewer?> GetViewerBySocialConnection(SocialAccountType accountType, ulong socialId);
    Task<Models.Viewer?> GetViewerWithSocials(long id);
    Task<Models.Viewer?> GetViewerByShortUdid(long shortUdid);
    Task<Models.Viewer?> GetViewerByUdid(Guid udid);

    Task<Models.Viewer> RegisterViewer(string displayName, SocialAccountType socialType,
        ulong socialAccountIdentifier, ulong? shortUdid = null);
    Task<Models.Viewer> RegisterAnonymousViewer(Guid udid);
    Task LinkSteamToViewer(long viewerId, ulong steamId);
}
