import { Request } from 'express';

export interface JwtPayload {
  userId?: number;                     // User-ID (nur bei Mitarbeiter-Login)
  email: string;
  permissions: string[];
  customerId?: number;                 // Eigene Kunden-ID (bei Kundenportal-Login)
  isCustomerPortal?: boolean;          // Ist dies ein Kundenportal-Login?
  representedCustomerIds?: number[];   // IDs der Kunden, die dieser Kunde vertreten kann
  iat?: number;                        // Token ausgestellt am (Unix Timestamp, automatisch von JWT)
}

export interface AuthRequest extends Request {
  user?: JwtPayload;
}

export interface PaginationParams {
  page?: number;
  limit?: number;
  sortBy?: string;
  sortOrder?: 'asc' | 'desc';
}

export interface ApiResponse<T = unknown> {
  success: boolean;
  data?: T;
  message?: string;
  error?: string;
  pagination?: {
    page: number;
    limit: number;
    total: number;
    totalPages: number;
  };
}
