@gymspace/shared 1.2.21 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,266 @@
1
1
  import { z } from 'zod';
2
2
 
3
+ /**
4
+ * Template code constants
5
+ */
6
+ declare const TEMPLATE_CODES: {
7
+ readonly WELCOME: "WELCOME";
8
+ readonly MEMBERSHIP_PURCHASE: "MEMBERSHIP_PURCHASE";
9
+ readonly MEMBERSHIP_RENEWAL: "MEMBERSHIP_RENEWAL";
10
+ readonly MEMBERSHIP_EXPIRING: "MEMBERSHIP_EXPIRING";
11
+ readonly PAYMENT_REMINDER: "PAYMENT_REMINDER";
12
+ readonly BIRTHDAY: "BIRTHDAY";
13
+ readonly PAYMENT_RECEIPT: "PAYMENT_RECEIPT";
14
+ };
15
+ /**
16
+ * Event names for WhatsApp template events
17
+ */
18
+ declare const WHATSAPP_TEMPLATE_EVENTS: {
19
+ readonly SEND_TEMPLATE: "whatsapp/template.send";
20
+ readonly TEMPLATE_SENT: "whatsapp/template.sent";
21
+ readonly TEMPLATE_FAILED: "whatsapp/template.failed";
22
+ };
23
+ /**
24
+ * Template metadata mapping
25
+ */
26
+ declare const TEMPLATE_METADATA: {
27
+ readonly WELCOME: {
28
+ readonly code: "WELCOME";
29
+ readonly title: "Mensaje de Bienvenida";
30
+ readonly description: "Mensaje para nuevos clientes";
31
+ readonly icon: "UserPlus";
32
+ readonly variables: readonly ["clientName", "gymName", "registrationDate"];
33
+ readonly exampleValues: {
34
+ readonly clientName: "Juan Pérez";
35
+ readonly gymName: "GymSpace";
36
+ readonly registrationDate: "15/01/2024";
37
+ };
38
+ };
39
+ readonly MEMBERSHIP_PURCHASE: {
40
+ readonly code: "MEMBERSHIP_PURCHASE";
41
+ readonly title: "Compra de Membresía";
42
+ readonly description: "Confirmación de nueva membresía";
43
+ readonly icon: "ShoppingCart";
44
+ readonly variables: readonly ["clientName", "planName", "startDate", "endDate", "amount", "paymentFrequency"];
45
+ readonly exampleValues: {
46
+ readonly clientName: "María López";
47
+ readonly planName: "Premium";
48
+ readonly startDate: "01/02/2024";
49
+ readonly endDate: "01/03/2024";
50
+ readonly amount: "$50.00";
51
+ readonly paymentFrequency: "mensual";
52
+ };
53
+ };
54
+ readonly MEMBERSHIP_RENEWAL: {
55
+ readonly code: "MEMBERSHIP_RENEWAL";
56
+ readonly title: "Renovación de Membresía";
57
+ readonly description: "Confirmación de renovación";
58
+ readonly icon: "RefreshCw";
59
+ readonly variables: readonly ["clientName", "planName", "newEndDate", "amount"];
60
+ readonly exampleValues: {
61
+ readonly clientName: "Carlos Ruiz";
62
+ readonly planName: "Básico";
63
+ readonly newEndDate: "15/04/2024";
64
+ readonly amount: "$30.00";
65
+ };
66
+ };
67
+ readonly MEMBERSHIP_EXPIRING: {
68
+ readonly code: "MEMBERSHIP_EXPIRING";
69
+ readonly title: "Membresía Por Vencer";
70
+ readonly description: "Recordatorio de expiración próxima";
71
+ readonly icon: "AlertCircle";
72
+ readonly variables: readonly ["clientName", "planName", "expirationDate", "daysRemaining"];
73
+ readonly exampleValues: {
74
+ readonly clientName: "Ana García";
75
+ readonly planName: "Premium";
76
+ readonly expirationDate: "20/02/2024";
77
+ readonly daysRemaining: "3";
78
+ };
79
+ };
80
+ readonly PAYMENT_REMINDER: {
81
+ readonly code: "PAYMENT_REMINDER";
82
+ readonly title: "Recordatorio de Pago";
83
+ readonly description: "Recordatorio de pago pendiente";
84
+ readonly icon: "DollarSign";
85
+ readonly variables: readonly ["clientName", "amount", "dueDate", "planName"];
86
+ readonly exampleValues: {
87
+ readonly clientName: "Pedro Sánchez";
88
+ readonly amount: "$40.00";
89
+ readonly dueDate: "25/02/2024";
90
+ readonly planName: "Estándar";
91
+ };
92
+ };
93
+ readonly BIRTHDAY: {
94
+ readonly code: "BIRTHDAY";
95
+ readonly title: "Cumpleaños";
96
+ readonly description: "Felicitación de cumpleaños";
97
+ readonly icon: "Cake";
98
+ readonly variables: readonly ["clientName", "gymName", "age"];
99
+ readonly exampleValues: {
100
+ readonly clientName: "Laura Martínez";
101
+ readonly gymName: "GymSpace";
102
+ readonly age: "28";
103
+ };
104
+ };
105
+ readonly PAYMENT_RECEIPT: {
106
+ readonly code: "PAYMENT_RECEIPT";
107
+ readonly title: "Comprobante de Pago";
108
+ readonly description: "Comprobante de venta pagada";
109
+ readonly icon: "Receipt";
110
+ readonly variables: readonly ["gymName", "receiptNumber", "date", "clientName", "items", "amount", "paymentMethod"];
111
+ readonly exampleValues: {
112
+ readonly gymName: "GymSpace";
113
+ readonly receiptNumber: "V-001";
114
+ readonly date: "15/01/2024";
115
+ readonly clientName: "Juan Pérez";
116
+ readonly items: "• Proteína x2 = Q100.00\n• Creatina x1 = Q50.00";
117
+ readonly amount: "Q150.00";
118
+ readonly paymentMethod: "Efectivo";
119
+ };
120
+ };
121
+ };
122
+
123
+ interface BulkMessageVariable {
124
+ name: string;
125
+ placeholder: string;
126
+ description: string;
127
+ example: string;
128
+ category: 'client' | 'gym' | 'membership' | 'activity' | 'datetime';
129
+ required: boolean;
130
+ formatter?: 'text' | 'currency' | 'date' | 'datetime' | 'number';
131
+ }
132
+ declare const BULK_MESSAGE_VARIABLES: BulkMessageVariable[];
133
+ declare const ACTIVITY_MESSAGE_VARIABLES: BulkMessageVariable[];
134
+ type VariableContextType = 'bulk' | 'activity' | 'event' | 'reminder';
135
+ declare const VARIABLE_CONTEXT_MAP: Record<VariableContextType, BulkMessageVariable[]>;
136
+ declare function getVariablesByContext(context: VariableContextType): BulkMessageVariable[];
137
+ declare function validateVariablesInContext(message: string, context: VariableContextType): {
138
+ valid: boolean;
139
+ invalidVariables: string[];
140
+ };
141
+ declare const BULK_MESSAGE_VARIABLE_CATEGORIES: {
142
+ readonly client: "Cliente";
143
+ readonly gym: "Gimnasio";
144
+ readonly membership: "Membresía";
145
+ readonly activity: "Actividad";
146
+ readonly datetime: "Fecha/Hora";
147
+ };
148
+
149
+ declare const PERMISSIONS: {
150
+ readonly ORGANIZATIONS_CREATE: "ORGANIZATIONS_CREATE";
151
+ readonly ORGANIZATIONS_READ: "ORGANIZATIONS_READ";
152
+ readonly ORGANIZATIONS_UPDATE: "ORGANIZATIONS_UPDATE";
153
+ readonly ORGANIZATIONS_DELETE: "ORGANIZATIONS_DELETE";
154
+ readonly GYMS_CREATE: "GYMS_CREATE";
155
+ readonly GYMS_READ: "GYMS_READ";
156
+ readonly GYMS_UPDATE: "GYMS_UPDATE";
157
+ readonly GYMS_DELETE: "GYMS_DELETE";
158
+ readonly COLLABORATORS_CREATE: "COLLABORATORS_CREATE";
159
+ readonly COLLABORATORS_READ: "COLLABORATORS_READ";
160
+ readonly COLLABORATORS_UPDATE: "COLLABORATORS_UPDATE";
161
+ readonly COLLABORATORS_DELETE: "COLLABORATORS_DELETE";
162
+ readonly CLIENTS_CREATE: "CLIENTS_CREATE";
163
+ readonly CLIENTS_READ: "CLIENTS_READ";
164
+ readonly CLIENTS_UPDATE: "CLIENTS_UPDATE";
165
+ readonly CLIENTS_DELETE: "CLIENTS_DELETE";
166
+ readonly CONTRACTS_CREATE: "CONTRACTS_CREATE";
167
+ readonly CONTRACTS_READ: "CONTRACTS_READ";
168
+ readonly CONTRACTS_UPDATE: "CONTRACTS_UPDATE";
169
+ readonly CONTRACTS_APPROVE: "CONTRACTS_APPROVE";
170
+ readonly CONTRACTS_CANCEL: "CONTRACTS_CANCEL";
171
+ readonly CHECKINS_CREATE: "CHECKINS_CREATE";
172
+ readonly CHECKINS_READ: "CHECKINS_READ";
173
+ readonly REPORTS_VIEW: "REPORTS_VIEW";
174
+ readonly REPORTS_FINANCIAL: "REPORTS_FINANCIAL";
175
+ readonly SETTINGS_UPDATE: "SETTINGS_UPDATE";
176
+ readonly ASSETS_CREATE: "ASSETS_CREATE";
177
+ readonly ASSETS_READ: "ASSETS_READ";
178
+ readonly ASSETS_DELETE: "ASSETS_DELETE";
179
+ readonly FILES_CREATE: "FILES_CREATE";
180
+ readonly FILES_READ: "FILES_READ";
181
+ readonly FILES_DELETE: "FILES_DELETE";
182
+ readonly PRODUCTS_CREATE: "PRODUCTS_CREATE";
183
+ readonly PRODUCTS_READ: "PRODUCTS_READ";
184
+ readonly PRODUCTS_UPDATE: "PRODUCTS_UPDATE";
185
+ readonly PRODUCTS_DELETE: "PRODUCTS_DELETE";
186
+ readonly PRODUCT_CATEGORIES_CREATE: "PRODUCT_CATEGORIES_CREATE";
187
+ readonly PRODUCT_CATEGORIES_READ: "PRODUCT_CATEGORIES_READ";
188
+ readonly PRODUCT_CATEGORIES_UPDATE: "PRODUCT_CATEGORIES_UPDATE";
189
+ readonly PRODUCT_CATEGORIES_DELETE: "PRODUCT_CATEGORIES_DELETE";
190
+ readonly SALES_CREATE: "SALES_CREATE";
191
+ readonly SALES_READ: "SALES_READ";
192
+ readonly SALES_UPDATE: "SALES_UPDATE";
193
+ readonly SALES_DELETE: "SALES_DELETE";
194
+ readonly SUPPLIERS_CREATE: "SUPPLIERS_CREATE";
195
+ readonly SUPPLIERS_READ: "SUPPLIERS_READ";
196
+ readonly SUPPLIERS_UPDATE: "SUPPLIERS_UPDATE";
197
+ readonly SUPPLIERS_DELETE: "SUPPLIERS_DELETE";
198
+ readonly PAYMENT_METHODS_CREATE: "PAYMENT_METHODS_CREATE";
199
+ readonly PAYMENT_METHODS_READ: "PAYMENT_METHODS_READ";
200
+ readonly PAYMENT_METHODS_UPDATE: "PAYMENT_METHODS_UPDATE";
201
+ readonly PAYMENT_METHODS_DELETE: "PAYMENT_METHODS_DELETE";
202
+ readonly WHATSAPP_READ: "WHATSAPP_READ";
203
+ readonly WHATSAPP_SEND: "WHATSAPP_SEND";
204
+ readonly WHATSAPP_MANAGE: "WHATSAPP_MANAGE";
205
+ readonly WHATSAPP_BULK_SEND: "WHATSAPP_BULK_SEND";
206
+ readonly WHATSAPP_BULK_MANAGE: "WHATSAPP_BULK_MANAGE";
207
+ readonly ACTIVITIES_CREATE: "ACTIVITIES_CREATE";
208
+ readonly ACTIVITIES_READ: "ACTIVITIES_READ";
209
+ readonly ACTIVITIES_UPDATE: "ACTIVITIES_UPDATE";
210
+ readonly ACTIVITIES_DELETE: "ACTIVITIES_DELETE";
211
+ readonly ACTIVITIES_MANAGE_NOTIFICATIONS: "ACTIVITIES_MANAGE_NOTIFICATIONS";
212
+ readonly TAGS_CREATE: "TAGS_CREATE";
213
+ readonly TAGS_READ: "TAGS_READ";
214
+ readonly TAGS_UPDATE: "TAGS_UPDATE";
215
+ readonly TAGS_DELETE: "TAGS_DELETE";
216
+ readonly COMMISSIONS_CONFIG_CREATE: "COMMISSIONS_CONFIG_CREATE";
217
+ readonly COMMISSIONS_CONFIG_READ: "COMMISSIONS_CONFIG_READ";
218
+ readonly COMMISSIONS_CONFIG_UPDATE: "COMMISSIONS_CONFIG_UPDATE";
219
+ readonly COMMISSIONS_RULES_CREATE: "COMMISSIONS_RULES_CREATE";
220
+ readonly COMMISSIONS_RULES_READ: "COMMISSIONS_RULES_READ";
221
+ readonly COMMISSIONS_RULES_UPDATE: "COMMISSIONS_RULES_UPDATE";
222
+ readonly COMMISSIONS_RULES_DELETE: "COMMISSIONS_RULES_DELETE";
223
+ readonly COMMISSIONS_CALCULATIONS_READ: "COMMISSIONS_CALCULATIONS_READ";
224
+ readonly COMMISSIONS_REPORTS_VIEW: "COMMISSIONS_REPORTS_VIEW";
225
+ readonly CATALOG_READ: "CATALOG_READ";
226
+ readonly CATALOG_UPDATE: "CATALOG_UPDATE";
227
+ readonly CATALOG_MANAGE: "CATALOG_MANAGE";
228
+ readonly SUPER_ADMIN: "SUPER_ADMIN";
229
+ readonly OWNER: "OWNER";
230
+ readonly All: "ALL";
231
+ };
232
+ declare const ROLE_PERMISSIONS: {
233
+ readonly ADMIN: ("ORGANIZATIONS_CREATE" | "ORGANIZATIONS_READ" | "ORGANIZATIONS_UPDATE" | "ORGANIZATIONS_DELETE" | "GYMS_CREATE" | "GYMS_READ" | "GYMS_UPDATE" | "GYMS_DELETE" | "COLLABORATORS_CREATE" | "COLLABORATORS_READ" | "COLLABORATORS_UPDATE" | "COLLABORATORS_DELETE" | "CLIENTS_CREATE" | "CLIENTS_READ" | "CLIENTS_UPDATE" | "CLIENTS_DELETE" | "CONTRACTS_CREATE" | "CONTRACTS_READ" | "CONTRACTS_UPDATE" | "CONTRACTS_APPROVE" | "CONTRACTS_CANCEL" | "CHECKINS_CREATE" | "CHECKINS_READ" | "REPORTS_VIEW" | "REPORTS_FINANCIAL" | "SETTINGS_UPDATE" | "ASSETS_CREATE" | "ASSETS_READ" | "ASSETS_DELETE" | "FILES_CREATE" | "FILES_READ" | "FILES_DELETE" | "PRODUCTS_CREATE" | "PRODUCTS_READ" | "PRODUCTS_UPDATE" | "PRODUCTS_DELETE" | "PRODUCT_CATEGORIES_CREATE" | "PRODUCT_CATEGORIES_READ" | "PRODUCT_CATEGORIES_UPDATE" | "PRODUCT_CATEGORIES_DELETE" | "SALES_CREATE" | "SALES_READ" | "SALES_UPDATE" | "SALES_DELETE" | "SUPPLIERS_CREATE" | "SUPPLIERS_READ" | "SUPPLIERS_UPDATE" | "SUPPLIERS_DELETE" | "PAYMENT_METHODS_CREATE" | "PAYMENT_METHODS_READ" | "PAYMENT_METHODS_UPDATE" | "PAYMENT_METHODS_DELETE" | "WHATSAPP_READ" | "WHATSAPP_SEND" | "WHATSAPP_MANAGE" | "WHATSAPP_BULK_SEND" | "WHATSAPP_BULK_MANAGE" | "ACTIVITIES_CREATE" | "ACTIVITIES_READ" | "ACTIVITIES_UPDATE" | "ACTIVITIES_DELETE" | "ACTIVITIES_MANAGE_NOTIFICATIONS" | "TAGS_CREATE" | "TAGS_READ" | "TAGS_UPDATE" | "TAGS_DELETE" | "COMMISSIONS_CONFIG_CREATE" | "COMMISSIONS_CONFIG_READ" | "COMMISSIONS_CONFIG_UPDATE" | "COMMISSIONS_RULES_CREATE" | "COMMISSIONS_RULES_READ" | "COMMISSIONS_RULES_UPDATE" | "COMMISSIONS_RULES_DELETE" | "COMMISSIONS_CALCULATIONS_READ" | "COMMISSIONS_REPORTS_VIEW" | "CATALOG_READ" | "CATALOG_UPDATE" | "CATALOG_MANAGE" | "SUPER_ADMIN" | "OWNER" | "ALL")[];
234
+ readonly MANAGER: readonly ["GYMS_READ", "COLLABORATORS_READ", "CLIENTS_CREATE", "CLIENTS_READ", "CLIENTS_UPDATE", "CONTRACTS_CREATE", "CONTRACTS_READ", "CHECKINS_CREATE", "CHECKINS_READ", "REPORTS_VIEW", "ASSETS_CREATE", "ASSETS_READ", "ASSETS_DELETE", "FILES_CREATE", "FILES_READ", "FILES_DELETE", "PRODUCTS_CREATE", "PRODUCTS_READ", "PRODUCTS_UPDATE", "PRODUCTS_DELETE", "PRODUCT_CATEGORIES_CREATE", "PRODUCT_CATEGORIES_READ", "PRODUCT_CATEGORIES_UPDATE", "PRODUCT_CATEGORIES_DELETE", "SALES_CREATE", "SALES_READ", "SALES_UPDATE", "SUPPLIERS_CREATE", "SUPPLIERS_READ", "SUPPLIERS_UPDATE", "SUPPLIERS_DELETE", "PAYMENT_METHODS_CREATE", "PAYMENT_METHODS_READ", "PAYMENT_METHODS_UPDATE", "PAYMENT_METHODS_DELETE", "COMMISSIONS_RULES_READ", "COMMISSIONS_CALCULATIONS_READ"];
235
+ };
236
+ declare const CACHE_TTL: {
237
+ readonly USER_PERMISSIONS: 900000;
238
+ readonly GYM_DATA: 1800000;
239
+ readonly STATIC_DATA: 3600000;
240
+ readonly REPORTS: 300000;
241
+ readonly DASHBOARD: 180000;
242
+ readonly WHATSAPP_MESSAGE_STATUS: 300000;
243
+ };
244
+ declare const FILE_LIMITS: {
245
+ readonly MAX_FILE_SIZE: number;
246
+ readonly MAX_IMAGE_SIZE: number;
247
+ readonly MAX_DOCUMENT_SIZE: number;
248
+ };
249
+ declare const PAGINATION_DEFAULTS: {
250
+ readonly PAGE: 1;
251
+ readonly LIMIT: 20;
252
+ readonly MAX_LIMIT: 100;
253
+ };
254
+ declare const DATE_FORMATS: {
255
+ readonly DATE_ONLY: "YYYY-MM-DD";
256
+ readonly DATETIME: "YYYY-MM-DD HH:mm:ss";
257
+ readonly TIME_ONLY: "HH:mm:ss";
258
+ };
259
+ declare const HEADERS: {
260
+ readonly GYM_ID: "X-Gym-Id";
261
+ readonly REQUEST_ID: "X-Request-Id";
262
+ };
263
+
3
264
  declare enum UserType {
4
265
  OWNER = "owner",
5
266
  COLLABORATOR = "collaborator"
@@ -31,6 +292,11 @@ declare enum PlanStatus {
31
292
  INACTIVE = "inactive",
32
293
  ARCHIVED = "archived"
33
294
  }
295
+ declare enum PlanType {
296
+ BASIC = "BASIC",
297
+ PREMIUM = "PREMIUM",
298
+ ENTERPRISE = "ENTERPRISE"
299
+ }
34
300
  declare enum ContractStatus {
35
301
  PENDING = "pending",
36
302
  ACTIVE = "active",
@@ -80,12 +346,107 @@ declare enum ContractAssetType {
80
346
  OTHER = "other"
81
347
  }
82
348
 
83
- type TemplateCodeValue = (typeof TemplateCode)[keyof typeof TemplateCode];
84
349
  /**
85
- * Template codes for WhatsApp messages
350
+ * Evento para enviar un mensaje de WhatsApp
86
351
  */
87
- declare const TemplateCode: {
88
- readonly WELCOME: "WELCOME";
352
+ interface WhatsAppMessageSendEventData {
353
+ gymId: string;
354
+ instanceName: string;
355
+ phoneNumber: string;
356
+ content: string;
357
+ clientId?: string;
358
+ templateId?: string;
359
+ variables?: Record<string, any>;
360
+ userId?: string;
361
+ }
362
+ /**
363
+ * Nombres de eventos de WhatsApp
364
+ */
365
+ declare const WHATSAPP_EVENTS: {
366
+ readonly MESSAGE_SEND: "whatsapp/message.send";
367
+ readonly MESSAGE_RECEIVED: "whatsapp/message.received";
368
+ readonly CONNECTION_UPDATE: "whatsapp/connection.update";
369
+ };
370
+
371
+ declare const BULK_MESSAGING_EVENTS: {
372
+ readonly SEND_BULK_MESSAGES: "whatsapp/bulk-messages.send";
373
+ };
374
+ interface BulkMessageEventData {
375
+ sendId: string;
376
+ gymId: string;
377
+ userId: string;
378
+ instanceName: string;
379
+ templateId?: string;
380
+ message: string;
381
+ variableContext?: VariableContextType;
382
+ clients: Array<{
383
+ clientId: string;
384
+ clientName: string;
385
+ phoneNumber: string;
386
+ data: Record<string, any>;
387
+ }>;
388
+ gymData: Record<string, any>;
389
+ contextData?: Record<string, any>;
390
+ }
391
+ interface SendBulkMessagesEvent {
392
+ name: typeof BULK_MESSAGING_EVENTS.SEND_BULK_MESSAGES;
393
+ data: BulkMessageEventData;
394
+ }
395
+
396
+ declare const ACTIVITY_EVENTS: {
397
+ readonly SEND_ACTIVITY_NOTIFICATION: "activity/notification.send";
398
+ };
399
+ interface SendActivityNotificationEvent {
400
+ name: typeof ACTIVITY_EVENTS.SEND_ACTIVITY_NOTIFICATION;
401
+ data: {
402
+ activityId: string;
403
+ notificationId: string;
404
+ gymId: string;
405
+ userId: string;
406
+ instanceName: string;
407
+ message: string;
408
+ clients: Array<{
409
+ clientId: string;
410
+ clientName: string;
411
+ phoneNumber: string;
412
+ data: {
413
+ id: string;
414
+ name: string;
415
+ email?: string;
416
+ phone: string;
417
+ activePlan?: {
418
+ name: string;
419
+ expirationDate?: Date;
420
+ amount?: number;
421
+ };
422
+ membershipStatus?: string;
423
+ metadata?: Record<string, any>;
424
+ };
425
+ }>;
426
+ gymData: {
427
+ name: string;
428
+ phone?: string;
429
+ address?: string;
430
+ countryConfig: {
431
+ currency: string;
432
+ locale: string;
433
+ };
434
+ };
435
+ activityData: {
436
+ name: string;
437
+ startDateTime: Date;
438
+ durationMinutes: number;
439
+ location: string;
440
+ };
441
+ };
442
+ }
443
+
444
+ type TemplateCodeValue = (typeof TemplateCode)[keyof typeof TemplateCode];
445
+ /**
446
+ * Template codes for WhatsApp messages
447
+ */
448
+ declare const TemplateCode: {
449
+ readonly WELCOME: "WELCOME";
89
450
  readonly MEMBERSHIP_PURCHASE: "MEMBERSHIP_PURCHASE";
90
451
  readonly MEMBERSHIP_RENEWAL: "MEMBERSHIP_RENEWAL";
91
452
  readonly MEMBERSHIP_EXPIRING: "MEMBERSHIP_EXPIRING";
@@ -231,7 +592,7 @@ interface TemplateMetadata {
231
592
  type UUID = string;
232
593
  type Currency = 'USD' | 'EUR' | 'PEN' | 'MXN' | 'COP' | 'ARS' | 'CLP';
233
594
  type EntityType = 'user' | 'organization' | 'gym' | 'collaborator' | 'client' | 'contract' | 'asset';
234
- type Permission = 'SUPER_ADMIN' | 'OWNER' | 'ORGANIZATIONS_CREATE' | 'ORGANIZATIONS_READ' | 'ORGANIZATIONS_UPDATE' | 'ORGANIZATIONS_DELETE' | 'GYMS_CREATE' | 'GYMS_READ' | 'GYMS_UPDATE' | 'GYMS_DELETE' | 'COLLABORATORS_CREATE' | 'COLLABORATORS_READ' | 'COLLABORATORS_UPDATE' | 'COLLABORATORS_DELETE' | 'CLIENTS_CREATE' | 'CLIENTS_READ' | 'CLIENTS_UPDATE' | 'CLIENTS_DELETE' | 'CONTRACTS_CREATE' | 'CONTRACTS_READ' | 'CONTRACTS_UPDATE' | 'CONTRACTS_APPROVE' | 'CONTRACTS_CANCEL' | 'CHECKINS_CREATE' | 'CHECKINS_READ' | 'REPORTS_VIEW' | 'REPORTS_FINANCIAL' | 'SETTINGS_UPDATE' | 'ASSETS_CREATE' | 'ASSETS_READ' | 'ASSETS_DELETE' | 'FILES_CREATE' | 'FILES_READ' | 'FILES_DELETE' | 'PRODUCTS_CREATE' | 'PRODUCTS_READ' | 'PRODUCTS_UPDATE' | 'PRODUCTS_DELETE' | 'PRODUCT_CATEGORIES_CREATE' | 'PRODUCT_CATEGORIES_READ' | 'PRODUCT_CATEGORIES_UPDATE' | 'PRODUCT_CATEGORIES_DELETE' | 'SALES_CREATE' | 'SALES_READ' | 'SALES_UPDATE' | 'SALES_DELETE' | 'SUPPLIERS_CREATE' | 'SUPPLIERS_READ' | 'SUPPLIERS_UPDATE' | 'SUPPLIERS_DELETE' | 'PAYMENT_METHODS_CREATE' | 'PAYMENT_METHODS_READ' | 'PAYMENT_METHODS_UPDATE' | 'PAYMENT_METHODS_DELETE' | 'WHATSAPP_READ' | 'WHATSAPP_SEND' | 'WHATSAPP_MANAGE' | 'WHATSAPP_BULK_SEND' | 'WHATSAPP_BULK_MANAGE' | 'ACTIVITIES_CREATE' | 'ACTIVITIES_READ' | 'ACTIVITIES_UPDATE' | 'ACTIVITIES_DELETE' | 'ACTIVITIES_MANAGE_NOTIFICATIONS' | 'TAGS_CREATE' | 'TAGS_READ' | 'TAGS_UPDATE' | 'TAGS_DELETE' | 'COMMISSIONS_CONFIG_CREATE' | 'COMMISSIONS_CONFIG_READ' | 'COMMISSIONS_CONFIG_UPDATE' | 'COMMISSIONS_RULES_CREATE' | 'COMMISSIONS_RULES_READ' | 'COMMISSIONS_RULES_UPDATE' | 'COMMISSIONS_RULES_DELETE' | 'COMMISSIONS_CALCULATIONS_READ' | 'COMMISSIONS_REPORTS_VIEW' | 'ALL';
595
+ type Permission = 'SUPER_ADMIN' | 'OWNER' | 'ORGANIZATIONS_CREATE' | 'ORGANIZATIONS_READ' | 'ORGANIZATIONS_UPDATE' | 'ORGANIZATIONS_DELETE' | 'GYMS_CREATE' | 'GYMS_READ' | 'GYMS_UPDATE' | 'GYMS_DELETE' | 'COLLABORATORS_CREATE' | 'COLLABORATORS_READ' | 'COLLABORATORS_UPDATE' | 'COLLABORATORS_DELETE' | 'CLIENTS_CREATE' | 'CLIENTS_READ' | 'CLIENTS_UPDATE' | 'CLIENTS_DELETE' | 'CONTRACTS_CREATE' | 'CONTRACTS_READ' | 'CONTRACTS_UPDATE' | 'CONTRACTS_APPROVE' | 'CONTRACTS_CANCEL' | 'CHECKINS_CREATE' | 'CHECKINS_READ' | 'REPORTS_VIEW' | 'REPORTS_FINANCIAL' | 'SETTINGS_UPDATE' | 'ASSETS_CREATE' | 'ASSETS_READ' | 'ASSETS_DELETE' | 'FILES_CREATE' | 'FILES_READ' | 'FILES_DELETE' | 'PRODUCTS_CREATE' | 'PRODUCTS_READ' | 'PRODUCTS_UPDATE' | 'PRODUCTS_DELETE' | 'PRODUCT_CATEGORIES_CREATE' | 'PRODUCT_CATEGORIES_READ' | 'PRODUCT_CATEGORIES_UPDATE' | 'PRODUCT_CATEGORIES_DELETE' | 'SALES_CREATE' | 'SALES_READ' | 'SALES_UPDATE' | 'SALES_DELETE' | 'SUPPLIERS_CREATE' | 'SUPPLIERS_READ' | 'SUPPLIERS_UPDATE' | 'SUPPLIERS_DELETE' | 'PAYMENT_METHODS_CREATE' | 'PAYMENT_METHODS_READ' | 'PAYMENT_METHODS_UPDATE' | 'PAYMENT_METHODS_DELETE' | 'WHATSAPP_READ' | 'WHATSAPP_SEND' | 'WHATSAPP_MANAGE' | 'WHATSAPP_BULK_SEND' | 'WHATSAPP_BULK_MANAGE' | 'ACTIVITIES_CREATE' | 'ACTIVITIES_READ' | 'ACTIVITIES_UPDATE' | 'ACTIVITIES_DELETE' | 'ACTIVITIES_MANAGE_NOTIFICATIONS' | 'TAGS_CREATE' | 'TAGS_READ' | 'TAGS_UPDATE' | 'TAGS_DELETE' | 'COMMISSIONS_CONFIG_CREATE' | 'COMMISSIONS_CONFIG_READ' | 'COMMISSIONS_CONFIG_UPDATE' | 'COMMISSIONS_RULES_CREATE' | 'COMMISSIONS_RULES_READ' | 'COMMISSIONS_RULES_UPDATE' | 'COMMISSIONS_RULES_DELETE' | 'COMMISSIONS_CALCULATIONS_READ' | 'COMMISSIONS_REPORTS_VIEW' | 'CATALOG_READ' | 'CATALOG_UPDATE' | 'CATALOG_MANAGE' | 'ALL';
235
596
  interface AuditFields {
236
597
  createdByUserId: UUID;
237
598
  updatedByUserId?: UUID;
@@ -329,520 +690,131 @@ interface UpdateCollaboratorRoleDto {
329
690
  }
330
691
  interface ListCollaboratorsParams extends PaginationParams {
331
692
  status?: CollaboratorStatus;
332
- roleId?: UUID;
333
- search?: string;
334
- }
335
- interface ActivityQueryParams {
336
- startDate?: string;
337
- endDate?: string;
338
- limit?: number;
339
- type?: string;
340
- }
341
- interface StatsQueryParams {
342
- startDate?: string;
343
- endDate?: string;
344
- }
345
- interface CollaboratorStats {
346
- contracts: {
347
- total: number;
348
- totalAmount: number;
349
- averageAmount: number;
350
- };
351
- checkIns: {
352
- total: number;
353
- };
354
- sales: {
355
- total: number;
356
- totalAmount: number;
357
- };
358
- clients: {
359
- created: number;
360
- };
361
- }
362
- interface ActivityItem {
363
- type: string;
364
- timestamp: Date;
365
- description: string;
366
- metadata: any;
367
- }
368
-
369
- interface IUser {
370
- id: UUID;
371
- email: string;
372
- name: string;
373
- phone?: string;
374
- userType: UserType;
375
- emailVerifiedAt?: Date;
376
- }
377
- interface IOrganization {
378
- id: UUID;
379
- ownerUserId: UUID;
380
- name: string;
381
- subscriptionPlanId: UUID;
382
- subscriptionStatus: string;
383
- subscriptionStart: Date;
384
- subscriptionEnd: Date;
385
- country: string;
386
- currency: string;
387
- timezone: string;
388
- settings?: Record<string, any>;
389
- }
390
- interface IGym {
391
- id: UUID;
392
- organizationId: UUID;
393
- name: string;
394
- address?: string;
395
- description?: string;
396
- phone?: string;
397
- gymCode: string;
398
- profileAssetId?: UUID;
399
- coverAssetId?: UUID;
400
- evaluationStructure?: Record<string, any>;
401
- }
402
- interface ICollaborator {
403
- id: UUID;
404
- userId: UUID;
405
- gymId: UUID;
406
- roleId: UUID;
407
- status: CollaboratorStatus;
408
- hiredDate?: Date;
409
- invitationId?: UUID;
410
- profileAssetId?: UUID;
411
- coverAssetId?: UUID;
412
- description?: string;
413
- specialties?: string[];
414
- }
415
- interface IRole {
416
- id: UUID;
417
- name: string;
418
- permissions: Permission[];
419
- description?: string;
420
- canManageEvaluations: boolean;
421
- }
422
- interface ISubscriptionPlan {
423
- id: UUID;
424
- name: string;
425
- price: any;
426
- billingFrequency: string;
427
- maxGyms: number;
428
- maxClientsPerGym: number;
429
- maxUsersPerGym: number;
430
- features: any;
431
- description?: string;
432
- }
433
- interface ISubscription {
434
- id: UUID;
435
- organizationId: UUID;
436
- subscriptionPlanId: UUID;
437
- subscriptionPlan?: ISubscriptionPlan;
438
- status: string;
439
- startDate: Date;
440
- endDate: Date;
441
- isActive: boolean;
442
- }
443
- interface IRequestContext {
444
- user?: IUser;
445
- gym?: IGym;
446
- organization?: IOrganization;
447
- subscription?: ISubscription;
448
- permissions: Permission[];
449
- hasPermission(permission: Permission): boolean;
450
- canAccess(resource: string, action: string): boolean;
451
- getGymId(): UUID | undefined;
452
- getOrganizationId(): UUID | undefined;
453
- getUserId(): UUID | undefined;
454
- getTimezone(): string;
455
- readonly isOwner: boolean;
456
- readonly isCollaborator: boolean;
457
- }
458
-
459
- /**
460
- * Template code constants
461
- */
462
- declare const TEMPLATE_CODES: {
463
- readonly WELCOME: "WELCOME";
464
- readonly MEMBERSHIP_PURCHASE: "MEMBERSHIP_PURCHASE";
465
- readonly MEMBERSHIP_RENEWAL: "MEMBERSHIP_RENEWAL";
466
- readonly MEMBERSHIP_EXPIRING: "MEMBERSHIP_EXPIRING";
467
- readonly PAYMENT_REMINDER: "PAYMENT_REMINDER";
468
- readonly BIRTHDAY: "BIRTHDAY";
469
- readonly PAYMENT_RECEIPT: "PAYMENT_RECEIPT";
470
- };
471
- /**
472
- * Event names for WhatsApp template events
473
- */
474
- declare const WHATSAPP_TEMPLATE_EVENTS: {
475
- readonly SEND_TEMPLATE: "whatsapp/template.send";
476
- readonly TEMPLATE_SENT: "whatsapp/template.sent";
477
- readonly TEMPLATE_FAILED: "whatsapp/template.failed";
478
- };
479
- /**
480
- * Template metadata mapping
481
- */
482
- declare const TEMPLATE_METADATA: {
483
- readonly WELCOME: {
484
- readonly code: "WELCOME";
485
- readonly title: "Mensaje de Bienvenida";
486
- readonly description: "Mensaje para nuevos clientes";
487
- readonly icon: "UserPlus";
488
- readonly variables: readonly ["clientName", "gymName", "registrationDate"];
489
- readonly exampleValues: {
490
- readonly clientName: "Juan Pérez";
491
- readonly gymName: "GymSpace";
492
- readonly registrationDate: "15/01/2024";
493
- };
494
- };
495
- readonly MEMBERSHIP_PURCHASE: {
496
- readonly code: "MEMBERSHIP_PURCHASE";
497
- readonly title: "Compra de Membresía";
498
- readonly description: "Confirmación de nueva membresía";
499
- readonly icon: "ShoppingCart";
500
- readonly variables: readonly ["clientName", "planName", "startDate", "endDate", "amount", "paymentFrequency"];
501
- readonly exampleValues: {
502
- readonly clientName: "María López";
503
- readonly planName: "Premium";
504
- readonly startDate: "01/02/2024";
505
- readonly endDate: "01/03/2024";
506
- readonly amount: "$50.00";
507
- readonly paymentFrequency: "mensual";
508
- };
509
- };
510
- readonly MEMBERSHIP_RENEWAL: {
511
- readonly code: "MEMBERSHIP_RENEWAL";
512
- readonly title: "Renovación de Membresía";
513
- readonly description: "Confirmación de renovación";
514
- readonly icon: "RefreshCw";
515
- readonly variables: readonly ["clientName", "planName", "newEndDate", "amount"];
516
- readonly exampleValues: {
517
- readonly clientName: "Carlos Ruiz";
518
- readonly planName: "Básico";
519
- readonly newEndDate: "15/04/2024";
520
- readonly amount: "$30.00";
521
- };
522
- };
523
- readonly MEMBERSHIP_EXPIRING: {
524
- readonly code: "MEMBERSHIP_EXPIRING";
525
- readonly title: "Membresía Por Vencer";
526
- readonly description: "Recordatorio de expiración próxima";
527
- readonly icon: "AlertCircle";
528
- readonly variables: readonly ["clientName", "planName", "expirationDate", "daysRemaining"];
529
- readonly exampleValues: {
530
- readonly clientName: "Ana García";
531
- readonly planName: "Premium";
532
- readonly expirationDate: "20/02/2024";
533
- readonly daysRemaining: "3";
534
- };
535
- };
536
- readonly PAYMENT_REMINDER: {
537
- readonly code: "PAYMENT_REMINDER";
538
- readonly title: "Recordatorio de Pago";
539
- readonly description: "Recordatorio de pago pendiente";
540
- readonly icon: "DollarSign";
541
- readonly variables: readonly ["clientName", "amount", "dueDate", "planName"];
542
- readonly exampleValues: {
543
- readonly clientName: "Pedro Sánchez";
544
- readonly amount: "$40.00";
545
- readonly dueDate: "25/02/2024";
546
- readonly planName: "Estándar";
547
- };
548
- };
549
- readonly BIRTHDAY: {
550
- readonly code: "BIRTHDAY";
551
- readonly title: "Cumpleaños";
552
- readonly description: "Felicitación de cumpleaños";
553
- readonly icon: "Cake";
554
- readonly variables: readonly ["clientName", "gymName", "age"];
555
- readonly exampleValues: {
556
- readonly clientName: "Laura Martínez";
557
- readonly gymName: "GymSpace";
558
- readonly age: "28";
559
- };
560
- };
561
- readonly PAYMENT_RECEIPT: {
562
- readonly code: "PAYMENT_RECEIPT";
563
- readonly title: "Comprobante de Pago";
564
- readonly description: "Comprobante de venta pagada";
565
- readonly icon: "Receipt";
566
- readonly variables: readonly ["gymName", "receiptNumber", "date", "clientName", "items", "amount", "paymentMethod"];
567
- readonly exampleValues: {
568
- readonly gymName: "GymSpace";
569
- readonly receiptNumber: "V-001";
570
- readonly date: "15/01/2024";
571
- readonly clientName: "Juan Pérez";
572
- readonly items: "• Proteína x2 = Q100.00\n• Creatina x1 = Q50.00";
573
- readonly amount: "Q150.00";
574
- readonly paymentMethod: "Efectivo";
575
- };
576
- };
577
- };
578
-
579
- interface BulkMessageVariable {
580
- name: string;
581
- placeholder: string;
582
- description: string;
583
- example: string;
584
- category: 'client' | 'gym' | 'membership' | 'activity' | 'datetime';
585
- required: boolean;
586
- formatter?: 'text' | 'currency' | 'date' | 'datetime' | 'number';
587
- }
588
- declare const BULK_MESSAGE_VARIABLES: BulkMessageVariable[];
589
- declare const BULK_MESSAGE_VARIABLE_CATEGORIES: {
590
- readonly client: "Cliente";
591
- readonly gym: "Gimnasio";
592
- readonly membership: "Membresía";
593
- readonly activity: "Actividad";
594
- readonly datetime: "Fecha/Hora";
595
- };
596
-
597
- declare const PERMISSIONS: {
598
- readonly ORGANIZATIONS_CREATE: "ORGANIZATIONS_CREATE";
599
- readonly ORGANIZATIONS_READ: "ORGANIZATIONS_READ";
600
- readonly ORGANIZATIONS_UPDATE: "ORGANIZATIONS_UPDATE";
601
- readonly ORGANIZATIONS_DELETE: "ORGANIZATIONS_DELETE";
602
- readonly GYMS_CREATE: "GYMS_CREATE";
603
- readonly GYMS_READ: "GYMS_READ";
604
- readonly GYMS_UPDATE: "GYMS_UPDATE";
605
- readonly GYMS_DELETE: "GYMS_DELETE";
606
- readonly COLLABORATORS_CREATE: "COLLABORATORS_CREATE";
607
- readonly COLLABORATORS_READ: "COLLABORATORS_READ";
608
- readonly COLLABORATORS_UPDATE: "COLLABORATORS_UPDATE";
609
- readonly COLLABORATORS_DELETE: "COLLABORATORS_DELETE";
610
- readonly CLIENTS_CREATE: "CLIENTS_CREATE";
611
- readonly CLIENTS_READ: "CLIENTS_READ";
612
- readonly CLIENTS_UPDATE: "CLIENTS_UPDATE";
613
- readonly CLIENTS_DELETE: "CLIENTS_DELETE";
614
- readonly CONTRACTS_CREATE: "CONTRACTS_CREATE";
615
- readonly CONTRACTS_READ: "CONTRACTS_READ";
616
- readonly CONTRACTS_UPDATE: "CONTRACTS_UPDATE";
617
- readonly CONTRACTS_APPROVE: "CONTRACTS_APPROVE";
618
- readonly CONTRACTS_CANCEL: "CONTRACTS_CANCEL";
619
- readonly CHECKINS_CREATE: "CHECKINS_CREATE";
620
- readonly CHECKINS_READ: "CHECKINS_READ";
621
- readonly REPORTS_VIEW: "REPORTS_VIEW";
622
- readonly REPORTS_FINANCIAL: "REPORTS_FINANCIAL";
623
- readonly SETTINGS_UPDATE: "SETTINGS_UPDATE";
624
- readonly ASSETS_CREATE: "ASSETS_CREATE";
625
- readonly ASSETS_READ: "ASSETS_READ";
626
- readonly ASSETS_DELETE: "ASSETS_DELETE";
627
- readonly FILES_CREATE: "FILES_CREATE";
628
- readonly FILES_READ: "FILES_READ";
629
- readonly FILES_DELETE: "FILES_DELETE";
630
- readonly PRODUCTS_CREATE: "PRODUCTS_CREATE";
631
- readonly PRODUCTS_READ: "PRODUCTS_READ";
632
- readonly PRODUCTS_UPDATE: "PRODUCTS_UPDATE";
633
- readonly PRODUCTS_DELETE: "PRODUCTS_DELETE";
634
- readonly PRODUCT_CATEGORIES_CREATE: "PRODUCT_CATEGORIES_CREATE";
635
- readonly PRODUCT_CATEGORIES_READ: "PRODUCT_CATEGORIES_READ";
636
- readonly PRODUCT_CATEGORIES_UPDATE: "PRODUCT_CATEGORIES_UPDATE";
637
- readonly PRODUCT_CATEGORIES_DELETE: "PRODUCT_CATEGORIES_DELETE";
638
- readonly SALES_CREATE: "SALES_CREATE";
639
- readonly SALES_READ: "SALES_READ";
640
- readonly SALES_UPDATE: "SALES_UPDATE";
641
- readonly SALES_DELETE: "SALES_DELETE";
642
- readonly SUPPLIERS_CREATE: "SUPPLIERS_CREATE";
643
- readonly SUPPLIERS_READ: "SUPPLIERS_READ";
644
- readonly SUPPLIERS_UPDATE: "SUPPLIERS_UPDATE";
645
- readonly SUPPLIERS_DELETE: "SUPPLIERS_DELETE";
646
- readonly PAYMENT_METHODS_CREATE: "PAYMENT_METHODS_CREATE";
647
- readonly PAYMENT_METHODS_READ: "PAYMENT_METHODS_READ";
648
- readonly PAYMENT_METHODS_UPDATE: "PAYMENT_METHODS_UPDATE";
649
- readonly PAYMENT_METHODS_DELETE: "PAYMENT_METHODS_DELETE";
650
- readonly WHATSAPP_READ: "WHATSAPP_READ";
651
- readonly WHATSAPP_SEND: "WHATSAPP_SEND";
652
- readonly WHATSAPP_MANAGE: "WHATSAPP_MANAGE";
653
- readonly WHATSAPP_BULK_SEND: "WHATSAPP_BULK_SEND";
654
- readonly WHATSAPP_BULK_MANAGE: "WHATSAPP_BULK_MANAGE";
655
- readonly ACTIVITIES_CREATE: "ACTIVITIES_CREATE";
656
- readonly ACTIVITIES_READ: "ACTIVITIES_READ";
657
- readonly ACTIVITIES_UPDATE: "ACTIVITIES_UPDATE";
658
- readonly ACTIVITIES_DELETE: "ACTIVITIES_DELETE";
659
- readonly ACTIVITIES_MANAGE_NOTIFICATIONS: "ACTIVITIES_MANAGE_NOTIFICATIONS";
660
- readonly TAGS_CREATE: "TAGS_CREATE";
661
- readonly TAGS_READ: "TAGS_READ";
662
- readonly TAGS_UPDATE: "TAGS_UPDATE";
663
- readonly TAGS_DELETE: "TAGS_DELETE";
664
- readonly COMMISSIONS_CONFIG_CREATE: "COMMISSIONS_CONFIG_CREATE";
665
- readonly COMMISSIONS_CONFIG_READ: "COMMISSIONS_CONFIG_READ";
666
- readonly COMMISSIONS_CONFIG_UPDATE: "COMMISSIONS_CONFIG_UPDATE";
667
- readonly COMMISSIONS_RULES_CREATE: "COMMISSIONS_RULES_CREATE";
668
- readonly COMMISSIONS_RULES_READ: "COMMISSIONS_RULES_READ";
669
- readonly COMMISSIONS_RULES_UPDATE: "COMMISSIONS_RULES_UPDATE";
670
- readonly COMMISSIONS_RULES_DELETE: "COMMISSIONS_RULES_DELETE";
671
- readonly COMMISSIONS_CALCULATIONS_READ: "COMMISSIONS_CALCULATIONS_READ";
672
- readonly COMMISSIONS_REPORTS_VIEW: "COMMISSIONS_REPORTS_VIEW";
673
- readonly SUPER_ADMIN: "SUPER_ADMIN";
674
- readonly OWNER: "OWNER";
675
- readonly All: "ALL";
676
- };
677
- declare const ROLE_PERMISSIONS: {
678
- readonly ADMIN: ("SUPER_ADMIN" | "OWNER" | "ORGANIZATIONS_CREATE" | "ORGANIZATIONS_READ" | "ORGANIZATIONS_UPDATE" | "ORGANIZATIONS_DELETE" | "GYMS_CREATE" | "GYMS_READ" | "GYMS_UPDATE" | "GYMS_DELETE" | "COLLABORATORS_CREATE" | "COLLABORATORS_READ" | "COLLABORATORS_UPDATE" | "COLLABORATORS_DELETE" | "CLIENTS_CREATE" | "CLIENTS_READ" | "CLIENTS_UPDATE" | "CLIENTS_DELETE" | "CONTRACTS_CREATE" | "CONTRACTS_READ" | "CONTRACTS_UPDATE" | "CONTRACTS_APPROVE" | "CONTRACTS_CANCEL" | "CHECKINS_CREATE" | "CHECKINS_READ" | "REPORTS_VIEW" | "REPORTS_FINANCIAL" | "SETTINGS_UPDATE" | "ASSETS_CREATE" | "ASSETS_READ" | "ASSETS_DELETE" | "FILES_CREATE" | "FILES_READ" | "FILES_DELETE" | "PRODUCTS_CREATE" | "PRODUCTS_READ" | "PRODUCTS_UPDATE" | "PRODUCTS_DELETE" | "PRODUCT_CATEGORIES_CREATE" | "PRODUCT_CATEGORIES_READ" | "PRODUCT_CATEGORIES_UPDATE" | "PRODUCT_CATEGORIES_DELETE" | "SALES_CREATE" | "SALES_READ" | "SALES_UPDATE" | "SALES_DELETE" | "SUPPLIERS_CREATE" | "SUPPLIERS_READ" | "SUPPLIERS_UPDATE" | "SUPPLIERS_DELETE" | "PAYMENT_METHODS_CREATE" | "PAYMENT_METHODS_READ" | "PAYMENT_METHODS_UPDATE" | "PAYMENT_METHODS_DELETE" | "WHATSAPP_READ" | "WHATSAPP_SEND" | "WHATSAPP_MANAGE" | "WHATSAPP_BULK_SEND" | "WHATSAPP_BULK_MANAGE" | "ACTIVITIES_CREATE" | "ACTIVITIES_READ" | "ACTIVITIES_UPDATE" | "ACTIVITIES_DELETE" | "ACTIVITIES_MANAGE_NOTIFICATIONS" | "TAGS_CREATE" | "TAGS_READ" | "TAGS_UPDATE" | "TAGS_DELETE" | "COMMISSIONS_CONFIG_CREATE" | "COMMISSIONS_CONFIG_READ" | "COMMISSIONS_CONFIG_UPDATE" | "COMMISSIONS_RULES_CREATE" | "COMMISSIONS_RULES_READ" | "COMMISSIONS_RULES_UPDATE" | "COMMISSIONS_RULES_DELETE" | "COMMISSIONS_CALCULATIONS_READ" | "COMMISSIONS_REPORTS_VIEW" | "ALL")[];
679
- readonly MANAGER: readonly ["GYMS_READ", "COLLABORATORS_READ", "CLIENTS_CREATE", "CLIENTS_READ", "CLIENTS_UPDATE", "CONTRACTS_CREATE", "CONTRACTS_READ", "CHECKINS_CREATE", "CHECKINS_READ", "REPORTS_VIEW", "ASSETS_CREATE", "ASSETS_READ", "ASSETS_DELETE", "FILES_CREATE", "FILES_READ", "FILES_DELETE", "PRODUCTS_CREATE", "PRODUCTS_READ", "PRODUCTS_UPDATE", "PRODUCTS_DELETE", "PRODUCT_CATEGORIES_CREATE", "PRODUCT_CATEGORIES_READ", "PRODUCT_CATEGORIES_UPDATE", "PRODUCT_CATEGORIES_DELETE", "SALES_CREATE", "SALES_READ", "SALES_UPDATE", "SUPPLIERS_CREATE", "SUPPLIERS_READ", "SUPPLIERS_UPDATE", "SUPPLIERS_DELETE", "PAYMENT_METHODS_CREATE", "PAYMENT_METHODS_READ", "PAYMENT_METHODS_UPDATE", "PAYMENT_METHODS_DELETE", "COMMISSIONS_RULES_READ", "COMMISSIONS_CALCULATIONS_READ"];
680
- };
681
- declare const CACHE_TTL: {
682
- readonly USER_PERMISSIONS: 900000;
683
- readonly GYM_DATA: 1800000;
684
- readonly STATIC_DATA: 3600000;
685
- readonly REPORTS: 300000;
686
- readonly DASHBOARD: 180000;
687
- readonly WHATSAPP_MESSAGE_STATUS: 300000;
688
- };
689
- declare const FILE_LIMITS: {
690
- readonly MAX_FILE_SIZE: number;
691
- readonly MAX_IMAGE_SIZE: number;
692
- readonly MAX_DOCUMENT_SIZE: number;
693
- };
694
- declare const PAGINATION_DEFAULTS: {
695
- readonly PAGE: 1;
696
- readonly LIMIT: 20;
697
- readonly MAX_LIMIT: 100;
698
- };
699
- declare const DATE_FORMATS: {
700
- readonly DATE_ONLY: "YYYY-MM-DD";
701
- readonly DATETIME: "YYYY-MM-DD HH:mm:ss";
702
- readonly TIME_ONLY: "HH:mm:ss";
703
- };
704
- declare const HEADERS: {
705
- readonly GYM_ID: "X-Gym-Id";
706
- readonly REQUEST_ID: "X-Request-Id";
707
- };
708
-
709
- declare enum RoleNames {
710
- ADMIN = "Admin",
711
- ENCARGADO = "Encargado",
712
- OWNER = "OWNER"
713
- }
714
- declare const ROLE_NAMES: typeof RoleNames;
715
- type RoleName = RoleNames;
716
- declare function isAdminRole(roleName: string | null | undefined): boolean;
717
- declare function isEncargadoRole(roleName: string | null | undefined): boolean;
718
- declare function canAccessFeature(userRole: string | null | undefined, allowedRoles: string[] | RoleNames[]): boolean;
719
- declare function getRoleDisplayName(roleName: string | null | undefined): string;
720
- declare function getRoleDescription(roleName: string | null | undefined): string;
721
- declare function getRoleCapabilities(roleName: string | null | undefined): string[];
722
-
723
- /**
724
- * Evento para enviar un mensaje de WhatsApp
725
- */
726
- interface WhatsAppMessageSendEventData {
727
- gymId: string;
728
- instanceName: string;
729
- phoneNumber: string;
730
- content: string;
731
- clientId?: string;
732
- templateId?: string;
733
- variables?: Record<string, any>;
734
- userId?: string;
693
+ roleId?: UUID;
694
+ search?: string;
735
695
  }
736
- /**
737
- * Nombres de eventos de WhatsApp
738
- */
739
- declare const WHATSAPP_EVENTS: {
740
- readonly MESSAGE_SEND: "whatsapp/message.send";
741
- readonly MESSAGE_RECEIVED: "whatsapp/message.received";
742
- readonly CONNECTION_UPDATE: "whatsapp/connection.update";
743
- };
744
-
745
- declare const BULK_MESSAGING_EVENTS: {
746
- readonly GENERATE_BULK_MESSAGE: "whatsapp/bulk-message.generate";
747
- readonly SEND_BULK_MESSAGES: "whatsapp/bulk-messages.send";
748
- };
749
- interface GenerateBulkMessageEvent {
750
- name: typeof BULK_MESSAGING_EVENTS.GENERATE_BULK_MESSAGE;
751
- data: {
752
- gymId: string;
753
- userId: string;
754
- prompt: string;
755
- includeVariables?: string[];
756
- tone?: 'promotional' | 'informational' | 'reminder' | 'greeting' | 'custom' | 'friendly';
757
- language?: string;
758
- additionalRequirements?: string;
759
- };
696
+ interface ActivityQueryParams {
697
+ startDate?: string;
698
+ endDate?: string;
699
+ limit?: number;
700
+ type?: string;
760
701
  }
761
- interface SendBulkMessagesEvent {
762
- name: typeof BULK_MESSAGING_EVENTS.SEND_BULK_MESSAGES;
763
- data: {
764
- sendId: string;
765
- gymId: string;
766
- userId: string;
767
- instanceName: string;
768
- templateId?: string;
769
- message: string;
770
- clients: Array<{
771
- clientId: string;
772
- clientName: string;
773
- phoneNumber: string;
774
- data: {
775
- id: string;
776
- name: string;
777
- email?: string;
778
- phone: string;
779
- activePlan?: {
780
- name: string;
781
- expirationDate?: Date;
782
- amount?: number;
783
- };
784
- membershipStatus?: string;
785
- metadata?: Record<string, any>;
786
- };
787
- }>;
788
- gymData: {
789
- name: string;
790
- phone?: string;
791
- address?: string;
792
- countryConfig: {
793
- currency: string;
794
- locale: string;
795
- };
796
- };
702
+ interface StatsQueryParams {
703
+ startDate?: string;
704
+ endDate?: string;
705
+ }
706
+ interface CollaboratorStats {
707
+ contracts: {
708
+ total: number;
709
+ totalAmount: number;
710
+ averageAmount: number;
711
+ };
712
+ checkIns: {
713
+ total: number;
714
+ };
715
+ sales: {
716
+ total: number;
717
+ totalAmount: number;
718
+ };
719
+ clients: {
720
+ created: number;
797
721
  };
798
722
  }
723
+ interface ActivityItem {
724
+ type: string;
725
+ timestamp: Date;
726
+ description: string;
727
+ metadata: any;
728
+ }
799
729
 
800
- declare const ACTIVITY_EVENTS: {
801
- readonly SEND_ACTIVITY_NOTIFICATION: "activity/notification.send";
802
- };
803
- interface SendActivityNotificationEvent {
804
- name: typeof ACTIVITY_EVENTS.SEND_ACTIVITY_NOTIFICATION;
805
- data: {
806
- activityId: string;
807
- notificationId: string;
808
- gymId: string;
809
- userId: string;
810
- instanceName: string;
811
- message: string;
812
- clients: Array<{
813
- clientId: string;
814
- clientName: string;
815
- phoneNumber: string;
816
- data: {
817
- id: string;
818
- name: string;
819
- email?: string;
820
- phone: string;
821
- activePlan?: {
822
- name: string;
823
- expirationDate?: Date;
824
- amount?: number;
825
- };
826
- membershipStatus?: string;
827
- metadata?: Record<string, any>;
828
- };
829
- }>;
830
- gymData: {
831
- name: string;
832
- phone?: string;
833
- address?: string;
834
- countryConfig: {
835
- currency: string;
836
- locale: string;
837
- };
838
- };
839
- activityData: {
840
- name: string;
841
- startDateTime: Date;
842
- durationMinutes: number;
843
- location: string;
844
- };
845
- };
730
+ interface IUser {
731
+ id: UUID;
732
+ email: string;
733
+ name: string;
734
+ phone?: string;
735
+ userType: UserType;
736
+ emailVerifiedAt?: Date;
737
+ }
738
+ interface IOrganization {
739
+ id: UUID;
740
+ ownerUserId: UUID;
741
+ name: string;
742
+ subscriptionPlanId: UUID;
743
+ subscriptionStatus: string;
744
+ subscriptionStart: Date;
745
+ subscriptionEnd: Date;
746
+ country: string;
747
+ currency: string;
748
+ timezone: string;
749
+ settings?: Record<string, any>;
750
+ }
751
+ interface IGym {
752
+ id: UUID;
753
+ organizationId: UUID;
754
+ name: string;
755
+ address?: string;
756
+ description?: string;
757
+ phone?: string;
758
+ gymCode: string;
759
+ profileAssetId?: UUID;
760
+ coverAssetId?: UUID;
761
+ evaluationStructure?: Record<string, any>;
762
+ }
763
+ interface ICollaborator {
764
+ id: UUID;
765
+ userId: UUID;
766
+ gymId: UUID;
767
+ roleId: UUID;
768
+ status: CollaboratorStatus;
769
+ hiredDate?: Date;
770
+ invitationId?: UUID;
771
+ profileAssetId?: UUID;
772
+ coverAssetId?: UUID;
773
+ description?: string;
774
+ specialties?: string[];
775
+ }
776
+ interface IRole {
777
+ id: UUID;
778
+ name: string;
779
+ permissions: Permission[];
780
+ description?: string;
781
+ canManageEvaluations: boolean;
782
+ }
783
+ interface ISubscriptionPlan {
784
+ id: UUID;
785
+ name: string;
786
+ price: any;
787
+ billingFrequency: string;
788
+ maxGyms: number;
789
+ maxClientsPerGym: number;
790
+ maxUsersPerGym: number;
791
+ features: any;
792
+ description?: string;
793
+ }
794
+ interface ISubscription {
795
+ id: UUID;
796
+ organizationId: UUID;
797
+ subscriptionPlanId: UUID;
798
+ subscriptionPlan?: ISubscriptionPlan;
799
+ status: string;
800
+ startDate: Date;
801
+ endDate: Date;
802
+ isActive: boolean;
803
+ }
804
+ interface IRequestContext {
805
+ user?: IUser;
806
+ gym?: IGym;
807
+ organization?: IOrganization;
808
+ subscription?: ISubscription;
809
+ permissions: Permission[];
810
+ hasPermission(permission: Permission): boolean;
811
+ canAccess(resource: string, action: string): boolean;
812
+ getGymId(): UUID | undefined;
813
+ getOrganizationId(): UUID | undefined;
814
+ getUserId(): UUID | undefined;
815
+ getTimezone(): string;
816
+ readonly isOwner: boolean;
817
+ readonly isCollaborator: boolean;
846
818
  }
847
819
 
848
820
  declare const templateGenerationRequestSchema: z.ZodObject<{
@@ -893,12 +865,12 @@ declare const aiGeneratedTemplateSchema: z.ZodObject<{
893
865
  suggestions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
894
866
  }, "strip", z.ZodTypeAny, {
895
867
  message: string;
896
- tone: "friendly" | "professional" | "casual" | "urgent";
868
+ tone: "professional" | "friendly" | "casual" | "urgent";
897
869
  usedVariables: string[];
898
870
  suggestions?: string[] | undefined;
899
871
  }, {
900
872
  message: string;
901
- tone: "friendly" | "professional" | "casual" | "urgent";
873
+ tone: "professional" | "friendly" | "casual" | "urgent";
902
874
  usedVariables: string[];
903
875
  suggestions?: string[] | undefined;
904
876
  }>;
@@ -914,13 +886,13 @@ declare const bulkMessageGenerationRequestSchema: z.ZodObject<{
914
886
  }, "strip", z.ZodTypeAny, {
915
887
  language: string;
916
888
  prompt: string;
917
- tone?: "promotional" | "informational" | "reminder" | "greeting" | "friendly" | undefined;
889
+ tone?: "reminder" | "friendly" | "promotional" | "informational" | "greeting" | undefined;
918
890
  includeVariables?: string[] | undefined;
919
891
  additionalRequirements?: string | undefined;
920
892
  }, {
921
893
  prompt: string;
922
894
  language?: string | undefined;
923
- tone?: "promotional" | "informational" | "reminder" | "greeting" | "friendly" | undefined;
895
+ tone?: "reminder" | "friendly" | "promotional" | "informational" | "greeting" | undefined;
924
896
  includeVariables?: string[] | undefined;
925
897
  additionalRequirements?: string | undefined;
926
898
  }>;
@@ -931,16 +903,80 @@ declare const bulkMessageSchema: z.ZodObject<{
931
903
  suggestions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
932
904
  }, "strip", z.ZodTypeAny, {
933
905
  message: string;
934
- tone: "promotional" | "informational" | "reminder" | "greeting" | "friendly";
906
+ tone: "reminder" | "friendly" | "promotional" | "informational" | "greeting";
935
907
  usedVariables: string[];
936
908
  suggestions?: string[] | undefined;
937
909
  }, {
938
910
  message: string;
939
- tone: "promotional" | "informational" | "reminder" | "greeting" | "friendly";
911
+ tone: "reminder" | "friendly" | "promotional" | "informational" | "greeting";
940
912
  usedVariables: string[];
941
913
  suggestions?: string[] | undefined;
942
914
  }>;
943
915
  type BulkMessageGenerationRequest = z.infer<typeof bulkMessageGenerationRequestSchema>;
944
916
  type BulkMessage = z.infer<typeof bulkMessageSchema>;
945
917
 
946
- export { ACTIVITY_EVENTS, type AIGeneratedTemplate, type AcceptInvitationDto, type ActivityItem, type ActivityQueryParams, AssetCategory, AssetStatus, type AuditFields, BULK_MESSAGE_VARIABLES, BULK_MESSAGE_VARIABLE_CATEGORIES, BULK_MESSAGING_EVENTS, type BirthdayTemplateData, type BulkMessage, type BulkMessageGenerationRequest, type BulkMessageVariable, CACHE_TTL, CancellationReason, ClientStatus, type Collaborator, type CollaboratorStats, CollaboratorStatus, ContractAssetType, ContractStatus, type CreateInvitationDto, type Currency, DATE_FORMATS, type EntityType, FILE_LIMITS, type GenerateBulkMessageEvent, HEADERS, type ICollaborator, type IGym, type IOrganization, type IRequestContext, type IRole, type ISubscription, type ISubscriptionPlan, type IUser, type Invitation, InvitationStatus, type ListCollaboratorsParams, type MembershipExpiringTemplateData, type MembershipPurchaseTemplateData, type MembershipRenewalTemplateData, PAGINATION_DEFAULTS, PERMISSIONS, type PaginatedResponse, type PaginationMeta, type PaginationParams, PaymentFrequency, type PaymentReceiptTemplateData, type PaymentReminderTemplateData, type Permission, PlanStatus, ROLE_NAMES, ROLE_PERMISSIONS, type Role, type RoleName, RoleNames, type SendActivityNotificationEvent, type SendBulkMessagesEvent, type StatsQueryParams, SubscriptionStatus, SuspensionType, TEMPLATE_CODES, TEMPLATE_METADATA, TemplateCode, type TemplateGenerationRequest, type TemplateMetadata, TemplateType, type UUID, type UpdateCollaboratorDto, type UpdateCollaboratorRoleDto, type UpdateCollaboratorStatusDto, type User, UserType, type ValidateByCodeDto, WHATSAPP_EVENTS, WHATSAPP_TEMPLATE_EVENTS, type WelcomeTemplateData, type WhatsAppMessageSendEventData, type WhatsAppTemplateData, type WhatsAppTemplateEventData, aiGeneratedTemplateSchema, bulkMessageGenerationRequestSchema, bulkMessageSchema, canAccessFeature, getRoleCapabilities, getRoleDescription, getRoleDisplayName, isAdminRole, isEncargadoRole, templateGenerationRequestSchema };
918
+ declare const activityNotificationGenerationRequestSchema: z.ZodObject<{
919
+ prompt: z.ZodString;
920
+ tone: z.ZodOptional<z.ZodEnum<["friendly", "formal", "urgent", "motivational", "reminder"]>>;
921
+ currentMessage: z.ZodOptional<z.ZodString>;
922
+ additionalRequirements: z.ZodOptional<z.ZodString>;
923
+ language: z.ZodDefault<z.ZodString>;
924
+ }, "strip", z.ZodTypeAny, {
925
+ language: string;
926
+ prompt: string;
927
+ tone?: "reminder" | "friendly" | "urgent" | "formal" | "motivational" | undefined;
928
+ additionalRequirements?: string | undefined;
929
+ currentMessage?: string | undefined;
930
+ }, {
931
+ prompt: string;
932
+ language?: string | undefined;
933
+ tone?: "reminder" | "friendly" | "urgent" | "formal" | "motivational" | undefined;
934
+ additionalRequirements?: string | undefined;
935
+ currentMessage?: string | undefined;
936
+ }>;
937
+ declare const activityNotificationSchema: z.ZodObject<{
938
+ message: z.ZodString;
939
+ }, "strip", z.ZodTypeAny, {
940
+ message: string;
941
+ }, {
942
+ message: string;
943
+ }>;
944
+ type ActivityNotificationGenerationRequest = z.infer<typeof activityNotificationGenerationRequestSchema>;
945
+ type ActivityNotification = z.infer<typeof activityNotificationSchema>;
946
+
947
+ declare enum RoleNames {
948
+ ADMIN = "Admin",
949
+ ENCARGADO = "Encargado",
950
+ OWNER = "OWNER"
951
+ }
952
+ declare const ROLE_NAMES: typeof RoleNames;
953
+ type RoleName = RoleNames;
954
+ declare function isAdminRole(roleName: string | null | undefined): boolean;
955
+ declare function isEncargadoRole(roleName: string | null | undefined): boolean;
956
+ declare function canAccessFeature(userRole: string | null | undefined, allowedRoles: string[] | RoleNames[]): boolean;
957
+ declare function getRoleDisplayName(roleName: string | null | undefined): string;
958
+ declare function getRoleDescription(roleName: string | null | undefined): string;
959
+ declare function getRoleCapabilities(roleName: string | null | undefined): string[];
960
+
961
+ /**
962
+ * Simple phone number utilities for WhatsApp Evolution API
963
+ */
964
+ /**
965
+ * Normalizes a phone number for Evolution API
966
+ * Adds country code +51 for Peru if missing and ensures + prefix
967
+ *
968
+ * @param phoneNumber - Phone number in various formats
969
+ * @returns Normalized phone number with + prefix
970
+ *
971
+ * Examples:
972
+ * - "987654321" -> "+51987654321"
973
+ * - "51987654321" -> "+51987654321"
974
+ * - "+51987654321" -> "+51987654321"
975
+ */
976
+ declare function normalizePhoneForEvolution(phoneNumber: string): string;
977
+ /**
978
+ * Validates if a phone number is valid for Peru
979
+ */
980
+ declare function isValidPeruvianPhone(phoneNumber: string): boolean;
981
+
982
+ export { ACTIVITY_EVENTS, ACTIVITY_MESSAGE_VARIABLES, type AIGeneratedTemplate, type AcceptInvitationDto, type ActivityItem, type ActivityNotification, type ActivityNotificationGenerationRequest, type ActivityQueryParams, AssetCategory, AssetStatus, type AuditFields, BULK_MESSAGE_VARIABLES, BULK_MESSAGE_VARIABLE_CATEGORIES, BULK_MESSAGING_EVENTS, type BirthdayTemplateData, type BulkMessage, type BulkMessageEventData, type BulkMessageGenerationRequest, type BulkMessageVariable, CACHE_TTL, CancellationReason, ClientStatus, type Collaborator, type CollaboratorStats, CollaboratorStatus, ContractAssetType, ContractStatus, type CreateInvitationDto, type Currency, DATE_FORMATS, type EntityType, FILE_LIMITS, HEADERS, type ICollaborator, type IGym, type IOrganization, type IRequestContext, type IRole, type ISubscription, type ISubscriptionPlan, type IUser, type Invitation, InvitationStatus, type ListCollaboratorsParams, type MembershipExpiringTemplateData, type MembershipPurchaseTemplateData, type MembershipRenewalTemplateData, PAGINATION_DEFAULTS, PERMISSIONS, type PaginatedResponse, type PaginationMeta, type PaginationParams, PaymentFrequency, type PaymentReceiptTemplateData, type PaymentReminderTemplateData, type Permission, PlanStatus, PlanType, ROLE_NAMES, ROLE_PERMISSIONS, type Role, type RoleName, RoleNames, type SendActivityNotificationEvent, type SendBulkMessagesEvent, type StatsQueryParams, SubscriptionStatus, SuspensionType, TEMPLATE_CODES, TEMPLATE_METADATA, TemplateCode, type TemplateGenerationRequest, type TemplateMetadata, TemplateType, type UUID, type UpdateCollaboratorDto, type UpdateCollaboratorRoleDto, type UpdateCollaboratorStatusDto, type User, UserType, VARIABLE_CONTEXT_MAP, type ValidateByCodeDto, type VariableContextType, WHATSAPP_EVENTS, WHATSAPP_TEMPLATE_EVENTS, type WelcomeTemplateData, type WhatsAppMessageSendEventData, type WhatsAppTemplateData, type WhatsAppTemplateEventData, activityNotificationGenerationRequestSchema, activityNotificationSchema, aiGeneratedTemplateSchema, bulkMessageGenerationRequestSchema, bulkMessageSchema, canAccessFeature, getRoleCapabilities, getRoleDescription, getRoleDisplayName, getVariablesByContext, isAdminRole, isEncargadoRole, isValidPeruvianPhone, normalizePhoneForEvolution, templateGenerationRequestSchema, validateVariablesInContext };