import { z } from 'zod'; export const PartState = z.enum([ 'SPARE', 'DEPLOYED', 'BROKEN', 'PENDING_DESTRUCTION', 'PENDING_DROP_IN_CUSTODY', 'PENDING_DESTRUCTION_IN_CUSTODY', 'PENDING_REPAIR', ]); export type PartState = z.infer; export const HostState = z.enum(['DEPLOYED', 'DEGRADED', 'TESTING']); export type HostState = z.infer; export const HostStack = z.enum(['PRODUCTION', 'VETTING']); export type HostStack = z.infer; export const Role = z.enum(['ADMIN', 'TECHNICIAN']); export type Role = z.infer; export const PartEventType = z.enum([ 'CREATED', 'STATE_CHANGED', 'LOCATION_CHANGED', 'FIELD_UPDATED', 'FM_OPENED', 'FM_CLOSED', 'PART_SWAPPED', 'TAG_ADDED', 'TAG_REMOVED', ]); export type PartEventType = z.infer; export const HostEventType = z.enum([ 'CREATED', 'STATE_CHANGED', 'STACK_CHANGED', 'FIELD_UPDATED', ]); export type HostEventType = z.infer; export const FmStatus = z.enum(['OPEN', 'CLOSED']); export type FmStatus = z.infer; export const CsvImportStatus = z.enum([ 'PENDING', 'STAGED', 'COMMITTED', 'FAILED', 'CANCELLED', ]); export type CsvImportStatus = z.infer; // Catalog of webhook event names the system will emit. Stored per subscription as a JSON array. export const WebhookEventName = z.enum([ 'part.created', 'part.updated', 'part.deleted', 'part.state_changed', 'part.location_changed', 'fm.opened', 'fm.closed', 'repair.logged', 'tag.assigned', 'tag.removed', ]); export type WebhookEventName = z.infer;