"use strict";
/**
 * Enums Constants - SSOT (Single Source of Truth)
 *
 * Todos los enums del sistema. Estos se sincronizan automaticamente
 * al frontend usando el script sync-enums.ts
 *
 * @module @shared/constants/enums
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.AUDIT_ACTION = exports.WORKFLOW_ACTION = exports.DOCUMENT_TYPE = exports.DOCUMENT_STATUS = exports.TICKET_PRIORITY = exports.TICKET_STATUS = exports.INFONAVIT_PROGRAM = exports.INFONAVIT_ASSIGNMENT_STATUS = exports.ATTENDANCE_VALIDATION = exports.ATTENDANCE_TYPE = exports.EMPLOYEE_TYPE = exports.WORK_PERMIT_TYPE = exports.TRAINING_TYPE = exports.INCIDENT_STATUS = exports.INCIDENT_TYPE = exports.INCIDENT_SEVERITY = exports.RETENTION_TYPE = exports.ESTIMATION_STATUS = exports.STOCK_MOVE_TYPE = exports.REQUISITION_STATUS = exports.PURCHASE_ORDER_STATUS = exports.BUDGET_STATUS = exports.CONCEPT_TYPE = exports.LOT_STATUS = exports.FRACCIONAMIENTO_STATUS = exports.PROJECT_TYPE = exports.PROJECT_STATUS = exports.USER_STATUS = exports.ROLES = void 0;
// ============================================================================
// AUTH & USERS
// ============================================================================
/**
 * Roles del sistema de construccion
 */
exports.ROLES = {
    // Super Admin (Plataforma)
    SUPER_ADMIN: 'super_admin',
    // Tenant Admin
    ADMIN: 'admin',
    // Direccion
    DIRECTOR_GENERAL: 'director_general',
    DIRECTOR_PROYECTOS: 'director_proyectos',
    DIRECTOR_CONSTRUCCION: 'director_construccion',
    // Gerencias
    GERENTE_ADMINISTRATIVO: 'gerente_administrativo',
    GERENTE_OPERACIONES: 'gerente_operaciones',
    // Ingenieria y Control
    INGENIERO_RESIDENTE: 'ingeniero_residente',
    INGENIERO_COSTOS: 'ingeniero_costos',
    CONTROL_OBRA: 'control_obra',
    PLANEADOR: 'planeador',
    // Supervisores
    SUPERVISOR_OBRA: 'supervisor_obra',
    SUPERVISOR_HSE: 'supervisor_hse',
    SUPERVISOR_CALIDAD: 'supervisor_calidad',
    // Compras y Almacen
    COMPRAS: 'compras',
    ALMACENISTA: 'almacenista',
    // RRHH
    RRHH: 'rrhh',
    NOMINA: 'nomina',
    // Finanzas
    CONTADOR: 'contador',
    TESORERO: 'tesorero',
    // Postventa
    POSTVENTA: 'postventa',
    // Externos
    SUBCONTRATISTA: 'subcontratista',
    PROVEEDOR: 'proveedor',
    DERECHOHABIENTE: 'derechohabiente',
    // Solo lectura
    VIEWER: 'viewer',
};
/**
 * Estados de cuenta de usuario
 */
exports.USER_STATUS = {
    ACTIVE: 'active',
    INACTIVE: 'inactive',
    PENDING: 'pending',
    SUSPENDED: 'suspended',
    BLOCKED: 'blocked',
};
// ============================================================================
// PROYECTOS Y ESTRUCTURA
// ============================================================================
/**
 * Estados de proyecto
 */
exports.PROJECT_STATUS = {
    DRAFT: 'draft',
    PLANNING: 'planning',
    BIDDING: 'bidding',
    AWARDED: 'awarded',
    ACTIVE: 'active',
    PAUSED: 'paused',
    COMPLETED: 'completed',
    CANCELLED: 'cancelled',
};
/**
 * Tipos de proyecto
 */
exports.PROJECT_TYPE = {
    HORIZONTAL: 'horizontal', // Casas individuales
    VERTICAL: 'vertical', // Edificios/Torres
    MIXED: 'mixed', // Combinado
    INFRASTRUCTURE: 'infrastructure', // Infraestructura
};
/**
 * Estados de fraccionamiento
 */
exports.FRACCIONAMIENTO_STATUS = {
    ACTIVE: 'activo',
    PAUSED: 'pausado',
    COMPLETED: 'completado',
    CANCELLED: 'cancelado',
};
/**
 * Estados de lote
 */
exports.LOT_STATUS = {
    AVAILABLE: 'disponible',
    RESERVED: 'apartado',
    SOLD: 'vendido',
    IN_CONSTRUCTION: 'en_construccion',
    DELIVERED: 'entregado',
    WARRANTY: 'en_garantia',
};
// ============================================================================
// PRESUPUESTOS Y COSTOS
// ============================================================================
/**
 * Tipos de concepto de obra
 */
exports.CONCEPT_TYPE = {
    MATERIAL: 'material',
    LABOR: 'mano_obra',
    EQUIPMENT: 'equipo',
    SUBCONTRACT: 'subcontrato',
    INDIRECT: 'indirecto',
    OVERHEAD: 'overhead',
    UTILITY: 'utilidad',
};
/**
 * Estados de presupuesto
 */
exports.BUDGET_STATUS = {
    DRAFT: 'borrador',
    SUBMITTED: 'enviado',
    APPROVED: 'aprobado',
    CONTRACTED: 'contratado',
    CLOSED: 'cerrado',
};
// ============================================================================
// COMPRAS E INVENTARIOS
// ============================================================================
/**
 * Estados de orden de compra
 */
exports.PURCHASE_ORDER_STATUS = {
    DRAFT: 'borrador',
    SUBMITTED: 'enviado',
    APPROVED: 'aprobado',
    CONFIRMED: 'confirmado',
    PARTIAL: 'parcial',
    RECEIVED: 'recibido',
    CANCELLED: 'cancelado',
};
/**
 * Estados de requisicion
 */
exports.REQUISITION_STATUS = {
    DRAFT: 'borrador',
    SUBMITTED: 'enviado',
    APPROVED: 'aprobado',
    REJECTED: 'rechazado',
    ORDERED: 'ordenado',
    CLOSED: 'cerrado',
};
/**
 * Tipos de movimiento de inventario
 */
exports.STOCK_MOVE_TYPE = {
    INCOMING: 'entrada',
    OUTGOING: 'salida',
    TRANSFER: 'traspaso',
    ADJUSTMENT: 'ajuste',
    RETURN: 'devolucion',
    CONSUMPTION: 'consumo',
};
// ============================================================================
// ESTIMACIONES
// ============================================================================
/**
 * Estados de estimacion
 */
exports.ESTIMATION_STATUS = {
    DRAFT: 'borrador',
    IN_REVIEW: 'en_revision',
    SUBMITTED: 'enviado',
    CLIENT_REVIEW: 'revision_cliente',
    APPROVED: 'aprobado',
    REJECTED: 'rechazado',
    PAID: 'pagado',
    CANCELLED: 'cancelado',
};
/**
 * Tipos de retencion
 */
exports.RETENTION_TYPE = {
    WARRANTY: 'garantia',
    ADVANCE_AMORTIZATION: 'amortizacion_anticipo',
    IMSS: 'imss',
    ISR: 'isr',
    OTHER: 'otro',
};
// ============================================================================
// HSE (Health, Safety & Environment)
// ============================================================================
/**
 * Severidad de incidente
 */
exports.INCIDENT_SEVERITY = {
    LOW: 'bajo',
    MEDIUM: 'medio',
    HIGH: 'alto',
    CRITICAL: 'critico',
    FATAL: 'fatal',
};
/**
 * Tipos de incidente
 */
exports.INCIDENT_TYPE = {
    ACCIDENT: 'accidente',
    NEAR_MISS: 'casi_accidente',
    UNSAFE_CONDITION: 'condicion_insegura',
    UNSAFE_ACT: 'acto_inseguro',
    FIRST_AID: 'primeros_auxilios',
    ENVIRONMENTAL: 'ambiental',
};
/**
 * Estados de incidente
 */
exports.INCIDENT_STATUS = {
    REPORTED: 'reportado',
    UNDER_INVESTIGATION: 'en_investigacion',
    PENDING_ACTIONS: 'pendiente_acciones',
    ACTIONS_IN_PROGRESS: 'acciones_en_progreso',
    CLOSED: 'cerrado',
};
/**
 * Tipos de capacitacion
 */
exports.TRAINING_TYPE = {
    INDUCTION: 'induccion',
    SAFETY: 'seguridad',
    TECHNICAL: 'tecnico',
    REGULATORY: 'normativo',
    REFRESHER: 'actualizacion',
    CERTIFICATION: 'certificacion',
};
/**
 * Tipos de permiso de trabajo
 */
exports.WORK_PERMIT_TYPE = {
    HOT_WORK: 'trabajo_caliente',
    CONFINED_SPACE: 'espacio_confinado',
    HEIGHT_WORK: 'trabajo_altura',
    ELECTRICAL: 'electrico',
    EXCAVATION: 'excavacion',
    LIFTING: 'izaje',
};
// ============================================================================
// RRHH
// ============================================================================
/**
 * Tipos de empleado
 */
exports.EMPLOYEE_TYPE = {
    PERMANENT: 'planta',
    TEMPORARY: 'temporal',
    CONTRACTOR: 'contratista',
    INTERN: 'practicante',
};
/**
 * Tipos de asistencia
 */
exports.ATTENDANCE_TYPE = {
    CHECK_IN: 'entrada',
    CHECK_OUT: 'salida',
    BREAK_START: 'inicio_descanso',
    BREAK_END: 'fin_descanso',
};
/**
 * Metodos de validacion de asistencia
 */
exports.ATTENDANCE_VALIDATION = {
    GPS: 'gps',
    BIOMETRIC: 'biometrico',
    QR: 'qr',
    MANUAL: 'manual',
    NFC: 'nfc',
};
// ============================================================================
// INFONAVIT
// ============================================================================
/**
 * Estados de asignacion INFONAVIT
 */
exports.INFONAVIT_ASSIGNMENT_STATUS = {
    AVAILABLE: 'disponible',
    IN_PROCESS: 'en_proceso',
    ASSIGNED: 'asignado',
    DOCUMENTED: 'documentado',
    REGISTERED: 'registrado',
    DELIVERED: 'entregado',
};
/**
 * Programas INFONAVIT
 */
exports.INFONAVIT_PROGRAM = {
    TRADICIONAL: 'tradicional',
    COFINAVIT: 'cofinavit',
    APOYO_INFONAVIT: 'apoyo_infonavit',
    UNAMOS_CREDITOS: 'unamos_creditos',
    MEJORAVIT: 'mejoravit',
};
// ============================================================================
// CALIDAD Y POSTVENTA
// ============================================================================
/**
 * Estados de ticket postventa
 */
exports.TICKET_STATUS = {
    OPEN: 'abierto',
    IN_PROGRESS: 'en_proceso',
    PENDING_CUSTOMER: 'pendiente_cliente',
    PENDING_PARTS: 'pendiente_refacciones',
    RESOLVED: 'resuelto',
    CLOSED: 'cerrado',
};
/**
 * Prioridad de ticket
 */
exports.TICKET_PRIORITY = {
    LOW: 'baja',
    MEDIUM: 'media',
    HIGH: 'alta',
    URGENT: 'urgente',
};
// ============================================================================
// DOCUMENTOS
// ============================================================================
/**
 * Estados de documento
 */
exports.DOCUMENT_STATUS = {
    DRAFT: 'borrador',
    PENDING_REVIEW: 'pendiente_revision',
    APPROVED: 'aprobado',
    REJECTED: 'rechazado',
    OBSOLETE: 'obsoleto',
};
/**
 * Tipos de documento
 */
exports.DOCUMENT_TYPE = {
    PLAN: 'plano',
    CONTRACT: 'contrato',
    PERMIT: 'permiso',
    CERTIFICATE: 'certificado',
    REPORT: 'reporte',
    PHOTO: 'fotografia',
    OTHER: 'otro',
};
// ============================================================================
// WORKFLOW
// ============================================================================
/**
 * Acciones de workflow
 */
exports.WORKFLOW_ACTION = {
    SUBMIT: 'submit',
    APPROVE: 'approve',
    REJECT: 'reject',
    RETURN: 'return',
    CANCEL: 'cancel',
    REOPEN: 'reopen',
};
// ============================================================================
// AUDIT
// ============================================================================
/**
 * Tipos de accion de auditoria
 */
exports.AUDIT_ACTION = {
    CREATE: 'create',
    UPDATE: 'update',
    DELETE: 'delete',
    VIEW: 'view',
    EXPORT: 'export',
    LOGIN: 'login',
    LOGOUT: 'logout',
};
//# sourceMappingURL=enums.constants.js.map