import { ScoringSystem } from './LeagueCreateCommand'; export interface LeagueCreatedEvent { type: 'LeagueCreatedEvent'; leagueId: string; ownerId: string; timestamp: Date; } export interface LeagueUpdates { name?: string; description?: string; visibility?: 'public' | 'private'; maxDrivers?: number; approvalRequired?: boolean; lateJoinAllowed?: boolean; raceFrequency?: string; raceDay?: string; raceTime?: string; tracks?: string[]; scoringSystem?: ScoringSystem; bonusPointsEnabled?: boolean; penaltiesEnabled?: boolean; protestsEnabled?: boolean; appealsEnabled?: boolean; stewardTeam?: string[]; gameType?: string; skillLevel?: string; category?: string; tags?: string[]; } export interface LeagueUpdatedEvent { type: 'LeagueUpdatedEvent'; leagueId: string; updates: Partial; timestamp: Date; } export interface LeagueDeletedEvent { type: 'LeagueDeletedEvent'; leagueId: string; timestamp: Date; } export interface LeagueAccessedEvent { type: 'LeagueAccessedEvent'; leagueId: string; driverId: string; timestamp: Date; } export interface LeagueRosterAccessedEvent { type: 'LeagueRosterAccessedEvent'; leagueId: string; timestamp: Date; } export interface LeagueEventPublisher { emitLeagueCreated(event: LeagueCreatedEvent): Promise; emitLeagueUpdated(event: LeagueUpdatedEvent): Promise; emitLeagueDeleted(event: LeagueDeletedEvent): Promise; emitLeagueAccessed(event: LeagueAccessedEvent): Promise; emitLeagueRosterAccessed(event: LeagueRosterAccessedEvent): Promise; getLeagueCreatedEventCount(): number; getLeagueUpdatedEventCount(): number; getLeagueDeletedEventCount(): number; getLeagueAccessedEventCount(): number; getLeagueRosterAccessedEventCount(): number; clear(): void; }