/**
 * 표준 에러 응답 인터페이스
 * 모든 템플릿에서 동일한 에러 응답 형식을 위한 공통 인터페이스
 */

export interface StandardErrorResponse {
  success: false;
  error: {
    code: number;
    message: string;
    details?: Record<string, unknown>; // any → 구체적 타입
    timestamp: string;
    path: string;
  };
}

/**
 * HTTP 상태 코드별 에러 메시지 매핑
 */
export const HTTP_ERROR_MESSAGES = {
  400: 'Bad Request',
  401: 'Unauthorized',
  403: 'Forbidden',
  404: 'Not Found',
  409: 'Conflict',
  422: 'Unprocessable Entity',
  500: 'Internal Server Error',
  503: 'Service Unavailable',
} as const;

/**
 * 에러 타입 분류
 */
export enum ErrorType {
  VALIDATION = 'VALIDATION_ERROR',
  AUTHENTICATION = 'AUTHENTICATION_ERROR',
  AUTHORIZATION = 'AUTHORIZATION_ERROR',
  NOT_FOUND = 'NOT_FOUND_ERROR',
  CONFLICT = 'CONFLICT_ERROR',
  DATABASE = 'DATABASE_ERROR',
  INTERNAL = 'INTERNAL_ERROR',
}

/**
 * 검증 에러 세부 정보
 */
export interface ValidationErrorDetail {
  field: string;
  message: string;
  value?: unknown; // any → unknown으로 안전하게 변경
}
