@venulog/phasing-engine-schemas 0.7.6-alpha.0 → 0.8.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,8 +3,9 @@ import { paginationSchema } from './pagination.js';
3
3
  import { BookingStatus } from './enums/bookingStatus.js';
4
4
  import { createSuccessResponseSchema, createMessageDataResponseSchema, documentSchema, vehicleTypeSchema } from './common.js';
5
5
  import { z } from './zod.js';
6
- import { parkingAreaScheduleSchema } from './parkingArea.js';
6
+ import { availableTimeSlotV2Schema, getAvailableSlotsBodyV2Schema } from './parkingArea.js';
7
7
  import { UnloadingType } from './enums/unloadingType.js';
8
+ import { ParkingAreaScheduleType } from './enums/parkingAreaScheduleType.js';
8
9
  // PostGIS geometry schema (GeoJSON-like structure)
9
10
  export const geometrySchema = z
10
11
  .object({
@@ -84,26 +85,6 @@ export const closeEventBodySchema = z
84
85
  })
85
86
  })
86
87
  .openapi('CloseEventBody');
87
- export const parkingBookingSchema = z.object({
88
- id: z.number(),
89
- parking_area_schedule_id: z.number(),
90
- status: z.enum(BookingStatus),
91
- is_active: z.boolean(),
92
- created_at: z.string(),
93
- updated_at: z.string(),
94
- created_by: z.string().nullable(),
95
- updated_by: z.string().nullable(),
96
- booking_date: z.string().nullable(),
97
- start_time: z.string().nullable(),
98
- end_time: z.string().nullable(),
99
- company_role: z.string().nullable(),
100
- company: z.record(z.string(), z.unknown()).nullable().optional(),
101
- vehicle: z.record(z.string(), z.unknown()).nullable().optional(),
102
- entry_scanned_at: z.string().nullable(),
103
- exit_scanned_at: z.string().nullable(),
104
- // Include the schedule details
105
- parking_area_schedule: parkingAreaScheduleSchema.optional()
106
- });
107
88
  export const companyDetailsSchema = z
108
89
  .object({
109
90
  hall: z.string().optional().nullable().openapi({
@@ -169,6 +150,27 @@ export const vehicleDetailsSchema = z
169
150
  })
170
151
  })
171
152
  .openapi('VehicleDetails');
153
+ export const parkingBookingSchema = z.object({
154
+ id: z.number(),
155
+ parking_area_schedule_id: z.number(),
156
+ status: z.enum(BookingStatus),
157
+ is_active: z.boolean(),
158
+ created_at: z.string(),
159
+ updated_at: z.string(),
160
+ created_by: z.string().nullable(),
161
+ updated_by: z.string().nullable(),
162
+ booking_date: z.string().nullable(),
163
+ start_time: z.string().nullable(),
164
+ end_time: z.string().nullable(),
165
+ company_role: z.string().nullable(),
166
+ company: companyDetailsSchema,
167
+ vehicle: vehicleDetailsSchema,
168
+ entry_scanned_at: z.string().nullable(),
169
+ exit_scanned_at: z.string().nullable(),
170
+ parking_spot: z.string(),
171
+ door: z.string(),
172
+ parking_schedule_type: z.enum(ParkingAreaScheduleType)
173
+ });
172
174
  export const eventBookingsDataSchema = z
173
175
  .object({
174
176
  event_id: z.number(),
@@ -212,7 +214,11 @@ export const closeEventDataSchema = z
212
214
  })
213
215
  .openapi('CloseEventData');
214
216
  export const closeEventResponseSchema = createMessageDataResponseSchema(closeEventDataSchema, 'CloseEventResponse', 'Event phase closed successfully', 'Details of the closed event phase');
215
- export const confirmExitBodySchema = z.object({
217
+ export const confirmAccessBodySchema = z.object({
218
+ event_id: z.number().openapi({
219
+ description: 'ID of the event',
220
+ example: 1
221
+ }),
216
222
  plate_number: z
217
223
  .object({
218
224
  url: z.string().openapi({
@@ -260,170 +266,20 @@ export const confirmAccessResponseSchema = z.object({
260
266
  // ------------------------------
261
267
  export const checkSlotAvailabilityBodySchema = z
262
268
  .object({
263
- schedule_id: z.number().positive().openapi({
264
- description: 'The ID of the parking area schedule',
265
- example: 1
266
- }),
267
- date: z
268
- .string()
269
- .regex(/^\d{4}-\d{2}-\d{2}$/, 'Date must be in YYYY-MM-DD format')
270
- .openapi({
271
- description: 'The date to check availability (YYYY-MM-DD)',
272
- example: '2025-12-15'
273
- }),
274
- start_time: z
275
- .string()
276
- .regex(/^\d{2}:\d{2}$/, 'Time must be in HH:MM format')
277
- .openapi({
278
- description: 'The start time to check availability (HH:MM)',
279
- example: '08:00'
280
- }),
281
- company_role: z.string().min(1, 'Company role is required').openapi({
282
- description: 'Company role to check availability for',
283
- example: 'exhibitor'
269
+ ...getAvailableSlotsBodyV2Schema.shape,
270
+ slot_key: z.string().min(1, 'Slot key is required').openapi({
271
+ description: 'Unique key identifying the time slot to check',
272
+ example: 'MainEntrance_2025-12-15_08:00'
284
273
  })
285
274
  })
286
275
  .openapi('CheckSlotAvailabilityBody');
287
- export const checkSlotAvailabilityDataSchema = z
288
- .object({
289
- schedule_id: z.number().openapi({
290
- description: 'ID of the parking area schedule',
291
- example: 1
292
- }),
293
- date: z.string().openapi({
294
- description: 'Date checked',
295
- example: '2025-12-15'
296
- }),
297
- start_time: z.string().openapi({
298
- description: 'Time slot checked',
299
- example: '08:00'
300
- }),
301
- is_available: z.boolean().openapi({
302
- description: 'Whether the slot is available for booking',
303
- example: true
304
- }),
305
- max_capacity: z.number().openapi({
306
- description: 'Maximum booking capacity',
307
- example: 5
308
- }),
309
- current_bookings: z.number().openapi({
310
- description: 'Current number of total bookings',
311
- example: 3
312
- }),
313
- confirmed_bookings: z.number().openapi({
314
- description: 'Current number of confirmed bookings',
315
- example: 1
316
- }),
317
- available_capacity: z.number().openapi({
318
- description: 'Remaining available capacity',
319
- example: 2
320
- })
321
- })
322
- .openapi('CheckSlotAvailabilityData');
323
- export const checkSlotAvailabilityResponseSchema = createSuccessResponseSchema(checkSlotAvailabilityDataSchema, 'CheckSlotAvailabilityResponse', 'Slot availability information with capacity details');
324
- // ------------------------------
325
- // QR Code Generation schemas
326
- // ------------------------------
327
- export const bookingDetailsDataSchema = z
328
- .object({
329
- qr_token: z.string().nullable().openapi({
330
- description: 'QR token for verification',
331
- example: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
332
- }),
333
- id: z.number().openapi({
334
- description: 'ID of the booking',
335
- example: 123
336
- }),
337
- booking_id: z.number().openapi({
338
- description: 'ID of the booking',
339
- example: 123
340
- }),
341
- status: z.string().openapi({
342
- description: 'Booking status',
343
- example: 'confirmed'
344
- }),
345
- booking_date: z.string().openapi({
346
- description: 'Date of the booking',
347
- example: '2025-12-15'
348
- }),
349
- start_time: z.string().openapi({
350
- description: 'Start time of the booking',
351
- example: '08:00'
352
- }),
353
- end_time: z.string().openapi({
354
- description: 'End time of the booking',
355
- example: '08:30'
356
- }),
357
- company_role: z.string().nullable().openapi({
358
- description: 'Company role for the booking',
359
- example: 'exhibitor'
360
- }),
361
- company: companyDetailsSchema.openapi({
362
- description: 'Company details'
363
- }),
364
- vehicle: vehicleDetailsSchema.openapi({
365
- description: 'Vehicle details'
366
- }),
367
- event_id: z.number().openapi({
368
- description: 'ID of the event',
369
- example: 1
370
- }),
371
- event_name: z.string().openapi({
372
- description: 'Name of the event',
373
- example: 'Paris Fashion Week 2025'
374
- }),
375
- event_code: z.string().openapi({
376
- description: 'Code of the event',
377
- example: 'PFW2025'
378
- }),
379
- venue_id: z.number().nullable().openapi({
380
- description: 'ID of the venue',
381
- example: 1
382
- }),
383
- venue_name: z.string().nullable().openapi({
384
- description: 'Name of the venue',
385
- example: 'Paris Expo Porte de Versailles'
386
- }),
387
- request_type: z.string().openapi({
388
- description: 'Type of parking area schedule (assembly/dismantling)',
389
- example: 'assembly'
390
- }),
391
- duration: z.number().openapi({
392
- description: 'Duration of the booking in minutes',
393
- example: 30
394
- }),
395
- parking_area_schedule_id: z.number().openapi({
396
- description: 'ID of the parking area schedule',
397
- example: 456
398
- }),
399
- banner: documentSchema.nullable().openapi({
400
- description: 'Event banner document',
401
- example: {
402
- url: 'https://example.com/event-banner.jpg',
403
- name: 'event-banner.jpg',
404
- type: 'image/jpeg'
405
- }
406
- }),
407
- created_at: z.string().openapi({
408
- description: 'Timestamp when booking was created',
409
- example: '2025-12-05T10:30:00.000Z'
410
- }),
411
- updated_at: z.string().openapi({
412
- description: 'Timestamp when booking was last updated',
413
- example: '2025-12-05T10:30:00.000Z'
414
- })
415
- })
416
- .openapi('BookingDetailsData');
276
+ export const checkSlotAvailabilityResponseSchema = createSuccessResponseSchema(availableTimeSlotV2Schema, 'CheckSlotAvailabilityResponse', 'Slot availability information with capacity details');
417
277
  // ------------------------------
418
278
  // Create Parking Booking schemas
419
279
  // ------------------------------
420
280
  // Request schema
421
281
  export const createParkingBookingBodySchema = z
422
282
  .object({
423
- parking_area_schedule_id: z.number().int().positive().openapi({
424
- description: 'ID of the parking area schedule to book',
425
- example: 1
426
- }),
427
283
  // Company details
428
284
  company: companyDetailsSchema.openapi({
429
285
  description: 'Company details including stand, contact, and driver info'
@@ -443,12 +299,17 @@ export const createParkingBookingBodySchema = z
443
299
  description: 'Booking date (YYYY-MM-DD)',
444
300
  example: '2025-12-25'
445
301
  }),
446
- start_time: z
447
- .string()
448
- .regex(/^\d{2}:\d{2}$/)
449
- .openapi({
450
- description: 'Start time (HH:MM)',
451
- example: '06:00'
302
+ event_id: z.number().positive().openapi({
303
+ description: 'ID of the event for which the booking is made',
304
+ example: 1
305
+ }),
306
+ slot_key: z.string().min(1, 'Slot key is required').openapi({
307
+ description: 'Unique key identifying the time slot to book',
308
+ example: 'MainEntrance_2025-12-25_06:00'
309
+ }),
310
+ parking_schedule_type: z.enum(ParkingAreaScheduleType).openapi({
311
+ description: 'Type of parking area schedule',
312
+ example: 'assembly'
452
313
  })
453
314
  })
454
315
  .openapi('CreateParkingBookingBody');
@@ -456,7 +317,6 @@ export const createParkingBookingBodySchema = z
456
317
  export const createParkingBookingDataSchema = z
457
318
  .object({
458
319
  id: z.number(),
459
- parking_area_schedule_id: z.number(),
460
320
  status: z.string(),
461
321
  company_role: z.string(),
462
322
  company: companyDetailsSchema.openapi({
@@ -468,6 +328,10 @@ export const createParkingBookingDataSchema = z
468
328
  booking_date: z.string(),
469
329
  start_time: z.string(),
470
330
  end_time: z.string(),
331
+ event_id: z.number(),
332
+ door: z.string(),
333
+ parking_spot: z.string(),
334
+ parking_schedule_type: z.enum(ParkingAreaScheduleType),
471
335
  created_at: z.string(),
472
336
  created_by: z.string().nullable()
473
337
  })
@@ -595,27 +459,25 @@ export const parkingBookingWithRelationsSchema = z
595
459
  is_active: z.boolean(),
596
460
  created_at: z.string(),
597
461
  updated_at: z.string(),
598
- parking_area_schedules: z.object({
462
+ events: z.object({
599
463
  id: z.number(),
600
- parking_area_schedule_type: z.string(),
601
- parking_areas: z.object({
464
+ name: z.string(),
465
+ code: z.string(),
466
+ venue_id: z.number().nullable(),
467
+ banner: z.record(z.string(), z.unknown()).nullable(),
468
+ venues: z
469
+ .object({
602
470
  id: z.number(),
603
- name: z.string(),
604
- events: z.object({
605
- id: z.number(),
606
- name: z.string(),
607
- code: z.string(),
608
- venue_id: z.number().nullable(),
609
- banner: z.record(z.string(), z.unknown()).nullable(),
610
- venues: z
611
- .object({
612
- id: z.number(),
613
- name: z.string()
614
- })
615
- .nullable()
616
- })
471
+ name: z.string()
617
472
  })
618
- })
473
+ .nullable()
474
+ }),
475
+ parking_spot: z.string(),
476
+ door: z.string(),
477
+ parking_schedule_type: z.enum(ParkingAreaScheduleType),
478
+ slot_key: z.string(),
479
+ entry_scanned_at: z.string().nullable(),
480
+ exit_scanned_at: z.string().nullable()
619
481
  })
620
482
  .openapi('ParkingBookingWithRelations');
621
483
  // ------------------------------
@@ -696,20 +558,6 @@ export const parkingBookingDetailsDataSchema = z
696
558
  description: 'Duration of the booking in minutes',
697
559
  example: 30
698
560
  }),
699
- parking_area_schedule_id: z.number().openapi({
700
- description: 'ID of the parking area schedule',
701
- example: 456
702
- }),
703
- parking_area: z.object({
704
- id: z.number().openapi({
705
- description: 'ID of parking area',
706
- example: 30
707
- }),
708
- name: z.string().openapi({
709
- description: 'Name of parking area',
710
- example: 'Parking Spot X'
711
- })
712
- }),
713
561
  banner: documentSchema.nullable().openapi({
714
562
  description: 'Event banner document',
715
563
  example: {
@@ -733,6 +581,22 @@ export const parkingBookingDetailsDataSchema = z
733
581
  exit_scanned_at: z.string().nullable().optional().openapi({
734
582
  description: 'Timestamp when exit was scanned',
735
583
  example: '2025-12-15T08:25:00.000Z'
584
+ }),
585
+ slot_key: z.string().openapi({
586
+ description: 'Unique key identifying the booked time slot',
587
+ example: 'MainEntrance_2025-12-15_08:00'
588
+ }),
589
+ parking_spot: z.string().openapi({
590
+ description: 'Assigned parking spot for the booking',
591
+ example: 'A-12'
592
+ }),
593
+ door: z.string().openapi({
594
+ description: 'Assigned door for the booking',
595
+ example: 'North Gate'
596
+ }),
597
+ parking_schedule_type: z.enum(ParkingAreaScheduleType).openapi({
598
+ description: 'Type of parking area schedule',
599
+ example: 'assembly'
736
600
  })
737
601
  })
738
602
  .openapi('ParkingBookingDetailsData');
@@ -748,7 +612,6 @@ export const getParkingBookingDetailsByTokenBodySchema = z
748
612
  })
749
613
  })
750
614
  .openapi('GetParkingBookingDetailsByTokenBody');
751
- export const getParkingBookingDetailsByTokenResponseSchema = createSuccessResponseSchema(bookingDetailsDataSchema, 'GetParkingBookingDetailsByTokenResponse', 'Booking details retrieved by access token');
752
615
  // ------------------------------
753
616
  // Get booking details by QR schemas
754
617
  // ------------------------------
@@ -760,7 +623,6 @@ export const getParkingBookingDetailsByQrBodySchema = z
760
623
  })
761
624
  })
762
625
  .openapi('GetBookingDetailsByQrBody');
763
- export const getParkingBookingDetailsByQrResponseSchema = createSuccessResponseSchema(bookingDetailsDataSchema, 'GetBookingDetailsByQrResponse', 'Booking details retrieved by QR token');
764
626
  // ------------------------------
765
627
  // Export All Parking Bookings
766
628
  // ------------------------------
@@ -860,9 +722,9 @@ export const updateBookingTimeBodySchema = z
860
722
  description: 'New start time (HH:MM)',
861
723
  example: '10:00'
862
724
  }),
863
- parking_area_schedule_id: z.number().int().positive().openapi({
864
- description: 'New parking area schedule ID',
865
- example: 5
725
+ slot_key: z.string().min(1, 'Slot key is required').openapi({
726
+ description: 'Unique key identifying the new time slot',
727
+ example: 'MainEntrance_2025-12-25_10:00'
866
728
  })
867
729
  })
868
730
  .openapi('UpdateBookingTimeBody');
@@ -872,10 +734,6 @@ export const updateBookingTimeDataSchema = z
872
734
  description: 'ID of the updated booking',
873
735
  example: 1
874
736
  }),
875
- parking_area_schedule_id: z.number().openapi({
876
- description: 'New parking area schedule ID',
877
- example: 5
878
- }),
879
737
  booking_date: z.string().openapi({
880
738
  description: 'New booking date',
881
739
  example: '2025-12-25'
@@ -0,0 +1,171 @@
1
+ import { z } from './zod.js';
2
+ import { SimulationMode, SimulationStatus } from './enums/simulationMode.js';
3
+ export declare const simulationModeSchema: z.ZodEnum<{
4
+ entry: SimulationMode.ENTRY;
5
+ exit: SimulationMode.EXIT;
6
+ both: SimulationMode.BOTH;
7
+ }>;
8
+ export declare const simulationStatusSchema: z.ZodEnum<{
9
+ running: SimulationStatus.RUNNING;
10
+ stopped: SimulationStatus.STOPPED;
11
+ completed: SimulationStatus.COMPLETED;
12
+ }>;
13
+ export declare const startSimulationBodySchema: z.ZodObject<{
14
+ event_id: z.ZodNumber;
15
+ booking_ids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
16
+ speed_kmh: z.ZodDefault<z.ZodNumber>;
17
+ update_interval_ms: z.ZodDefault<z.ZodNumber>;
18
+ mode: z.ZodDefault<z.ZodEnum<{
19
+ entry: SimulationMode.ENTRY;
20
+ exit: SimulationMode.EXIT;
21
+ both: SimulationMode.BOTH;
22
+ }>>;
23
+ }, z.core.$strip>;
24
+ export type StartSimulationBody = z.infer<typeof startSimulationBodySchema>;
25
+ export declare const startSimulationDataSchema: z.ZodObject<{
26
+ session_id: z.ZodString;
27
+ event_id: z.ZodNumber;
28
+ booking_ids: z.ZodArray<z.ZodNumber>;
29
+ speed_kmh: z.ZodNumber;
30
+ update_interval_ms: z.ZodNumber;
31
+ mode: z.ZodEnum<{
32
+ entry: SimulationMode.ENTRY;
33
+ exit: SimulationMode.EXIT;
34
+ both: SimulationMode.BOTH;
35
+ }>;
36
+ started_at: z.ZodString;
37
+ }, z.core.$strip>;
38
+ export type StartSimulationData = z.infer<typeof startSimulationDataSchema>;
39
+ export declare const startSimulationResponseSchema: z.ZodObject<{
40
+ success: z.ZodBoolean;
41
+ message: z.ZodString;
42
+ data: z.ZodObject<{
43
+ session_id: z.ZodString;
44
+ event_id: z.ZodNumber;
45
+ booking_ids: z.ZodArray<z.ZodNumber>;
46
+ speed_kmh: z.ZodNumber;
47
+ update_interval_ms: z.ZodNumber;
48
+ mode: z.ZodEnum<{
49
+ entry: SimulationMode.ENTRY;
50
+ exit: SimulationMode.EXIT;
51
+ both: SimulationMode.BOTH;
52
+ }>;
53
+ started_at: z.ZodString;
54
+ }, z.core.$strip>;
55
+ }, z.core.$strip>;
56
+ export type StartSimulationResponse = z.infer<typeof startSimulationResponseSchema>;
57
+ export declare const stopSimulationBodySchema: z.ZodObject<{
58
+ session_id: z.ZodOptional<z.ZodString>;
59
+ event_id: z.ZodOptional<z.ZodNumber>;
60
+ }, z.core.$strip>;
61
+ export type StopSimulationBody = z.infer<typeof stopSimulationBodySchema>;
62
+ export declare const stopSimulationDataSchema: z.ZodObject<{
63
+ sessions_stopped: z.ZodNumber;
64
+ session_ids: z.ZodArray<z.ZodString>;
65
+ }, z.core.$strip>;
66
+ export type StopSimulationData = z.infer<typeof stopSimulationDataSchema>;
67
+ export declare const stopSimulationResponseSchema: z.ZodObject<{
68
+ success: z.ZodBoolean;
69
+ message: z.ZodString;
70
+ data: z.ZodObject<{
71
+ sessions_stopped: z.ZodNumber;
72
+ session_ids: z.ZodArray<z.ZodString>;
73
+ }, z.core.$strip>;
74
+ }, z.core.$strip>;
75
+ export type StopSimulationResponse = z.infer<typeof stopSimulationResponseSchema>;
76
+ export declare const simulationSessionSchema: z.ZodObject<{
77
+ id: z.ZodString;
78
+ event_id: z.ZodNumber;
79
+ speed_kmh: z.ZodNumber;
80
+ update_interval_ms: z.ZodNumber;
81
+ mode: z.ZodEnum<{
82
+ entry: SimulationMode.ENTRY;
83
+ exit: SimulationMode.EXIT;
84
+ both: SimulationMode.BOTH;
85
+ }>;
86
+ booking_ids: z.ZodArray<z.ZodNumber>;
87
+ status: z.ZodEnum<{
88
+ running: SimulationStatus.RUNNING;
89
+ stopped: SimulationStatus.STOPPED;
90
+ completed: SimulationStatus.COMPLETED;
91
+ }>;
92
+ started_at: z.ZodString;
93
+ stopped_at: z.ZodNullable<z.ZodString>;
94
+ positions_generated: z.ZodNumber;
95
+ }, z.core.$strip>;
96
+ export type SimulationSession = z.infer<typeof simulationSessionSchema>;
97
+ export declare const getSimulationStatusQuerySchema: z.ZodObject<{
98
+ event_id: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>, z.ZodNumber>>;
99
+ include_completed: z.ZodPipe<z.ZodDefault<z.ZodOptional<z.ZodString>>, z.ZodTransform<boolean, string>>;
100
+ }, z.core.$strip>;
101
+ export type GetSimulationStatusQuery = z.infer<typeof getSimulationStatusQuerySchema>;
102
+ export declare const simulationStatusDataSchema: z.ZodObject<{
103
+ active: z.ZodBoolean;
104
+ sessions: z.ZodArray<z.ZodObject<{
105
+ id: z.ZodString;
106
+ event_id: z.ZodNumber;
107
+ speed_kmh: z.ZodNumber;
108
+ update_interval_ms: z.ZodNumber;
109
+ mode: z.ZodEnum<{
110
+ entry: SimulationMode.ENTRY;
111
+ exit: SimulationMode.EXIT;
112
+ both: SimulationMode.BOTH;
113
+ }>;
114
+ booking_ids: z.ZodArray<z.ZodNumber>;
115
+ status: z.ZodEnum<{
116
+ running: SimulationStatus.RUNNING;
117
+ stopped: SimulationStatus.STOPPED;
118
+ completed: SimulationStatus.COMPLETED;
119
+ }>;
120
+ started_at: z.ZodString;
121
+ stopped_at: z.ZodNullable<z.ZodString>;
122
+ positions_generated: z.ZodNumber;
123
+ }, z.core.$strip>>;
124
+ total_active: z.ZodNumber;
125
+ }, z.core.$strip>;
126
+ export type SimulationStatusData = z.infer<typeof simulationStatusDataSchema>;
127
+ export declare const getSimulationStatusResponseSchema: z.ZodObject<{
128
+ success: z.ZodBoolean;
129
+ data: z.ZodObject<{
130
+ active: z.ZodBoolean;
131
+ sessions: z.ZodArray<z.ZodObject<{
132
+ id: z.ZodString;
133
+ event_id: z.ZodNumber;
134
+ speed_kmh: z.ZodNumber;
135
+ update_interval_ms: z.ZodNumber;
136
+ mode: z.ZodEnum<{
137
+ entry: SimulationMode.ENTRY;
138
+ exit: SimulationMode.EXIT;
139
+ both: SimulationMode.BOTH;
140
+ }>;
141
+ booking_ids: z.ZodArray<z.ZodNumber>;
142
+ status: z.ZodEnum<{
143
+ running: SimulationStatus.RUNNING;
144
+ stopped: SimulationStatus.STOPPED;
145
+ completed: SimulationStatus.COMPLETED;
146
+ }>;
147
+ started_at: z.ZodString;
148
+ stopped_at: z.ZodNullable<z.ZodString>;
149
+ positions_generated: z.ZodNumber;
150
+ }, z.core.$strip>>;
151
+ total_active: z.ZodNumber;
152
+ }, z.core.$strip>;
153
+ }, z.core.$strip>;
154
+ export type GetSimulationStatusResponse = z.infer<typeof getSimulationStatusResponseSchema>;
155
+ export declare const pathPointSchema: z.ZodObject<{
156
+ x: z.ZodNumber;
157
+ y: z.ZodNumber;
158
+ distance_from_start: z.ZodNumber;
159
+ }, z.core.$strip>;
160
+ export type PathPoint = z.infer<typeof pathPointSchema>;
161
+ export declare const simulatedPathSchema: z.ZodObject<{
162
+ booking_id: z.ZodNumber;
163
+ points: z.ZodArray<z.ZodObject<{
164
+ x: z.ZodNumber;
165
+ y: z.ZodNumber;
166
+ distance_from_start: z.ZodNumber;
167
+ }, z.core.$strip>>;
168
+ total_distance: z.ZodNumber;
169
+ estimated_duration: z.ZodNumber;
170
+ }, z.core.$strip>;
171
+ export type SimulatedPath = z.infer<typeof simulatedPathSchema>;