/** * DTOs for Admin Vote Session Use Cases */ /** * Input for OpenAdminVoteSessionUseCase */ export interface OpenAdminVoteSessionInput { voteSessionId: string; leagueId: string; adminId: string; startDate: string; // ISO date string endDate: string; // ISO date string eligibleVoters: string[]; // User IDs } /** * Output for OpenAdminVoteSessionUseCase */ export interface OpenAdminVoteSessionOutput { success: boolean; voteSessionId: string; errors?: string[]; } /** * Input for CastAdminVoteUseCase */ export interface CastAdminVoteInput { voteSessionId: string; voterId: string; positive: boolean; // true = positive vote, false = negative vote votedAt?: string; // ISO date string (optional, defaults to now) } /** * Output for CastAdminVoteUseCase */ export interface CastAdminVoteOutput { success: boolean; voteSessionId: string; voterId: string; errors?: string[]; } /** * Input for CloseAdminVoteSessionUseCase */ export interface CloseAdminVoteSessionInput { voteSessionId: string; adminId: string; // For validation } /** * Output for CloseAdminVoteSessionUseCase */ export interface CloseAdminVoteSessionOutput { success: boolean; voteSessionId: string; outcome?: { percentPositive: number; count: { positive: number; negative: number; total: number; }; eligibleVoterCount: number; participationRate: number; outcome: 'positive' | 'negative' | 'tie'; }; eventsCreated?: number; errors?: string[]; }