@burdenoff/microfe-eventfullymanaged 2026.519.1 → 2026.525.1

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.
Files changed (77) hide show
  1. package/package.json +1 -1
  2. package/dist/dev/main.d.ts +0 -2
  3. package/dist/dev/main.d.ts.map +0 -1
  4. package/dist/eventfullymanaged/EventfullyManagedRoot.d.ts +0 -4
  5. package/dist/eventfullymanaged/EventfullyManagedRoot.d.ts.map +0 -1
  6. package/dist/eventfullymanaged/EventfullyManagedRoutes.d.ts +0 -2
  7. package/dist/eventfullymanaged/EventfullyManagedRoutes.d.ts.map +0 -1
  8. package/dist/eventfullymanaged/api/eventApi.d.ts +0 -657
  9. package/dist/eventfullymanaged/api/eventApi.d.ts.map +0 -1
  10. package/dist/eventfullymanaged/components/PageLayout.d.ts +0 -12
  11. package/dist/eventfullymanaged/components/PageLayout.d.ts.map +0 -1
  12. package/dist/eventfullymanaged/context/EventfullyManagedContext.d.ts +0 -25
  13. package/dist/eventfullymanaged/context/EventfullyManagedContext.d.ts.map +0 -1
  14. package/dist/eventfullymanaged/hooks/index.d.ts +0 -3
  15. package/dist/eventfullymanaged/hooks/index.d.ts.map +0 -1
  16. package/dist/eventfullymanaged/index.d.ts +0 -27
  17. package/dist/eventfullymanaged/index.d.ts.map +0 -1
  18. package/dist/eventfullymanaged/pages/dashboard/DashboardPage.d.ts +0 -2
  19. package/dist/eventfullymanaged/pages/dashboard/DashboardPage.d.ts.map +0 -1
  20. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.d.ts +0 -2
  21. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.d.ts.map +0 -1
  22. package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.d.ts +0 -2
  23. package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.d.ts.map +0 -1
  24. package/dist/eventfullymanaged/pages/modules/CommunicationPage.d.ts +0 -2
  25. package/dist/eventfullymanaged/pages/modules/CommunicationPage.d.ts.map +0 -1
  26. package/dist/eventfullymanaged/pages/modules/EntityListSection.d.ts +0 -14
  27. package/dist/eventfullymanaged/pages/modules/EntityListSection.d.ts.map +0 -1
  28. package/dist/eventfullymanaged/pages/modules/EventsPage.d.ts +0 -2
  29. package/dist/eventfullymanaged/pages/modules/EventsPage.d.ts.map +0 -1
  30. package/dist/eventfullymanaged/pages/modules/KioskPage.d.ts +0 -2
  31. package/dist/eventfullymanaged/pages/modules/KioskPage.d.ts.map +0 -1
  32. package/dist/eventfullymanaged/pages/modules/NetworkingPage.d.ts +0 -2
  33. package/dist/eventfullymanaged/pages/modules/NetworkingPage.d.ts.map +0 -1
  34. package/dist/eventfullymanaged/pages/modules/OperationsHubPage.d.ts +0 -9
  35. package/dist/eventfullymanaged/pages/modules/OperationsHubPage.d.ts.map +0 -1
  36. package/dist/eventfullymanaged/pages/modules/RegistrationPage.d.ts +0 -2
  37. package/dist/eventfullymanaged/pages/modules/RegistrationPage.d.ts.map +0 -1
  38. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.d.ts +0 -2
  39. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.d.ts.map +0 -1
  40. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.d.ts +0 -2
  41. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.d.ts.map +0 -1
  42. package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.d.ts +0 -2
  43. package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.d.ts.map +0 -1
  44. package/dist/eventfullymanaged/pages/modules/WorkflowsPage.d.ts +0 -2
  45. package/dist/eventfullymanaged/pages/modules/WorkflowsPage.d.ts.map +0 -1
  46. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.d.ts +0 -2
  47. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.d.ts.map +0 -1
  48. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.d.ts +0 -2
  49. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.d.ts.map +0 -1
  50. package/dist/eventfullymanaged/pages/venues/FloorPlansPage.d.ts +0 -2
  51. package/dist/eventfullymanaged/pages/venues/FloorPlansPage.d.ts.map +0 -1
  52. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.d.ts +0 -2
  53. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.d.ts.map +0 -1
  54. package/dist/eventfullymanaged/pages/venues/VenueFormPage.d.ts +0 -2
  55. package/dist/eventfullymanaged/pages/venues/VenueFormPage.d.ts.map +0 -1
  56. package/dist/eventfullymanaged/pages/venues/VenueListPage.d.ts +0 -2
  57. package/dist/eventfullymanaged/pages/venues/VenueListPage.d.ts.map +0 -1
  58. package/dist/eventfullymanaged/store/eventfullyManagedStore.d.ts +0 -47
  59. package/dist/eventfullymanaged/store/eventfullyManagedStore.d.ts.map +0 -1
  60. package/dist/eventfullymanaged/types/index.d.ts +0 -3649
  61. package/dist/eventfullymanaged/types/index.d.ts.map +0 -1
  62. package/dist/eventfullymanaged/utils/cn.d.ts +0 -2
  63. package/dist/eventfullymanaged/utils/cn.d.ts.map +0 -1
  64. package/dist/eventfullymanaged/utils/constants.d.ts +0 -3
  65. package/dist/eventfullymanaged/utils/constants.d.ts.map +0 -1
  66. package/dist/eventfullymanaged/utils/navigation.d.ts +0 -2
  67. package/dist/eventfullymanaged/utils/navigation.d.ts.map +0 -1
  68. package/dist/generated/global-operations.d.ts +0 -2
  69. package/dist/generated/global-operations.d.ts.map +0 -1
  70. package/dist/generated/global-types.d.ts +0 -23527
  71. package/dist/generated/global-types.d.ts.map +0 -1
  72. package/dist/generated/wspace-operations.d.ts +0 -2
  73. package/dist/generated/wspace-operations.d.ts.map +0 -1
  74. package/dist/generated/wspace-types.d.ts +0 -57851
  75. package/dist/generated/wspace-types.d.ts.map +0 -1
  76. package/dist/index.d.ts +0 -8
  77. package/dist/index.d.ts.map +0 -1
@@ -1,3649 +0,0 @@
1
- import { MicrofrontendRootProps } from '@burdenoff/fe-libs/shared/types';
2
-
3
- /**
4
- * EventfullyManaged microfrontend root props.
5
- * Extends standard MicrofrontendRootProps from fe-libs.
6
- */
7
- export type EventfullyManagedRootProps = MicrofrontendRootProps;
8
- export type EventType = 'conference' | 'workshop' | 'seminar' | 'networking' | 'webinar' | 'hybrid' | 'virtual' | 'trade-show' | 'exhibition';
9
- export type EventCategory = 'technology' | 'business' | 'education' | 'health' | 'entertainment' | 'sports' | 'arts' | 'science';
10
- export type EventStatus = 'draft' | 'published' | 'cancelled' | 'completed' | 'postponed';
11
- /** VenueType from event module (physical/virtual/hybrid) */
12
- export type EventVenueType = 'physical' | 'virtual' | 'hybrid';
13
- export type SessionType = 'keynote' | 'presentation' | 'workshop' | 'panel' | 'break' | 'networking' | 'qa' | 'demo';
14
- export type ResourceType = 'equipment' | 'space' | 'catering' | 'staff' | 'transport';
15
- export type BudgetCategory = 'venue' | 'equipment' | 'catering' | 'marketing' | 'staff' | 'speakers' | 'materials' | 'transport' | 'technology' | 'miscellaneous';
16
- /** Address from event module */
17
- export interface EventAddress {
18
- street: string;
19
- city: string;
20
- state: string;
21
- country: string;
22
- zipCode: string;
23
- coordinates?: {
24
- lat: number;
25
- lng: number;
26
- };
27
- }
28
- /** Simple venue from event module */
29
- export interface EventVenue {
30
- id: string;
31
- name: string;
32
- type: EventVenueType;
33
- capacity: number;
34
- address?: EventAddress;
35
- virtualUrl?: string;
36
- description: string;
37
- amenities: string[];
38
- contactInfo: {
39
- email: string;
40
- phone: string;
41
- website?: string;
42
- };
43
- pricing: {
44
- hourlyRate?: number;
45
- dailyRate?: number;
46
- weekendRate?: number;
47
- };
48
- availability: Array<{
49
- date: string;
50
- timeSlots: Array<{
51
- start: string;
52
- end: string;
53
- available: boolean;
54
- }>;
55
- }>;
56
- images: string[];
57
- equipment: string[];
58
- }
59
- export interface Speaker {
60
- id: string;
61
- name: string;
62
- title: string;
63
- company: string;
64
- bio: string;
65
- avatar: string;
66
- email: string;
67
- phone?: string;
68
- socialLinks: {
69
- linkedin?: string;
70
- twitter?: string;
71
- website?: string;
72
- };
73
- expertise: string[];
74
- fee?: number;
75
- requirements?: string[];
76
- }
77
- export interface Session {
78
- id: string;
79
- title: string;
80
- description: string;
81
- type: SessionType;
82
- startTime: string;
83
- endTime: string;
84
- duration: number;
85
- speakers: Speaker[];
86
- room?: string;
87
- capacity?: number;
88
- registrations?: number;
89
- resources: Resource[];
90
- tags: string[];
91
- isBreak: boolean;
92
- isRequired: boolean;
93
- virtualUrl?: string;
94
- materials?: Array<{
95
- name: string;
96
- url: string;
97
- type: 'document' | 'video' | 'image' | 'link';
98
- }>;
99
- }
100
- export interface Resource {
101
- id: string;
102
- name: string;
103
- type: ResourceType;
104
- description: string;
105
- category: string;
106
- quantity: number;
107
- available: number;
108
- cost: number;
109
- costType: 'hourly' | 'daily' | 'fixed';
110
- vendor?: string;
111
- specifications?: Record<string, string | number | boolean>;
112
- maintenanceSchedule?: string[];
113
- bookings: Array<{
114
- eventId: string;
115
- sessionId?: string;
116
- startTime: string;
117
- endTime: string;
118
- quantity: number;
119
- }>;
120
- }
121
- export interface BudgetItem {
122
- id: string;
123
- category: BudgetCategory;
124
- name: string;
125
- description: string;
126
- estimated: number;
127
- actual?: number;
128
- vendor?: string;
129
- notes?: string;
130
- status: 'planned' | 'approved' | 'paid' | 'cancelled';
131
- dueDate?: string;
132
- attachments?: Array<{
133
- name: string;
134
- url: string;
135
- }>;
136
- }
137
- export interface EventTemplate {
138
- id: string;
139
- name: string;
140
- description: string;
141
- type: EventType;
142
- category: EventCategory;
143
- duration: number;
144
- expectedAttendees: number;
145
- defaultSessions: Omit<Session, 'id' | 'speakers'>[];
146
- requiredResources: Omit<Resource, 'id' | 'bookings'>[];
147
- budgetTemplate: Omit<BudgetItem, 'id' | 'actual'>[];
148
- checklist: Array<{
149
- task: string;
150
- category: string;
151
- daysBeforeEvent: number;
152
- isRequired: boolean;
153
- }>;
154
- isPublic: boolean;
155
- createdBy: string;
156
- usageCount: number;
157
- rating: number;
158
- tags: string[];
159
- }
160
- export interface Event {
161
- id: string;
162
- title: string;
163
- description: string;
164
- type: EventType;
165
- category: EventCategory;
166
- status: EventStatus;
167
- startDate: string;
168
- endDate: string;
169
- startTime: string;
170
- endTime: string;
171
- timezone: string;
172
- venue: EventVenue;
173
- isOnline: boolean;
174
- isHybrid: boolean;
175
- capacity: number;
176
- registrationFee: number;
177
- currency: string;
178
- registrationDeadline: string;
179
- allowWaitlist: boolean;
180
- maxWaitlist?: number;
181
- sessions: Session[];
182
- resources: Resource[];
183
- budget: BudgetItem[];
184
- totalBudget: number;
185
- organizer: {
186
- name: string;
187
- email: string;
188
- phone: string;
189
- organization: string;
190
- };
191
- isPublic: boolean;
192
- requiresApproval: boolean;
193
- allowCancellation: boolean;
194
- cancellationDeadline?: string;
195
- refundPolicy: string;
196
- analytics: {
197
- views: number;
198
- registrations: number;
199
- checkedIn: number;
200
- noShows: number;
201
- revenue: number;
202
- averageRating?: number;
203
- feedback: Array<{
204
- rating: number;
205
- comment: string;
206
- anonymous: boolean;
207
- createdAt: string;
208
- }>;
209
- };
210
- createdAt: string;
211
- updatedAt: string;
212
- createdBy: string;
213
- tags: string[];
214
- templateId?: string;
215
- socialMedia: {
216
- facebook?: string;
217
- twitter?: string;
218
- linkedin?: string;
219
- instagram?: string;
220
- };
221
- marketingMaterials: Array<{
222
- type: 'banner' | 'flyer' | 'social' | 'email';
223
- url: string;
224
- description: string;
225
- }>;
226
- customFields: Record<string, string | number | boolean>;
227
- documents: Array<{
228
- name: string;
229
- url: string;
230
- type: string;
231
- isPublic: boolean;
232
- }>;
233
- }
234
- export interface EventRegistration {
235
- id: string;
236
- eventId: string;
237
- attendee: {
238
- id: string;
239
- firstName: string;
240
- lastName: string;
241
- email: string;
242
- phone?: string;
243
- company?: string;
244
- title?: string;
245
- dietaryRestrictions?: string[];
246
- accessibilityNeeds?: string[];
247
- emergencyContact?: {
248
- name: string;
249
- phone: string;
250
- relationship: string;
251
- };
252
- };
253
- registrationDate: string;
254
- status: 'registered' | 'waitlist' | 'cancelled' | 'checked-in' | 'no-show';
255
- paymentStatus: 'pending' | 'paid' | 'refunded' | 'failed';
256
- amount: number;
257
- sessions: string[];
258
- customFields: Record<string, string | number | boolean>;
259
- checkInTime?: string;
260
- qrCode: string;
261
- notes?: string;
262
- }
263
- export interface EventMetrics {
264
- totalEvents: number;
265
- activeEvents: number;
266
- upcomingEvents: number;
267
- totalAttendees: number;
268
- totalRevenue: number;
269
- averageAttendance: number;
270
- popularEventTypes: Array<{
271
- type: EventType;
272
- count: number;
273
- percentage: number;
274
- }>;
275
- monthlyTrends: Array<{
276
- month: string;
277
- events: number;
278
- attendees: number;
279
- revenue: number;
280
- }>;
281
- venueUtilization: Array<{
282
- venueId: string;
283
- venueName: string;
284
- utilizationRate: number;
285
- bookings: number;
286
- }>;
287
- registrationTrends: Array<{
288
- date: string;
289
- registrations: number;
290
- cancellations: number;
291
- }>;
292
- }
293
- export type EventFormData = Omit<Event, 'id' | 'createdAt' | 'updatedAt' | 'analytics'>;
294
- export interface EventFilter {
295
- type?: EventType[];
296
- category?: EventCategory[];
297
- status?: EventStatus[];
298
- dateRange?: {
299
- start: string;
300
- end: string;
301
- };
302
- venueType?: EventVenueType[];
303
- search?: string;
304
- priceRange?: {
305
- min: number;
306
- max: number;
307
- };
308
- capacity?: {
309
- min: number;
310
- max: number;
311
- };
312
- tags?: string[];
313
- organizer?: string;
314
- sortBy?: 'date' | 'title' | 'registrations' | 'revenue' | 'created';
315
- sortOrder?: 'asc' | 'desc';
316
- page?: number;
317
- limit?: number;
318
- }
319
- export type VenueType = 'conference-center' | 'hotel' | 'outdoor' | 'restaurant' | 'coworking' | 'auditorium' | 'gallery' | 'stadium' | 'virtual';
320
- export type VenueStatus = 'active' | 'inactive' | 'maintenance' | 'pending';
321
- export type AmenityType = 'wifi' | 'parking' | 'catering' | 'av-equipment' | 'accessibility' | 'air-conditioning' | 'stage' | 'kitchen' | 'breakout-rooms' | 'outdoor-space';
322
- export type FloorPlanStatus = 'draft' | 'published' | 'archived';
323
- export interface VenueLocation {
324
- address: string;
325
- city: string;
326
- state: string;
327
- country: string;
328
- zipCode: string;
329
- coordinates: {
330
- lat: number;
331
- lng: number;
332
- };
333
- }
334
- export interface VenueAmenity {
335
- id: string;
336
- type: AmenityType;
337
- name: string;
338
- description?: string;
339
- quantity?: number;
340
- included: boolean;
341
- additionalCost?: number;
342
- }
343
- export interface VenueImage {
344
- id: string;
345
- url: string;
346
- alt: string;
347
- isPrimary: boolean;
348
- category: 'exterior' | 'interior' | 'amenity' | 'floor-plan' | 'event';
349
- }
350
- export interface VenuePricing {
351
- hourlyRate: number;
352
- halfDayRate: number;
353
- fullDayRate: number;
354
- weekendRate?: number;
355
- holidayRate?: number;
356
- cleaningFee?: number;
357
- securityDeposit?: number;
358
- minimumHours?: number;
359
- currency: string;
360
- }
361
- export interface VenueCapacity {
362
- standing: number;
363
- theater: number;
364
- classroom: number;
365
- banquet: number;
366
- boardroom: number;
367
- uShape: number;
368
- cocktail: number;
369
- }
370
- export interface VenueResource {
371
- id: string;
372
- name: string;
373
- category: 'equipment' | 'furniture' | 'service' | 'staff';
374
- description: string;
375
- quantity: number;
376
- available: number;
377
- pricePerUnit?: number;
378
- priceType?: 'hourly' | 'daily' | 'fixed';
379
- image?: string;
380
- }
381
- export interface FloorPlan {
382
- id: string;
383
- venueId: string;
384
- name: string;
385
- description?: string;
386
- status: FloorPlanStatus;
387
- imageUrl: string;
388
- dimensions: {
389
- width: number;
390
- height: number;
391
- unit: 'feet' | 'meters';
392
- };
393
- areas: FloorPlanArea[];
394
- createdAt: string;
395
- updatedAt: string;
396
- }
397
- export interface FloorPlanArea {
398
- id: string;
399
- name: string;
400
- type: 'main-hall' | 'breakout-room' | 'lobby' | 'kitchen' | 'storage' | 'restroom' | 'stage' | 'exhibition';
401
- coordinates: {
402
- x: number;
403
- y: number;
404
- width: number;
405
- height: number;
406
- };
407
- capacity?: number;
408
- amenities?: string[];
409
- }
410
- export interface VenueAvailability {
411
- date: string;
412
- slots: VenueTimeSlot[];
413
- }
414
- export interface VenueTimeSlot {
415
- id: string;
416
- startTime: string;
417
- endTime: string;
418
- isAvailable: boolean;
419
- bookingId?: string;
420
- price?: number;
421
- }
422
- export interface Venue {
423
- id: string;
424
- name: string;
425
- type: VenueType;
426
- status: VenueStatus;
427
- description: string;
428
- location: VenueLocation;
429
- capacity: VenueCapacity;
430
- size: {
431
- value: number;
432
- unit: 'sqft' | 'sqm';
433
- };
434
- amenities: VenueAmenity[];
435
- images: VenueImage[];
436
- pricing: VenuePricing;
437
- resources: VenueResource[];
438
- contactInfo: {
439
- name: string;
440
- email: string;
441
- phone: string;
442
- alternatePhone?: string;
443
- };
444
- operatingHours: {
445
- [key: string]: {
446
- open: string;
447
- close: string;
448
- isClosed: boolean;
449
- };
450
- };
451
- availability: VenueAvailability[];
452
- floorPlans: FloorPlan[];
453
- rules: string[];
454
- cancellationPolicy: string;
455
- setupTime: number;
456
- cleanupTime: number;
457
- rating: number;
458
- reviewCount: number;
459
- tags: string[];
460
- createdAt: string;
461
- updatedAt: string;
462
- }
463
- export interface VenueFilter {
464
- search?: string;
465
- type?: VenueType[];
466
- status?: VenueStatus[];
467
- amenities?: AmenityType[];
468
- capacity?: {
469
- min: number;
470
- max: number;
471
- layout: keyof VenueCapacity;
472
- };
473
- priceRange?: {
474
- min: number;
475
- max: number;
476
- };
477
- location?: {
478
- city?: string;
479
- state?: string;
480
- radius?: number;
481
- coordinates?: {
482
- lat: number;
483
- lng: number;
484
- };
485
- };
486
- availability?: {
487
- date: string;
488
- startTime: string;
489
- endTime: string;
490
- };
491
- rating?: number;
492
- tags?: string[];
493
- sortBy?: 'name' | 'price' | 'capacity' | 'rating' | 'created';
494
- sortOrder?: 'asc' | 'desc';
495
- page?: number;
496
- limit?: number;
497
- }
498
- export interface VenueBooking {
499
- id: string;
500
- venueId: string;
501
- eventId: string;
502
- eventName: string;
503
- date: string;
504
- startTime: string;
505
- endTime: string;
506
- setupStartTime: string;
507
- cleanupEndTime: string;
508
- status: 'pending' | 'confirmed' | 'cancelled';
509
- totalCost: number;
510
- deposit: number;
511
- depositStatus: 'pending' | 'paid' | 'refunded';
512
- resources: Array<{
513
- resourceId: string;
514
- quantity: number;
515
- cost: number;
516
- }>;
517
- specialRequests?: string;
518
- createdAt: string;
519
- updatedAt: string;
520
- }
521
- export type VenueFormData = Omit<Venue, 'id' | 'createdAt' | 'updatedAt' | 'rating' | 'reviewCount'>;
522
- export interface FormField {
523
- id: string;
524
- type: 'text' | 'email' | 'number' | 'select' | 'checkbox' | 'radio' | 'textarea' | 'date' | 'file';
525
- label: string;
526
- placeholder?: string;
527
- required: boolean;
528
- options?: string[];
529
- validation?: {
530
- min?: number;
531
- max?: number;
532
- pattern?: string;
533
- message?: string;
534
- };
535
- conditional?: {
536
- dependsOn: string;
537
- value: string | boolean;
538
- };
539
- order: number;
540
- }
541
- export interface RegistrationForm {
542
- id: string;
543
- name: string;
544
- description: string;
545
- eventId: string;
546
- fields: FormField[];
547
- isMultiStep: boolean;
548
- steps?: {
549
- id: string;
550
- title: string;
551
- description: string;
552
- fieldIds: string[];
553
- }[];
554
- settings: {
555
- allowEditing: boolean;
556
- requireApproval: boolean;
557
- sendConfirmationEmail: boolean;
558
- maxRegistrations?: number;
559
- };
560
- createdAt: Date;
561
- updatedAt: Date;
562
- }
563
- export interface TicketType {
564
- id: string;
565
- eventId: string;
566
- name: string;
567
- description: string;
568
- price: number;
569
- quantity: number;
570
- sold: number;
571
- isActive: boolean;
572
- saleStartDate: Date;
573
- saleEndDate: Date;
574
- settings: {
575
- minQuantity: number;
576
- maxQuantity: number;
577
- transferable: boolean;
578
- refundable: boolean;
579
- requireApproval: boolean;
580
- };
581
- perks?: string[];
582
- createdAt: Date;
583
- updatedAt: Date;
584
- }
585
- export interface PromoCode {
586
- id: string;
587
- code: string;
588
- description: string;
589
- type: 'percentage' | 'fixed' | 'bogo';
590
- value: number;
591
- maxUses: number;
592
- usedCount: number;
593
- applicableTicketTypes: string[];
594
- startDate: Date;
595
- endDate: Date;
596
- isActive: boolean;
597
- createdAt: Date;
598
- }
599
- export interface Registration {
600
- id: string;
601
- eventId: string;
602
- attendeeId: string;
603
- formData: Record<string, string | number | boolean>;
604
- ticketType: TicketType;
605
- quantity: number;
606
- totalAmount: number;
607
- promoCode?: PromoCode;
608
- discountAmount: number;
609
- status: 'pending' | 'approved' | 'rejected' | 'cancelled';
610
- paymentStatus: 'pending' | 'completed' | 'failed' | 'refunded';
611
- paymentId?: string;
612
- checkInStatus: 'not_checked_in' | 'checked_in' | 'no_show';
613
- checkInTime?: Date;
614
- notes?: string;
615
- createdAt: Date;
616
- updatedAt: Date;
617
- }
618
- export interface Attendee {
619
- id: string;
620
- firstName: string;
621
- lastName: string;
622
- email: string;
623
- phone?: string;
624
- organization?: string;
625
- registrations: Registration[];
626
- customFields: Record<string, string | number | boolean>;
627
- tags: string[];
628
- createdAt: Date;
629
- updatedAt: Date;
630
- }
631
- export interface Payment {
632
- id: string;
633
- registrationId: string;
634
- amount: number;
635
- currency: string;
636
- method: 'credit_card' | 'paypal' | 'bank_transfer' | 'cash';
637
- status: 'pending' | 'processing' | 'completed' | 'failed' | 'refunded';
638
- gateway: 'stripe' | 'paypal' | 'square' | 'manual';
639
- gatewayTransactionId?: string;
640
- processingFee: number;
641
- refundAmount?: number;
642
- refundReason?: string;
643
- metadata: Record<string, string | number | boolean>;
644
- createdAt: Date;
645
- updatedAt: Date;
646
- }
647
- export interface WaitlistEntry {
648
- id: string;
649
- eventId: string;
650
- ticketTypeId: string;
651
- attendeeId: string;
652
- position: number;
653
- notified: boolean;
654
- convertedToRegistration: boolean;
655
- registrationId?: string;
656
- expiresAt: Date;
657
- createdAt: Date;
658
- }
659
- export interface RegistrationAnalytics {
660
- eventId: string;
661
- totalRegistrations: number;
662
- totalRevenue: number;
663
- averageTicketPrice: number;
664
- registrationsByDate: Array<{
665
- date: string;
666
- count: number;
667
- revenue: number;
668
- }>;
669
- ticketTypeBreakdown: Array<{
670
- ticketType: TicketType;
671
- sold: number;
672
- revenue: number;
673
- }>;
674
- promoCodeUsage: Array<{
675
- promoCode: PromoCode;
676
- uses: number;
677
- discount: number;
678
- }>;
679
- refundStats: {
680
- totalRefunds: number;
681
- refundAmount: number;
682
- refundRate: number;
683
- };
684
- waitlistStats: {
685
- totalWaitlisted: number;
686
- conversionRate: number;
687
- };
688
- geographicDistribution: Array<{
689
- location: string;
690
- count: number;
691
- }>;
692
- }
693
- export interface AttendeeProfile {
694
- id: string;
695
- userId: string;
696
- firstName: string;
697
- lastName: string;
698
- email: string;
699
- phone?: string;
700
- company: string;
701
- title: string;
702
- avatar?: string;
703
- bio: string;
704
- interests: string[];
705
- skills: string[];
706
- goals: NetworkingGoal[];
707
- linkedIn?: string;
708
- twitter?: string;
709
- website?: string;
710
- location: {
711
- city: string;
712
- country: string;
713
- };
714
- availability: NetworkingTimeSlot[];
715
- preferences: {
716
- meetingDuration: number;
717
- preferredMeetingType: 'in-person' | 'virtual' | 'both';
718
- maxMeetingsPerDay: number;
719
- };
720
- isPublic: boolean;
721
- createdAt: string;
722
- updatedAt: string;
723
- }
724
- export interface NetworkingGoal {
725
- id: string;
726
- type: 'business' | 'learning' | 'partnership' | 'investment' | 'mentorship' | 'hiring' | 'other';
727
- description: string;
728
- priority: 'high' | 'medium' | 'low';
729
- }
730
- /** TimeSlot from networking module */
731
- export interface NetworkingTimeSlot {
732
- date: string;
733
- startTime: string;
734
- endTime: string;
735
- isAvailable: boolean;
736
- }
737
- export interface NetworkingMatch {
738
- id: string;
739
- profileA: AttendeeProfile;
740
- profileB: AttendeeProfile;
741
- matchScore: number;
742
- matchReasons: MatchReason[];
743
- status: 'suggested' | 'accepted' | 'declined' | 'connected';
744
- suggestedAt: string;
745
- respondedAt?: string;
746
- meeting?: Meeting;
747
- }
748
- export interface MatchReason {
749
- type: 'interest' | 'skill' | 'goal' | 'industry' | 'location';
750
- description: string;
751
- weight: number;
752
- }
753
- export interface Meeting {
754
- id: string;
755
- title: string;
756
- participants: AttendeeProfile[];
757
- scheduledAt: string;
758
- duration: number;
759
- type: 'in-person' | 'virtual';
760
- location?: string;
761
- virtualLink?: string;
762
- status: 'scheduled' | 'confirmed' | 'cancelled' | 'completed';
763
- notes?: string;
764
- reminders: MeetingReminder[];
765
- feedback?: MeetingFeedback[];
766
- createdAt: string;
767
- updatedAt: string;
768
- }
769
- export interface MeetingReminder {
770
- id: string;
771
- sendAt: string;
772
- type: 'email' | 'sms' | 'push';
773
- sent: boolean;
774
- }
775
- export interface MeetingFeedback {
776
- id: string;
777
- meetingId: string;
778
- attendeeId: string;
779
- rating: number;
780
- wasHelpful: boolean;
781
- wouldMeetAgain: boolean;
782
- comments?: string;
783
- createdAt: string;
784
- }
785
- export interface NetworkingLounge {
786
- id: string;
787
- name: string;
788
- description: string;
789
- topic: string;
790
- maxParticipants: number;
791
- currentParticipants: AttendeeProfile[];
792
- moderator?: AttendeeProfile;
793
- isActive: boolean;
794
- startTime: string;
795
- endTime: string;
796
- type: 'open' | 'topic-based' | 'industry-specific' | 'skill-based';
797
- tags: string[];
798
- joinUrl?: string;
799
- rules?: string[];
800
- }
801
- export interface SpeedNetworkingSession {
802
- id: string;
803
- eventId: string;
804
- name: string;
805
- description: string;
806
- startTime: string;
807
- duration: number;
808
- meetingDuration: number;
809
- breakDuration: number;
810
- maxParticipants: number;
811
- registeredParticipants: AttendeeProfile[];
812
- status: 'upcoming' | 'active' | 'completed' | 'cancelled';
813
- rounds: SpeedNetworkingRound[];
814
- waitlist: AttendeeProfile[];
815
- settings: {
816
- autoMatch: boolean;
817
- allowSkip: boolean;
818
- recordMeetings: boolean;
819
- };
820
- }
821
- export interface SpeedNetworkingRound {
822
- roundNumber: number;
823
- startTime: string;
824
- pairings: SpeedNetworkingPairing[];
825
- isCompleted: boolean;
826
- }
827
- export interface SpeedNetworkingPairing {
828
- participantA: AttendeeProfile;
829
- participantB: AttendeeProfile;
830
- tableNumber?: number;
831
- virtualRoomUrl?: string;
832
- status: 'waiting' | 'in-progress' | 'completed' | 'skipped';
833
- feedback?: {
834
- fromA?: MeetingFeedback;
835
- fromB?: MeetingFeedback;
836
- };
837
- }
838
- export interface NetworkingStats {
839
- totalConnections: number;
840
- totalMeetings: number;
841
- averageMatchScore: number;
842
- topInterests: Array<{
843
- interest: string;
844
- count: number;
845
- }>;
846
- connectionsByGoal: Array<{
847
- goal: string;
848
- count: number;
849
- }>;
850
- meetingsByType: {
851
- inPerson: number;
852
- virtual: number;
853
- };
854
- satisfactionRate: number;
855
- activeLoungeSessions: number;
856
- upcomingSpeedNetworking: number;
857
- }
858
- export interface ConnectionRequest {
859
- id: string;
860
- fromProfile: AttendeeProfile;
861
- toProfile: AttendeeProfile;
862
- message?: string;
863
- status: 'pending' | 'accepted' | 'declined';
864
- sentAt: string;
865
- respondedAt?: string;
866
- suggestedMeetingSlots?: NetworkingTimeSlot[];
867
- }
868
- export interface NetworkingPreferences {
869
- isOpenToNetworking: boolean;
870
- acceptsRandomMatches: boolean;
871
- industryPreferences: string[];
872
- goalPreferences: string[];
873
- minMatchScore: number;
874
- maxConnectionsPerEvent: number;
875
- blockedProfiles: string[];
876
- }
877
- export type SponsorshipLevel = 'platinum' | 'gold' | 'silver' | 'bronze' | 'custom';
878
- export type SponsorStatus = 'pending' | 'confirmed' | 'declined' | 'cancelled';
879
- export type ExhibitorStatus = 'pending' | 'confirmed' | 'setup' | 'active' | 'teardown' | 'completed';
880
- export type BoothSize = 'standard' | 'premium' | 'island' | 'custom';
881
- export type LeadSource = 'booth-scan' | 'virtual-booth' | 'session-attendance' | 'networking' | 'manual-entry';
882
- export type LeadStatus = 'new' | 'contacted' | 'qualified' | 'nurturing' | 'converted' | 'lost';
883
- export interface SponsorshipPackage {
884
- id: string;
885
- name: string;
886
- level: SponsorshipLevel;
887
- price: number;
888
- currency: string;
889
- benefits: string[];
890
- limitations: {
891
- logoSize?: string;
892
- boothSize?: BoothSize;
893
- sessions?: number;
894
- attendeePass?: number;
895
- emailBlasts?: number;
896
- socialPosts?: number;
897
- };
898
- visibility: {
899
- websitePlacement: 'header' | 'footer' | 'sidebar' | 'none';
900
- eventAppPlacement: boolean;
901
- signagePlacement: string[];
902
- virtualEventPlacement?: string[];
903
- };
904
- deliverables: Array<{
905
- item: string;
906
- deadline: string;
907
- status: 'pending' | 'received' | 'approved';
908
- }>;
909
- maxSponsors?: number;
910
- currentSponsors: number;
911
- isActive: boolean;
912
- }
913
- export interface Sponsor {
914
- id: string;
915
- companyName: string;
916
- logo: string;
917
- website: string;
918
- description: string;
919
- industry: string;
920
- contactPerson: {
921
- firstName: string;
922
- lastName: string;
923
- email: string;
924
- phone: string;
925
- title: string;
926
- };
927
- sponsorshipLevel: SponsorshipLevel;
928
- packageId: string;
929
- customBenefits?: string[];
930
- contractValue: number;
931
- paymentStatus: 'pending' | 'partial' | 'paid' | 'overdue';
932
- paymentSchedule: Array<{
933
- amount: number;
934
- dueDate: string;
935
- status: 'pending' | 'paid';
936
- invoiceId?: string;
937
- }>;
938
- status: SponsorStatus;
939
- startDate: string;
940
- endDate: string;
941
- events: string[];
942
- materials: Array<{
943
- type: 'logo' | 'banner' | 'video' | 'brochure' | 'other';
944
- url: string;
945
- name: string;
946
- uploadedAt: string;
947
- }>;
948
- metrics: {
949
- impressions: number;
950
- clicks: number;
951
- leads: number;
952
- boothVisits: number;
953
- sessionAttendance: number;
954
- roi: number;
955
- };
956
- notes: string;
957
- tags: string[];
958
- createdAt: string;
959
- updatedAt: string;
960
- }
961
- export interface Exhibitor {
962
- id: string;
963
- sponsorId?: string;
964
- companyName: string;
965
- logo: string;
966
- website: string;
967
- description: string;
968
- industry: string;
969
- products: string[];
970
- contactPerson: {
971
- firstName: string;
972
- lastName: string;
973
- email: string;
974
- phone: string;
975
- title: string;
976
- };
977
- booth: {
978
- number: string;
979
- size: BoothSize;
980
- location: {
981
- hall: string;
982
- row: string;
983
- position: {
984
- x: number;
985
- y: number;
986
- };
987
- };
988
- setup: {
989
- date: string;
990
- time: string;
991
- requirements: string[];
992
- };
993
- teardown: {
994
- date: string;
995
- time: string;
996
- };
997
- electricity: boolean;
998
- internet: boolean;
999
- additionalRequirements: string[];
1000
- };
1001
- virtualBooth?: {
1002
- enabled: boolean;
1003
- url: string;
1004
- features: Array<'video-chat' | 'document-download' | 'product-demo' | 'calendar-booking'>;
1005
- customization: {
1006
- bannerImage: string;
1007
- backgroundColor: string;
1008
- accentColor: string;
1009
- videos: Array<{
1010
- title: string;
1011
- url: string;
1012
- thumbnail: string;
1013
- }>;
1014
- documents: Array<{
1015
- title: string;
1016
- url: string;
1017
- type: string;
1018
- }>;
1019
- };
1020
- };
1021
- staff: Array<{
1022
- name: string;
1023
- email: string;
1024
- role: string;
1025
- badgeId: string;
1026
- shifts: Array<{
1027
- date: string;
1028
- startTime: string;
1029
- endTime: string;
1030
- }>;
1031
- }>;
1032
- status: ExhibitorStatus;
1033
- eventId: string;
1034
- cost: number;
1035
- paymentStatus: 'pending' | 'paid' | 'refunded';
1036
- insurance: {
1037
- required: boolean;
1038
- provided: boolean;
1039
- policyNumber?: string;
1040
- expiryDate?: string;
1041
- };
1042
- shipments: Array<{
1043
- trackingNumber: string;
1044
- carrier: string;
1045
- status: 'in-transit' | 'delivered' | 'returned';
1046
- deliveryDate?: string;
1047
- }>;
1048
- metrics: {
1049
- boothVisits: number;
1050
- uniqueVisitors: number;
1051
- leadsCollected: number;
1052
- documentsDownloaded: number;
1053
- averageDwellTime: number;
1054
- peakHours: Array<{
1055
- hour: number;
1056
- visitors: number;
1057
- }>;
1058
- };
1059
- createdAt: string;
1060
- updatedAt: string;
1061
- }
1062
- export interface Lead {
1063
- id: string;
1064
- eventId: string;
1065
- sponsorId?: string;
1066
- exhibitorId?: string;
1067
- source: LeadSource;
1068
- captureDate: string;
1069
- captureTime: string;
1070
- firstName: string;
1071
- lastName: string;
1072
- email: string;
1073
- phone?: string;
1074
- company?: string;
1075
- title?: string;
1076
- interests: string[];
1077
- budget?: string;
1078
- timeline?: string;
1079
- notes?: string;
1080
- status: LeadStatus;
1081
- score: number;
1082
- qualificationCriteria: {
1083
- hasbudget: boolean;
1084
- hasAuthority: boolean;
1085
- hasNeed: boolean;
1086
- hasTimeline: boolean;
1087
- };
1088
- interactions: Array<{
1089
- type: 'email' | 'phone' | 'meeting' | 'booth-visit' | 'document-download' | 'virtual-booth';
1090
- date: string;
1091
- notes?: string;
1092
- outcome?: string;
1093
- }>;
1094
- sessionsAttended: string[];
1095
- documentsDownloaded: Array<{
1096
- name: string;
1097
- url: string;
1098
- downloadDate: string;
1099
- }>;
1100
- customFields: Record<string, string | number | boolean>;
1101
- consent: {
1102
- marketing: boolean;
1103
- dataProcessing: boolean;
1104
- timestamp: string;
1105
- };
1106
- assignedTo?: string;
1107
- tags: string[];
1108
- createdAt: string;
1109
- updatedAt: string;
1110
- }
1111
- export interface ExhibitionFloorPlan {
1112
- id: string;
1113
- eventId: string;
1114
- name: string;
1115
- hall: string;
1116
- dimensions: {
1117
- width: number;
1118
- height: number;
1119
- unit: 'feet' | 'meters';
1120
- };
1121
- booths: Array<{
1122
- id: string;
1123
- number: string;
1124
- size: BoothSize;
1125
- position: {
1126
- x: number;
1127
- y: number;
1128
- };
1129
- dimensions: {
1130
- width: number;
1131
- height: number;
1132
- };
1133
- exhibitorId?: string;
1134
- status: 'available' | 'reserved' | 'occupied';
1135
- price: number;
1136
- features: string[];
1137
- }>;
1138
- amenities: Array<{
1139
- type: 'entrance' | 'exit' | 'restroom' | 'food-court' | 'lounge' | 'storage';
1140
- position: {
1141
- x: number;
1142
- y: number;
1143
- };
1144
- label: string;
1145
- }>;
1146
- aisles: Array<{
1147
- start: {
1148
- x: number;
1149
- y: number;
1150
- };
1151
- end: {
1152
- x: number;
1153
- y: number;
1154
- };
1155
- width: number;
1156
- }>;
1157
- restrictions: Array<{
1158
- area: {
1159
- x: number;
1160
- y: number;
1161
- width: number;
1162
- height: number;
1163
- };
1164
- type: 'no-booth' | 'fire-lane' | 'utility';
1165
- }>;
1166
- scale: number;
1167
- backgroundImage?: string;
1168
- createdAt: string;
1169
- updatedAt: string;
1170
- }
1171
- export interface SponsorMetrics {
1172
- totalSponsors: number;
1173
- totalRevenue: number;
1174
- averagePackageValue: number;
1175
- levelDistribution: Array<{
1176
- level: SponsorshipLevel;
1177
- count: number;
1178
- revenue: number;
1179
- }>;
1180
- topIndustries: Array<{
1181
- industry: string;
1182
- count: number;
1183
- percentage: number;
1184
- }>;
1185
- retentionRate: number;
1186
- leadConversionRate: number;
1187
- averageROI: number;
1188
- monthlyTrends: Array<{
1189
- month: string;
1190
- newSponsors: number;
1191
- revenue: number;
1192
- renewals: number;
1193
- }>;
1194
- }
1195
- export interface SponsorFilter {
1196
- level?: SponsorshipLevel[];
1197
- status?: SponsorStatus[];
1198
- industry?: string[];
1199
- events?: string[];
1200
- paymentStatus?: string[];
1201
- dateRange?: {
1202
- start: string;
1203
- end: string;
1204
- };
1205
- search?: string;
1206
- minValue?: number;
1207
- maxValue?: number;
1208
- tags?: string[];
1209
- sortBy?: 'company' | 'value' | 'created' | 'status';
1210
- sortOrder?: 'asc' | 'desc';
1211
- page?: number;
1212
- limit?: number;
1213
- }
1214
- export interface ExhibitorFilter {
1215
- status?: ExhibitorStatus[];
1216
- boothSize?: BoothSize[];
1217
- hall?: string[];
1218
- industry?: string[];
1219
- hasVirtualBooth?: boolean;
1220
- eventId?: string;
1221
- search?: string;
1222
- sortBy?: 'company' | 'booth' | 'created' | 'status';
1223
- sortOrder?: 'asc' | 'desc';
1224
- page?: number;
1225
- limit?: number;
1226
- }
1227
- export interface LeadFilter {
1228
- status?: LeadStatus[];
1229
- source?: LeadSource[];
1230
- sponsorId?: string;
1231
- exhibitorId?: string;
1232
- eventId?: string;
1233
- scoreRange?: {
1234
- min: number;
1235
- max: number;
1236
- };
1237
- dateRange?: {
1238
- start: string;
1239
- end: string;
1240
- };
1241
- assignedTo?: string;
1242
- tags?: string[];
1243
- search?: string;
1244
- sortBy?: 'date' | 'score' | 'company' | 'status';
1245
- sortOrder?: 'asc' | 'desc';
1246
- page?: number;
1247
- limit?: number;
1248
- }
1249
- export type Currency = 'USD' | 'EUR' | 'GBP' | 'CAD' | 'AUD' | 'JPY' | 'INR' | 'CNY';
1250
- export type InvoiceStatus = 'draft' | 'sent' | 'viewed' | 'paid' | 'partial' | 'overdue' | 'cancelled' | 'refunded';
1251
- export type PaymentMethod = 'credit_card' | 'debit_card' | 'bank_transfer' | 'paypal' | 'stripe' | 'cash' | 'check' | 'other';
1252
- export type TransactionType = 'income' | 'expense' | 'refund' | 'adjustment';
1253
- export type ExpenseCategory = 'venue' | 'equipment' | 'catering' | 'marketing' | 'staff' | 'speakers' | 'materials' | 'transport' | 'technology' | 'insurance' | 'permits' | 'utilities' | 'miscellaneous';
1254
- export type TaxType = 'sales_tax' | 'vat' | 'gst' | 'service_tax' | 'other';
1255
- export type BudgetStatus = 'draft' | 'approved' | 'active' | 'closed' | 'overrun';
1256
- export type ReportType = 'profit_loss' | 'cash_flow' | 'balance_sheet' | 'tax_summary' | 'budget_variance' | 'revenue_by_event' | 'expense_breakdown';
1257
- export type ReconciliationStatus = 'pending' | 'matched' | 'unmatched' | 'disputed' | 'resolved';
1258
- export interface CurrencyRate {
1259
- from: Currency;
1260
- to: Currency;
1261
- rate: number;
1262
- date: string;
1263
- }
1264
- export interface Invoice {
1265
- id: string;
1266
- invoiceNumber: string;
1267
- eventId?: string;
1268
- eventName?: string;
1269
- status: InvoiceStatus;
1270
- billTo: {
1271
- name: string;
1272
- email: string;
1273
- phone?: string;
1274
- company?: string;
1275
- address: {
1276
- street: string;
1277
- city: string;
1278
- state: string;
1279
- country: string;
1280
- zipCode: string;
1281
- };
1282
- taxId?: string;
1283
- };
1284
- issueDate: string;
1285
- dueDate: string;
1286
- paymentTerms: string;
1287
- currency: Currency;
1288
- items: Array<{
1289
- id: string;
1290
- description: string;
1291
- quantity: number;
1292
- unitPrice: number;
1293
- taxRate: number;
1294
- taxAmount: number;
1295
- discount?: number;
1296
- total: number;
1297
- }>;
1298
- subtotal: number;
1299
- taxTotal: number;
1300
- discountTotal: number;
1301
- total: number;
1302
- amountPaid: number;
1303
- amountDue: number;
1304
- payments: Array<{
1305
- id: string;
1306
- date: string;
1307
- amount: number;
1308
- method: PaymentMethod;
1309
- reference?: string;
1310
- notes?: string;
1311
- }>;
1312
- notes?: string;
1313
- terms?: string;
1314
- attachments?: Array<{
1315
- name: string;
1316
- url: string;
1317
- }>;
1318
- createdAt: string;
1319
- updatedAt: string;
1320
- createdBy: string;
1321
- sentAt?: string;
1322
- viewedAt?: string;
1323
- paidAt?: string;
1324
- }
1325
- export interface Transaction {
1326
- id: string;
1327
- type: TransactionType;
1328
- category: ExpenseCategory;
1329
- eventId?: string;
1330
- eventName?: string;
1331
- invoiceId?: string;
1332
- date: string;
1333
- description: string;
1334
- amount: number;
1335
- currency: Currency;
1336
- exchangeRate?: number;
1337
- baseAmount: number;
1338
- paymentMethod: PaymentMethod;
1339
- reference?: string;
1340
- party: {
1341
- type: 'vendor' | 'customer' | 'internal';
1342
- name: string;
1343
- email?: string;
1344
- phone?: string;
1345
- taxId?: string;
1346
- };
1347
- taxAmount?: number;
1348
- taxRate?: number;
1349
- taxType?: TaxType;
1350
- accountCode?: string;
1351
- costCenter?: string;
1352
- project?: string;
1353
- reconciliationStatus: ReconciliationStatus;
1354
- bankStatementLine?: string;
1355
- reconciledAt?: string;
1356
- reconciledBy?: string;
1357
- receipts?: Array<{
1358
- name: string;
1359
- url: string;
1360
- uploadedAt: string;
1361
- }>;
1362
- notes?: string;
1363
- tags?: string[];
1364
- createdAt: string;
1365
- updatedAt: string;
1366
- createdBy: string;
1367
- approvedBy?: string;
1368
- approvedAt?: string;
1369
- }
1370
- export interface Budget {
1371
- id: string;
1372
- name: string;
1373
- description: string;
1374
- eventId?: string;
1375
- eventName?: string;
1376
- status: BudgetStatus;
1377
- startDate: string;
1378
- endDate: string;
1379
- fiscalYear: number;
1380
- quarter?: number;
1381
- currency: Currency;
1382
- categories: Array<{
1383
- category: ExpenseCategory;
1384
- planned: number;
1385
- actual: number;
1386
- committed: number;
1387
- variance: number;
1388
- variancePercentage: number;
1389
- items: Array<{
1390
- name: string;
1391
- description?: string;
1392
- planned: number;
1393
- actual: number;
1394
- vendor?: string;
1395
- }>;
1396
- }>;
1397
- totalPlanned: number;
1398
- totalActual: number;
1399
- totalCommitted: number;
1400
- totalVariance: number;
1401
- totalVariancePercentage: number;
1402
- alerts: Array<{
1403
- type: 'overrun' | 'threshold' | 'underspend';
1404
- category?: ExpenseCategory;
1405
- message: string;
1406
- severity: 'low' | 'medium' | 'high';
1407
- date: string;
1408
- }>;
1409
- thresholds: {
1410
- warningPercentage: number;
1411
- criticalPercentage: number;
1412
- };
1413
- approvers: string[];
1414
- approvalHistory: Array<{
1415
- action: 'submitted' | 'approved' | 'rejected' | 'revised';
1416
- by: string;
1417
- date: string;
1418
- comments?: string;
1419
- }>;
1420
- createdAt: string;
1421
- updatedAt: string;
1422
- createdBy: string;
1423
- lastReviewedAt?: string;
1424
- lastReviewedBy?: string;
1425
- }
1426
- export interface TaxConfiguration {
1427
- id: string;
1428
- name: string;
1429
- type: TaxType;
1430
- rate: number;
1431
- country: string;
1432
- state?: string;
1433
- applicableCategories: ExpenseCategory[];
1434
- exemptCategories: ExpenseCategory[];
1435
- rules: Array<{
1436
- condition: string;
1437
- rate: number;
1438
- description: string;
1439
- }>;
1440
- registrationThreshold?: number;
1441
- filingFrequency: 'monthly' | 'quarterly' | 'annually';
1442
- isActive: boolean;
1443
- effectiveFrom: string;
1444
- effectiveTo?: string;
1445
- createdAt: string;
1446
- updatedAt: string;
1447
- createdBy: string;
1448
- }
1449
- export interface PaymentReconciliation {
1450
- id: string;
1451
- date: string;
1452
- accountName: string;
1453
- accountNumber: string;
1454
- statementBalance: number;
1455
- statementDate: string;
1456
- statementLines: Array<{
1457
- id: string;
1458
- date: string;
1459
- description: string;
1460
- amount: number;
1461
- balance: number;
1462
- matched: boolean;
1463
- transactionId?: string;
1464
- }>;
1465
- systemBalance: number;
1466
- transactions: Transaction[];
1467
- reconciledBalance: number;
1468
- difference: number;
1469
- matchedCount: number;
1470
- unmatchedCount: number;
1471
- unmatchedStatementLines: Array<{
1472
- lineId: string;
1473
- amount: number;
1474
- suggestedMatches?: Transaction[];
1475
- }>;
1476
- unmatchedTransactions: Transaction[];
1477
- status: 'in_progress' | 'completed' | 'reviewed';
1478
- completedAt?: string;
1479
- completedBy?: string;
1480
- reviewedAt?: string;
1481
- reviewedBy?: string;
1482
- adjustments: Array<{
1483
- type: 'bank_fee' | 'interest' | 'error_correction' | 'other';
1484
- amount: number;
1485
- description: string;
1486
- createdBy: string;
1487
- createdAt: string;
1488
- }>;
1489
- notes?: string;
1490
- }
1491
- export interface FinancialReport {
1492
- id: string;
1493
- type: ReportType;
1494
- name: string;
1495
- description?: string;
1496
- parameters: {
1497
- startDate: string;
1498
- endDate: string;
1499
- eventIds?: string[];
1500
- categories?: ExpenseCategory[];
1501
- currency: Currency;
1502
- includeProjections?: boolean;
1503
- comparePeriod?: {
1504
- startDate: string;
1505
- endDate: string;
1506
- };
1507
- };
1508
- data: Record<string, unknown>;
1509
- summary: {
1510
- totalRevenue?: number;
1511
- totalExpenses?: number;
1512
- netProfit?: number;
1513
- profitMargin?: number;
1514
- cashFlow?: number;
1515
- outstandingInvoices?: number;
1516
- overdueAmount?: number;
1517
- [key: string]: number | undefined;
1518
- };
1519
- charts?: Array<{
1520
- type: 'line' | 'bar' | 'pie' | 'area' | 'donut';
1521
- title: string;
1522
- data: unknown;
1523
- options?: unknown;
1524
- }>;
1525
- exportFormats: ('pdf' | 'excel' | 'csv')[];
1526
- generatedAt: string;
1527
- generatedBy: string;
1528
- lastViewedAt?: string;
1529
- sharedWith?: string[];
1530
- }
1531
- export interface FinancialMetrics {
1532
- totalRevenue: number;
1533
- revenueByEvent: Array<{
1534
- eventId: string;
1535
- eventName: string;
1536
- revenue: number;
1537
- percentage: number;
1538
- }>;
1539
- revenueByMonth: Array<{
1540
- month: string;
1541
- revenue: number;
1542
- growth: number;
1543
- }>;
1544
- averageTransactionValue: number;
1545
- totalExpenses: number;
1546
- expensesByCategory: Array<{
1547
- category: ExpenseCategory;
1548
- amount: number;
1549
- percentage: number;
1550
- }>;
1551
- expensesByMonth: Array<{
1552
- month: string;
1553
- expenses: number;
1554
- }>;
1555
- grossProfit: number;
1556
- netProfit: number;
1557
- profitMargin: number;
1558
- profitByEvent: Array<{
1559
- eventId: string;
1560
- eventName: string;
1561
- profit: number;
1562
- margin: number;
1563
- }>;
1564
- cashInflow: number;
1565
- cashOutflow: number;
1566
- netCashFlow: number;
1567
- cashFlowByMonth: Array<{
1568
- month: string;
1569
- inflow: number;
1570
- outflow: number;
1571
- net: number;
1572
- }>;
1573
- totalOutstanding: number;
1574
- overdueInvoices: number;
1575
- overdueAmount: number;
1576
- averageDaysToPayment: number;
1577
- budgetUtilization: number;
1578
- budgetVariance: number;
1579
- categoriesOverBudget: ExpenseCategory[];
1580
- totalTaxCollected: number;
1581
- totalTaxPaid: number;
1582
- taxByType: Array<{
1583
- type: TaxType;
1584
- collected: number;
1585
- paid: number;
1586
- }>;
1587
- periodComparison?: {
1588
- revenuGrowth: number;
1589
- expenseGrowth: number;
1590
- profitGrowth: number;
1591
- };
1592
- }
1593
- export interface FinancialSettings {
1594
- baseCurrency: Currency;
1595
- fiscalYearStart: {
1596
- month: number;
1597
- day: number;
1598
- };
1599
- invoicePrefix: string;
1600
- nextInvoiceNumber: number;
1601
- defaultPaymentTerms: string;
1602
- invoiceFooter?: string;
1603
- defaultTaxRate: number;
1604
- taxConfigurations: TaxConfiguration[];
1605
- accountingMethod: 'cash' | 'accrual';
1606
- chartOfAccounts: Array<{
1607
- code: string;
1608
- name: string;
1609
- type: 'asset' | 'liability' | 'equity' | 'revenue' | 'expense';
1610
- parent?: string;
1611
- }>;
1612
- expenseApprovalThreshold: number;
1613
- invoiceApprovalRequired: boolean;
1614
- budgetApprovers: string[];
1615
- bankConnections?: Array<{
1616
- bankName: string;
1617
- accountNumber: string;
1618
- lastSync: string;
1619
- isActive: boolean;
1620
- }>;
1621
- paymentGateways?: Array<{
1622
- provider: string;
1623
- isActive: boolean;
1624
- settings: Record<string, unknown>;
1625
- }>;
1626
- notifications: {
1627
- overdueInvoices: boolean;
1628
- budgetAlerts: boolean;
1629
- largeTransactions: boolean;
1630
- reconciliationReminders: boolean;
1631
- };
1632
- }
1633
- export interface Employee {
1634
- id: string;
1635
- employeeId: string;
1636
- firstName: string;
1637
- lastName: string;
1638
- email: string;
1639
- phone?: string;
1640
- avatar?: string;
1641
- department: string;
1642
- position: string;
1643
- manager?: string;
1644
- startDate: string;
1645
- status: 'active' | 'inactive' | 'terminated' | 'on_leave';
1646
- salary?: number;
1647
- hourlyRate?: number;
1648
- employmentType: 'full_time' | 'part_time' | 'contract' | 'intern';
1649
- location: string;
1650
- skills: string[];
1651
- emergencyContact?: {
1652
- name: string;
1653
- relationship: string;
1654
- phone: string;
1655
- email?: string;
1656
- };
1657
- address?: {
1658
- street: string;
1659
- city: string;
1660
- state: string;
1661
- zipCode: string;
1662
- country: string;
1663
- };
1664
- }
1665
- export interface TimeEntry {
1666
- id: string;
1667
- employeeId: string;
1668
- date: string;
1669
- clockIn: string;
1670
- clockOut?: string;
1671
- breakStart?: string;
1672
- breakEnd?: string;
1673
- totalHours: number;
1674
- overtimeHours: number;
1675
- status: 'pending' | 'approved' | 'rejected';
1676
- approvedBy?: string;
1677
- approvedAt?: string;
1678
- notes?: string;
1679
- location?: string;
1680
- project?: string;
1681
- }
1682
- export interface LeaveRequest {
1683
- id: string;
1684
- employeeId: string;
1685
- type: 'vacation' | 'sick' | 'personal' | 'maternity' | 'paternity' | 'bereavement' | 'emergency';
1686
- startDate: string;
1687
- endDate: string;
1688
- totalDays: number;
1689
- reason: string;
1690
- status: 'pending' | 'approved' | 'rejected' | 'cancelled';
1691
- requestedAt: string;
1692
- approvedBy?: string;
1693
- approvedAt?: string;
1694
- rejectionReason?: string;
1695
- documents?: string[];
1696
- }
1697
- export interface LeaveBalance {
1698
- employeeId: string;
1699
- vacation: {
1700
- accrued: number;
1701
- used: number;
1702
- remaining: number;
1703
- };
1704
- sick: {
1705
- accrued: number;
1706
- used: number;
1707
- remaining: number;
1708
- };
1709
- personal: {
1710
- accrued: number;
1711
- used: number;
1712
- remaining: number;
1713
- };
1714
- year: number;
1715
- }
1716
- export interface PayrollRecord {
1717
- id: string;
1718
- employeeId: string;
1719
- payPeriod: {
1720
- start: string;
1721
- end: string;
1722
- };
1723
- grossPay: number;
1724
- netPay: number;
1725
- regularHours: number;
1726
- overtimeHours: number;
1727
- regularRate: number;
1728
- overtimeRate: number;
1729
- deductions: {
1730
- federal_tax: number;
1731
- state_tax: number;
1732
- social_security: number;
1733
- medicare: number;
1734
- health_insurance?: number;
1735
- dental_insurance?: number;
1736
- retirement_401k?: number;
1737
- other?: number;
1738
- };
1739
- benefits: {
1740
- health_insurance?: number;
1741
- dental_insurance?: number;
1742
- vision_insurance?: number;
1743
- life_insurance?: number;
1744
- retirement_match?: number;
1745
- };
1746
- status: 'draft' | 'processed' | 'paid' | 'cancelled';
1747
- processedAt?: string;
1748
- paidAt?: string;
1749
- }
1750
- export interface Department {
1751
- id: string;
1752
- name: string;
1753
- description?: string;
1754
- manager: string;
1755
- budget?: number;
1756
- employeeCount: number;
1757
- }
1758
- export interface Position {
1759
- id: string;
1760
- title: string;
1761
- department: string;
1762
- description?: string;
1763
- requirements?: string[];
1764
- salaryRange?: {
1765
- min: number;
1766
- max: number;
1767
- };
1768
- isActive: boolean;
1769
- }
1770
- export interface HolidayCalendar {
1771
- id: string;
1772
- name: string;
1773
- date: string;
1774
- type: 'federal' | 'company' | 'floating';
1775
- mandatory: boolean;
1776
- description?: string;
1777
- }
1778
- export interface AttendanceReport {
1779
- employeeId: string;
1780
- period: {
1781
- start: string;
1782
- end: string;
1783
- };
1784
- totalDays: number;
1785
- presentDays: number;
1786
- absentDays: number;
1787
- lateDays: number;
1788
- totalHours: number;
1789
- averageHoursPerDay: number;
1790
- attendanceRate: number;
1791
- }
1792
- export interface PayrollSummary {
1793
- period: {
1794
- start: string;
1795
- end: string;
1796
- };
1797
- totalEmployees: number;
1798
- totalGrossPay: number;
1799
- totalNetPay: number;
1800
- totalDeductions: number;
1801
- totalBenefits: number;
1802
- averageGrossPay: number;
1803
- averageNetPay: number;
1804
- }
1805
- export interface PerformanceReview {
1806
- id: string;
1807
- employeeId: string;
1808
- reviewerId: string;
1809
- reviewCycle: string;
1810
- reviewType: 'annual' | 'mid_year' | 'quarterly' | 'probation' | '360_degree';
1811
- status: 'draft' | 'in_progress' | 'completed' | 'acknowledged';
1812
- overallRating: 1 | 2 | 3 | 4 | 5;
1813
- createdAt: string;
1814
- completedAt?: string;
1815
- acknowledgedAt?: string;
1816
- selfAssessment?: {
1817
- submittedAt: string;
1818
- achievements: string;
1819
- challenges: string;
1820
- goals: string;
1821
- rating: 1 | 2 | 3 | 4 | 5;
1822
- };
1823
- managerReview?: {
1824
- submittedAt: string;
1825
- strengths: string;
1826
- areasForImprovement: string;
1827
- achievements: string;
1828
- rating: 1 | 2 | 3 | 4 | 5;
1829
- };
1830
- feedback360?: Array<{
1831
- reviewerId: string;
1832
- relationship: 'peer' | 'subordinate' | 'other';
1833
- submittedAt: string;
1834
- feedback: string;
1835
- rating: 1 | 2 | 3 | 4 | 5;
1836
- }>;
1837
- categories: Array<{
1838
- name: string;
1839
- weight: number;
1840
- rating: 1 | 2 | 3 | 4 | 5;
1841
- comments: string;
1842
- }>;
1843
- nextReviewDate?: string;
1844
- }
1845
- export interface Goal {
1846
- id: string;
1847
- employeeId: string;
1848
- title: string;
1849
- description: string;
1850
- category: 'individual' | 'team' | 'company';
1851
- type: 'performance' | 'development' | 'project' | 'behavioral';
1852
- status: 'not_started' | 'in_progress' | 'completed' | 'overdue' | 'cancelled';
1853
- priority: 'low' | 'medium' | 'high' | 'critical';
1854
- startDate: string;
1855
- targetDate: string;
1856
- completedDate?: string;
1857
- progress: number;
1858
- milestones: Array<{
1859
- id: string;
1860
- title: string;
1861
- dueDate: string;
1862
- completed: boolean;
1863
- completedDate?: string;
1864
- }>;
1865
- keyResults: Array<{
1866
- id: string;
1867
- description: string;
1868
- target: number;
1869
- current: number;
1870
- unit: string;
1871
- }>;
1872
- assignedBy: string;
1873
- lastUpdated: string;
1874
- }
1875
- export interface PerformanceImprovement {
1876
- id: string;
1877
- employeeId: string;
1878
- managerId: string;
1879
- startDate: string;
1880
- endDate: string;
1881
- status: 'active' | 'completed' | 'extended' | 'failed';
1882
- reason: string;
1883
- objectives: Array<{
1884
- id: string;
1885
- description: string;
1886
- targetDate: string;
1887
- completed: boolean;
1888
- notes?: string;
1889
- }>;
1890
- checkIns: Array<{
1891
- date: string;
1892
- notes: string;
1893
- progress: 'on_track' | 'needs_attention' | 'off_track';
1894
- }>;
1895
- outcome?: {
1896
- date: string;
1897
- decision: 'successful' | 'extended' | 'termination';
1898
- notes: string;
1899
- };
1900
- }
1901
- export interface ReviewTemplate {
1902
- id: string;
1903
- name: string;
1904
- description: string;
1905
- type: 'annual' | 'mid_year' | 'quarterly' | 'probation' | '360_degree';
1906
- categories: Array<{
1907
- name: string;
1908
- weight: number;
1909
- description: string;
1910
- criteria: string[];
1911
- }>;
1912
- ratingScale: {
1913
- min: number;
1914
- max: number;
1915
- labels: Record<number, string>;
1916
- };
1917
- isActive: boolean;
1918
- createdAt: string;
1919
- updatedAt: string;
1920
- }
1921
- export interface ReviewCycle {
1922
- id: string;
1923
- name: string;
1924
- year: number;
1925
- quarter?: number;
1926
- type: 'annual' | 'mid_year' | 'quarterly';
1927
- startDate: string;
1928
- endDate: string;
1929
- status: 'planning' | 'active' | 'completed' | 'cancelled';
1930
- phases: {
1931
- selfAssessment: {
1932
- startDate: string;
1933
- endDate: string;
1934
- };
1935
- managerReview: {
1936
- startDate: string;
1937
- endDate: string;
1938
- };
1939
- calibration?: {
1940
- startDate: string;
1941
- endDate: string;
1942
- };
1943
- feedback: {
1944
- startDate: string;
1945
- endDate: string;
1946
- };
1947
- };
1948
- eligibleEmployees: string[];
1949
- completedReviews: number;
1950
- totalReviews: number;
1951
- }
1952
- export interface JobPosting {
1953
- id: string;
1954
- title: string;
1955
- department: string;
1956
- location: string;
1957
- employmentType: 'full_time' | 'part_time' | 'contract' | 'intern';
1958
- experienceLevel: 'entry' | 'mid' | 'senior' | 'lead' | 'executive';
1959
- salaryRange?: {
1960
- min: number;
1961
- max: number;
1962
- currency: string;
1963
- };
1964
- description: string;
1965
- requirements: string[];
1966
- responsibilities: string[];
1967
- skills: {
1968
- required: string[];
1969
- preferred: string[];
1970
- };
1971
- benefits?: string[];
1972
- openDate: string;
1973
- closeDate?: string;
1974
- status: 'draft' | 'active' | 'closed' | 'on_hold';
1975
- postedBy: string;
1976
- hiringManager: string;
1977
- recruiters: string[];
1978
- targetHireDate?: string;
1979
- openPositions: number;
1980
- filledPositions: number;
1981
- applicationDeadline?: string;
1982
- jobBoards: string[];
1983
- internalPosting: boolean;
1984
- externalPosting: boolean;
1985
- }
1986
- export interface Candidate {
1987
- id: string;
1988
- jobPostingId: string;
1989
- firstName: string;
1990
- lastName: string;
1991
- email: string;
1992
- phone?: string;
1993
- avatar?: string;
1994
- currentCompany?: string;
1995
- currentPosition?: string;
1996
- location: string;
1997
- source: 'linkedin' | 'indeed' | 'company_website' | 'referral' | 'agency' | 'job_board' | 'other';
1998
- referredBy?: string;
1999
- resumeUrl?: string;
2000
- portfolioUrl?: string;
2001
- linkedinUrl?: string;
2002
- coverLetter?: string;
2003
- appliedDate: string;
2004
- status: 'applied' | 'screening' | 'interview' | 'offer' | 'hired' | 'rejected' | 'withdrawn';
2005
- stage: 'new' | 'phone_screen' | 'technical' | 'onsite' | 'final' | 'offer' | 'background_check';
2006
- rating?: number;
2007
- notes?: string;
2008
- tags?: string[];
2009
- experience: {
2010
- years: number;
2011
- relevantYears: number;
2012
- };
2013
- education?: {
2014
- degree: string;
2015
- field: string;
2016
- school: string;
2017
- graduationYear?: number;
2018
- }[];
2019
- skills: string[];
2020
- languages?: string[];
2021
- salary?: {
2022
- current?: number;
2023
- expected: number;
2024
- negotiable: boolean;
2025
- };
2026
- availability?: {
2027
- startDate: string;
2028
- noticePeriod?: string;
2029
- };
2030
- assessments?: Array<{
2031
- type: string;
2032
- score: number;
2033
- date: string;
2034
- }>;
2035
- }
2036
- export interface Interview {
2037
- id: string;
2038
- candidateId: string;
2039
- jobPostingId: string;
2040
- type: 'phone' | 'video' | 'onsite' | 'technical' | 'behavioral' | 'panel' | 'final';
2041
- scheduledDate: string;
2042
- duration: number;
2043
- location?: string;
2044
- meetingLink?: string;
2045
- interviewers: Array<{
2046
- id: string;
2047
- name: string;
2048
- role: string;
2049
- email: string;
2050
- }>;
2051
- status: 'scheduled' | 'completed' | 'cancelled' | 'rescheduled' | 'no_show';
2052
- feedback?: Array<{
2053
- interviewerId: string;
2054
- rating: number;
2055
- strengths: string[];
2056
- weaknesses: string[];
2057
- technicalSkills?: number;
2058
- communicationSkills?: number;
2059
- cultureFit?: number;
2060
- recommendation: 'strong_yes' | 'yes' | 'neutral' | 'no' | 'strong_no';
2061
- notes: string;
2062
- submittedAt: string;
2063
- }>;
2064
- questions?: string[];
2065
- notes?: string;
2066
- result?: 'pass' | 'fail' | 'undecided';
2067
- nextSteps?: string;
2068
- }
2069
- export interface JobOffer {
2070
- id: string;
2071
- candidateId: string;
2072
- jobPostingId: string;
2073
- offerDate: string;
2074
- expiryDate: string;
2075
- startDate: string;
2076
- position: string;
2077
- department: string;
2078
- reportingTo: string;
2079
- employmentType: 'full_time' | 'part_time' | 'contract' | 'intern';
2080
- salary: {
2081
- base: number;
2082
- currency: string;
2083
- frequency: 'annual' | 'monthly' | 'hourly';
2084
- };
2085
- bonus?: {
2086
- target: number;
2087
- type: 'percentage' | 'fixed';
2088
- };
2089
- equity?: {
2090
- shares: number;
2091
- vestingPeriod: string;
2092
- cliffPeriod: string;
2093
- };
2094
- benefits: string[];
2095
- status: 'draft' | 'pending' | 'sent' | 'accepted' | 'declined' | 'negotiating' | 'withdrawn';
2096
- sentDate?: string;
2097
- responseDate?: string;
2098
- negotiationNotes?: string;
2099
- declineReason?: string;
2100
- signedDocumentUrl?: string;
2101
- }
2102
- export interface RecruitmentMetrics {
2103
- period: {
2104
- start: string;
2105
- end: string;
2106
- };
2107
- openPositions: number;
2108
- totalApplications: number;
2109
- newApplications: number;
2110
- inReview: number;
2111
- averageTimeToHire: number;
2112
- averageTimeToFill: number;
2113
- offerAcceptanceRate: number;
2114
- sourceEffectiveness: Array<{
2115
- source: string;
2116
- applications: number;
2117
- interviews: number;
2118
- hires: number;
2119
- quality: number;
2120
- }>;
2121
- hiringFunnel: {
2122
- applied: number;
2123
- screened: number;
2124
- interviewed: number;
2125
- offered: number;
2126
- hired: number;
2127
- };
2128
- costPerHire: number;
2129
- diversityMetrics: {
2130
- gender: Record<string, number>;
2131
- ethnicity: Record<string, number>;
2132
- };
2133
- }
2134
- export interface WorkflowNode {
2135
- id: string;
2136
- type: 'trigger' | 'action' | 'condition' | 'delay' | 'filter';
2137
- position: {
2138
- x: number;
2139
- y: number;
2140
- };
2141
- data: {
2142
- label: string;
2143
- description?: string;
2144
- config?: Record<string, unknown>;
2145
- icon?: string;
2146
- };
2147
- }
2148
- export interface WorkflowEdge {
2149
- id: string;
2150
- source: string;
2151
- target: string;
2152
- sourceHandle?: string;
2153
- targetHandle?: string;
2154
- label?: string;
2155
- type?: 'default' | 'conditional';
2156
- data?: {
2157
- condition?: string;
2158
- };
2159
- }
2160
- export interface Workflow {
2161
- id: string;
2162
- name: string;
2163
- description: string;
2164
- status: 'draft' | 'active' | 'paused' | 'archived';
2165
- nodes: WorkflowNode[];
2166
- edges: WorkflowEdge[];
2167
- triggers: WorkflowTrigger[];
2168
- actions: WorkflowAction[];
2169
- createdAt: string;
2170
- updatedAt: string;
2171
- lastRun?: string;
2172
- runCount: number;
2173
- category: string;
2174
- tags: string[];
2175
- }
2176
- export interface WorkflowTrigger {
2177
- id: string;
2178
- type: 'webhook' | 'schedule' | 'event' | 'manual' | 'api';
2179
- name: string;
2180
- config: {
2181
- webhookUrl?: string;
2182
- schedule?: string;
2183
- eventType?: string;
2184
- conditions?: Record<string, unknown>;
2185
- };
2186
- }
2187
- export interface WorkflowAction {
2188
- id: string;
2189
- type: 'email' | 'sms' | 'webhook' | 'api' | 'integration' | 'database';
2190
- name: string;
2191
- config: {
2192
- to?: string;
2193
- subject?: string;
2194
- body?: string;
2195
- url?: string;
2196
- method?: string;
2197
- headers?: Record<string, string>;
2198
- payload?: Record<string, unknown>;
2199
- };
2200
- }
2201
- export interface WorkflowRun {
2202
- id: string;
2203
- workflowId: string;
2204
- status: 'running' | 'completed' | 'failed' | 'cancelled';
2205
- startedAt: string;
2206
- completedAt?: string;
2207
- duration?: number;
2208
- trigger: string;
2209
- logs: WorkflowLog[];
2210
- metrics: {
2211
- nodesExecuted: number;
2212
- actionsCompleted: number;
2213
- errors: number;
2214
- };
2215
- }
2216
- export interface WorkflowLog {
2217
- id: string;
2218
- timestamp: string;
2219
- level: 'info' | 'warning' | 'error' | 'debug';
2220
- nodeId?: string;
2221
- message: string;
2222
- details?: Record<string, unknown>;
2223
- }
2224
- export interface WorkflowTemplate {
2225
- id: string;
2226
- name: string;
2227
- description: string;
2228
- category: string;
2229
- icon: string;
2230
- workflow: Partial<Workflow>;
2231
- tags: string[];
2232
- popularity: number;
2233
- }
2234
- export interface Integration {
2235
- id: string;
2236
- name: string;
2237
- provider: string;
2238
- type: 'api' | 'webhook' | 'oauth' | 'custom';
2239
- status: 'connected' | 'disconnected' | 'error';
2240
- config: {
2241
- apiKey?: string;
2242
- apiSecret?: string;
2243
- webhookUrl?: string;
2244
- oauth?: {
2245
- clientId: string;
2246
- clientSecret: string;
2247
- redirectUri: string;
2248
- accessToken?: string;
2249
- refreshToken?: string;
2250
- };
2251
- };
2252
- connectedAt?: string;
2253
- lastSync?: string;
2254
- capabilities: string[];
2255
- }
2256
- export interface AutomationRule {
2257
- id: string;
2258
- name: string;
2259
- description: string;
2260
- enabled: boolean;
2261
- trigger: {
2262
- type: 'event' | 'time' | 'condition';
2263
- config: Record<string, unknown>;
2264
- };
2265
- conditions: AutomationCondition[];
2266
- actions: AutomationActionItem[];
2267
- createdAt: string;
2268
- updatedAt: string;
2269
- lastTriggered?: string;
2270
- triggerCount: number;
2271
- }
2272
- export interface AutomationCondition {
2273
- id: string;
2274
- field: string;
2275
- operator: 'equals' | 'not_equals' | 'contains' | 'greater_than' | 'less_than' | 'in' | 'not_in';
2276
- value: unknown;
2277
- logic?: 'and' | 'or';
2278
- }
2279
- export interface AutomationActionItem {
2280
- id: string;
2281
- type: string;
2282
- config: Record<string, unknown>;
2283
- order: number;
2284
- }
2285
- export interface ApiRequest {
2286
- id: string;
2287
- name: string;
2288
- method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
2289
- url: string;
2290
- headers: Record<string, string>;
2291
- params?: Record<string, string>;
2292
- body?: unknown;
2293
- auth?: {
2294
- type: 'none' | 'bearer' | 'basic' | 'api_key';
2295
- token?: string;
2296
- username?: string;
2297
- password?: string;
2298
- key?: string;
2299
- value?: string;
2300
- };
2301
- }
2302
- export interface ApiResponse {
2303
- status: number;
2304
- statusText: string;
2305
- headers: Record<string, string>;
2306
- data: unknown;
2307
- time: number;
2308
- size: number;
2309
- }
2310
- export interface ApiCollection {
2311
- id: string;
2312
- name: string;
2313
- description: string;
2314
- requests: ApiRequest[];
2315
- variables: Record<string, string>;
2316
- createdAt: string;
2317
- updatedAt: string;
2318
- }
2319
- export interface Webhook {
2320
- id: string;
2321
- name: string;
2322
- url: string;
2323
- events: string[];
2324
- headers: Record<string, string>;
2325
- secret?: string;
2326
- enabled: boolean;
2327
- createdAt: string;
2328
- updatedAt: string;
2329
- lastTriggered?: string;
2330
- failureCount: number;
2331
- successCount: number;
2332
- }
2333
- export interface WebhookDelivery {
2334
- id: string;
2335
- webhookId: string;
2336
- event: string;
2337
- payload: unknown;
2338
- response?: {
2339
- status: number;
2340
- body: unknown;
2341
- headers: Record<string, string>;
2342
- };
2343
- attempts: number;
2344
- deliveredAt?: string;
2345
- error?: string;
2346
- duration?: number;
2347
- }
2348
- export interface Message {
2349
- id: string;
2350
- senderId: string;
2351
- senderName: string;
2352
- senderAvatar?: string;
2353
- recipientId?: string;
2354
- groupId?: string;
2355
- content: string;
2356
- timestamp: Date;
2357
- type: 'text' | 'image' | 'file' | 'system';
2358
- status: 'sending' | 'sent' | 'delivered' | 'read';
2359
- attachments?: MessageAttachment[];
2360
- mentions?: string[];
2361
- replyTo?: string;
2362
- }
2363
- export interface MessageAttachment {
2364
- id: string;
2365
- name: string;
2366
- url: string;
2367
- type: 'image' | 'file' | 'video' | 'audio';
2368
- size: number;
2369
- thumbnail?: string;
2370
- }
2371
- export interface ChatGroup {
2372
- id: string;
2373
- name: string;
2374
- description: string;
2375
- type: 'direct' | 'group' | 'community' | 'announcement';
2376
- avatar?: string;
2377
- participants: string[];
2378
- admins: string[];
2379
- createdBy: string;
2380
- createdAt: Date;
2381
- lastMessage?: Message;
2382
- isPrivate: boolean;
2383
- eventId?: string;
2384
- }
2385
- /** Simplified networking match from communication module */
2386
- export interface CommunicationNetworkingMatch {
2387
- id: string;
2388
- userId: string;
2389
- matchedUserId: string;
2390
- score: number;
2391
- reason: string;
2392
- commonInterests: string[];
2393
- commonConnections: string[];
2394
- status: 'pending' | 'accepted' | 'declined' | 'hidden';
2395
- createdAt: Date;
2396
- lastInteraction?: Date;
2397
- }
2398
- export interface Community {
2399
- id: string;
2400
- name: string;
2401
- description: string;
2402
- category: string;
2403
- avatar?: string;
2404
- coverImage?: string;
2405
- interests: string[];
2406
- memberCount: number;
2407
- isPrivate: boolean;
2408
- requiresApproval: boolean;
2409
- createdBy: string;
2410
- createdAt: Date;
2411
- admins: string[];
2412
- moderators: string[];
2413
- rules?: string[];
2414
- eventId?: string;
2415
- }
2416
- export interface CommunityMembership {
2417
- id: string;
2418
- userId: string;
2419
- communityId: string;
2420
- role: 'member' | 'moderator' | 'admin';
2421
- joinedAt: Date;
2422
- status: 'active' | 'pending' | 'banned';
2423
- }
2424
- export interface Announcement {
2425
- id: string;
2426
- title: string;
2427
- content: string;
2428
- type: 'info' | 'warning' | 'urgent' | 'update';
2429
- priority: 'low' | 'medium' | 'high' | 'critical';
2430
- author: string;
2431
- authorName: string;
2432
- targetAudience: 'all' | 'attendees' | 'staff' | 'speakers' | 'sponsors';
2433
- eventId?: string;
2434
- communityId?: string;
2435
- scheduledFor?: Date;
2436
- expiresAt?: Date;
2437
- isPublished: boolean;
2438
- createdAt: Date;
2439
- updatedAt: Date;
2440
- readBy: string[];
2441
- reactions: AnnouncementReaction[];
2442
- }
2443
- export interface AnnouncementReaction {
2444
- userId: string;
2445
- type: 'like' | 'love' | 'useful' | 'important';
2446
- timestamp: Date;
2447
- }
2448
- export interface EmailCampaign {
2449
- id: string;
2450
- name: string;
2451
- subject: string;
2452
- content: string;
2453
- templateId?: string;
2454
- segmentId?: string;
2455
- recipientCount: number;
2456
- status: 'draft' | 'scheduled' | 'sending' | 'sent' | 'paused' | 'cancelled';
2457
- scheduledFor?: Date;
2458
- sentAt?: Date;
2459
- createdBy: string;
2460
- createdAt: Date;
2461
- updatedAt: Date;
2462
- analytics: EmailAnalytics;
2463
- eventId?: string;
2464
- }
2465
- export interface EmailAnalytics {
2466
- sent: number;
2467
- delivered: number;
2468
- opened: number;
2469
- clicked: number;
2470
- bounced: number;
2471
- unsubscribed: number;
2472
- spamReports: number;
2473
- openRate: number;
2474
- clickRate: number;
2475
- bounceRate: number;
2476
- }
2477
- export interface SMSCampaign {
2478
- id: string;
2479
- name: string;
2480
- message: string;
2481
- templateId?: string;
2482
- segmentId?: string;
2483
- recipientCount: number;
2484
- status: 'draft' | 'scheduled' | 'sending' | 'sent' | 'paused' | 'cancelled';
2485
- scheduledFor?: Date;
2486
- sentAt?: Date;
2487
- createdBy: string;
2488
- createdAt: Date;
2489
- updatedAt: Date;
2490
- analytics: SMSAnalytics;
2491
- eventId?: string;
2492
- }
2493
- export interface SMSAnalytics {
2494
- sent: number;
2495
- delivered: number;
2496
- failed: number;
2497
- clicked: number;
2498
- opted_out: number;
2499
- deliveryRate: number;
2500
- clickRate: number;
2501
- optOutRate: number;
2502
- }
2503
- export interface MessageTemplate {
2504
- id: string;
2505
- name: string;
2506
- type: 'email' | 'sms' | 'push';
2507
- subject?: string;
2508
- content: string;
2509
- category: string;
2510
- variables: TemplateVariable[];
2511
- isActive: boolean;
2512
- createdBy: string;
2513
- createdAt: Date;
2514
- updatedAt: Date;
2515
- usage: number;
2516
- }
2517
- export interface TemplateVariable {
2518
- name: string;
2519
- description: string;
2520
- required: boolean;
2521
- defaultValue?: string;
2522
- type: 'text' | 'number' | 'date' | 'boolean';
2523
- }
2524
- export interface SocialIntegration {
2525
- id: string;
2526
- platform: 'facebook' | 'twitter' | 'linkedin' | 'instagram' | 'youtube';
2527
- accountName: string;
2528
- isConnected: boolean;
2529
- accessToken?: string;
2530
- refreshToken?: string;
2531
- expiresAt?: Date;
2532
- permissions: string[];
2533
- lastSync: Date;
2534
- autoPost: boolean;
2535
- eventId?: string;
2536
- }
2537
- export interface SocialPost {
2538
- id: string;
2539
- content: string;
2540
- platforms: string[];
2541
- scheduledFor?: Date;
2542
- postedAt?: Date;
2543
- status: 'draft' | 'scheduled' | 'posted' | 'failed';
2544
- attachments: string[];
2545
- hashtags: string[];
2546
- mentions: string[];
2547
- createdBy: string;
2548
- createdAt: Date;
2549
- analytics: SocialAnalytics;
2550
- eventId?: string;
2551
- }
2552
- export interface SocialAnalytics {
2553
- platform: string;
2554
- likes: number;
2555
- shares: number;
2556
- comments: number;
2557
- clicks: number;
2558
- impressions: number;
2559
- engagement: number;
2560
- }
2561
- export interface Notification {
2562
- id: string;
2563
- userId: string;
2564
- title: string;
2565
- message: string;
2566
- type: 'info' | 'success' | 'warning' | 'error' | 'message' | 'system';
2567
- category: 'general' | 'event' | 'social' | 'security' | 'payment';
2568
- priority: 'low' | 'medium' | 'high' | 'urgent';
2569
- isRead: boolean;
2570
- actionUrl?: string;
2571
- actionText?: string;
2572
- metadata?: Record<string, string | number | boolean>;
2573
- createdAt: Date;
2574
- readAt?: Date;
2575
- expiresAt?: Date;
2576
- }
2577
- export interface NotificationSettings {
2578
- userId: string;
2579
- emailNotifications: boolean;
2580
- pushNotifications: boolean;
2581
- smsNotifications: boolean;
2582
- categories: {
2583
- general: boolean;
2584
- events: boolean;
2585
- social: boolean;
2586
- security: boolean;
2587
- payment: boolean;
2588
- };
2589
- frequency: 'immediate' | 'hourly' | 'daily' | 'weekly';
2590
- quietHours: {
2591
- enabled: boolean;
2592
- start: string;
2593
- end: string;
2594
- };
2595
- }
2596
- export interface CommunicationAnalytics {
2597
- totalMessages: number;
2598
- activeUsers: number;
2599
- averageResponseTime: number;
2600
- engagementRate: number;
2601
- topChannels: Array<{
2602
- id: string;
2603
- name: string;
2604
- messageCount: number;
2605
- }>;
2606
- messagesByHour: Array<{
2607
- hour: number;
2608
- count: number;
2609
- }>;
2610
- networkingMatches: number;
2611
- communityGrowth: Array<{
2612
- date: string;
2613
- members: number;
2614
- }>;
2615
- }
2616
- export interface UserNetworkingProfile {
2617
- userId: string;
2618
- bio: string;
2619
- interests: string[];
2620
- skills: string[];
2621
- goals: string[];
2622
- industry: string;
2623
- experience: string;
2624
- availability: 'available' | 'busy' | 'invisible';
2625
- preferences: {
2626
- networking: boolean;
2627
- mentoring: boolean;
2628
- collaboration: boolean;
2629
- };
2630
- socialLinks: {
2631
- linkedin?: string;
2632
- twitter?: string;
2633
- website?: string;
2634
- };
2635
- }
2636
- export interface AnalyticsPeriod {
2637
- start: string;
2638
- end: string;
2639
- type: 'day' | 'week' | 'month' | 'quarter' | 'year' | 'custom';
2640
- }
2641
- export interface ChartDataPoint {
2642
- label: string;
2643
- value: number;
2644
- date?: string;
2645
- category?: string;
2646
- metadata?: Record<string, string | number | boolean>;
2647
- }
2648
- export interface MetricTrend {
2649
- current: number;
2650
- previous: number;
2651
- change: number;
2652
- changePercent: number;
2653
- trend: 'up' | 'down' | 'stable';
2654
- }
2655
- export interface DashboardMetric {
2656
- id: string;
2657
- title: string;
2658
- value: number;
2659
- format: 'number' | 'currency' | 'percentage' | 'duration';
2660
- trend?: MetricTrend;
2661
- icon?: string;
2662
- color?: string;
2663
- description?: string;
2664
- }
2665
- export interface AnalyticsChartConfig {
2666
- type: 'line' | 'bar' | 'area' | 'pie' | 'doughnut' | 'scatter' | 'heatmap' | 'funnel';
2667
- title: string;
2668
- data: ChartDataPoint[];
2669
- options?: {
2670
- responsive: boolean;
2671
- maintainAspectRatio: boolean;
2672
- legend: boolean;
2673
- grid: boolean;
2674
- tooltip: boolean;
2675
- zoom: boolean;
2676
- export: boolean;
2677
- };
2678
- colors?: string[];
2679
- height?: number;
2680
- }
2681
- export interface EventAnalyticsData {
2682
- eventId: string;
2683
- eventName: string;
2684
- overview: {
2685
- totalRegistrations: number;
2686
- checkedInAttendees: number;
2687
- noShows: number;
2688
- totalRevenue: number;
2689
- averageRating: number;
2690
- attendanceRate: number;
2691
- };
2692
- registrationTrends: ChartDataPoint[];
2693
- demographicBreakdown: {
2694
- ageGroups: ChartDataPoint[];
2695
- companies: ChartDataPoint[];
2696
- jobTitles: ChartDataPoint[];
2697
- locations: ChartDataPoint[];
2698
- };
2699
- sessionAnalytics: Array<{
2700
- sessionId: string;
2701
- sessionName: string;
2702
- attendance: number;
2703
- capacity: number;
2704
- rating: number;
2705
- feedback: Array<{
2706
- question: string;
2707
- responses: ChartDataPoint[];
2708
- }>;
2709
- }>;
2710
- timeline: Array<{
2711
- timestamp: string;
2712
- event: string;
2713
- value: number;
2714
- type: 'registration' | 'checkin' | 'feedback' | 'payment';
2715
- }>;
2716
- }
2717
- export interface AttendeeAnalyticsData {
2718
- totalAttendees: number;
2719
- newVsReturning: {
2720
- new: number;
2721
- returning: number;
2722
- };
2723
- engagementMetrics: {
2724
- averageSessionsAttended: number;
2725
- feedbackParticipation: number;
2726
- networkingActivity: number;
2727
- appUsage: number;
2728
- };
2729
- behaviorPatterns: {
2730
- checkInTimes: ChartDataPoint[];
2731
- sessionPreferences: ChartDataPoint[];
2732
- durationStays: ChartDataPoint[];
2733
- feedbackSentiment: ChartDataPoint[];
2734
- };
2735
- demographicInsights: {
2736
- ageDistribution: ChartDataPoint[];
2737
- industryDistribution: ChartDataPoint[];
2738
- experienceLevels: ChartDataPoint[];
2739
- geographicDistribution: ChartDataPoint[];
2740
- };
2741
- cohortAnalysis: Array<{
2742
- cohort: string;
2743
- size: number;
2744
- retention: number[];
2745
- engagement: number[];
2746
- }>;
2747
- }
2748
- export interface RevenueAnalyticsData {
2749
- totalRevenue: number;
2750
- targetRevenue: number;
2751
- revenueBySource: ChartDataPoint[];
2752
- revenueByTicketType: ChartDataPoint[];
2753
- revenueTimeline: ChartDataPoint[];
2754
- refunds: {
2755
- total: number;
2756
- rate: number;
2757
- reasons: ChartDataPoint[];
2758
- };
2759
- costs: {
2760
- total: number;
2761
- breakdown: ChartDataPoint[];
2762
- profit: number;
2763
- margin: number;
2764
- };
2765
- pricing: {
2766
- averageTicketPrice: number;
2767
- priceElasticity: ChartDataPoint[];
2768
- discountImpact: ChartDataPoint[];
2769
- };
2770
- forecasting: {
2771
- projectedRevenue: number;
2772
- confidence: number;
2773
- scenarios: Array<{
2774
- name: string;
2775
- probability: number;
2776
- revenue: number;
2777
- }>;
2778
- };
2779
- }
2780
- export interface PredictiveInsight {
2781
- id: string;
2782
- type: 'recommendation' | 'warning' | 'opportunity' | 'trend';
2783
- title: string;
2784
- description: string;
2785
- confidence: number;
2786
- impact: 'high' | 'medium' | 'low';
2787
- category: 'registration' | 'revenue' | 'attendance' | 'satisfaction' | 'marketing';
2788
- data: Record<string, unknown>;
2789
- actions?: Array<{
2790
- label: string;
2791
- type: string;
2792
- priority: 'high' | 'medium' | 'low';
2793
- }>;
2794
- createdAt: string;
2795
- relevantUntil?: string;
2796
- }
2797
- export interface MLModel {
2798
- id: string;
2799
- name: string;
2800
- type: 'classification' | 'regression' | 'clustering' | 'forecasting';
2801
- status: 'training' | 'ready' | 'updating' | 'error';
2802
- accuracy: number;
2803
- lastTrained: string;
2804
- predictions: Array<{
2805
- metric: string;
2806
- prediction: number;
2807
- confidence: number;
2808
- horizon: string;
2809
- }>;
2810
- }
2811
- export interface RealTimeMetric {
2812
- id: string;
2813
- name: string;
2814
- value: number;
2815
- unit: string;
2816
- threshold?: {
2817
- warning: number;
2818
- critical: number;
2819
- };
2820
- trend: number[];
2821
- lastUpdated: string;
2822
- status: 'normal' | 'warning' | 'critical';
2823
- }
2824
- export interface ReportWidget {
2825
- id: string;
2826
- type: 'metric' | 'chart' | 'table' | 'text' | 'image';
2827
- title: string;
2828
- position: {
2829
- x: number;
2830
- y: number;
2831
- w: number;
2832
- h: number;
2833
- };
2834
- config: {
2835
- dataSource?: string;
2836
- metric?: string;
2837
- chartType?: string;
2838
- filters?: Record<string, string | number | boolean>;
2839
- timeRange?: AnalyticsPeriod;
2840
- refreshInterval?: number;
2841
- };
2842
- data?: Record<string, unknown>;
2843
- }
2844
- export interface CustomReport {
2845
- id: string;
2846
- name: string;
2847
- description: string;
2848
- widgets: ReportWidget[];
2849
- filters: Record<string, string | number | boolean>;
2850
- schedule?: {
2851
- frequency: 'once' | 'daily' | 'weekly' | 'monthly';
2852
- time: string;
2853
- recipients: string[];
2854
- format: 'pdf' | 'excel' | 'csv' | 'json';
2855
- };
2856
- isPublic: boolean;
2857
- createdBy: string;
2858
- createdAt: string;
2859
- lastGenerated?: string;
2860
- }
2861
- export interface DataExportRequest {
2862
- id: string;
2863
- name: string;
2864
- type: 'events' | 'attendees' | 'registrations' | 'analytics' | 'custom';
2865
- format: 'csv' | 'excel' | 'json' | 'pdf';
2866
- filters: Record<string, string | number | boolean>;
2867
- fields: string[];
2868
- status: 'pending' | 'processing' | 'completed' | 'failed';
2869
- fileUrl?: string;
2870
- fileSize?: number;
2871
- recordCount?: number;
2872
- error?: string;
2873
- requestedBy: string;
2874
- requestedAt: string;
2875
- completedAt?: string;
2876
- expiresAt: string;
2877
- }
2878
- export interface AnalyticsFilter {
2879
- eventIds?: string[];
2880
- dateRange?: AnalyticsPeriod;
2881
- attendeeTypes?: string[];
2882
- ticketTypes?: string[];
2883
- locations?: string[];
2884
- demographics?: {
2885
- ageRange?: [number, number];
2886
- companies?: string[];
2887
- jobTitles?: string[];
2888
- };
2889
- engagement?: {
2890
- minSessions?: number;
2891
- feedbackGiven?: boolean;
2892
- rating?: [number, number];
2893
- };
2894
- }
2895
- export interface Benchmark {
2896
- id: string;
2897
- name: string;
2898
- category: string;
2899
- metric: string;
2900
- value: number;
2901
- percentile: number;
2902
- industry: string;
2903
- eventType: string;
2904
- source: string;
2905
- lastUpdated: string;
2906
- }
2907
- export interface AnalyticsHeatmapData {
2908
- coordinates: Array<{
2909
- x: number;
2910
- y: number;
2911
- value: number;
2912
- label?: string;
2913
- }>;
2914
- maxValue: number;
2915
- unit: string;
2916
- metadata?: {
2917
- floorPlan?: string;
2918
- scale?: number;
2919
- legend?: Array<{
2920
- value: number;
2921
- color: string;
2922
- label: string;
2923
- }>;
2924
- };
2925
- }
2926
- export interface SentimentAnalysis {
2927
- overall: {
2928
- positive: number;
2929
- neutral: number;
2930
- negative: number;
2931
- score: number;
2932
- };
2933
- categories: Array<{
2934
- category: string;
2935
- sentiment: number;
2936
- keywords: string[];
2937
- sampleComments: string[];
2938
- }>;
2939
- trends: ChartDataPoint[];
2940
- alerts: Array<{
2941
- type: 'positive_spike' | 'negative_spike' | 'trending_issue';
2942
- message: string;
2943
- severity: 'low' | 'medium' | 'high';
2944
- }>;
2945
- }
2946
- export interface AnalyticsDashboardState {
2947
- selectedPeriod: AnalyticsPeriod;
2948
- selectedEvents: string[];
2949
- filters: AnalyticsFilter;
2950
- realTimeEnabled: boolean;
2951
- lastRefresh: string;
2952
- autoRefresh: boolean;
2953
- refreshInterval: number;
2954
- }
2955
- export interface CheckInStation {
2956
- id: string;
2957
- name: string;
2958
- location: string;
2959
- staffAssigned: string[];
2960
- isActive: boolean;
2961
- checkInsToday: number;
2962
- averageProcessTime: number;
2963
- lastCheckIn?: Date;
2964
- createdAt: Date;
2965
- updatedAt: Date;
2966
- }
2967
- export interface CheckInRecord {
2968
- id: string;
2969
- registrationId: string;
2970
- attendeeId: string;
2971
- stationId: string;
2972
- checkInTime: Date;
2973
- checkInMethod: 'manual' | 'qr_code' | 'confirmation_code' | 'bulk';
2974
- staffId: string;
2975
- badgePrinted: boolean;
2976
- notes?: string;
2977
- }
2978
- export interface CheckInStats {
2979
- totalRegistrations: number;
2980
- totalCheckedIn: number;
2981
- checkInRate: number;
2982
- recentCheckIns: Array<{
2983
- attendee: {
2984
- id: string;
2985
- name: string;
2986
- email: string;
2987
- organization?: string;
2988
- };
2989
- ticketType: string;
2990
- checkInTime: Date;
2991
- station: string;
2992
- }>;
2993
- checkInsByHour: Array<{
2994
- hour: string;
2995
- count: number;
2996
- }>;
2997
- checkInsByTicketType: Array<{
2998
- ticketType: string;
2999
- total: number;
3000
- checkedIn: number;
3001
- percentage: number;
3002
- }>;
3003
- stationPerformance: Array<{
3004
- station: CheckInStation;
3005
- checkInsToday: number;
3006
- averageTime: number;
3007
- efficiency: number;
3008
- }>;
3009
- }
3010
- export interface CheckInAlert {
3011
- id: string;
3012
- type: 'capacity' | 'duplicate' | 'invalid' | 'system';
3013
- severity: 'info' | 'warning' | 'error';
3014
- message: string;
3015
- timestamp: Date;
3016
- resolved: boolean;
3017
- }
3018
- export interface KioskConfig {
3019
- id: string;
3020
- name: string;
3021
- location: string;
3022
- eventId: string;
3023
- mode: 'checkin' | 'registration' | 'information' | 'feedback' | 'wayfinding';
3024
- language: string;
3025
- theme: 'light' | 'dark' | 'high-contrast';
3026
- accessibility: {
3027
- screenReaderEnabled: boolean;
3028
- fontSize: 'small' | 'medium' | 'large' | 'xl';
3029
- highContrast: boolean;
3030
- voiceInstructions: boolean;
3031
- };
3032
- features: {
3033
- qrScanner: boolean;
3034
- barcodeScanner: boolean;
3035
- badgePrinting: boolean;
3036
- feedback: boolean;
3037
- wayfinding: boolean;
3038
- multiLanguage: boolean;
3039
- };
3040
- offlineMode: boolean;
3041
- autoTimeout: number;
3042
- adminPassword?: string;
3043
- }
3044
- export interface CheckInResult {
3045
- success: boolean;
3046
- attendee?: {
3047
- id: string;
3048
- firstName: string;
3049
- lastName: string;
3050
- email: string;
3051
- company?: string;
3052
- ticketType: string;
3053
- sessionAccess: string[];
3054
- checkedInAt: string;
3055
- badgeInfo?: BadgeInfo;
3056
- };
3057
- error?: string;
3058
- errorCode?: 'NOT_FOUND' | 'ALREADY_CHECKED_IN' | 'INVALID_QR' | 'EVENT_NOT_ACTIVE' | 'NETWORK_ERROR';
3059
- }
3060
- export interface BadgeInfo {
3061
- attendeeId: string;
3062
- templateId: string;
3063
- printable: boolean;
3064
- data: {
3065
- name: string;
3066
- company?: string;
3067
- title?: string;
3068
- email?: string;
3069
- phone?: string;
3070
- qrCode: string;
3071
- avatar?: string;
3072
- eventName: string;
3073
- eventDate: string;
3074
- ticketType: string;
3075
- sessionAccess: string[];
3076
- dietary?: string[];
3077
- accessibility?: string[];
3078
- };
3079
- design: {
3080
- backgroundColor: string;
3081
- textColor: string;
3082
- logoUrl?: string;
3083
- template: 'standard' | 'vip' | 'speaker' | 'staff' | 'custom';
3084
- };
3085
- }
3086
- export interface QueueEntry {
3087
- id: string;
3088
- attendeeId: string;
3089
- position: number;
3090
- estimatedWaitTime: number;
3091
- priority: 'normal' | 'vip' | 'accessibility' | 'speaker';
3092
- status: 'waiting' | 'in_progress' | 'completed' | 'cancelled';
3093
- createdAt: string;
3094
- serviceStartedAt?: string;
3095
- completedAt?: string;
3096
- }
3097
- export interface FeedbackQuestion {
3098
- id: string;
3099
- type: 'rating' | 'multiple_choice' | 'text' | 'scale' | 'boolean';
3100
- question: string;
3101
- required: boolean;
3102
- options?: string[];
3103
- scale?: {
3104
- min: number;
3105
- max: number;
3106
- minLabel: string;
3107
- maxLabel: string;
3108
- };
3109
- order: number;
3110
- }
3111
- export interface FeedbackResponse {
3112
- questionId: string;
3113
- response: string | number | boolean | string[];
3114
- }
3115
- export interface FeedbackSubmission {
3116
- id: string;
3117
- eventId: string;
3118
- attendeeId?: string;
3119
- sessionId?: string;
3120
- responses: FeedbackResponse[];
3121
- rating: number;
3122
- submitted: boolean;
3123
- anonymous: boolean;
3124
- createdAt: string;
3125
- kioskId: string;
3126
- }
3127
- export interface WayfindingLocation {
3128
- id: string;
3129
- name: string;
3130
- type: 'room' | 'booth' | 'amenity' | 'emergency' | 'entrance' | 'stage';
3131
- floor: number;
3132
- coordinates: {
3133
- x: number;
3134
- y: number;
3135
- };
3136
- description?: string;
3137
- capacity?: number;
3138
- accessibility: boolean;
3139
- amenities: string[];
3140
- currentEvents?: Array<{
3141
- id: string;
3142
- name: string;
3143
- startTime: string;
3144
- endTime: string;
3145
- }>;
3146
- directions?: string[];
3147
- estimatedWalkTime: number;
3148
- }
3149
- export interface WayfindingRoute {
3150
- from: WayfindingLocation;
3151
- to: WayfindingLocation;
3152
- distance: number;
3153
- walkTime: number;
3154
- accessibility: boolean;
3155
- steps: Array<{
3156
- instruction: string;
3157
- distance: number;
3158
- direction: 'straight' | 'left' | 'right' | 'up' | 'down';
3159
- landmark?: string;
3160
- }>;
3161
- }
3162
- export interface KioskSession {
3163
- id: string;
3164
- kioskId: string;
3165
- startTime: string;
3166
- endTime?: string;
3167
- attendeeId?: string;
3168
- actions: Array<{
3169
- type: 'checkin' | 'feedback' | 'wayfinding' | 'information' | 'badge_print';
3170
- timestamp: string;
3171
- data: Record<string, unknown>;
3172
- success: boolean;
3173
- }>;
3174
- language: string;
3175
- accessibilityMode: boolean;
3176
- }
3177
- export interface KioskAnalytics {
3178
- kioskId: string;
3179
- eventId: string;
3180
- period: {
3181
- start: string;
3182
- end: string;
3183
- };
3184
- usage: {
3185
- totalSessions: number;
3186
- averageSessionTime: number;
3187
- checkIns: number;
3188
- feedbackSubmissions: number;
3189
- wayfindingRequests: number;
3190
- badgesPrinted: number;
3191
- errors: number;
3192
- };
3193
- popularFeatures: Array<{
3194
- feature: string;
3195
- usage: number;
3196
- percentage: number;
3197
- }>;
3198
- peakHours: Array<{
3199
- hour: number;
3200
- usage: number;
3201
- }>;
3202
- languages: Array<{
3203
- language: string;
3204
- usage: number;
3205
- percentage: number;
3206
- }>;
3207
- accessibility: {
3208
- screenReaderSessions: number;
3209
- highContrastSessions: number;
3210
- largeFontSessions: number;
3211
- };
3212
- errorTypes: Array<{
3213
- type: string;
3214
- count: number;
3215
- percentage: number;
3216
- }>;
3217
- }
3218
- export interface KioskNotification {
3219
- id: string;
3220
- kioskId: string;
3221
- type: 'info' | 'warning' | 'error' | 'success';
3222
- title: string;
3223
- message: string;
3224
- priority: 'low' | 'medium' | 'high' | 'critical';
3225
- autoHide: boolean;
3226
- duration?: number;
3227
- actions?: Array<{
3228
- label: string;
3229
- action: string;
3230
- style: 'primary' | 'secondary' | 'danger';
3231
- }>;
3232
- createdAt: string;
3233
- readAt?: string;
3234
- }
3235
- export interface PrintJob {
3236
- id: string;
3237
- type: 'badge' | 'receipt' | 'ticket' | 'document';
3238
- status: 'pending' | 'printing' | 'completed' | 'failed' | 'cancelled';
3239
- attendeeId: string;
3240
- badgeInfo?: BadgeInfo;
3241
- copies: number;
3242
- priority: 'normal' | 'high' | 'urgent';
3243
- createdAt: string;
3244
- startedAt?: string;
3245
- completedAt?: string;
3246
- error?: string;
3247
- kioskId: string;
3248
- printerName: string;
3249
- }
3250
- export type KioskMode = 'checkin' | 'registration' | 'information' | 'feedback' | 'wayfinding' | 'dashboard';
3251
- export interface KioskState {
3252
- config: KioskConfig;
3253
- currentSession?: KioskSession;
3254
- queue: QueueEntry[];
3255
- notifications: KioskNotification[];
3256
- printQueue: PrintJob[];
3257
- isOnline: boolean;
3258
- lastSync: string;
3259
- errors: Array<{
3260
- code: string;
3261
- message: string;
3262
- timestamp: string;
3263
- }>;
3264
- }
3265
- export interface ExtendedUser {
3266
- id: string;
3267
- email: string;
3268
- firstName: string;
3269
- lastName: string;
3270
- fullName: string;
3271
- avatar?: string;
3272
- phone?: string;
3273
- title?: string;
3274
- department?: string;
3275
- bio?: string;
3276
- timezone: string;
3277
- locale: string;
3278
- status: 'active' | 'inactive' | 'pending' | 'suspended';
3279
- emailVerified: boolean;
3280
- phoneVerified: boolean;
3281
- lastLoginAt?: Date;
3282
- createdAt: Date;
3283
- updatedAt: Date;
3284
- organizationId: string;
3285
- roles: UserRole[];
3286
- permissions: string[];
3287
- teams: string[];
3288
- preferences: UserPreferences;
3289
- socialLinks?: SocialLinks;
3290
- emergencyContact?: UserEmergencyContact;
3291
- customFields?: Record<string, string | number | boolean>;
3292
- }
3293
- export interface UserRole {
3294
- id: string;
3295
- name: string;
3296
- displayName: string;
3297
- description: string;
3298
- color: string;
3299
- permissions: UserPermission[];
3300
- isCustom: boolean;
3301
- isDefault: boolean;
3302
- organizationId?: string;
3303
- createdBy: string;
3304
- createdAt: Date;
3305
- updatedAt: Date;
3306
- userCount: number;
3307
- }
3308
- export interface UserPermission {
3309
- id: string;
3310
- name: string;
3311
- displayName: string;
3312
- description: string;
3313
- category: string;
3314
- resource: string;
3315
- action: string;
3316
- scope: 'global' | 'organization' | 'team' | 'own';
3317
- isSystemPermission: boolean;
3318
- }
3319
- export interface Team {
3320
- id: string;
3321
- name: string;
3322
- description: string;
3323
- avatar?: string;
3324
- color: string;
3325
- type: 'department' | 'project' | 'committee' | 'working_group';
3326
- leaderId: string;
3327
- members: TeamMember[];
3328
- parentTeamId?: string;
3329
- organizationId: string;
3330
- isPrivate: boolean;
3331
- settings: TeamSettings;
3332
- createdAt: Date;
3333
- updatedAt: Date;
3334
- stats: TeamStats;
3335
- }
3336
- export interface TeamMember {
3337
- userId: string;
3338
- teamId: string;
3339
- role: 'leader' | 'member' | 'observer';
3340
- joinedAt: Date;
3341
- permissions: string[];
3342
- status: 'active' | 'inactive';
3343
- }
3344
- export interface TeamSettings {
3345
- allowSelfJoin: boolean;
3346
- requireApproval: boolean;
3347
- maxMembers?: number;
3348
- notifications: {
3349
- newMembers: boolean;
3350
- teamUpdates: boolean;
3351
- mentions: boolean;
3352
- };
3353
- }
3354
- export interface TeamStats {
3355
- totalMembers: number;
3356
- activeMembers: number;
3357
- totalEvents: number;
3358
- completedTasks: number;
3359
- pendingTasks: number;
3360
- }
3361
- export interface Organization {
3362
- id: string;
3363
- name: string;
3364
- displayName: string;
3365
- description: string;
3366
- logo?: string;
3367
- website?: string;
3368
- industry: string;
3369
- size: 'startup' | 'small' | 'medium' | 'large' | 'enterprise';
3370
- address: OrganizationAddress;
3371
- timezone: string;
3372
- locale: string;
3373
- subscription: OrganizationSubscription;
3374
- settings: OrganizationSettings;
3375
- features: OrganizationFeatures;
3376
- ownerId: string;
3377
- admins: string[];
3378
- memberCount: number;
3379
- teamCount: number;
3380
- eventCount: number;
3381
- createdAt: Date;
3382
- updatedAt: Date;
3383
- status: 'active' | 'trial' | 'suspended' | 'cancelled';
3384
- }
3385
- export interface OrganizationAddress {
3386
- street: string;
3387
- city: string;
3388
- state: string;
3389
- postalCode: string;
3390
- country: string;
3391
- }
3392
- export interface OrganizationSubscription {
3393
- plan: 'free' | 'basic' | 'professional' | 'enterprise';
3394
- status: 'active' | 'trial' | 'cancelled' | 'past_due';
3395
- startDate: Date;
3396
- endDate?: Date;
3397
- trialEndDate?: Date;
3398
- seats: number;
3399
- usedSeats: number;
3400
- features: string[];
3401
- limits: {
3402
- events: number;
3403
- storage: number;
3404
- apiCalls: number;
3405
- };
3406
- }
3407
- export interface OrganizationSettings {
3408
- branding: {
3409
- primaryColor: string;
3410
- secondaryColor: string;
3411
- logoUrl?: string;
3412
- favicon?: string;
3413
- };
3414
- security: {
3415
- passwordPolicy: PasswordPolicy;
3416
- twoFactorRequired: boolean;
3417
- sessionTimeout: number;
3418
- ipWhitelist: string[];
3419
- };
3420
- notifications: {
3421
- defaultChannels: ('email' | 'sms' | 'push')[];
3422
- digestFrequency: 'never' | 'daily' | 'weekly';
3423
- };
3424
- integrations: {
3425
- sso: SSOConfig;
3426
- calendar: CalendarConfig;
3427
- slack?: SlackConfig;
3428
- };
3429
- }
3430
- export interface PasswordPolicy {
3431
- minLength: number;
3432
- requireUppercase: boolean;
3433
- requireLowercase: boolean;
3434
- requireNumbers: boolean;
3435
- requireSymbols: boolean;
3436
- preventReuse: number;
3437
- maxAge: number;
3438
- }
3439
- export interface SSOConfig {
3440
- enabled: boolean;
3441
- provider?: 'google' | 'microsoft' | 'okta' | 'saml';
3442
- domain?: string;
3443
- metadata?: string;
3444
- }
3445
- export interface CalendarConfig {
3446
- provider: 'google' | 'outlook' | 'apple';
3447
- enabled: boolean;
3448
- syncEvents: boolean;
3449
- }
3450
- export interface SlackConfig {
3451
- workspace: string;
3452
- botToken: string;
3453
- enabled: boolean;
3454
- defaultChannel: string;
3455
- }
3456
- export interface OrganizationFeatures {
3457
- customRoles: boolean;
3458
- advancedReporting: boolean;
3459
- apiAccess: boolean;
3460
- webhooks: boolean;
3461
- whiteLabeling: boolean;
3462
- sso: boolean;
3463
- auditLogs: boolean;
3464
- customFields: boolean;
3465
- bulkOperations: boolean;
3466
- }
3467
- export interface UserPreferences {
3468
- theme: 'light' | 'dark' | 'system';
3469
- language: string;
3470
- timezone: string;
3471
- dateFormat: string;
3472
- timeFormat: '12h' | '24h';
3473
- notifications: NotificationPreferences;
3474
- privacy: PrivacySettings;
3475
- }
3476
- export interface NotificationPreferences {
3477
- email: {
3478
- enabled: boolean;
3479
- frequency: 'immediate' | 'hourly' | 'daily' | 'weekly';
3480
- events: boolean;
3481
- mentions: boolean;
3482
- updates: boolean;
3483
- };
3484
- push: {
3485
- enabled: boolean;
3486
- events: boolean;
3487
- mentions: boolean;
3488
- messages: boolean;
3489
- };
3490
- sms: {
3491
- enabled: boolean;
3492
- urgent: boolean;
3493
- reminders: boolean;
3494
- };
3495
- }
3496
- export interface PrivacySettings {
3497
- profileVisibility: 'public' | 'organization' | 'private';
3498
- showOnlineStatus: boolean;
3499
- allowDirectMessages: boolean;
3500
- allowNetworking: boolean;
3501
- dataSharing: boolean;
3502
- }
3503
- export interface SocialLinks {
3504
- linkedin?: string;
3505
- twitter?: string;
3506
- facebook?: string;
3507
- instagram?: string;
3508
- website?: string;
3509
- github?: string;
3510
- }
3511
- export interface UserEmergencyContact {
3512
- name: string;
3513
- relationship: string;
3514
- phone: string;
3515
- email?: string;
3516
- }
3517
- export interface UserInvitation {
3518
- id: string;
3519
- email: string;
3520
- firstName?: string;
3521
- lastName?: string;
3522
- organizationId: string;
3523
- invitedBy: string;
3524
- roles: string[];
3525
- teams?: string[];
3526
- message?: string;
3527
- expiresAt: Date;
3528
- acceptedAt?: Date;
3529
- status: 'pending' | 'accepted' | 'expired' | 'cancelled';
3530
- token: string;
3531
- createdAt: Date;
3532
- remindersSent: number;
3533
- lastReminderAt?: Date;
3534
- }
3535
- export interface BulkOperation {
3536
- id: string;
3537
- type: 'import' | 'export' | 'update' | 'delete' | 'invite';
3538
- status: 'pending' | 'processing' | 'completed' | 'failed' | 'cancelled';
3539
- progress: number;
3540
- totalItems: number;
3541
- processedItems: number;
3542
- successfulItems: number;
3543
- failedItems: number;
3544
- errors: BulkOperationError[];
3545
- createdBy: string;
3546
- createdAt: Date;
3547
- startedAt?: Date;
3548
- completedAt?: Date;
3549
- downloadUrl?: string;
3550
- settings: Record<string, string | number | boolean>;
3551
- }
3552
- export interface BulkOperationError {
3553
- row: number;
3554
- field?: string;
3555
- message: string;
3556
- code: string;
3557
- }
3558
- export interface AuditLogEntry {
3559
- id: string;
3560
- userId?: string;
3561
- userName?: string;
3562
- action: string;
3563
- resource: string;
3564
- resourceId: string;
3565
- details: Record<string, string | number | boolean>;
3566
- ipAddress: string;
3567
- userAgent: string;
3568
- timestamp: Date;
3569
- organizationId: string;
3570
- severity: 'low' | 'medium' | 'high' | 'critical';
3571
- category: 'auth' | 'user' | 'role' | 'permission' | 'team' | 'organization' | 'system';
3572
- }
3573
- export interface UserActivity {
3574
- id: string;
3575
- userId: string;
3576
- type: 'login' | 'logout' | 'view' | 'create' | 'update' | 'delete' | 'download' | 'share';
3577
- resource: string;
3578
- resourceId?: string;
3579
- details?: Record<string, string | number | boolean>;
3580
- timestamp: Date;
3581
- ipAddress: string;
3582
- userAgent: string;
3583
- duration?: number;
3584
- organizationId: string;
3585
- }
3586
- export interface UserStats {
3587
- totalUsers: number;
3588
- activeUsers: number;
3589
- pendingInvitations: number;
3590
- suspendedUsers: number;
3591
- newUsersThisMonth: number;
3592
- usersByRole: Array<{
3593
- roleId: string;
3594
- roleName: string;
3595
- count: number;
3596
- }>;
3597
- usersByTeam: Array<{
3598
- teamId: string;
3599
- teamName: string;
3600
- count: number;
3601
- }>;
3602
- loginActivity: Array<{
3603
- date: string;
3604
- logins: number;
3605
- uniqueUsers: number;
3606
- }>;
3607
- }
3608
- export interface RolePermissionMatrix {
3609
- roleId: string;
3610
- roleName: string;
3611
- permissions: Array<{
3612
- permissionId: string;
3613
- permissionName: string;
3614
- granted: boolean;
3615
- inherited: boolean;
3616
- source?: string;
3617
- }>;
3618
- }
3619
- export interface UserManagementFilters {
3620
- search?: string;
3621
- status?: ('active' | 'inactive' | 'pending' | 'suspended')[];
3622
- roles?: string[];
3623
- teams?: string[];
3624
- departments?: string[];
3625
- dateRange?: {
3626
- start: Date;
3627
- end: Date;
3628
- };
3629
- lastLogin?: {
3630
- start: Date;
3631
- end: Date;
3632
- };
3633
- sortBy?: 'name' | 'email' | 'createdAt' | 'lastLoginAt' | 'status';
3634
- sortOrder?: 'asc' | 'desc';
3635
- }
3636
- export interface TeamCollaborationStats {
3637
- totalTeams: number;
3638
- averageTeamSize: number;
3639
- crossTeamCollaboration: number;
3640
- activeCollaborations: number;
3641
- completedProjects: number;
3642
- communicationFrequency: Array<{
3643
- teamId: string;
3644
- teamName: string;
3645
- messagesPerDay: number;
3646
- lastActivity: Date;
3647
- }>;
3648
- }
3649
- //# sourceMappingURL=index.d.ts.map