package io.kaif.service;
import java.util.List;
import javax.annotation.Nullable;
import io.kaif.flake.FlakeId;
import io.kaif.model.account.Authorization;
import io.kaif.model.article.Article;
import io.kaif.model.vote.ArticleVoter;
import io.kaif.model.vote.DebateVoter;
import io.kaif.model.vote.VoteState;
public interface VoteService {
void voteArticle(VoteState newState,
FlakeId articleId,
Authorization authorization,
VoteState previousState,
long previousCount);
List<DebateVoter> listDebateVoters(Authorization voter, FlakeId articleId);
void voteDebate(VoteState newState,
FlakeId debateId,
Authorization voter,
VoteState previousState,
long previousCount);
List<ArticleVoter> listArticleVoters(Authorization voter, List<FlakeId> articleIds);
List<DebateVoter> listDebateVotersByIds(Authorization voter, List<FlakeId> debateIds);
List<Article> listUpVotedArticles(Authorization voter, @Nullable FlakeId startArticleId);
}