/**
 * AdminUserDto - TBD DTO for admin user data
 *
 * This DTO represents the shape of user data returned by admin endpoints.
 * TODO: Generate this from API OpenAPI spec when admin endpoints are implemented.
 */
export interface AdminUserDto {
  id: string;
  email: string;
  displayName: string;
  roles: string[];
  status: string;
  isSystemAdmin: boolean;
  createdAt: string; // ISO date string
  updatedAt: string; // ISO date string
  lastLoginAt?: string; // ISO date string
  primaryDriverId?: string;
}

/**
 * AdminUserListResponseDto - TBD DTO for user list response
 */
export interface AdminUserListResponseDto {
  users: AdminUserDto[];
  total: number;
  page: number;
  limit: number;
  totalPages: number;
}

/**
 * AdminDashboardStatsDto - TBD DTO for dashboard statistics
 */
export interface AdminDashboardStatsDto {
  totalUsers: number;
  activeUsers: number;
  suspendedUsers: number;
  deletedUsers: number;
  systemAdmins: number;
  recentLogins: number;
  newUsersToday: number;
  userGrowth: {
    label: string;
    value: number;
    color: string;
  }[];
  roleDistribution: {
    label: string;
    value: number;
    color: string;
  }[];
  statusDistribution: {
    active: number;
    suspended: number;
    deleted: number;
  };
  activityTimeline: {
    date: string;
    newUsers: number;
    logins: number;
  }[];
}

/**
 * AdminListUsersQueryDto - TBD DTO for user list query parameters
 */
export interface AdminListUsersQueryDto {
  role?: string;
  status?: string;
  email?: string;
  search?: string;
  page?: number;
  limit?: number;
  sortBy?: 'email' | 'displayName' | 'createdAt' | 'lastLoginAt' | 'status';
  sortDirection?: 'asc' | 'desc';
}