import { pgEnum } from 'drizzle-orm/pg-core';
import * as E from '@wms/shared';

/** Postgres enums generated from the shared canonical lists. */
export const tenantStatusEnum = pgEnum('tenant_status', E.TENANT_STATUS);
export const subscriptionStatusEnum = pgEnum('subscription_status', E.SUBSCRIPTION_STATUS);
export const userStatusEnum = pgEnum('user_status', E.USER_STATUS);
export const activeStatusEnum = pgEnum('active_status', E.ACTIVE_STATUS);
export const actorTypeEnum = pgEnum('actor_type', E.ACTOR_TYPE);

export const zoneTypeEnum = pgEnum('zone_type', E.ZONE_TYPE);
export const temperatureClassEnum = pgEnum('temperature_class', E.TEMPERATURE_CLASS);
export const locationTypeEnum = pgEnum('location_type', E.LOCATION_TYPE);
export const locationUsageEnum = pgEnum('location_usage', E.LOCATION_USAGE);
export const locationStatusEnum = pgEnum('location_status', E.LOCATION_STATUS);
export const rotationRuleEnum = pgEnum('rotation_rule', E.ROTATION_RULE);
export const storageConditionEnum = pgEnum('storage_condition', E.STORAGE_CONDITION);
export const packLevelEnum = pgEnum('pack_level', E.PACK_LEVEL);
export const putawayStrategyEnum = pgEnum('putaway_strategy', E.PUTAWAY_STRATEGY);
export const reasonCodeTypeEnum = pgEnum('reason_code_type', E.REASON_CODE_TYPE);

export const asnTypeEnum = pgEnum('asn_type', E.ASN_TYPE);
export const asnStatusEnum = pgEnum('asn_status', E.ASN_STATUS);
export const docSourceEnum = pgEnum('doc_source', E.DOC_SOURCE);
export const lineStatusEnum = pgEnum('line_status', E.LINE_STATUS);
export const dockAppointmentStatusEnum = pgEnum('dock_appointment_status', E.DOCK_APPOINTMENT_STATUS);
export const itemConditionEnum = pgEnum('item_condition', E.ITEM_CONDITION);
export const discrepancyTypeEnum = pgEnum('discrepancy_type', E.DISCREPANCY_TYPE);
export const discrepancyStatusEnum = pgEnum('discrepancy_status', E.DISCREPANCY_STATUS);

export const lpnTypeEnum = pgEnum('lpn_type', E.LPN_TYPE);
export const lpnStatusEnum = pgEnum('lpn_status', E.LPN_STATUS);
export const inventoryStatusEnum = pgEnum('inventory_status', E.INVENTORY_STATUS);
export const movementTypeEnum = pgEnum('movement_type', E.MOVEMENT_TYPE);
export const serialStatusEnum = pgEnum('serial_status', E.SERIAL_STATUS);
export const holdScopeEnum = pgEnum('hold_scope', E.HOLD_SCOPE);
export const approvalStatusEnum = pgEnum('approval_status', E.APPROVAL_STATUS);
export const countTypeEnum = pgEnum('count_type', E.COUNT_TYPE);
export const countStatusEnum = pgEnum('count_status', E.COUNT_STATUS);
export const countLineStatusEnum = pgEnum('count_line_status', E.COUNT_LINE_STATUS);

export const taskTypeEnum = pgEnum('task_type', E.TASK_TYPE);
export const taskStatusEnum = pgEnum('task_status', E.TASK_STATUS);

export const orderTypeEnum = pgEnum('order_type', E.ORDER_TYPE);
export const orderStatusEnum = pgEnum('order_status', E.ORDER_STATUS);
export const allocationStatusEnum = pgEnum('allocation_status', E.ALLOCATION_STATUS);
export const waveStatusEnum = pgEnum('wave_status', E.WAVE_STATUS);
export const waveStrategyEnum = pgEnum('wave_strategy', E.WAVE_STRATEGY);
export const shipmentStatusEnum = pgEnum('shipment_status', E.SHIPMENT_STATUS);
export const loadStatusEnum = pgEnum('load_status', E.LOAD_STATUS);
export const returnStatusEnum = pgEnum('return_status', E.RETURN_STATUS);
export const returnDispositionEnum = pgEnum('return_disposition', E.RETURN_DISPOSITION);

export const billingCycleEnum = pgEnum('billing_cycle', E.BILLING_CYCLE);
export const storageMethodEnum = pgEnum('storage_method', E.STORAGE_METHOD);
export const contractStatusEnum = pgEnum('contract_status', E.CONTRACT_STATUS);
export const tariffGroupEnum = pgEnum('tariff_group', E.TARIFF_GROUP);
export const chargeUnitEnum = pgEnum('charge_unit', E.CHARGE_UNIT);
export const chargeTriggerEnum = pgEnum('charge_trigger', E.CHARGE_TRIGGER);
export const chargeStatusEnum = pgEnum('charge_status', E.CHARGE_STATUS);
export const invoiceStatusEnum = pgEnum('invoice_status', E.INVOICE_STATUS);

export const connectorTypeEnum = pgEnum('connector_type', E.CONNECTOR_TYPE);
export const messageDirectionEnum = pgEnum('message_direction', E.MESSAGE_DIRECTION);
export const messageStatusEnum = pgEnum('message_status', E.MESSAGE_STATUS);

export const aiProposalTypeEnum = pgEnum('ai_proposal_type', E.AI_PROPOSAL_TYPE);
export const aiProposalStatusEnum = pgEnum('ai_proposal_status', E.AI_PROPOSAL_STATUS);
