/**
 * DTO: TeamLedgerEntryDto
 * 
 * Simplified team rating event for ledger display/query.
 * Pragmatic read model - direct repo DTOs, no domain logic.
 */

export interface TeamLedgerEntryDto {
  id: string;
  teamId: string;
  dimension: string; // 'driving', 'adminTrust'
  delta: number; // positive or negative change
  weight?: number;
  occurredAt: string; // ISO date string
  createdAt: string; // ISO date string
  
  source: {
    type: 'race' | 'penalty' | 'vote' | 'adminAction' | 'manualAdjustment';
    id?: string;
  };
  
  reason: {
    code: string;
    description?: string;
  };
  
  visibility: {
    public: boolean;
  };
}

export interface TeamLedgerFilter {
  dimensions?: string[]; // Filter by dimension keys
  sourceTypes?: ('race' | 'penalty' | 'vote' | 'adminAction' | 'manualAdjustment')[];
  from?: string; // ISO date string
  to?: string; // ISO date string
  reasonCodes?: string[];
}

export interface PaginatedTeamLedgerResult {
  entries: TeamLedgerEntryDto[];
  pagination: {
    total: number;
    limit: number;
    offset: number;
    hasMore: boolean;
    nextOffset?: number | null;
  };
}