@burdenoff/microfe-eventfullymanaged 2026.704.8 → 2026.713.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 (136) hide show
  1. package/dist/dev/main.d.ts +2 -0
  2. package/dist/dev/main.d.ts.map +1 -0
  3. package/dist/eventfullymanaged/EventfullyManagedRoot.d.ts +4 -0
  4. package/dist/eventfullymanaged/EventfullyManagedRoot.d.ts.map +1 -0
  5. package/dist/eventfullymanaged/EventfullyManagedRoutes.d.ts +2 -0
  6. package/dist/eventfullymanaged/EventfullyManagedRoutes.d.ts.map +1 -0
  7. package/dist/eventfullymanaged/api/eventApi.d.ts +1185 -0
  8. package/dist/eventfullymanaged/api/eventApi.d.ts.map +1 -0
  9. package/dist/eventfullymanaged/components/ActionMenu.d.ts +45 -0
  10. package/dist/eventfullymanaged/components/ActionMenu.d.ts.map +1 -0
  11. package/dist/eventfullymanaged/components/EntityFormShell.d.ts +27 -0
  12. package/dist/eventfullymanaged/components/EntityFormShell.d.ts.map +1 -0
  13. package/dist/eventfullymanaged/components/EntityTagsField.d.ts +19 -0
  14. package/dist/eventfullymanaged/components/EntityTagsField.d.ts.map +1 -0
  15. package/dist/eventfullymanaged/components/EventCharts.d.ts +44 -0
  16. package/dist/eventfullymanaged/components/EventCharts.d.ts.map +1 -0
  17. package/dist/eventfullymanaged/components/ImageUploadField.d.ts +24 -0
  18. package/dist/eventfullymanaged/components/ImageUploadField.d.ts.map +1 -0
  19. package/dist/eventfullymanaged/components/PageLayout.d.ts +14 -0
  20. package/dist/eventfullymanaged/components/PageLayout.d.ts.map +1 -0
  21. package/dist/eventfullymanaged/components/Pagination.d.ts +41 -0
  22. package/dist/eventfullymanaged/components/Pagination.d.ts.map +1 -0
  23. package/dist/eventfullymanaged/components/SafeLink.d.ts +30 -0
  24. package/dist/eventfullymanaged/components/SafeLink.d.ts.map +1 -0
  25. package/dist/eventfullymanaged/components/index.d.ts +13 -0
  26. package/dist/eventfullymanaged/components/index.d.ts.map +1 -0
  27. package/dist/eventfullymanaged/context/EventfullyManagedContext.d.ts +25 -0
  28. package/dist/eventfullymanaged/context/EventfullyManagedContext.d.ts.map +1 -0
  29. package/dist/eventfullymanaged/hooks/index.d.ts +3 -0
  30. package/dist/eventfullymanaged/hooks/index.d.ts.map +1 -0
  31. package/dist/eventfullymanaged/index.d.ts +27 -0
  32. package/dist/eventfullymanaged/index.d.ts.map +1 -0
  33. package/dist/eventfullymanaged/lib/format.d.ts +18 -0
  34. package/dist/eventfullymanaged/lib/format.d.ts.map +1 -0
  35. package/dist/eventfullymanaged/lib/mutationResult.d.ts +23 -0
  36. package/dist/eventfullymanaged/lib/mutationResult.d.ts.map +1 -0
  37. package/dist/eventfullymanaged/lib/toast.d.ts +22 -0
  38. package/dist/eventfullymanaged/lib/toast.d.ts.map +1 -0
  39. package/dist/eventfullymanaged/pages/dashboard/DashboardPage.d.ts +2 -0
  40. package/dist/eventfullymanaged/pages/dashboard/DashboardPage.d.ts.map +1 -0
  41. package/dist/eventfullymanaged/pages/events/EventDetailPage.d.ts +2 -0
  42. package/dist/eventfullymanaged/pages/events/EventDetailPage.d.ts.map +1 -0
  43. package/dist/eventfullymanaged/pages/events/EventFormPage.d.ts +2 -0
  44. package/dist/eventfullymanaged/pages/events/EventFormPage.d.ts.map +1 -0
  45. package/dist/eventfullymanaged/pages/events/SessionFormPage.d.ts +2 -0
  46. package/dist/eventfullymanaged/pages/events/SessionFormPage.d.ts.map +1 -0
  47. package/dist/eventfullymanaged/pages/events/TicketTypeFormPage.d.ts +2 -0
  48. package/dist/eventfullymanaged/pages/events/TicketTypeFormPage.d.ts.map +1 -0
  49. package/dist/eventfullymanaged/pages/events/eventFormUtils.d.ts +40 -0
  50. package/dist/eventfullymanaged/pages/events/eventFormUtils.d.ts.map +1 -0
  51. package/dist/eventfullymanaged/pages/exhibitors/ExhibitorFormPage.d.ts +2 -0
  52. package/dist/eventfullymanaged/pages/exhibitors/ExhibitorFormPage.d.ts.map +1 -0
  53. package/dist/eventfullymanaged/pages/exhibitors/ExhibitorsPage.d.ts +2 -0
  54. package/dist/eventfullymanaged/pages/exhibitors/ExhibitorsPage.d.ts.map +1 -0
  55. package/dist/eventfullymanaged/pages/leads/LeadCaptureDialog.d.ts +23 -0
  56. package/dist/eventfullymanaged/pages/leads/LeadCaptureDialog.d.ts.map +1 -0
  57. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.d.ts +2 -0
  58. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.d.ts.map +1 -0
  59. package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.d.ts +2 -0
  60. package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.d.ts.map +1 -0
  61. package/dist/eventfullymanaged/pages/modules/CommunicationPage.d.ts +2 -0
  62. package/dist/eventfullymanaged/pages/modules/CommunicationPage.d.ts.map +1 -0
  63. package/dist/eventfullymanaged/pages/modules/EntityListSection.d.ts +16 -0
  64. package/dist/eventfullymanaged/pages/modules/EntityListSection.d.ts.map +1 -0
  65. package/dist/eventfullymanaged/pages/modules/EventsPage.d.ts +2 -0
  66. package/dist/eventfullymanaged/pages/modules/EventsPage.d.ts.map +1 -0
  67. package/dist/eventfullymanaged/pages/modules/KioskPage.d.ts +19 -0
  68. package/dist/eventfullymanaged/pages/modules/KioskPage.d.ts.map +1 -0
  69. package/dist/eventfullymanaged/pages/modules/NetworkingPage.d.ts +2 -0
  70. package/dist/eventfullymanaged/pages/modules/NetworkingPage.d.ts.map +1 -0
  71. package/dist/eventfullymanaged/pages/modules/OperationsHubPage.d.ts +9 -0
  72. package/dist/eventfullymanaged/pages/modules/OperationsHubPage.d.ts.map +1 -0
  73. package/dist/eventfullymanaged/pages/modules/RegistrationPage.d.ts +2 -0
  74. package/dist/eventfullymanaged/pages/modules/RegistrationPage.d.ts.map +1 -0
  75. package/dist/eventfullymanaged/pages/modules/RoadmapPanel.d.ts +24 -0
  76. package/dist/eventfullymanaged/pages/modules/RoadmapPanel.d.ts.map +1 -0
  77. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.d.ts +2 -0
  78. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.d.ts.map +1 -0
  79. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.d.ts +2 -0
  80. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.d.ts.map +1 -0
  81. package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.d.ts +2 -0
  82. package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.d.ts.map +1 -0
  83. package/dist/eventfullymanaged/pages/modules/WorkflowsPage.d.ts +2 -0
  84. package/dist/eventfullymanaged/pages/modules/WorkflowsPage.d.ts.map +1 -0
  85. package/dist/eventfullymanaged/pages/networking/MeetingFormPage.d.ts +2 -0
  86. package/dist/eventfullymanaged/pages/networking/MeetingFormPage.d.ts.map +1 -0
  87. package/dist/eventfullymanaged/pages/networking/NetworkingProfileFormPage.d.ts +2 -0
  88. package/dist/eventfullymanaged/pages/networking/NetworkingProfileFormPage.d.ts.map +1 -0
  89. package/dist/eventfullymanaged/pages/registration/AttendeeFormPage.d.ts +2 -0
  90. package/dist/eventfullymanaged/pages/registration/AttendeeFormPage.d.ts.map +1 -0
  91. package/dist/eventfullymanaged/pages/registration/PromoCodeFormPage.d.ts +2 -0
  92. package/dist/eventfullymanaged/pages/registration/PromoCodeFormPage.d.ts.map +1 -0
  93. package/dist/eventfullymanaged/pages/registration/RegisterAttendeePage.d.ts +2 -0
  94. package/dist/eventfullymanaged/pages/registration/RegisterAttendeePage.d.ts.map +1 -0
  95. package/dist/eventfullymanaged/pages/speakers/SpeakerFormPage.d.ts +2 -0
  96. package/dist/eventfullymanaged/pages/speakers/SpeakerFormPage.d.ts.map +1 -0
  97. package/dist/eventfullymanaged/pages/speakers/SpeakersPage.d.ts +2 -0
  98. package/dist/eventfullymanaged/pages/speakers/SpeakersPage.d.ts.map +1 -0
  99. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.d.ts +2 -0
  100. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.d.ts.map +1 -0
  101. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.d.ts +2 -0
  102. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.d.ts.map +1 -0
  103. package/dist/eventfullymanaged/pages/venues/FloorPlansPage.d.ts +2 -0
  104. package/dist/eventfullymanaged/pages/venues/FloorPlansPage.d.ts.map +1 -0
  105. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.d.ts +2 -0
  106. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.d.ts.map +1 -0
  107. package/dist/eventfullymanaged/pages/venues/VenueFormPage.d.ts +2 -0
  108. package/dist/eventfullymanaged/pages/venues/VenueFormPage.d.ts.map +1 -0
  109. package/dist/eventfullymanaged/pages/venues/VenueListPage.d.ts +2 -0
  110. package/dist/eventfullymanaged/pages/venues/VenueListPage.d.ts.map +1 -0
  111. package/dist/eventfullymanaged/store/eventfullyManagedStore.d.ts +47 -0
  112. package/dist/eventfullymanaged/store/eventfullyManagedStore.d.ts.map +1 -0
  113. package/dist/eventfullymanaged/types/index.d.ts +3649 -0
  114. package/dist/eventfullymanaged/types/index.d.ts.map +1 -0
  115. package/dist/eventfullymanaged/utils/cn.d.ts +2 -0
  116. package/dist/eventfullymanaged/utils/cn.d.ts.map +1 -0
  117. package/dist/eventfullymanaged/utils/constants.d.ts +3 -0
  118. package/dist/eventfullymanaged/utils/constants.d.ts.map +1 -0
  119. package/dist/eventfullymanaged/utils/navigation.d.ts +2 -0
  120. package/dist/eventfullymanaged/utils/navigation.d.ts.map +1 -0
  121. package/dist/generated/global-operations.d.ts +2 -0
  122. package/dist/generated/global-operations.d.ts.map +1 -0
  123. package/dist/generated/global-types.d.ts +23527 -0
  124. package/dist/generated/global-types.d.ts.map +1 -0
  125. package/dist/generated/wspace-operations.d.ts +2 -0
  126. package/dist/generated/wspace-operations.d.ts.map +1 -0
  127. package/dist/generated/wspace-types.d.ts +57851 -0
  128. package/dist/generated/wspace-types.d.ts.map +1 -0
  129. package/dist/index.d.ts +9 -0
  130. package/dist/index.d.ts.map +1 -0
  131. package/dist/index.js +2 -1
  132. package/dist/services/createSandboxAssistantTransport.d.ts +24 -0
  133. package/dist/services/createSandboxAssistantTransport.d.ts.map +1 -0
  134. package/dist/services/createSandboxAssistantTransport.js +12 -0
  135. package/dist/services/createSandboxAssistantTransport.js.map +1 -0
  136. package/package.json +8 -4
@@ -0,0 +1,3649 @@
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