import type { Actor, Ballot, VoteCandidate, VoteCommit } from "../vote"; import type { CandidateScores } from "../votingMethods/VotingMethodImplementation"; export interface DiscardedCommit { commitInfo: VoteCommit; reason: string; } export interface ElectionSummaryOptions { subject: string; startDate?: string; endDate: string; participation: number; winners: VoteCandidate[]; result: CandidateScores; ballots: Ballot[]; privateKey: string; discardedCommits?: DiscardedCommit[]; keepOnlyFirstLineInSummary?: boolean; } export default abstract class ElectionSummary { subject: string; startDate?: string; endDate: string; participation: number; winners: VoteCandidate[]; result: CandidateScores; sortedBallots: Ballot[]; privateKey: string; participants: Actor[]; discardedCommits: DiscardedCommit[]; keepOnlyFirstLineInSummary: boolean; abstract scoreText: string; constructor({ subject, startDate, endDate, participation, winners, result, ballots: unsortedBallots, privateKey, discardedCommits, keepOnlyFirstLineInSummary, }: ElectionSummaryOptions); abstract summarizeBallot(ballot: Ballot): string; toString(): string; }