export * from "./germanStates.js";
export * from "./publicHolidays.js";
export * from "./columns.js";
export * from "./dispo-import.js";
export * from "./data-classification.js";
export * from "./comment-entities.js";

export const BUDGET_WARNING_THRESHOLDS = {
  INFO: 70,
  WARNING: 85,
  CRITICAL: 95,
} as const;

export const DEFAULT_WORKING_HOURS_PER_DAY = 8;
export const DEFAULT_OPENAI_MODEL = "gpt-5.4";

export const DEFAULT_AVAILABILITY = {
  monday: 8,
  tuesday: 8,
  wednesday: 8,
  thursday: 8,
  friday: 8,
} as const;

export const VALUE_SCORE_WEIGHTS = {
  SKILL_DEPTH: 0.30,
  SKILL_BREADTH: 0.15,
  COST_EFFICIENCY: 0.25,
  CHARGEABILITY: 0.15,
  EXPERIENCE: 0.15,
} as const;

export const SCORE_WEIGHTS = {
  SKILL: 0.4,
  AVAILABILITY: 0.3,
  COST: 0.2,
  UTILIZATION: 0.1,
} as const;

export const PAGINATION_DEFAULTS = {
  PAGE: 1,
  LIMIT: 50,
  MAX_LIMIT: 500,
} as const;

export const SSE_EVENT_TYPES = {
  ALLOCATION_CREATED: "allocation.created",
  ALLOCATION_UPDATED: "allocation.updated",
  ALLOCATION_DELETED: "allocation.deleted",
  PROJECT_SHIFTED: "project.shifted",
  BUDGET_WARNING: "budget.warning",
  VACATION_CREATED: "vacation.created",
  VACATION_UPDATED: "vacation.updated",
  VACATION_DELETED: "vacation.deleted",
  ROLE_CREATED: "role.created",
  ROLE_UPDATED: "role.updated",
  ROLE_DELETED: "role.deleted",
  NOTIFICATION_CREATED: "notification:created",
  TASK_ASSIGNED: "task.assigned",
  TASK_COMPLETED: "task.completed",
  TASK_STATUS_CHANGED: "task.status_changed",
  REMINDER_DUE: "reminder.due",
  PING: "ping",
} as const;

export type SseEventType = (typeof SSE_EVENT_TYPES)[keyof typeof SSE_EVENT_TYPES];

export const SSE_NOTIFICATION_CREATED = SSE_EVENT_TYPES.NOTIFICATION_CREATED;
