@gymspace/shared 1.2.13 → 1.2.15

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
@@ -37,7 +37,25 @@ declare enum ContractStatus {
37
37
  EXPIRING_SOON = "expiring_soon",
38
38
  EXPIRED = "expired",
39
39
  CANCELLED = "cancelled",
40
- FOR_RENEW = "for_renew"
40
+ FOR_RENEW = "for_renew",
41
+ SUSPENDED = "suspended",
42
+ GRACE_PERIOD = "grace_period",
43
+ TERMINATED = "terminated"
44
+ }
45
+ declare enum CancellationReason {
46
+ PRICE_TOO_HIGH = "PRICE_TOO_HIGH",
47
+ NOT_USING_SERVICE = "NOT_USING_SERVICE",
48
+ MOVING_LOCATION = "MOVING_LOCATION",
49
+ FINANCIAL_ISSUES = "FINANCIAL_ISSUES",
50
+ SERVICE_DISSATISFACTION = "SERVICE_DISSATISFACTION",
51
+ TEMPORARY_BREAK = "TEMPORARY_BREAK",
52
+ OTHER = "OTHER"
53
+ }
54
+ declare enum SuspensionType {
55
+ VACATION = "vacation",
56
+ MEDICAL = "medical",
57
+ FINANCIAL = "financial",
58
+ OTHER = "other"
41
59
  }
42
60
  declare enum PaymentFrequency {
43
61
  MONTHLY = "monthly",
@@ -213,7 +231,7 @@ interface TemplateMetadata {
213
231
  type UUID = string;
214
232
  type Currency = 'USD' | 'EUR' | 'PEN' | 'MXN' | 'COP' | 'ARS' | 'CLP';
215
233
  type EntityType = 'user' | 'organization' | 'gym' | 'collaborator' | 'client' | 'contract' | 'asset';
216
- 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';
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';
217
235
  interface AuditFields {
218
236
  createdByUserId: UUID;
219
237
  updatedByUserId?: UUID;
@@ -634,12 +652,21 @@ declare const PERMISSIONS: {
634
652
  readonly WHATSAPP_MANAGE: "WHATSAPP_MANAGE";
635
653
  readonly WHATSAPP_BULK_SEND: "WHATSAPP_BULK_SEND";
636
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";
637
664
  readonly SUPER_ADMIN: "SUPER_ADMIN";
638
665
  readonly OWNER: "OWNER";
639
666
  readonly All: "ALL";
640
667
  };
641
668
  declare const ROLE_PERMISSIONS: {
642
- 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" | "ALL")[];
669
+ 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" | "ALL")[];
643
670
  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"];
644
671
  };
645
672
  declare const CACHE_TTL: {
@@ -761,6 +788,54 @@ interface SendBulkMessagesEvent {
761
788
  };
762
789
  }
763
790
 
791
+ declare const ACTIVITY_EVENTS: {
792
+ readonly SEND_ACTIVITY_NOTIFICATION: "activity/notification.send";
793
+ };
794
+ interface SendActivityNotificationEvent {
795
+ name: typeof ACTIVITY_EVENTS.SEND_ACTIVITY_NOTIFICATION;
796
+ data: {
797
+ activityId: string;
798
+ notificationId: string;
799
+ gymId: string;
800
+ userId: string;
801
+ instanceName: string;
802
+ message: string;
803
+ clients: Array<{
804
+ clientId: string;
805
+ clientName: string;
806
+ phoneNumber: string;
807
+ data: {
808
+ id: string;
809
+ name: string;
810
+ email?: string;
811
+ phone: string;
812
+ activePlan?: {
813
+ name: string;
814
+ expirationDate?: Date;
815
+ amount?: number;
816
+ };
817
+ membershipStatus?: string;
818
+ metadata?: Record<string, any>;
819
+ };
820
+ }>;
821
+ gymData: {
822
+ name: string;
823
+ phone?: string;
824
+ address?: string;
825
+ countryConfig: {
826
+ currency: string;
827
+ locale: string;
828
+ };
829
+ };
830
+ activityData: {
831
+ name: string;
832
+ startDateTime: Date;
833
+ durationMinutes: number;
834
+ location: string;
835
+ };
836
+ };
837
+ }
838
+
764
839
  declare const templateGenerationRequestSchema: z.ZodObject<{
765
840
  templateCode: z.ZodString;
766
841
  templateMetadata: z.ZodObject<{
@@ -859,4 +934,4 @@ declare const bulkMessageSchema: z.ZodObject<{
859
934
  type BulkMessageGenerationRequest = z.infer<typeof bulkMessageGenerationRequestSchema>;
860
935
  type BulkMessage = z.infer<typeof bulkMessageSchema>;
861
936
 
862
- export { 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, 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 SendBulkMessagesEvent, type StatsQueryParams, SubscriptionStatus, 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 };
937
+ 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 };
package/dist/index.d.ts CHANGED
@@ -37,7 +37,25 @@ declare enum ContractStatus {
37
37
  EXPIRING_SOON = "expiring_soon",
38
38
  EXPIRED = "expired",
39
39
  CANCELLED = "cancelled",
40
- FOR_RENEW = "for_renew"
40
+ FOR_RENEW = "for_renew",
41
+ SUSPENDED = "suspended",
42
+ GRACE_PERIOD = "grace_period",
43
+ TERMINATED = "terminated"
44
+ }
45
+ declare enum CancellationReason {
46
+ PRICE_TOO_HIGH = "PRICE_TOO_HIGH",
47
+ NOT_USING_SERVICE = "NOT_USING_SERVICE",
48
+ MOVING_LOCATION = "MOVING_LOCATION",
49
+ FINANCIAL_ISSUES = "FINANCIAL_ISSUES",
50
+ SERVICE_DISSATISFACTION = "SERVICE_DISSATISFACTION",
51
+ TEMPORARY_BREAK = "TEMPORARY_BREAK",
52
+ OTHER = "OTHER"
53
+ }
54
+ declare enum SuspensionType {
55
+ VACATION = "vacation",
56
+ MEDICAL = "medical",
57
+ FINANCIAL = "financial",
58
+ OTHER = "other"
41
59
  }
42
60
  declare enum PaymentFrequency {
43
61
  MONTHLY = "monthly",
@@ -213,7 +231,7 @@ interface TemplateMetadata {
213
231
  type UUID = string;
214
232
  type Currency = 'USD' | 'EUR' | 'PEN' | 'MXN' | 'COP' | 'ARS' | 'CLP';
215
233
  type EntityType = 'user' | 'organization' | 'gym' | 'collaborator' | 'client' | 'contract' | 'asset';
216
- 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';
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';
217
235
  interface AuditFields {
218
236
  createdByUserId: UUID;
219
237
  updatedByUserId?: UUID;
@@ -634,12 +652,21 @@ declare const PERMISSIONS: {
634
652
  readonly WHATSAPP_MANAGE: "WHATSAPP_MANAGE";
635
653
  readonly WHATSAPP_BULK_SEND: "WHATSAPP_BULK_SEND";
636
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";
637
664
  readonly SUPER_ADMIN: "SUPER_ADMIN";
638
665
  readonly OWNER: "OWNER";
639
666
  readonly All: "ALL";
640
667
  };
641
668
  declare const ROLE_PERMISSIONS: {
642
- 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" | "ALL")[];
669
+ 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" | "ALL")[];
643
670
  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"];
644
671
  };
645
672
  declare const CACHE_TTL: {
@@ -761,6 +788,54 @@ interface SendBulkMessagesEvent {
761
788
  };
762
789
  }
763
790
 
791
+ declare const ACTIVITY_EVENTS: {
792
+ readonly SEND_ACTIVITY_NOTIFICATION: "activity/notification.send";
793
+ };
794
+ interface SendActivityNotificationEvent {
795
+ name: typeof ACTIVITY_EVENTS.SEND_ACTIVITY_NOTIFICATION;
796
+ data: {
797
+ activityId: string;
798
+ notificationId: string;
799
+ gymId: string;
800
+ userId: string;
801
+ instanceName: string;
802
+ message: string;
803
+ clients: Array<{
804
+ clientId: string;
805
+ clientName: string;
806
+ phoneNumber: string;
807
+ data: {
808
+ id: string;
809
+ name: string;
810
+ email?: string;
811
+ phone: string;
812
+ activePlan?: {
813
+ name: string;
814
+ expirationDate?: Date;
815
+ amount?: number;
816
+ };
817
+ membershipStatus?: string;
818
+ metadata?: Record<string, any>;
819
+ };
820
+ }>;
821
+ gymData: {
822
+ name: string;
823
+ phone?: string;
824
+ address?: string;
825
+ countryConfig: {
826
+ currency: string;
827
+ locale: string;
828
+ };
829
+ };
830
+ activityData: {
831
+ name: string;
832
+ startDateTime: Date;
833
+ durationMinutes: number;
834
+ location: string;
835
+ };
836
+ };
837
+ }
838
+
764
839
  declare const templateGenerationRequestSchema: z.ZodObject<{
765
840
  templateCode: z.ZodString;
766
841
  templateMetadata: z.ZodObject<{
@@ -859,4 +934,4 @@ declare const bulkMessageSchema: z.ZodObject<{
859
934
  type BulkMessageGenerationRequest = z.infer<typeof bulkMessageGenerationRequestSchema>;
860
935
  type BulkMessage = z.infer<typeof bulkMessageSchema>;
861
936
 
862
- export { 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, 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 SendBulkMessagesEvent, type StatsQueryParams, SubscriptionStatus, 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 };
937
+ 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 };
package/dist/index.js CHANGED
@@ -62,8 +62,28 @@ var ContractStatus = /* @__PURE__ */ ((ContractStatus2) => {
62
62
  ContractStatus2["EXPIRED"] = "expired";
63
63
  ContractStatus2["CANCELLED"] = "cancelled";
64
64
  ContractStatus2["FOR_RENEW"] = "for_renew";
65
+ ContractStatus2["SUSPENDED"] = "suspended";
66
+ ContractStatus2["GRACE_PERIOD"] = "grace_period";
67
+ ContractStatus2["TERMINATED"] = "terminated";
65
68
  return ContractStatus2;
66
69
  })(ContractStatus || {});
70
+ var CancellationReason = /* @__PURE__ */ ((CancellationReason2) => {
71
+ CancellationReason2["PRICE_TOO_HIGH"] = "PRICE_TOO_HIGH";
72
+ CancellationReason2["NOT_USING_SERVICE"] = "NOT_USING_SERVICE";
73
+ CancellationReason2["MOVING_LOCATION"] = "MOVING_LOCATION";
74
+ CancellationReason2["FINANCIAL_ISSUES"] = "FINANCIAL_ISSUES";
75
+ CancellationReason2["SERVICE_DISSATISFACTION"] = "SERVICE_DISSATISFACTION";
76
+ CancellationReason2["TEMPORARY_BREAK"] = "TEMPORARY_BREAK";
77
+ CancellationReason2["OTHER"] = "OTHER";
78
+ return CancellationReason2;
79
+ })(CancellationReason || {});
80
+ var SuspensionType = /* @__PURE__ */ ((SuspensionType2) => {
81
+ SuspensionType2["VACATION"] = "vacation";
82
+ SuspensionType2["MEDICAL"] = "medical";
83
+ SuspensionType2["FINANCIAL"] = "financial";
84
+ SuspensionType2["OTHER"] = "other";
85
+ return SuspensionType2;
86
+ })(SuspensionType || {});
67
87
  var PaymentFrequency = /* @__PURE__ */ ((PaymentFrequency2) => {
68
88
  PaymentFrequency2["MONTHLY"] = "monthly";
69
89
  PaymentFrequency2["QUARTERLY"] = "quarterly";
@@ -437,6 +457,17 @@ var PERMISSIONS = {
437
457
  WHATSAPP_MANAGE: "WHATSAPP_MANAGE",
438
458
  WHATSAPP_BULK_SEND: "WHATSAPP_BULK_SEND",
439
459
  WHATSAPP_BULK_MANAGE: "WHATSAPP_BULK_MANAGE",
460
+ // Activities
461
+ ACTIVITIES_CREATE: "ACTIVITIES_CREATE",
462
+ ACTIVITIES_READ: "ACTIVITIES_READ",
463
+ ACTIVITIES_UPDATE: "ACTIVITIES_UPDATE",
464
+ ACTIVITIES_DELETE: "ACTIVITIES_DELETE",
465
+ ACTIVITIES_MANAGE_NOTIFICATIONS: "ACTIVITIES_MANAGE_NOTIFICATIONS",
466
+ // Tags
467
+ TAGS_CREATE: "TAGS_CREATE",
468
+ TAGS_READ: "TAGS_READ",
469
+ TAGS_UPDATE: "TAGS_UPDATE",
470
+ TAGS_DELETE: "TAGS_DELETE",
440
471
  // Special permissions
441
472
  SUPER_ADMIN: "SUPER_ADMIN",
442
473
  OWNER: "OWNER",
@@ -622,6 +653,11 @@ var BULK_MESSAGING_EVENTS = {
622
653
  GENERATE_BULK_MESSAGE: "whatsapp/bulk-message.generate",
623
654
  SEND_BULK_MESSAGES: "whatsapp/bulk-messages.send"
624
655
  };
656
+
657
+ // src/events/activity.events.ts
658
+ var ACTIVITY_EVENTS = {
659
+ SEND_ACTIVITY_NOTIFICATION: "activity/notification.send"
660
+ };
625
661
  var templateGenerationRequestSchema = zod.z.object({
626
662
  templateCode: zod.z.string(),
627
663
  templateMetadata: zod.z.object({
@@ -653,12 +689,14 @@ var bulkMessageSchema = zod.z.object({
653
689
  suggestions: zod.z.array(zod.z.string()).optional().describe("Additional message suggestions")
654
690
  });
655
691
 
692
+ exports.ACTIVITY_EVENTS = ACTIVITY_EVENTS;
656
693
  exports.AssetCategory = AssetCategory;
657
694
  exports.AssetStatus = AssetStatus;
658
695
  exports.BULK_MESSAGE_VARIABLES = BULK_MESSAGE_VARIABLES;
659
696
  exports.BULK_MESSAGE_VARIABLE_CATEGORIES = BULK_MESSAGE_VARIABLE_CATEGORIES;
660
697
  exports.BULK_MESSAGING_EVENTS = BULK_MESSAGING_EVENTS;
661
698
  exports.CACHE_TTL = CACHE_TTL;
699
+ exports.CancellationReason = CancellationReason;
662
700
  exports.ClientStatus = ClientStatus;
663
701
  exports.CollaboratorStatus = CollaboratorStatus;
664
702
  exports.ContractAssetType = ContractAssetType;
@@ -675,6 +713,7 @@ exports.ROLE_NAMES = ROLE_NAMES;
675
713
  exports.ROLE_PERMISSIONS = ROLE_PERMISSIONS;
676
714
  exports.RoleNames = RoleNames;
677
715
  exports.SubscriptionStatus = SubscriptionStatus;
716
+ exports.SuspensionType = SuspensionType;
678
717
  exports.TEMPLATE_CODES = TEMPLATE_CODES;
679
718
  exports.TEMPLATE_METADATA = TEMPLATE_METADATA;
680
719
  exports.TemplateCode = TemplateCode;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/whatsapp-templates.types.ts","../src/enums.ts","../src/constants/template-codes.constants.ts","../src/constants/bulk-message-variables.ts","../src/constants.ts","../src/utils/roleHelpers.ts","../src/events/whatsapp.events.ts","../src/events/bulk-messaging.events.ts","../src/schemas/ai-template.schema.ts","../src/schemas/bulk-message.schema.ts"],"names":["UserType","SubscriptionStatus","CollaboratorStatus","InvitationStatus","ClientStatus","PlanStatus","ContractStatus","PaymentFrequency","AssetStatus","AssetCategory","ContractAssetType","RoleNames","z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Template codes for WhatsApp messages\n */\nexport const TemplateCode = {\n WELCOME: 'WELCOME',\n MEMBERSHIP_PURCHASE: 'MEMBERSHIP_PURCHASE',\n MEMBERSHIP_RENEWAL: 'MEMBERSHIP_RENEWAL',\n MEMBERSHIP_EXPIRING: 'MEMBERSHIP_EXPIRING',\n PAYMENT_REMINDER: 'PAYMENT_REMINDER',\n BIRTHDAY: 'BIRTHDAY',\n PAYMENT_RECEIPT: 'PAYMENT_RECEIPT',\n} as const;\n\nexport type TemplateCodeValue = (typeof TemplateCode)[keyof typeof TemplateCode];\nexport type TemplateCode = TemplateCodeValue;\n\n/**\n * Template types\n */\nexport const TemplateType = {\n STATIC: 'STATIC',\n PROMPT: 'PROMPT',\n} as const;\n\nexport type TemplateTypeValue = (typeof TemplateType)[keyof typeof TemplateType];\nexport type TemplateType = TemplateTypeValue;\n\n/**\n * Base interface for WhatsApp template data\n */\nexport interface WhatsAppTemplateData {\n gymId: string;\n clientId: string;\n phoneNumber: string;\n templateCode: TemplateCode;\n variables: Record<string, any>;\n metadata?: {\n contractId?: string;\n userId?: string;\n source?: string;\n instanceName?: string;\n };\n}\n\n/**\n * Welcome message template data\n */\nexport interface WelcomeTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.WELCOME;\n variables: {\n clientName: string;\n gymName: string;\n registrationDate: string;\n };\n}\n\n/**\n * Membership purchase template data\n */\nexport interface MembershipPurchaseTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_PURCHASE;\n variables: {\n clientName: string;\n planName: string;\n startDate: string;\n endDate: string;\n amount: string;\n paymentFrequency: string;\n };\n}\n\n/**\n * Membership renewal template data\n */\nexport interface MembershipRenewalTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_RENEWAL;\n variables: {\n clientName: string;\n planName: string;\n newEndDate: string;\n amount: string;\n };\n}\n\n/**\n * Membership expiring template data\n */\nexport interface MembershipExpiringTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_EXPIRING;\n variables: {\n clientName: string;\n planName: string;\n expirationDate: string;\n daysRemaining: string;\n };\n}\n\n/**\n * Payment reminder template data\n */\nexport interface PaymentReminderTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.PAYMENT_REMINDER;\n variables: {\n clientName: string;\n amount: string;\n dueDate: string;\n planName: string;\n };\n}\n\n/**\n * Birthday template data\n */\nexport interface BirthdayTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.BIRTHDAY;\n variables: {\n clientName: string;\n gymName: string;\n age: string;\n };\n}\n\n/**\n * Payment receipt template data\n */\nexport interface PaymentReceiptTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.PAYMENT_RECEIPT;\n variables: {\n gymName: string;\n receiptNumber: string;\n date: string;\n clientName: string;\n items: string;\n amount: string;\n paymentMethod: string;\n };\n metadata?: {\n saleId?: string;\n userId?: string;\n source?: string;\n instanceName?: string;\n };\n}\n\n/**\n * Union type for all template data types\n */\nexport type WhatsAppTemplateEventData =\n | WelcomeTemplateData\n | MembershipPurchaseTemplateData\n | MembershipRenewalTemplateData\n | MembershipExpiringTemplateData\n | PaymentReminderTemplateData\n | BirthdayTemplateData\n | PaymentReceiptTemplateData;\n\n/**\n * Template metadata interface\n */\nexport interface TemplateMetadata {\n code: TemplateCode;\n title: string;\n description: string;\n icon: string;\n variables: string[];\n exampleValues: Record<string, string>;\n}\n","export enum UserType {\n OWNER = 'owner',\n COLLABORATOR = 'collaborator',\n}\n\nexport enum SubscriptionStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n EXPIRED = 'expired',\n PAUSED = 'paused',\n PENDING_UPGRADE = 'pending_upgrade',\n}\n\nexport enum CollaboratorStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum InvitationStatus {\n PENDING = 'pending',\n ACCEPTED = 'accepted',\n CANCELLED = 'cancelled',\n EXPIRED = 'expired',\n}\n\nexport enum ClientStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum PlanStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n ARCHIVED = 'archived',\n}\n\nexport enum ContractStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n EXPIRING_SOON = 'expiring_soon',\n EXPIRED = 'expired',\n CANCELLED = 'cancelled',\n FOR_RENEW = 'for_renew',\n}\n\nexport enum PaymentFrequency {\n MONTHLY = 'monthly',\n QUARTERLY = 'quarterly',\n ANNUAL = 'annual',\n}\n\nexport enum AssetStatus {\n ACTIVE = 'active',\n DELETED = 'deleted',\n}\n\n\nexport enum AssetCategory {\n MEDICAL_DOCUMENT = 'medical_document',\n IDENTIFICATION = 'identification',\n INSURANCE = 'insurance',\n CONTRACT_COPY = 'contract_copy',\n OTHER = 'other',\n}\n\nexport enum ContractAssetType {\n PAYMENT_RECEIPT = 'payment_receipt',\n CONTRACT_DOCUMENT = 'contract_document',\n IDENTIFICATION = 'identification',\n OTHER = 'other',\n}\n\n","import { TemplateCode } from '../types/whatsapp-templates.types';\n\n/**\n * Template code constants\n */\nexport const TEMPLATE_CODES = {\n WELCOME: TemplateCode.WELCOME,\n MEMBERSHIP_PURCHASE: TemplateCode.MEMBERSHIP_PURCHASE,\n MEMBERSHIP_RENEWAL: TemplateCode.MEMBERSHIP_RENEWAL,\n MEMBERSHIP_EXPIRING: TemplateCode.MEMBERSHIP_EXPIRING,\n PAYMENT_REMINDER: TemplateCode.PAYMENT_REMINDER,\n BIRTHDAY: TemplateCode.BIRTHDAY,\n PAYMENT_RECEIPT: TemplateCode.PAYMENT_RECEIPT,\n} as const;\n\n/**\n * Event names for WhatsApp template events\n */\nexport const WHATSAPP_TEMPLATE_EVENTS = {\n SEND_TEMPLATE: 'whatsapp/template.send',\n TEMPLATE_SENT: 'whatsapp/template.sent',\n TEMPLATE_FAILED: 'whatsapp/template.failed',\n} as const;\n\n/**\n * Template metadata mapping\n */\nexport const TEMPLATE_METADATA = {\n [TemplateCode.WELCOME]: {\n code: TemplateCode.WELCOME,\n title: 'Mensaje de Bienvenida',\n description: 'Mensaje para nuevos clientes',\n icon: 'UserPlus',\n variables: ['clientName', 'gymName', 'registrationDate'],\n exampleValues: {\n clientName: 'Juan Pérez',\n gymName: 'GymSpace',\n registrationDate: '15/01/2024',\n },\n },\n [TemplateCode.MEMBERSHIP_PURCHASE]: {\n code: TemplateCode.MEMBERSHIP_PURCHASE,\n title: 'Compra de Membresía',\n description: 'Confirmación de nueva membresía',\n icon: 'ShoppingCart',\n variables: ['clientName', 'planName', 'startDate', 'endDate', 'amount', 'paymentFrequency'],\n exampleValues: {\n clientName: 'María López',\n planName: 'Premium',\n startDate: '01/02/2024',\n endDate: '01/03/2024',\n amount: '$50.00',\n paymentFrequency: 'mensual',\n },\n },\n [TemplateCode.MEMBERSHIP_RENEWAL]: {\n code: TemplateCode.MEMBERSHIP_RENEWAL,\n title: 'Renovación de Membresía',\n description: 'Confirmación de renovación',\n icon: 'RefreshCw',\n variables: ['clientName', 'planName', 'newEndDate', 'amount'],\n exampleValues: {\n clientName: 'Carlos Ruiz',\n planName: 'Básico',\n newEndDate: '15/04/2024',\n amount: '$30.00',\n },\n },\n [TemplateCode.MEMBERSHIP_EXPIRING]: {\n code: TemplateCode.MEMBERSHIP_EXPIRING,\n title: 'Membresía Por Vencer',\n description: 'Recordatorio de expiración próxima',\n icon: 'AlertCircle',\n variables: ['clientName', 'planName', 'expirationDate', 'daysRemaining'],\n exampleValues: {\n clientName: 'Ana García',\n planName: 'Premium',\n expirationDate: '20/02/2024',\n daysRemaining: '3',\n },\n },\n [TemplateCode.PAYMENT_REMINDER]: {\n code: TemplateCode.PAYMENT_REMINDER,\n title: 'Recordatorio de Pago',\n description: 'Recordatorio de pago pendiente',\n icon: 'DollarSign',\n variables: ['clientName', 'amount', 'dueDate', 'planName'],\n exampleValues: {\n clientName: 'Pedro Sánchez',\n amount: '$40.00',\n dueDate: '25/02/2024',\n planName: 'Estándar',\n },\n },\n [TemplateCode.BIRTHDAY]: {\n code: TemplateCode.BIRTHDAY,\n title: 'Cumpleaños',\n description: 'Felicitación de cumpleaños',\n icon: 'Cake',\n variables: ['clientName', 'gymName', 'age'],\n exampleValues: {\n clientName: 'Laura Martínez',\n gymName: 'GymSpace',\n age: '28',\n },\n },\n [TemplateCode.PAYMENT_RECEIPT]: {\n code: TemplateCode.PAYMENT_RECEIPT,\n title: 'Comprobante de Pago',\n description: 'Comprobante de venta pagada',\n icon: 'Receipt',\n variables: [\n 'gymName',\n 'receiptNumber',\n 'date',\n 'clientName',\n 'items',\n 'amount',\n 'paymentMethod',\n ],\n exampleValues: {\n gymName: 'GymSpace',\n receiptNumber: 'V-001',\n date: '15/01/2024',\n clientName: 'Juan Pérez',\n items: '• Proteína x2 = Q100.00\\n• Creatina x1 = Q50.00',\n amount: 'Q150.00',\n paymentMethod: 'Efectivo',\n },\n },\n} as const;\n","export interface BulkMessageVariable {\n name: string;\n placeholder: string;\n description: string;\n example: string;\n category: 'client' | 'gym' | 'membership' | 'datetime' | 'custom';\n required: boolean;\n formatter?: 'text' | 'currency' | 'date' | 'number';\n}\n\nexport const BULK_MESSAGE_VARIABLES: BulkMessageVariable[] = [\n // Variables de Cliente\n {\n name: 'clientName',\n placeholder: '{{clientName}}',\n description: 'Nombre completo del cliente',\n example: 'Juan Pérez',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n {\n name: 'clientEmail',\n placeholder: '{{clientEmail}}',\n description: 'Email del cliente',\n example: 'juan@example.com',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n {\n name: 'clientPhone',\n placeholder: '{{clientPhone}}',\n description: 'Teléfono del cliente',\n example: '+51 999 999 999',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n\n // Variables de Gimnasio\n {\n name: 'gymName',\n placeholder: '{{gymName}}',\n description: 'Nombre del gimnasio',\n example: 'Gym Fitness',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n {\n name: 'gymPhone',\n placeholder: '{{gymPhone}}',\n description: 'Teléfono del gimnasio',\n example: '+51 999 888 777',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n {\n name: 'gymAddress',\n placeholder: '{{gymAddress}}',\n description: 'Dirección del gimnasio',\n example: 'Av. Principal 123',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n\n // Variables de Membresía\n {\n name: 'planName',\n placeholder: '{{planName}}',\n description: 'Nombre del plan de membresía',\n example: 'Plan Premium',\n category: 'membership',\n required: false,\n formatter: 'text',\n },\n {\n name: 'membershipStatus',\n placeholder: '{{membershipStatus}}',\n description: 'Estado de la membresía',\n example: 'Activa',\n category: 'membership',\n required: false,\n formatter: 'text',\n },\n {\n name: 'daysUntilExpiration',\n placeholder: '{{daysUntilExpiration}}',\n description: 'Días restantes hasta vencimiento',\n example: '15',\n category: 'membership',\n required: false,\n formatter: 'number',\n },\n {\n name: 'expirationDate',\n placeholder: '{{expirationDate}}',\n description: 'Fecha de vencimiento',\n example: '31/12/2024',\n category: 'membership',\n required: false,\n formatter: 'date',\n },\n {\n name: 'amount',\n placeholder: '{{amount}}',\n description: 'Monto con formato de moneda',\n example: 'S/ 150.00',\n category: 'membership',\n required: false,\n formatter: 'currency',\n },\n\n // Variables de Fecha/Hora\n {\n name: 'date',\n placeholder: '{{date}}',\n description: 'Fecha actual',\n example: '15/10/2024',\n category: 'datetime',\n required: false,\n formatter: 'date',\n },\n {\n name: 'time',\n placeholder: '{{time}}',\n description: 'Hora actual',\n example: '14:30',\n category: 'datetime',\n required: false,\n formatter: 'text',\n },\n {\n name: 'dayOfWeek',\n placeholder: '{{dayOfWeek}}',\n description: 'Día de la semana',\n example: 'Lunes',\n category: 'datetime',\n required: false,\n formatter: 'text',\n },\n\n // Variables Personalizadas\n {\n name: 'customField',\n placeholder: '{{customField}}',\n description: 'Campo personalizado del cliente',\n example: 'Valor personalizado',\n category: 'custom',\n required: false,\n formatter: 'text',\n },\n];\n\nexport const BULK_MESSAGE_VARIABLE_CATEGORIES = {\n client: 'Cliente',\n gym: 'Gimnasio',\n membership: 'Membresía',\n datetime: 'Fecha/Hora',\n custom: 'Personalizado',\n} as const;\n","// Permission constants\nexport const PERMISSIONS = {\n // Organizations\n ORGANIZATIONS_CREATE: 'ORGANIZATIONS_CREATE',\n ORGANIZATIONS_READ: 'ORGANIZATIONS_READ',\n ORGANIZATIONS_UPDATE: 'ORGANIZATIONS_UPDATE',\n ORGANIZATIONS_DELETE: 'ORGANIZATIONS_DELETE',\n\n // Gyms\n GYMS_CREATE: 'GYMS_CREATE',\n GYMS_READ: 'GYMS_READ',\n GYMS_UPDATE: 'GYMS_UPDATE',\n GYMS_DELETE: 'GYMS_DELETE',\n\n // Collaborators\n COLLABORATORS_CREATE: 'COLLABORATORS_CREATE',\n COLLABORATORS_READ: 'COLLABORATORS_READ',\n COLLABORATORS_UPDATE: 'COLLABORATORS_UPDATE',\n COLLABORATORS_DELETE: 'COLLABORATORS_DELETE',\n\n // Clients\n CLIENTS_CREATE: 'CLIENTS_CREATE',\n CLIENTS_READ: 'CLIENTS_READ',\n CLIENTS_UPDATE: 'CLIENTS_UPDATE',\n CLIENTS_DELETE: 'CLIENTS_DELETE',\n\n // Contracts\n CONTRACTS_CREATE: 'CONTRACTS_CREATE',\n CONTRACTS_READ: 'CONTRACTS_READ',\n CONTRACTS_UPDATE: 'CONTRACTS_UPDATE',\n CONTRACTS_APPROVE: 'CONTRACTS_APPROVE',\n CONTRACTS_CANCEL: 'CONTRACTS_CANCEL',\n\n // Check-ins\n CHECKINS_CREATE: 'CHECKINS_CREATE',\n CHECKINS_READ: 'CHECKINS_READ',\n\n // Reports\n REPORTS_VIEW: 'REPORTS_VIEW',\n REPORTS_FINANCIAL: 'REPORTS_FINANCIAL',\n\n // Settings\n SETTINGS_UPDATE: 'SETTINGS_UPDATE',\n\n // Assets\n ASSETS_CREATE: 'ASSETS_CREATE',\n ASSETS_READ: 'ASSETS_READ',\n ASSETS_DELETE: 'ASSETS_DELETE',\n\n // Files\n FILES_CREATE: 'FILES_CREATE',\n FILES_READ: 'FILES_READ',\n FILES_DELETE: 'FILES_DELETE',\n\n // Products\n PRODUCTS_CREATE: 'PRODUCTS_CREATE',\n PRODUCTS_READ: 'PRODUCTS_READ',\n PRODUCTS_UPDATE: 'PRODUCTS_UPDATE',\n PRODUCTS_DELETE: 'PRODUCTS_DELETE',\n\n // Product Categories\n PRODUCT_CATEGORIES_CREATE: 'PRODUCT_CATEGORIES_CREATE',\n PRODUCT_CATEGORIES_READ: 'PRODUCT_CATEGORIES_READ',\n PRODUCT_CATEGORIES_UPDATE: 'PRODUCT_CATEGORIES_UPDATE',\n PRODUCT_CATEGORIES_DELETE: 'PRODUCT_CATEGORIES_DELETE',\n\n // Sales\n SALES_CREATE: 'SALES_CREATE',\n SALES_READ: 'SALES_READ',\n SALES_UPDATE: 'SALES_UPDATE',\n SALES_DELETE: 'SALES_DELETE',\n\n // Suppliers\n SUPPLIERS_CREATE: 'SUPPLIERS_CREATE',\n SUPPLIERS_READ: 'SUPPLIERS_READ',\n SUPPLIERS_UPDATE: 'SUPPLIERS_UPDATE',\n SUPPLIERS_DELETE: 'SUPPLIERS_DELETE',\n\n // Payment Methods\n PAYMENT_METHODS_CREATE: 'PAYMENT_METHODS_CREATE',\n PAYMENT_METHODS_READ: 'PAYMENT_METHODS_READ',\n PAYMENT_METHODS_UPDATE: 'PAYMENT_METHODS_UPDATE',\n PAYMENT_METHODS_DELETE: 'PAYMENT_METHODS_DELETE',\n\n // WhatsApp\n WHATSAPP_READ: 'WHATSAPP_READ',\n WHATSAPP_SEND: 'WHATSAPP_SEND',\n WHATSAPP_MANAGE: 'WHATSAPP_MANAGE',\n WHATSAPP_BULK_SEND: 'WHATSAPP_BULK_SEND',\n WHATSAPP_BULK_MANAGE: 'WHATSAPP_BULK_MANAGE',\n\n // Special permissions\n SUPER_ADMIN: 'SUPER_ADMIN',\n OWNER: 'OWNER',\n All: 'ALL',\n} as const;\n\n// Role definitions\nexport const ROLE_PERMISSIONS = {\n ADMIN: Object.values(PERMISSIONS),\n MANAGER: [\n PERMISSIONS.GYMS_READ,\n PERMISSIONS.COLLABORATORS_READ,\n PERMISSIONS.CLIENTS_CREATE,\n PERMISSIONS.CLIENTS_READ,\n PERMISSIONS.CLIENTS_UPDATE,\n PERMISSIONS.CONTRACTS_CREATE,\n PERMISSIONS.CONTRACTS_READ,\n PERMISSIONS.CHECKINS_CREATE,\n PERMISSIONS.CHECKINS_READ,\n PERMISSIONS.REPORTS_VIEW,\n PERMISSIONS.ASSETS_CREATE,\n PERMISSIONS.ASSETS_READ,\n PERMISSIONS.ASSETS_DELETE,\n PERMISSIONS.FILES_CREATE,\n PERMISSIONS.FILES_READ,\n PERMISSIONS.FILES_DELETE,\n PERMISSIONS.PRODUCTS_CREATE,\n PERMISSIONS.PRODUCTS_READ,\n PERMISSIONS.PRODUCTS_UPDATE,\n PERMISSIONS.PRODUCTS_DELETE,\n PERMISSIONS.PRODUCT_CATEGORIES_CREATE,\n PERMISSIONS.PRODUCT_CATEGORIES_READ,\n PERMISSIONS.PRODUCT_CATEGORIES_UPDATE,\n PERMISSIONS.PRODUCT_CATEGORIES_DELETE,\n PERMISSIONS.SALES_CREATE,\n PERMISSIONS.SALES_READ,\n PERMISSIONS.SALES_UPDATE,\n PERMISSIONS.SUPPLIERS_CREATE,\n PERMISSIONS.SUPPLIERS_READ,\n PERMISSIONS.SUPPLIERS_UPDATE,\n PERMISSIONS.SUPPLIERS_DELETE,\n PERMISSIONS.PAYMENT_METHODS_CREATE,\n PERMISSIONS.PAYMENT_METHODS_READ,\n PERMISSIONS.PAYMENT_METHODS_UPDATE,\n PERMISSIONS.PAYMENT_METHODS_DELETE,\n ],\n} as const;\n\n// Cache TTL values (in milliseconds - cache-manager standard)\nexport const CACHE_TTL = {\n USER_PERMISSIONS: 900000, // 15 minutes\n GYM_DATA: 1800000, // 30 minutes\n STATIC_DATA: 3600000, // 60 minutes\n REPORTS: 300000, // 5 minutes\n DASHBOARD: 180000, // 3 minutes\n WHATSAPP_MESSAGE_STATUS: 300000, // 5 minutes\n} as const;\n\n// File size limits (in bytes)\nexport const FILE_LIMITS = {\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB\n MAX_IMAGE_SIZE: 5 * 1024 * 1024, // 5MB\n MAX_DOCUMENT_SIZE: 10 * 1024 * 1024, // 10MB\n} as const;\n\n// Pagination defaults\nexport const PAGINATION_DEFAULTS = {\n PAGE: 1,\n LIMIT: 20,\n MAX_LIMIT: 100,\n} as const;\n\n// Date formats\nexport const DATE_FORMATS = {\n DATE_ONLY: 'YYYY-MM-DD',\n DATETIME: 'YYYY-MM-DD HH:mm:ss',\n TIME_ONLY: 'HH:mm:ss',\n} as const;\n\n// Headers\nexport const HEADERS = {\n GYM_ID: 'X-Gym-Id',\n REQUEST_ID: 'X-Request-Id',\n} as const;\n\n// Re-export template constants\nexport * from './constants/template-codes.constants';\nexport * from './constants/bulk-message-variables';\n","export enum RoleNames {\n ADMIN = 'Admin',\n ENCARGADO = 'Encargado',\n OWNER = 'OWNER', // Pseudo-role for gym owners\n}\n\nexport const ROLE_NAMES = RoleNames;\n\nexport type RoleName = RoleNames;\n\nexport function isAdminRole(roleName: string | null | undefined): boolean {\n return roleName === RoleNames.ADMIN;\n}\n\nexport function isEncargadoRole(roleName: string | null | undefined): boolean {\n return roleName === RoleNames.ENCARGADO;\n}\n\nexport function canAccessFeature(\n userRole: string | null | undefined,\n allowedRoles: string[] | RoleNames[]\n): boolean {\n if (!userRole) return false;\n // OWNER pseudo-role has access to everything\n if (userRole === RoleNames.OWNER) return true;\n return allowedRoles.includes(userRole as any);\n}\n\nexport function getRoleDisplayName(roleName: string | null | undefined): string {\n if (!roleName) return '';\n\n switch (roleName) {\n case RoleNames.ADMIN:\n return 'Administrador';\n case RoleNames.ENCARGADO:\n return 'Encargado';\n case RoleNames.OWNER:\n return 'Propietario';\n default:\n return roleName;\n }\n}\n\nexport function getRoleDescription(roleName: string | null | undefined): string {\n if (!roleName) return '';\n\n switch (roleName) {\n case RoleNames.ADMIN:\n return 'Acceso completo a todas las funcionalidades del gimnasio, gestión de colaboradores y configuración';\n case RoleNames.ENCARGADO:\n return 'Gestión diaria del gimnasio: clientes, contratos, check-ins y reportes';\n case RoleNames.OWNER:\n return 'Acceso completo a todas las funcionalidades, organización y suscripción';\n default:\n return '';\n }\n}\n\nexport function getRoleCapabilities(roleName: string | null | undefined): string[] {\n if (!roleName) return [];\n\n switch (roleName) {\n case RoleNames.OWNER:\n return [\n 'Acceso completo a todas las funcionalidades',\n 'Gestión de organización',\n 'Gestión de suscripción y facturación',\n 'Gestión completa de clientes',\n 'Gestión completa de contratos',\n 'Gestión de colaboradores',\n 'Configuración del gimnasio',\n 'Gestión de planes',\n 'Gestión de proveedores',\n 'Gestión de métodos de pago',\n 'Reportes y estadísticas',\n 'Gestión de inventario',\n 'Check-ins',\n ];\n case RoleNames.ADMIN:\n return [\n 'Gestión completa de clientes',\n 'Gestión completa de contratos',\n 'Gestión de colaboradores',\n 'Configuración del gimnasio',\n 'Gestión de planes',\n 'Gestión de proveedores',\n 'Gestión de métodos de pago',\n 'Reportes y estadísticas',\n 'Gestión de inventario',\n 'Check-ins',\n ];\n case RoleNames.ENCARGADO:\n return [\n 'Gestión de clientes (ver, crear, editar)',\n 'Creación y renovación de contratos',\n 'Check-ins',\n 'Ver reportes',\n 'Gestión de inventario',\n 'Ventas',\n ];\n default:\n return [];\n }\n}","/**\n * Evento para enviar un mensaje de WhatsApp\n */\nexport interface WhatsAppMessageSendEventData {\n // Identificadores\n gymId: string;\n instanceName: string; // Nombre de la instancia de Evolution API\n\n // Destinatario\n phoneNumber: string;\n\n // Contenido\n content: string;\n\n // Metadata opcional\n clientId?: string;\n templateId?: string;\n variables?: Record<string, any>;\n\n // Usuario que generó el envío\n userId?: string;\n}\n\n/**\n * Nombres de eventos de WhatsApp\n */\nexport const WHATSAPP_EVENTS = {\n MESSAGE_SEND: 'whatsapp/message.send',\n MESSAGE_RECEIVED: 'whatsapp/message.received',\n CONNECTION_UPDATE: 'whatsapp/connection.update',\n} as const;\n","export const BULK_MESSAGING_EVENTS = {\n GENERATE_BULK_MESSAGE: 'whatsapp/bulk-message.generate',\n SEND_BULK_MESSAGES: 'whatsapp/bulk-messages.send',\n} as const;\n\nexport interface GenerateBulkMessageEvent {\n name: typeof BULK_MESSAGING_EVENTS.GENERATE_BULK_MESSAGE;\n data: {\n gymId: string;\n userId: string;\n prompt: string;\n includeVariables?: string[];\n tone?: 'promotional' | 'informational' | 'reminder' | 'greeting' | 'custom' | 'friendly';\n language?: string;\n additionalRequirements?: string;\n };\n}\n\nexport interface SendBulkMessagesEvent {\n name: typeof BULK_MESSAGING_EVENTS.SEND_BULK_MESSAGES;\n data: {\n sendId: string;\n gymId: string;\n userId: string;\n instanceName: string;\n templateId?: string;\n message: string;\n clients: Array<{\n clientId: string;\n clientName: string;\n phoneNumber: string;\n data: {\n id: string;\n name: string;\n email?: string;\n phone: string;\n activePlan?: {\n name: string;\n expirationDate?: Date;\n amount?: number;\n };\n membershipStatus?: string;\n metadata?: Record<string, any>;\n };\n }>;\n gymData: {\n name: string;\n phone?: string;\n address?: string;\n countryConfig: {\n currency: string;\n locale: string;\n };\n };\n };\n}\n","import { z } from 'zod';\n\nexport const templateGenerationRequestSchema = z.object({\n templateCode: z.string(),\n templateMetadata: z.object({\n title: z.string(),\n description: z.string(),\n variables: z.array(z.string()),\n exampleValues: z.record(z.string()),\n }),\n userPrompt: z.string().optional(),\n language: z.string().default('es'),\n});\n\nexport const aiGeneratedTemplateSchema = z.object({\n message: z.string().describe('Mensaje generado con variables en formato {{variable}}'),\n tone: z.enum(['professional', 'friendly', 'casual', 'urgent']).describe('Tono del mensaje'),\n usedVariables: z.array(z.string()).describe('Variables utilizadas en el mensaje'),\n suggestions: z.array(z.string()).optional().describe('Sugerencias adicionales'),\n});\n\nexport type TemplateGenerationRequest = z.infer<typeof templateGenerationRequestSchema>;\nexport type AIGeneratedTemplate = z.infer<typeof aiGeneratedTemplateSchema>;\n","import { z } from 'zod';\n\nexport const bulkMessageGenerationRequestSchema = z.object({\n prompt: z.string().describe('Prompt or context for message generation'),\n tone: z\n .enum(['promotional', 'informational', 'reminder', 'greeting', 'friendly'])\n .optional()\n .describe('Tone of the message'),\n includeVariables: z.array(z.string()).optional().describe('Variables to include in the message'),\n additionalRequirements: z.string().optional().describe('Additional requirements for the message'),\n language: z.string().default('es').describe('Language for generation'),\n});\n\nexport const bulkMessageSchema = z.object({\n message: z.string().describe('Generated message with variables'),\n tone: z\n .enum(['promotional', 'informational', 'reminder', 'greeting', 'friendly'])\n .describe('Tone of the message'),\n usedVariables: z.array(z.string()).describe('Variables used in the message'),\n suggestions: z.array(z.string()).optional().describe('Additional message suggestions'),\n});\n\nexport type BulkMessageGenerationRequest = z.infer<typeof bulkMessageGenerationRequestSchema>;\nexport type BulkMessage = z.infer<typeof bulkMessageSchema>;\n"]}
1
+ {"version":3,"sources":["../src/types/whatsapp-templates.types.ts","../src/enums.ts","../src/constants/template-codes.constants.ts","../src/constants/bulk-message-variables.ts","../src/constants.ts","../src/utils/roleHelpers.ts","../src/events/whatsapp.events.ts","../src/events/bulk-messaging.events.ts","../src/events/activity.events.ts","../src/schemas/ai-template.schema.ts","../src/schemas/bulk-message.schema.ts"],"names":["UserType","SubscriptionStatus","CollaboratorStatus","InvitationStatus","ClientStatus","PlanStatus","ContractStatus","CancellationReason","SuspensionType","PaymentFrequency","AssetStatus","AssetCategory","ContractAssetType","RoleNames","z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Template codes for WhatsApp messages\n */\nexport const TemplateCode = {\n WELCOME: 'WELCOME',\n MEMBERSHIP_PURCHASE: 'MEMBERSHIP_PURCHASE',\n MEMBERSHIP_RENEWAL: 'MEMBERSHIP_RENEWAL',\n MEMBERSHIP_EXPIRING: 'MEMBERSHIP_EXPIRING',\n PAYMENT_REMINDER: 'PAYMENT_REMINDER',\n BIRTHDAY: 'BIRTHDAY',\n PAYMENT_RECEIPT: 'PAYMENT_RECEIPT',\n} as const;\n\nexport type TemplateCodeValue = (typeof TemplateCode)[keyof typeof TemplateCode];\nexport type TemplateCode = TemplateCodeValue;\n\n/**\n * Template types\n */\nexport const TemplateType = {\n STATIC: 'STATIC',\n PROMPT: 'PROMPT',\n} as const;\n\nexport type TemplateTypeValue = (typeof TemplateType)[keyof typeof TemplateType];\nexport type TemplateType = TemplateTypeValue;\n\n/**\n * Base interface for WhatsApp template data\n */\nexport interface WhatsAppTemplateData {\n gymId: string;\n clientId: string;\n phoneNumber: string;\n templateCode: TemplateCode;\n variables: Record<string, any>;\n metadata?: {\n contractId?: string;\n userId?: string;\n source?: string;\n instanceName?: string;\n };\n}\n\n/**\n * Welcome message template data\n */\nexport interface WelcomeTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.WELCOME;\n variables: {\n clientName: string;\n gymName: string;\n registrationDate: string;\n };\n}\n\n/**\n * Membership purchase template data\n */\nexport interface MembershipPurchaseTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_PURCHASE;\n variables: {\n clientName: string;\n planName: string;\n startDate: string;\n endDate: string;\n amount: string;\n paymentFrequency: string;\n };\n}\n\n/**\n * Membership renewal template data\n */\nexport interface MembershipRenewalTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_RENEWAL;\n variables: {\n clientName: string;\n planName: string;\n newEndDate: string;\n amount: string;\n };\n}\n\n/**\n * Membership expiring template data\n */\nexport interface MembershipExpiringTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_EXPIRING;\n variables: {\n clientName: string;\n planName: string;\n expirationDate: string;\n daysRemaining: string;\n };\n}\n\n/**\n * Payment reminder template data\n */\nexport interface PaymentReminderTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.PAYMENT_REMINDER;\n variables: {\n clientName: string;\n amount: string;\n dueDate: string;\n planName: string;\n };\n}\n\n/**\n * Birthday template data\n */\nexport interface BirthdayTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.BIRTHDAY;\n variables: {\n clientName: string;\n gymName: string;\n age: string;\n };\n}\n\n/**\n * Payment receipt template data\n */\nexport interface PaymentReceiptTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.PAYMENT_RECEIPT;\n variables: {\n gymName: string;\n receiptNumber: string;\n date: string;\n clientName: string;\n items: string;\n amount: string;\n paymentMethod: string;\n };\n metadata?: {\n saleId?: string;\n userId?: string;\n source?: string;\n instanceName?: string;\n };\n}\n\n/**\n * Union type for all template data types\n */\nexport type WhatsAppTemplateEventData =\n | WelcomeTemplateData\n | MembershipPurchaseTemplateData\n | MembershipRenewalTemplateData\n | MembershipExpiringTemplateData\n | PaymentReminderTemplateData\n | BirthdayTemplateData\n | PaymentReceiptTemplateData;\n\n/**\n * Template metadata interface\n */\nexport interface TemplateMetadata {\n code: TemplateCode;\n title: string;\n description: string;\n icon: string;\n variables: string[];\n exampleValues: Record<string, string>;\n}\n","export enum UserType {\n OWNER = 'owner',\n COLLABORATOR = 'collaborator',\n}\n\nexport enum SubscriptionStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n EXPIRED = 'expired',\n PAUSED = 'paused',\n PENDING_UPGRADE = 'pending_upgrade',\n}\n\nexport enum CollaboratorStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum InvitationStatus {\n PENDING = 'pending',\n ACCEPTED = 'accepted',\n CANCELLED = 'cancelled',\n EXPIRED = 'expired',\n}\n\nexport enum ClientStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum PlanStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n ARCHIVED = 'archived',\n}\n\nexport enum ContractStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n EXPIRING_SOON = 'expiring_soon',\n EXPIRED = 'expired',\n CANCELLED = 'cancelled',\n FOR_RENEW = 'for_renew',\n SUSPENDED = 'suspended',\n GRACE_PERIOD = 'grace_period',\n TERMINATED = 'terminated',\n}\n\nexport enum CancellationReason {\n PRICE_TOO_HIGH = 'PRICE_TOO_HIGH',\n NOT_USING_SERVICE = 'NOT_USING_SERVICE',\n MOVING_LOCATION = 'MOVING_LOCATION',\n FINANCIAL_ISSUES = 'FINANCIAL_ISSUES',\n SERVICE_DISSATISFACTION = 'SERVICE_DISSATISFACTION',\n TEMPORARY_BREAK = 'TEMPORARY_BREAK',\n OTHER = 'OTHER',\n}\n\nexport enum SuspensionType {\n VACATION = 'vacation',\n MEDICAL = 'medical',\n FINANCIAL = 'financial',\n OTHER = 'other',\n}\n\nexport enum PaymentFrequency {\n MONTHLY = 'monthly',\n QUARTERLY = 'quarterly',\n ANNUAL = 'annual',\n}\n\nexport enum AssetStatus {\n ACTIVE = 'active',\n DELETED = 'deleted',\n}\n\nexport enum AssetCategory {\n MEDICAL_DOCUMENT = 'medical_document',\n IDENTIFICATION = 'identification',\n INSURANCE = 'insurance',\n CONTRACT_COPY = 'contract_copy',\n OTHER = 'other',\n}\n\nexport enum ContractAssetType {\n PAYMENT_RECEIPT = 'payment_receipt',\n CONTRACT_DOCUMENT = 'contract_document',\n IDENTIFICATION = 'identification',\n OTHER = 'other',\n}\n","import { TemplateCode } from '../types/whatsapp-templates.types';\n\n/**\n * Template code constants\n */\nexport const TEMPLATE_CODES = {\n WELCOME: TemplateCode.WELCOME,\n MEMBERSHIP_PURCHASE: TemplateCode.MEMBERSHIP_PURCHASE,\n MEMBERSHIP_RENEWAL: TemplateCode.MEMBERSHIP_RENEWAL,\n MEMBERSHIP_EXPIRING: TemplateCode.MEMBERSHIP_EXPIRING,\n PAYMENT_REMINDER: TemplateCode.PAYMENT_REMINDER,\n BIRTHDAY: TemplateCode.BIRTHDAY,\n PAYMENT_RECEIPT: TemplateCode.PAYMENT_RECEIPT,\n} as const;\n\n/**\n * Event names for WhatsApp template events\n */\nexport const WHATSAPP_TEMPLATE_EVENTS = {\n SEND_TEMPLATE: 'whatsapp/template.send',\n TEMPLATE_SENT: 'whatsapp/template.sent',\n TEMPLATE_FAILED: 'whatsapp/template.failed',\n} as const;\n\n/**\n * Template metadata mapping\n */\nexport const TEMPLATE_METADATA = {\n [TemplateCode.WELCOME]: {\n code: TemplateCode.WELCOME,\n title: 'Mensaje de Bienvenida',\n description: 'Mensaje para nuevos clientes',\n icon: 'UserPlus',\n variables: ['clientName', 'gymName', 'registrationDate'],\n exampleValues: {\n clientName: 'Juan Pérez',\n gymName: 'GymSpace',\n registrationDate: '15/01/2024',\n },\n },\n [TemplateCode.MEMBERSHIP_PURCHASE]: {\n code: TemplateCode.MEMBERSHIP_PURCHASE,\n title: 'Compra de Membresía',\n description: 'Confirmación de nueva membresía',\n icon: 'ShoppingCart',\n variables: ['clientName', 'planName', 'startDate', 'endDate', 'amount', 'paymentFrequency'],\n exampleValues: {\n clientName: 'María López',\n planName: 'Premium',\n startDate: '01/02/2024',\n endDate: '01/03/2024',\n amount: '$50.00',\n paymentFrequency: 'mensual',\n },\n },\n [TemplateCode.MEMBERSHIP_RENEWAL]: {\n code: TemplateCode.MEMBERSHIP_RENEWAL,\n title: 'Renovación de Membresía',\n description: 'Confirmación de renovación',\n icon: 'RefreshCw',\n variables: ['clientName', 'planName', 'newEndDate', 'amount'],\n exampleValues: {\n clientName: 'Carlos Ruiz',\n planName: 'Básico',\n newEndDate: '15/04/2024',\n amount: '$30.00',\n },\n },\n [TemplateCode.MEMBERSHIP_EXPIRING]: {\n code: TemplateCode.MEMBERSHIP_EXPIRING,\n title: 'Membresía Por Vencer',\n description: 'Recordatorio de expiración próxima',\n icon: 'AlertCircle',\n variables: ['clientName', 'planName', 'expirationDate', 'daysRemaining'],\n exampleValues: {\n clientName: 'Ana García',\n planName: 'Premium',\n expirationDate: '20/02/2024',\n daysRemaining: '3',\n },\n },\n [TemplateCode.PAYMENT_REMINDER]: {\n code: TemplateCode.PAYMENT_REMINDER,\n title: 'Recordatorio de Pago',\n description: 'Recordatorio de pago pendiente',\n icon: 'DollarSign',\n variables: ['clientName', 'amount', 'dueDate', 'planName'],\n exampleValues: {\n clientName: 'Pedro Sánchez',\n amount: '$40.00',\n dueDate: '25/02/2024',\n planName: 'Estándar',\n },\n },\n [TemplateCode.BIRTHDAY]: {\n code: TemplateCode.BIRTHDAY,\n title: 'Cumpleaños',\n description: 'Felicitación de cumpleaños',\n icon: 'Cake',\n variables: ['clientName', 'gymName', 'age'],\n exampleValues: {\n clientName: 'Laura Martínez',\n gymName: 'GymSpace',\n age: '28',\n },\n },\n [TemplateCode.PAYMENT_RECEIPT]: {\n code: TemplateCode.PAYMENT_RECEIPT,\n title: 'Comprobante de Pago',\n description: 'Comprobante de venta pagada',\n icon: 'Receipt',\n variables: [\n 'gymName',\n 'receiptNumber',\n 'date',\n 'clientName',\n 'items',\n 'amount',\n 'paymentMethod',\n ],\n exampleValues: {\n gymName: 'GymSpace',\n receiptNumber: 'V-001',\n date: '15/01/2024',\n clientName: 'Juan Pérez',\n items: '• Proteína x2 = Q100.00\\n• Creatina x1 = Q50.00',\n amount: 'Q150.00',\n paymentMethod: 'Efectivo',\n },\n },\n} as const;\n","export interface BulkMessageVariable {\n name: string;\n placeholder: string;\n description: string;\n example: string;\n category: 'client' | 'gym' | 'membership' | 'datetime' | 'custom';\n required: boolean;\n formatter?: 'text' | 'currency' | 'date' | 'number';\n}\n\nexport const BULK_MESSAGE_VARIABLES: BulkMessageVariable[] = [\n // Variables de Cliente\n {\n name: 'clientName',\n placeholder: '{{clientName}}',\n description: 'Nombre completo del cliente',\n example: 'Juan Pérez',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n {\n name: 'clientEmail',\n placeholder: '{{clientEmail}}',\n description: 'Email del cliente',\n example: 'juan@example.com',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n {\n name: 'clientPhone',\n placeholder: '{{clientPhone}}',\n description: 'Teléfono del cliente',\n example: '+51 999 999 999',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n\n // Variables de Gimnasio\n {\n name: 'gymName',\n placeholder: '{{gymName}}',\n description: 'Nombre del gimnasio',\n example: 'Gym Fitness',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n {\n name: 'gymPhone',\n placeholder: '{{gymPhone}}',\n description: 'Teléfono del gimnasio',\n example: '+51 999 888 777',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n {\n name: 'gymAddress',\n placeholder: '{{gymAddress}}',\n description: 'Dirección del gimnasio',\n example: 'Av. Principal 123',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n\n // Variables de Membresía\n {\n name: 'planName',\n placeholder: '{{planName}}',\n description: 'Nombre del plan de membresía',\n example: 'Plan Premium',\n category: 'membership',\n required: false,\n formatter: 'text',\n },\n {\n name: 'membershipStatus',\n placeholder: '{{membershipStatus}}',\n description: 'Estado de la membresía',\n example: 'Activa',\n category: 'membership',\n required: false,\n formatter: 'text',\n },\n {\n name: 'daysUntilExpiration',\n placeholder: '{{daysUntilExpiration}}',\n description: 'Días restantes hasta vencimiento',\n example: '15',\n category: 'membership',\n required: false,\n formatter: 'number',\n },\n {\n name: 'expirationDate',\n placeholder: '{{expirationDate}}',\n description: 'Fecha de vencimiento',\n example: '31/12/2024',\n category: 'membership',\n required: false,\n formatter: 'date',\n },\n {\n name: 'amount',\n placeholder: '{{amount}}',\n description: 'Monto con formato de moneda',\n example: 'S/ 150.00',\n category: 'membership',\n required: false,\n formatter: 'currency',\n },\n\n // Variables de Fecha/Hora\n {\n name: 'date',\n placeholder: '{{date}}',\n description: 'Fecha actual',\n example: '15/10/2024',\n category: 'datetime',\n required: false,\n formatter: 'date',\n },\n {\n name: 'time',\n placeholder: '{{time}}',\n description: 'Hora actual',\n example: '14:30',\n category: 'datetime',\n required: false,\n formatter: 'text',\n },\n {\n name: 'dayOfWeek',\n placeholder: '{{dayOfWeek}}',\n description: 'Día de la semana',\n example: 'Lunes',\n category: 'datetime',\n required: false,\n formatter: 'text',\n },\n\n // Variables Personalizadas\n {\n name: 'customField',\n placeholder: '{{customField}}',\n description: 'Campo personalizado del cliente',\n example: 'Valor personalizado',\n category: 'custom',\n required: false,\n formatter: 'text',\n },\n];\n\nexport const BULK_MESSAGE_VARIABLE_CATEGORIES = {\n client: 'Cliente',\n gym: 'Gimnasio',\n membership: 'Membresía',\n datetime: 'Fecha/Hora',\n custom: 'Personalizado',\n} as const;\n","// Permission constants\nexport const PERMISSIONS = {\n // Organizations\n ORGANIZATIONS_CREATE: 'ORGANIZATIONS_CREATE',\n ORGANIZATIONS_READ: 'ORGANIZATIONS_READ',\n ORGANIZATIONS_UPDATE: 'ORGANIZATIONS_UPDATE',\n ORGANIZATIONS_DELETE: 'ORGANIZATIONS_DELETE',\n\n // Gyms\n GYMS_CREATE: 'GYMS_CREATE',\n GYMS_READ: 'GYMS_READ',\n GYMS_UPDATE: 'GYMS_UPDATE',\n GYMS_DELETE: 'GYMS_DELETE',\n\n // Collaborators\n COLLABORATORS_CREATE: 'COLLABORATORS_CREATE',\n COLLABORATORS_READ: 'COLLABORATORS_READ',\n COLLABORATORS_UPDATE: 'COLLABORATORS_UPDATE',\n COLLABORATORS_DELETE: 'COLLABORATORS_DELETE',\n\n // Clients\n CLIENTS_CREATE: 'CLIENTS_CREATE',\n CLIENTS_READ: 'CLIENTS_READ',\n CLIENTS_UPDATE: 'CLIENTS_UPDATE',\n CLIENTS_DELETE: 'CLIENTS_DELETE',\n\n // Contracts\n CONTRACTS_CREATE: 'CONTRACTS_CREATE',\n CONTRACTS_READ: 'CONTRACTS_READ',\n CONTRACTS_UPDATE: 'CONTRACTS_UPDATE',\n CONTRACTS_APPROVE: 'CONTRACTS_APPROVE',\n CONTRACTS_CANCEL: 'CONTRACTS_CANCEL',\n\n // Check-ins\n CHECKINS_CREATE: 'CHECKINS_CREATE',\n CHECKINS_READ: 'CHECKINS_READ',\n\n // Reports\n REPORTS_VIEW: 'REPORTS_VIEW',\n REPORTS_FINANCIAL: 'REPORTS_FINANCIAL',\n\n // Settings\n SETTINGS_UPDATE: 'SETTINGS_UPDATE',\n\n // Assets\n ASSETS_CREATE: 'ASSETS_CREATE',\n ASSETS_READ: 'ASSETS_READ',\n ASSETS_DELETE: 'ASSETS_DELETE',\n\n // Files\n FILES_CREATE: 'FILES_CREATE',\n FILES_READ: 'FILES_READ',\n FILES_DELETE: 'FILES_DELETE',\n\n // Products\n PRODUCTS_CREATE: 'PRODUCTS_CREATE',\n PRODUCTS_READ: 'PRODUCTS_READ',\n PRODUCTS_UPDATE: 'PRODUCTS_UPDATE',\n PRODUCTS_DELETE: 'PRODUCTS_DELETE',\n\n // Product Categories\n PRODUCT_CATEGORIES_CREATE: 'PRODUCT_CATEGORIES_CREATE',\n PRODUCT_CATEGORIES_READ: 'PRODUCT_CATEGORIES_READ',\n PRODUCT_CATEGORIES_UPDATE: 'PRODUCT_CATEGORIES_UPDATE',\n PRODUCT_CATEGORIES_DELETE: 'PRODUCT_CATEGORIES_DELETE',\n\n // Sales\n SALES_CREATE: 'SALES_CREATE',\n SALES_READ: 'SALES_READ',\n SALES_UPDATE: 'SALES_UPDATE',\n SALES_DELETE: 'SALES_DELETE',\n\n // Suppliers\n SUPPLIERS_CREATE: 'SUPPLIERS_CREATE',\n SUPPLIERS_READ: 'SUPPLIERS_READ',\n SUPPLIERS_UPDATE: 'SUPPLIERS_UPDATE',\n SUPPLIERS_DELETE: 'SUPPLIERS_DELETE',\n\n // Payment Methods\n PAYMENT_METHODS_CREATE: 'PAYMENT_METHODS_CREATE',\n PAYMENT_METHODS_READ: 'PAYMENT_METHODS_READ',\n PAYMENT_METHODS_UPDATE: 'PAYMENT_METHODS_UPDATE',\n PAYMENT_METHODS_DELETE: 'PAYMENT_METHODS_DELETE',\n\n // WhatsApp\n WHATSAPP_READ: 'WHATSAPP_READ',\n WHATSAPP_SEND: 'WHATSAPP_SEND',\n WHATSAPP_MANAGE: 'WHATSAPP_MANAGE',\n WHATSAPP_BULK_SEND: 'WHATSAPP_BULK_SEND',\n WHATSAPP_BULK_MANAGE: 'WHATSAPP_BULK_MANAGE',\n\n // Activities\n ACTIVITIES_CREATE: 'ACTIVITIES_CREATE',\n ACTIVITIES_READ: 'ACTIVITIES_READ',\n ACTIVITIES_UPDATE: 'ACTIVITIES_UPDATE',\n ACTIVITIES_DELETE: 'ACTIVITIES_DELETE',\n ACTIVITIES_MANAGE_NOTIFICATIONS: 'ACTIVITIES_MANAGE_NOTIFICATIONS',\n\n // Tags\n TAGS_CREATE: 'TAGS_CREATE',\n TAGS_READ: 'TAGS_READ',\n TAGS_UPDATE: 'TAGS_UPDATE',\n TAGS_DELETE: 'TAGS_DELETE',\n\n // Special permissions\n SUPER_ADMIN: 'SUPER_ADMIN',\n OWNER: 'OWNER',\n All: 'ALL',\n} as const;\n\n// Role definitions\nexport const ROLE_PERMISSIONS = {\n ADMIN: Object.values(PERMISSIONS),\n MANAGER: [\n PERMISSIONS.GYMS_READ,\n PERMISSIONS.COLLABORATORS_READ,\n PERMISSIONS.CLIENTS_CREATE,\n PERMISSIONS.CLIENTS_READ,\n PERMISSIONS.CLIENTS_UPDATE,\n PERMISSIONS.CONTRACTS_CREATE,\n PERMISSIONS.CONTRACTS_READ,\n PERMISSIONS.CHECKINS_CREATE,\n PERMISSIONS.CHECKINS_READ,\n PERMISSIONS.REPORTS_VIEW,\n PERMISSIONS.ASSETS_CREATE,\n PERMISSIONS.ASSETS_READ,\n PERMISSIONS.ASSETS_DELETE,\n PERMISSIONS.FILES_CREATE,\n PERMISSIONS.FILES_READ,\n PERMISSIONS.FILES_DELETE,\n PERMISSIONS.PRODUCTS_CREATE,\n PERMISSIONS.PRODUCTS_READ,\n PERMISSIONS.PRODUCTS_UPDATE,\n PERMISSIONS.PRODUCTS_DELETE,\n PERMISSIONS.PRODUCT_CATEGORIES_CREATE,\n PERMISSIONS.PRODUCT_CATEGORIES_READ,\n PERMISSIONS.PRODUCT_CATEGORIES_UPDATE,\n PERMISSIONS.PRODUCT_CATEGORIES_DELETE,\n PERMISSIONS.SALES_CREATE,\n PERMISSIONS.SALES_READ,\n PERMISSIONS.SALES_UPDATE,\n PERMISSIONS.SUPPLIERS_CREATE,\n PERMISSIONS.SUPPLIERS_READ,\n PERMISSIONS.SUPPLIERS_UPDATE,\n PERMISSIONS.SUPPLIERS_DELETE,\n PERMISSIONS.PAYMENT_METHODS_CREATE,\n PERMISSIONS.PAYMENT_METHODS_READ,\n PERMISSIONS.PAYMENT_METHODS_UPDATE,\n PERMISSIONS.PAYMENT_METHODS_DELETE,\n ],\n} as const;\n\n// Cache TTL values (in milliseconds - cache-manager standard)\nexport const CACHE_TTL = {\n USER_PERMISSIONS: 900000, // 15 minutes\n GYM_DATA: 1800000, // 30 minutes\n STATIC_DATA: 3600000, // 60 minutes\n REPORTS: 300000, // 5 minutes\n DASHBOARD: 180000, // 3 minutes\n WHATSAPP_MESSAGE_STATUS: 300000, // 5 minutes\n} as const;\n\n// File size limits (in bytes)\nexport const FILE_LIMITS = {\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB\n MAX_IMAGE_SIZE: 5 * 1024 * 1024, // 5MB\n MAX_DOCUMENT_SIZE: 10 * 1024 * 1024, // 10MB\n} as const;\n\n// Pagination defaults\nexport const PAGINATION_DEFAULTS = {\n PAGE: 1,\n LIMIT: 20,\n MAX_LIMIT: 100,\n} as const;\n\n// Date formats\nexport const DATE_FORMATS = {\n DATE_ONLY: 'YYYY-MM-DD',\n DATETIME: 'YYYY-MM-DD HH:mm:ss',\n TIME_ONLY: 'HH:mm:ss',\n} as const;\n\n// Headers\nexport const HEADERS = {\n GYM_ID: 'X-Gym-Id',\n REQUEST_ID: 'X-Request-Id',\n} as const;\n\n// Re-export template constants\nexport * from './constants/template-codes.constants';\nexport * from './constants/bulk-message-variables';\n","export enum RoleNames {\n ADMIN = 'Admin',\n ENCARGADO = 'Encargado',\n OWNER = 'OWNER', // Pseudo-role for gym owners\n}\n\nexport const ROLE_NAMES = RoleNames;\n\nexport type RoleName = RoleNames;\n\nexport function isAdminRole(roleName: string | null | undefined): boolean {\n return roleName === RoleNames.ADMIN;\n}\n\nexport function isEncargadoRole(roleName: string | null | undefined): boolean {\n return roleName === RoleNames.ENCARGADO;\n}\n\nexport function canAccessFeature(\n userRole: string | null | undefined,\n allowedRoles: string[] | RoleNames[]\n): boolean {\n if (!userRole) return false;\n // OWNER pseudo-role has access to everything\n if (userRole === RoleNames.OWNER) return true;\n return allowedRoles.includes(userRole as any);\n}\n\nexport function getRoleDisplayName(roleName: string | null | undefined): string {\n if (!roleName) return '';\n\n switch (roleName) {\n case RoleNames.ADMIN:\n return 'Administrador';\n case RoleNames.ENCARGADO:\n return 'Encargado';\n case RoleNames.OWNER:\n return 'Propietario';\n default:\n return roleName;\n }\n}\n\nexport function getRoleDescription(roleName: string | null | undefined): string {\n if (!roleName) return '';\n\n switch (roleName) {\n case RoleNames.ADMIN:\n return 'Acceso completo a todas las funcionalidades del gimnasio, gestión de colaboradores y configuración';\n case RoleNames.ENCARGADO:\n return 'Gestión diaria del gimnasio: clientes, contratos, check-ins y reportes';\n case RoleNames.OWNER:\n return 'Acceso completo a todas las funcionalidades, organización y suscripción';\n default:\n return '';\n }\n}\n\nexport function getRoleCapabilities(roleName: string | null | undefined): string[] {\n if (!roleName) return [];\n\n switch (roleName) {\n case RoleNames.OWNER:\n return [\n 'Acceso completo a todas las funcionalidades',\n 'Gestión de organización',\n 'Gestión de suscripción y facturación',\n 'Gestión completa de clientes',\n 'Gestión completa de contratos',\n 'Gestión de colaboradores',\n 'Configuración del gimnasio',\n 'Gestión de planes',\n 'Gestión de proveedores',\n 'Gestión de métodos de pago',\n 'Reportes y estadísticas',\n 'Gestión de inventario',\n 'Check-ins',\n ];\n case RoleNames.ADMIN:\n return [\n 'Gestión completa de clientes',\n 'Gestión completa de contratos',\n 'Gestión de colaboradores',\n 'Configuración del gimnasio',\n 'Gestión de planes',\n 'Gestión de proveedores',\n 'Gestión de métodos de pago',\n 'Reportes y estadísticas',\n 'Gestión de inventario',\n 'Check-ins',\n ];\n case RoleNames.ENCARGADO:\n return [\n 'Gestión de clientes (ver, crear, editar)',\n 'Creación y renovación de contratos',\n 'Check-ins',\n 'Ver reportes',\n 'Gestión de inventario',\n 'Ventas',\n ];\n default:\n return [];\n }\n}","/**\n * Evento para enviar un mensaje de WhatsApp\n */\nexport interface WhatsAppMessageSendEventData {\n // Identificadores\n gymId: string;\n instanceName: string; // Nombre de la instancia de Evolution API\n\n // Destinatario\n phoneNumber: string;\n\n // Contenido\n content: string;\n\n // Metadata opcional\n clientId?: string;\n templateId?: string;\n variables?: Record<string, any>;\n\n // Usuario que generó el envío\n userId?: string;\n}\n\n/**\n * Nombres de eventos de WhatsApp\n */\nexport const WHATSAPP_EVENTS = {\n MESSAGE_SEND: 'whatsapp/message.send',\n MESSAGE_RECEIVED: 'whatsapp/message.received',\n CONNECTION_UPDATE: 'whatsapp/connection.update',\n} as const;\n","export const BULK_MESSAGING_EVENTS = {\n GENERATE_BULK_MESSAGE: 'whatsapp/bulk-message.generate',\n SEND_BULK_MESSAGES: 'whatsapp/bulk-messages.send',\n} as const;\n\nexport interface GenerateBulkMessageEvent {\n name: typeof BULK_MESSAGING_EVENTS.GENERATE_BULK_MESSAGE;\n data: {\n gymId: string;\n userId: string;\n prompt: string;\n includeVariables?: string[];\n tone?: 'promotional' | 'informational' | 'reminder' | 'greeting' | 'custom' | 'friendly';\n language?: string;\n additionalRequirements?: string;\n };\n}\n\nexport interface SendBulkMessagesEvent {\n name: typeof BULK_MESSAGING_EVENTS.SEND_BULK_MESSAGES;\n data: {\n sendId: string;\n gymId: string;\n userId: string;\n instanceName: string;\n templateId?: string;\n message: string;\n clients: Array<{\n clientId: string;\n clientName: string;\n phoneNumber: string;\n data: {\n id: string;\n name: string;\n email?: string;\n phone: string;\n activePlan?: {\n name: string;\n expirationDate?: Date;\n amount?: number;\n };\n membershipStatus?: string;\n metadata?: Record<string, any>;\n };\n }>;\n gymData: {\n name: string;\n phone?: string;\n address?: string;\n countryConfig: {\n currency: string;\n locale: string;\n };\n };\n };\n}\n","export const ACTIVITY_EVENTS = {\n SEND_ACTIVITY_NOTIFICATION: 'activity/notification.send',\n} as const;\n\nexport interface SendActivityNotificationEvent {\n name: typeof ACTIVITY_EVENTS.SEND_ACTIVITY_NOTIFICATION;\n data: {\n activityId: string;\n notificationId: string;\n gymId: string;\n userId: string;\n instanceName: string;\n message: string;\n clients: Array<{\n clientId: string;\n clientName: string;\n phoneNumber: string;\n data: {\n id: string;\n name: string;\n email?: string;\n phone: string;\n activePlan?: {\n name: string;\n expirationDate?: Date;\n amount?: number;\n };\n membershipStatus?: string;\n metadata?: Record<string, any>;\n };\n }>;\n gymData: {\n name: string;\n phone?: string;\n address?: string;\n countryConfig: {\n currency: string;\n locale: string;\n };\n };\n activityData: {\n name: string;\n startDateTime: Date;\n durationMinutes: number;\n location: string;\n };\n };\n}\n","import { z } from 'zod';\n\nexport const templateGenerationRequestSchema = z.object({\n templateCode: z.string(),\n templateMetadata: z.object({\n title: z.string(),\n description: z.string(),\n variables: z.array(z.string()),\n exampleValues: z.record(z.string()),\n }),\n userPrompt: z.string().optional(),\n language: z.string().default('es'),\n});\n\nexport const aiGeneratedTemplateSchema = z.object({\n message: z.string().describe('Mensaje generado con variables en formato {{variable}}'),\n tone: z.enum(['professional', 'friendly', 'casual', 'urgent']).describe('Tono del mensaje'),\n usedVariables: z.array(z.string()).describe('Variables utilizadas en el mensaje'),\n suggestions: z.array(z.string()).optional().describe('Sugerencias adicionales'),\n});\n\nexport type TemplateGenerationRequest = z.infer<typeof templateGenerationRequestSchema>;\nexport type AIGeneratedTemplate = z.infer<typeof aiGeneratedTemplateSchema>;\n","import { z } from 'zod';\n\nexport const bulkMessageGenerationRequestSchema = z.object({\n prompt: z.string().describe('Prompt or context for message generation'),\n tone: z\n .enum(['promotional', 'informational', 'reminder', 'greeting', 'friendly'])\n .optional()\n .describe('Tone of the message'),\n includeVariables: z.array(z.string()).optional().describe('Variables to include in the message'),\n additionalRequirements: z.string().optional().describe('Additional requirements for the message'),\n language: z.string().default('es').describe('Language for generation'),\n});\n\nexport const bulkMessageSchema = z.object({\n message: z.string().describe('Generated message with variables'),\n tone: z\n .enum(['promotional', 'informational', 'reminder', 'greeting', 'friendly'])\n .describe('Tone of the message'),\n usedVariables: z.array(z.string()).describe('Variables used in the message'),\n suggestions: z.array(z.string()).optional().describe('Additional message suggestions'),\n});\n\nexport type BulkMessageGenerationRequest = z.infer<typeof bulkMessageGenerationRequestSchema>;\nexport type BulkMessage = z.infer<typeof bulkMessageSchema>;\n"]}
package/dist/index.mjs CHANGED
@@ -60,8 +60,28 @@ var ContractStatus = /* @__PURE__ */ ((ContractStatus2) => {
60
60
  ContractStatus2["EXPIRED"] = "expired";
61
61
  ContractStatus2["CANCELLED"] = "cancelled";
62
62
  ContractStatus2["FOR_RENEW"] = "for_renew";
63
+ ContractStatus2["SUSPENDED"] = "suspended";
64
+ ContractStatus2["GRACE_PERIOD"] = "grace_period";
65
+ ContractStatus2["TERMINATED"] = "terminated";
63
66
  return ContractStatus2;
64
67
  })(ContractStatus || {});
68
+ var CancellationReason = /* @__PURE__ */ ((CancellationReason2) => {
69
+ CancellationReason2["PRICE_TOO_HIGH"] = "PRICE_TOO_HIGH";
70
+ CancellationReason2["NOT_USING_SERVICE"] = "NOT_USING_SERVICE";
71
+ CancellationReason2["MOVING_LOCATION"] = "MOVING_LOCATION";
72
+ CancellationReason2["FINANCIAL_ISSUES"] = "FINANCIAL_ISSUES";
73
+ CancellationReason2["SERVICE_DISSATISFACTION"] = "SERVICE_DISSATISFACTION";
74
+ CancellationReason2["TEMPORARY_BREAK"] = "TEMPORARY_BREAK";
75
+ CancellationReason2["OTHER"] = "OTHER";
76
+ return CancellationReason2;
77
+ })(CancellationReason || {});
78
+ var SuspensionType = /* @__PURE__ */ ((SuspensionType2) => {
79
+ SuspensionType2["VACATION"] = "vacation";
80
+ SuspensionType2["MEDICAL"] = "medical";
81
+ SuspensionType2["FINANCIAL"] = "financial";
82
+ SuspensionType2["OTHER"] = "other";
83
+ return SuspensionType2;
84
+ })(SuspensionType || {});
65
85
  var PaymentFrequency = /* @__PURE__ */ ((PaymentFrequency2) => {
66
86
  PaymentFrequency2["MONTHLY"] = "monthly";
67
87
  PaymentFrequency2["QUARTERLY"] = "quarterly";
@@ -435,6 +455,17 @@ var PERMISSIONS = {
435
455
  WHATSAPP_MANAGE: "WHATSAPP_MANAGE",
436
456
  WHATSAPP_BULK_SEND: "WHATSAPP_BULK_SEND",
437
457
  WHATSAPP_BULK_MANAGE: "WHATSAPP_BULK_MANAGE",
458
+ // Activities
459
+ ACTIVITIES_CREATE: "ACTIVITIES_CREATE",
460
+ ACTIVITIES_READ: "ACTIVITIES_READ",
461
+ ACTIVITIES_UPDATE: "ACTIVITIES_UPDATE",
462
+ ACTIVITIES_DELETE: "ACTIVITIES_DELETE",
463
+ ACTIVITIES_MANAGE_NOTIFICATIONS: "ACTIVITIES_MANAGE_NOTIFICATIONS",
464
+ // Tags
465
+ TAGS_CREATE: "TAGS_CREATE",
466
+ TAGS_READ: "TAGS_READ",
467
+ TAGS_UPDATE: "TAGS_UPDATE",
468
+ TAGS_DELETE: "TAGS_DELETE",
438
469
  // Special permissions
439
470
  SUPER_ADMIN: "SUPER_ADMIN",
440
471
  OWNER: "OWNER",
@@ -620,6 +651,11 @@ var BULK_MESSAGING_EVENTS = {
620
651
  GENERATE_BULK_MESSAGE: "whatsapp/bulk-message.generate",
621
652
  SEND_BULK_MESSAGES: "whatsapp/bulk-messages.send"
622
653
  };
654
+
655
+ // src/events/activity.events.ts
656
+ var ACTIVITY_EVENTS = {
657
+ SEND_ACTIVITY_NOTIFICATION: "activity/notification.send"
658
+ };
623
659
  var templateGenerationRequestSchema = z.object({
624
660
  templateCode: z.string(),
625
661
  templateMetadata: z.object({
@@ -651,6 +687,6 @@ var bulkMessageSchema = z.object({
651
687
  suggestions: z.array(z.string()).optional().describe("Additional message suggestions")
652
688
  });
653
689
 
654
- export { AssetCategory, AssetStatus, BULK_MESSAGE_VARIABLES, BULK_MESSAGE_VARIABLE_CATEGORIES, BULK_MESSAGING_EVENTS, CACHE_TTL, ClientStatus, CollaboratorStatus, ContractAssetType, ContractStatus, DATE_FORMATS, FILE_LIMITS, HEADERS, InvitationStatus, PAGINATION_DEFAULTS, PERMISSIONS, PaymentFrequency, PlanStatus, ROLE_NAMES, ROLE_PERMISSIONS, RoleNames, SubscriptionStatus, TEMPLATE_CODES, TEMPLATE_METADATA, TemplateCode, TemplateType, UserType, WHATSAPP_EVENTS, WHATSAPP_TEMPLATE_EVENTS, aiGeneratedTemplateSchema, bulkMessageGenerationRequestSchema, bulkMessageSchema, canAccessFeature, getRoleCapabilities, getRoleDescription, getRoleDisplayName, isAdminRole, isEncargadoRole, templateGenerationRequestSchema };
690
+ export { ACTIVITY_EVENTS, AssetCategory, AssetStatus, BULK_MESSAGE_VARIABLES, BULK_MESSAGE_VARIABLE_CATEGORIES, BULK_MESSAGING_EVENTS, CACHE_TTL, CancellationReason, ClientStatus, CollaboratorStatus, ContractAssetType, ContractStatus, DATE_FORMATS, FILE_LIMITS, HEADERS, InvitationStatus, PAGINATION_DEFAULTS, PERMISSIONS, PaymentFrequency, PlanStatus, ROLE_NAMES, ROLE_PERMISSIONS, RoleNames, SubscriptionStatus, SuspensionType, TEMPLATE_CODES, TEMPLATE_METADATA, TemplateCode, TemplateType, UserType, WHATSAPP_EVENTS, WHATSAPP_TEMPLATE_EVENTS, aiGeneratedTemplateSchema, bulkMessageGenerationRequestSchema, bulkMessageSchema, canAccessFeature, getRoleCapabilities, getRoleDescription, getRoleDisplayName, isAdminRole, isEncargadoRole, templateGenerationRequestSchema };
655
691
  //# sourceMappingURL=index.mjs.map
656
692
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/whatsapp-templates.types.ts","../src/enums.ts","../src/constants/template-codes.constants.ts","../src/constants/bulk-message-variables.ts","../src/constants.ts","../src/utils/roleHelpers.ts","../src/events/whatsapp.events.ts","../src/events/bulk-messaging.events.ts","../src/schemas/ai-template.schema.ts","../src/schemas/bulk-message.schema.ts"],"names":["UserType","SubscriptionStatus","CollaboratorStatus","InvitationStatus","ClientStatus","PlanStatus","ContractStatus","PaymentFrequency","AssetStatus","AssetCategory","ContractAssetType","RoleNames","z"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Template codes for WhatsApp messages\n */\nexport const TemplateCode = {\n WELCOME: 'WELCOME',\n MEMBERSHIP_PURCHASE: 'MEMBERSHIP_PURCHASE',\n MEMBERSHIP_RENEWAL: 'MEMBERSHIP_RENEWAL',\n MEMBERSHIP_EXPIRING: 'MEMBERSHIP_EXPIRING',\n PAYMENT_REMINDER: 'PAYMENT_REMINDER',\n BIRTHDAY: 'BIRTHDAY',\n PAYMENT_RECEIPT: 'PAYMENT_RECEIPT',\n} as const;\n\nexport type TemplateCodeValue = (typeof TemplateCode)[keyof typeof TemplateCode];\nexport type TemplateCode = TemplateCodeValue;\n\n/**\n * Template types\n */\nexport const TemplateType = {\n STATIC: 'STATIC',\n PROMPT: 'PROMPT',\n} as const;\n\nexport type TemplateTypeValue = (typeof TemplateType)[keyof typeof TemplateType];\nexport type TemplateType = TemplateTypeValue;\n\n/**\n * Base interface for WhatsApp template data\n */\nexport interface WhatsAppTemplateData {\n gymId: string;\n clientId: string;\n phoneNumber: string;\n templateCode: TemplateCode;\n variables: Record<string, any>;\n metadata?: {\n contractId?: string;\n userId?: string;\n source?: string;\n instanceName?: string;\n };\n}\n\n/**\n * Welcome message template data\n */\nexport interface WelcomeTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.WELCOME;\n variables: {\n clientName: string;\n gymName: string;\n registrationDate: string;\n };\n}\n\n/**\n * Membership purchase template data\n */\nexport interface MembershipPurchaseTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_PURCHASE;\n variables: {\n clientName: string;\n planName: string;\n startDate: string;\n endDate: string;\n amount: string;\n paymentFrequency: string;\n };\n}\n\n/**\n * Membership renewal template data\n */\nexport interface MembershipRenewalTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_RENEWAL;\n variables: {\n clientName: string;\n planName: string;\n newEndDate: string;\n amount: string;\n };\n}\n\n/**\n * Membership expiring template data\n */\nexport interface MembershipExpiringTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_EXPIRING;\n variables: {\n clientName: string;\n planName: string;\n expirationDate: string;\n daysRemaining: string;\n };\n}\n\n/**\n * Payment reminder template data\n */\nexport interface PaymentReminderTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.PAYMENT_REMINDER;\n variables: {\n clientName: string;\n amount: string;\n dueDate: string;\n planName: string;\n };\n}\n\n/**\n * Birthday template data\n */\nexport interface BirthdayTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.BIRTHDAY;\n variables: {\n clientName: string;\n gymName: string;\n age: string;\n };\n}\n\n/**\n * Payment receipt template data\n */\nexport interface PaymentReceiptTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.PAYMENT_RECEIPT;\n variables: {\n gymName: string;\n receiptNumber: string;\n date: string;\n clientName: string;\n items: string;\n amount: string;\n paymentMethod: string;\n };\n metadata?: {\n saleId?: string;\n userId?: string;\n source?: string;\n instanceName?: string;\n };\n}\n\n/**\n * Union type for all template data types\n */\nexport type WhatsAppTemplateEventData =\n | WelcomeTemplateData\n | MembershipPurchaseTemplateData\n | MembershipRenewalTemplateData\n | MembershipExpiringTemplateData\n | PaymentReminderTemplateData\n | BirthdayTemplateData\n | PaymentReceiptTemplateData;\n\n/**\n * Template metadata interface\n */\nexport interface TemplateMetadata {\n code: TemplateCode;\n title: string;\n description: string;\n icon: string;\n variables: string[];\n exampleValues: Record<string, string>;\n}\n","export enum UserType {\n OWNER = 'owner',\n COLLABORATOR = 'collaborator',\n}\n\nexport enum SubscriptionStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n EXPIRED = 'expired',\n PAUSED = 'paused',\n PENDING_UPGRADE = 'pending_upgrade',\n}\n\nexport enum CollaboratorStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum InvitationStatus {\n PENDING = 'pending',\n ACCEPTED = 'accepted',\n CANCELLED = 'cancelled',\n EXPIRED = 'expired',\n}\n\nexport enum ClientStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum PlanStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n ARCHIVED = 'archived',\n}\n\nexport enum ContractStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n EXPIRING_SOON = 'expiring_soon',\n EXPIRED = 'expired',\n CANCELLED = 'cancelled',\n FOR_RENEW = 'for_renew',\n}\n\nexport enum PaymentFrequency {\n MONTHLY = 'monthly',\n QUARTERLY = 'quarterly',\n ANNUAL = 'annual',\n}\n\nexport enum AssetStatus {\n ACTIVE = 'active',\n DELETED = 'deleted',\n}\n\n\nexport enum AssetCategory {\n MEDICAL_DOCUMENT = 'medical_document',\n IDENTIFICATION = 'identification',\n INSURANCE = 'insurance',\n CONTRACT_COPY = 'contract_copy',\n OTHER = 'other',\n}\n\nexport enum ContractAssetType {\n PAYMENT_RECEIPT = 'payment_receipt',\n CONTRACT_DOCUMENT = 'contract_document',\n IDENTIFICATION = 'identification',\n OTHER = 'other',\n}\n\n","import { TemplateCode } from '../types/whatsapp-templates.types';\n\n/**\n * Template code constants\n */\nexport const TEMPLATE_CODES = {\n WELCOME: TemplateCode.WELCOME,\n MEMBERSHIP_PURCHASE: TemplateCode.MEMBERSHIP_PURCHASE,\n MEMBERSHIP_RENEWAL: TemplateCode.MEMBERSHIP_RENEWAL,\n MEMBERSHIP_EXPIRING: TemplateCode.MEMBERSHIP_EXPIRING,\n PAYMENT_REMINDER: TemplateCode.PAYMENT_REMINDER,\n BIRTHDAY: TemplateCode.BIRTHDAY,\n PAYMENT_RECEIPT: TemplateCode.PAYMENT_RECEIPT,\n} as const;\n\n/**\n * Event names for WhatsApp template events\n */\nexport const WHATSAPP_TEMPLATE_EVENTS = {\n SEND_TEMPLATE: 'whatsapp/template.send',\n TEMPLATE_SENT: 'whatsapp/template.sent',\n TEMPLATE_FAILED: 'whatsapp/template.failed',\n} as const;\n\n/**\n * Template metadata mapping\n */\nexport const TEMPLATE_METADATA = {\n [TemplateCode.WELCOME]: {\n code: TemplateCode.WELCOME,\n title: 'Mensaje de Bienvenida',\n description: 'Mensaje para nuevos clientes',\n icon: 'UserPlus',\n variables: ['clientName', 'gymName', 'registrationDate'],\n exampleValues: {\n clientName: 'Juan Pérez',\n gymName: 'GymSpace',\n registrationDate: '15/01/2024',\n },\n },\n [TemplateCode.MEMBERSHIP_PURCHASE]: {\n code: TemplateCode.MEMBERSHIP_PURCHASE,\n title: 'Compra de Membresía',\n description: 'Confirmación de nueva membresía',\n icon: 'ShoppingCart',\n variables: ['clientName', 'planName', 'startDate', 'endDate', 'amount', 'paymentFrequency'],\n exampleValues: {\n clientName: 'María López',\n planName: 'Premium',\n startDate: '01/02/2024',\n endDate: '01/03/2024',\n amount: '$50.00',\n paymentFrequency: 'mensual',\n },\n },\n [TemplateCode.MEMBERSHIP_RENEWAL]: {\n code: TemplateCode.MEMBERSHIP_RENEWAL,\n title: 'Renovación de Membresía',\n description: 'Confirmación de renovación',\n icon: 'RefreshCw',\n variables: ['clientName', 'planName', 'newEndDate', 'amount'],\n exampleValues: {\n clientName: 'Carlos Ruiz',\n planName: 'Básico',\n newEndDate: '15/04/2024',\n amount: '$30.00',\n },\n },\n [TemplateCode.MEMBERSHIP_EXPIRING]: {\n code: TemplateCode.MEMBERSHIP_EXPIRING,\n title: 'Membresía Por Vencer',\n description: 'Recordatorio de expiración próxima',\n icon: 'AlertCircle',\n variables: ['clientName', 'planName', 'expirationDate', 'daysRemaining'],\n exampleValues: {\n clientName: 'Ana García',\n planName: 'Premium',\n expirationDate: '20/02/2024',\n daysRemaining: '3',\n },\n },\n [TemplateCode.PAYMENT_REMINDER]: {\n code: TemplateCode.PAYMENT_REMINDER,\n title: 'Recordatorio de Pago',\n description: 'Recordatorio de pago pendiente',\n icon: 'DollarSign',\n variables: ['clientName', 'amount', 'dueDate', 'planName'],\n exampleValues: {\n clientName: 'Pedro Sánchez',\n amount: '$40.00',\n dueDate: '25/02/2024',\n planName: 'Estándar',\n },\n },\n [TemplateCode.BIRTHDAY]: {\n code: TemplateCode.BIRTHDAY,\n title: 'Cumpleaños',\n description: 'Felicitación de cumpleaños',\n icon: 'Cake',\n variables: ['clientName', 'gymName', 'age'],\n exampleValues: {\n clientName: 'Laura Martínez',\n gymName: 'GymSpace',\n age: '28',\n },\n },\n [TemplateCode.PAYMENT_RECEIPT]: {\n code: TemplateCode.PAYMENT_RECEIPT,\n title: 'Comprobante de Pago',\n description: 'Comprobante de venta pagada',\n icon: 'Receipt',\n variables: [\n 'gymName',\n 'receiptNumber',\n 'date',\n 'clientName',\n 'items',\n 'amount',\n 'paymentMethod',\n ],\n exampleValues: {\n gymName: 'GymSpace',\n receiptNumber: 'V-001',\n date: '15/01/2024',\n clientName: 'Juan Pérez',\n items: '• Proteína x2 = Q100.00\\n• Creatina x1 = Q50.00',\n amount: 'Q150.00',\n paymentMethod: 'Efectivo',\n },\n },\n} as const;\n","export interface BulkMessageVariable {\n name: string;\n placeholder: string;\n description: string;\n example: string;\n category: 'client' | 'gym' | 'membership' | 'datetime' | 'custom';\n required: boolean;\n formatter?: 'text' | 'currency' | 'date' | 'number';\n}\n\nexport const BULK_MESSAGE_VARIABLES: BulkMessageVariable[] = [\n // Variables de Cliente\n {\n name: 'clientName',\n placeholder: '{{clientName}}',\n description: 'Nombre completo del cliente',\n example: 'Juan Pérez',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n {\n name: 'clientEmail',\n placeholder: '{{clientEmail}}',\n description: 'Email del cliente',\n example: 'juan@example.com',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n {\n name: 'clientPhone',\n placeholder: '{{clientPhone}}',\n description: 'Teléfono del cliente',\n example: '+51 999 999 999',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n\n // Variables de Gimnasio\n {\n name: 'gymName',\n placeholder: '{{gymName}}',\n description: 'Nombre del gimnasio',\n example: 'Gym Fitness',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n {\n name: 'gymPhone',\n placeholder: '{{gymPhone}}',\n description: 'Teléfono del gimnasio',\n example: '+51 999 888 777',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n {\n name: 'gymAddress',\n placeholder: '{{gymAddress}}',\n description: 'Dirección del gimnasio',\n example: 'Av. Principal 123',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n\n // Variables de Membresía\n {\n name: 'planName',\n placeholder: '{{planName}}',\n description: 'Nombre del plan de membresía',\n example: 'Plan Premium',\n category: 'membership',\n required: false,\n formatter: 'text',\n },\n {\n name: 'membershipStatus',\n placeholder: '{{membershipStatus}}',\n description: 'Estado de la membresía',\n example: 'Activa',\n category: 'membership',\n required: false,\n formatter: 'text',\n },\n {\n name: 'daysUntilExpiration',\n placeholder: '{{daysUntilExpiration}}',\n description: 'Días restantes hasta vencimiento',\n example: '15',\n category: 'membership',\n required: false,\n formatter: 'number',\n },\n {\n name: 'expirationDate',\n placeholder: '{{expirationDate}}',\n description: 'Fecha de vencimiento',\n example: '31/12/2024',\n category: 'membership',\n required: false,\n formatter: 'date',\n },\n {\n name: 'amount',\n placeholder: '{{amount}}',\n description: 'Monto con formato de moneda',\n example: 'S/ 150.00',\n category: 'membership',\n required: false,\n formatter: 'currency',\n },\n\n // Variables de Fecha/Hora\n {\n name: 'date',\n placeholder: '{{date}}',\n description: 'Fecha actual',\n example: '15/10/2024',\n category: 'datetime',\n required: false,\n formatter: 'date',\n },\n {\n name: 'time',\n placeholder: '{{time}}',\n description: 'Hora actual',\n example: '14:30',\n category: 'datetime',\n required: false,\n formatter: 'text',\n },\n {\n name: 'dayOfWeek',\n placeholder: '{{dayOfWeek}}',\n description: 'Día de la semana',\n example: 'Lunes',\n category: 'datetime',\n required: false,\n formatter: 'text',\n },\n\n // Variables Personalizadas\n {\n name: 'customField',\n placeholder: '{{customField}}',\n description: 'Campo personalizado del cliente',\n example: 'Valor personalizado',\n category: 'custom',\n required: false,\n formatter: 'text',\n },\n];\n\nexport const BULK_MESSAGE_VARIABLE_CATEGORIES = {\n client: 'Cliente',\n gym: 'Gimnasio',\n membership: 'Membresía',\n datetime: 'Fecha/Hora',\n custom: 'Personalizado',\n} as const;\n","// Permission constants\nexport const PERMISSIONS = {\n // Organizations\n ORGANIZATIONS_CREATE: 'ORGANIZATIONS_CREATE',\n ORGANIZATIONS_READ: 'ORGANIZATIONS_READ',\n ORGANIZATIONS_UPDATE: 'ORGANIZATIONS_UPDATE',\n ORGANIZATIONS_DELETE: 'ORGANIZATIONS_DELETE',\n\n // Gyms\n GYMS_CREATE: 'GYMS_CREATE',\n GYMS_READ: 'GYMS_READ',\n GYMS_UPDATE: 'GYMS_UPDATE',\n GYMS_DELETE: 'GYMS_DELETE',\n\n // Collaborators\n COLLABORATORS_CREATE: 'COLLABORATORS_CREATE',\n COLLABORATORS_READ: 'COLLABORATORS_READ',\n COLLABORATORS_UPDATE: 'COLLABORATORS_UPDATE',\n COLLABORATORS_DELETE: 'COLLABORATORS_DELETE',\n\n // Clients\n CLIENTS_CREATE: 'CLIENTS_CREATE',\n CLIENTS_READ: 'CLIENTS_READ',\n CLIENTS_UPDATE: 'CLIENTS_UPDATE',\n CLIENTS_DELETE: 'CLIENTS_DELETE',\n\n // Contracts\n CONTRACTS_CREATE: 'CONTRACTS_CREATE',\n CONTRACTS_READ: 'CONTRACTS_READ',\n CONTRACTS_UPDATE: 'CONTRACTS_UPDATE',\n CONTRACTS_APPROVE: 'CONTRACTS_APPROVE',\n CONTRACTS_CANCEL: 'CONTRACTS_CANCEL',\n\n // Check-ins\n CHECKINS_CREATE: 'CHECKINS_CREATE',\n CHECKINS_READ: 'CHECKINS_READ',\n\n // Reports\n REPORTS_VIEW: 'REPORTS_VIEW',\n REPORTS_FINANCIAL: 'REPORTS_FINANCIAL',\n\n // Settings\n SETTINGS_UPDATE: 'SETTINGS_UPDATE',\n\n // Assets\n ASSETS_CREATE: 'ASSETS_CREATE',\n ASSETS_READ: 'ASSETS_READ',\n ASSETS_DELETE: 'ASSETS_DELETE',\n\n // Files\n FILES_CREATE: 'FILES_CREATE',\n FILES_READ: 'FILES_READ',\n FILES_DELETE: 'FILES_DELETE',\n\n // Products\n PRODUCTS_CREATE: 'PRODUCTS_CREATE',\n PRODUCTS_READ: 'PRODUCTS_READ',\n PRODUCTS_UPDATE: 'PRODUCTS_UPDATE',\n PRODUCTS_DELETE: 'PRODUCTS_DELETE',\n\n // Product Categories\n PRODUCT_CATEGORIES_CREATE: 'PRODUCT_CATEGORIES_CREATE',\n PRODUCT_CATEGORIES_READ: 'PRODUCT_CATEGORIES_READ',\n PRODUCT_CATEGORIES_UPDATE: 'PRODUCT_CATEGORIES_UPDATE',\n PRODUCT_CATEGORIES_DELETE: 'PRODUCT_CATEGORIES_DELETE',\n\n // Sales\n SALES_CREATE: 'SALES_CREATE',\n SALES_READ: 'SALES_READ',\n SALES_UPDATE: 'SALES_UPDATE',\n SALES_DELETE: 'SALES_DELETE',\n\n // Suppliers\n SUPPLIERS_CREATE: 'SUPPLIERS_CREATE',\n SUPPLIERS_READ: 'SUPPLIERS_READ',\n SUPPLIERS_UPDATE: 'SUPPLIERS_UPDATE',\n SUPPLIERS_DELETE: 'SUPPLIERS_DELETE',\n\n // Payment Methods\n PAYMENT_METHODS_CREATE: 'PAYMENT_METHODS_CREATE',\n PAYMENT_METHODS_READ: 'PAYMENT_METHODS_READ',\n PAYMENT_METHODS_UPDATE: 'PAYMENT_METHODS_UPDATE',\n PAYMENT_METHODS_DELETE: 'PAYMENT_METHODS_DELETE',\n\n // WhatsApp\n WHATSAPP_READ: 'WHATSAPP_READ',\n WHATSAPP_SEND: 'WHATSAPP_SEND',\n WHATSAPP_MANAGE: 'WHATSAPP_MANAGE',\n WHATSAPP_BULK_SEND: 'WHATSAPP_BULK_SEND',\n WHATSAPP_BULK_MANAGE: 'WHATSAPP_BULK_MANAGE',\n\n // Special permissions\n SUPER_ADMIN: 'SUPER_ADMIN',\n OWNER: 'OWNER',\n All: 'ALL',\n} as const;\n\n// Role definitions\nexport const ROLE_PERMISSIONS = {\n ADMIN: Object.values(PERMISSIONS),\n MANAGER: [\n PERMISSIONS.GYMS_READ,\n PERMISSIONS.COLLABORATORS_READ,\n PERMISSIONS.CLIENTS_CREATE,\n PERMISSIONS.CLIENTS_READ,\n PERMISSIONS.CLIENTS_UPDATE,\n PERMISSIONS.CONTRACTS_CREATE,\n PERMISSIONS.CONTRACTS_READ,\n PERMISSIONS.CHECKINS_CREATE,\n PERMISSIONS.CHECKINS_READ,\n PERMISSIONS.REPORTS_VIEW,\n PERMISSIONS.ASSETS_CREATE,\n PERMISSIONS.ASSETS_READ,\n PERMISSIONS.ASSETS_DELETE,\n PERMISSIONS.FILES_CREATE,\n PERMISSIONS.FILES_READ,\n PERMISSIONS.FILES_DELETE,\n PERMISSIONS.PRODUCTS_CREATE,\n PERMISSIONS.PRODUCTS_READ,\n PERMISSIONS.PRODUCTS_UPDATE,\n PERMISSIONS.PRODUCTS_DELETE,\n PERMISSIONS.PRODUCT_CATEGORIES_CREATE,\n PERMISSIONS.PRODUCT_CATEGORIES_READ,\n PERMISSIONS.PRODUCT_CATEGORIES_UPDATE,\n PERMISSIONS.PRODUCT_CATEGORIES_DELETE,\n PERMISSIONS.SALES_CREATE,\n PERMISSIONS.SALES_READ,\n PERMISSIONS.SALES_UPDATE,\n PERMISSIONS.SUPPLIERS_CREATE,\n PERMISSIONS.SUPPLIERS_READ,\n PERMISSIONS.SUPPLIERS_UPDATE,\n PERMISSIONS.SUPPLIERS_DELETE,\n PERMISSIONS.PAYMENT_METHODS_CREATE,\n PERMISSIONS.PAYMENT_METHODS_READ,\n PERMISSIONS.PAYMENT_METHODS_UPDATE,\n PERMISSIONS.PAYMENT_METHODS_DELETE,\n ],\n} as const;\n\n// Cache TTL values (in milliseconds - cache-manager standard)\nexport const CACHE_TTL = {\n USER_PERMISSIONS: 900000, // 15 minutes\n GYM_DATA: 1800000, // 30 minutes\n STATIC_DATA: 3600000, // 60 minutes\n REPORTS: 300000, // 5 minutes\n DASHBOARD: 180000, // 3 minutes\n WHATSAPP_MESSAGE_STATUS: 300000, // 5 minutes\n} as const;\n\n// File size limits (in bytes)\nexport const FILE_LIMITS = {\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB\n MAX_IMAGE_SIZE: 5 * 1024 * 1024, // 5MB\n MAX_DOCUMENT_SIZE: 10 * 1024 * 1024, // 10MB\n} as const;\n\n// Pagination defaults\nexport const PAGINATION_DEFAULTS = {\n PAGE: 1,\n LIMIT: 20,\n MAX_LIMIT: 100,\n} as const;\n\n// Date formats\nexport const DATE_FORMATS = {\n DATE_ONLY: 'YYYY-MM-DD',\n DATETIME: 'YYYY-MM-DD HH:mm:ss',\n TIME_ONLY: 'HH:mm:ss',\n} as const;\n\n// Headers\nexport const HEADERS = {\n GYM_ID: 'X-Gym-Id',\n REQUEST_ID: 'X-Request-Id',\n} as const;\n\n// Re-export template constants\nexport * from './constants/template-codes.constants';\nexport * from './constants/bulk-message-variables';\n","export enum RoleNames {\n ADMIN = 'Admin',\n ENCARGADO = 'Encargado',\n OWNER = 'OWNER', // Pseudo-role for gym owners\n}\n\nexport const ROLE_NAMES = RoleNames;\n\nexport type RoleName = RoleNames;\n\nexport function isAdminRole(roleName: string | null | undefined): boolean {\n return roleName === RoleNames.ADMIN;\n}\n\nexport function isEncargadoRole(roleName: string | null | undefined): boolean {\n return roleName === RoleNames.ENCARGADO;\n}\n\nexport function canAccessFeature(\n userRole: string | null | undefined,\n allowedRoles: string[] | RoleNames[]\n): boolean {\n if (!userRole) return false;\n // OWNER pseudo-role has access to everything\n if (userRole === RoleNames.OWNER) return true;\n return allowedRoles.includes(userRole as any);\n}\n\nexport function getRoleDisplayName(roleName: string | null | undefined): string {\n if (!roleName) return '';\n\n switch (roleName) {\n case RoleNames.ADMIN:\n return 'Administrador';\n case RoleNames.ENCARGADO:\n return 'Encargado';\n case RoleNames.OWNER:\n return 'Propietario';\n default:\n return roleName;\n }\n}\n\nexport function getRoleDescription(roleName: string | null | undefined): string {\n if (!roleName) return '';\n\n switch (roleName) {\n case RoleNames.ADMIN:\n return 'Acceso completo a todas las funcionalidades del gimnasio, gestión de colaboradores y configuración';\n case RoleNames.ENCARGADO:\n return 'Gestión diaria del gimnasio: clientes, contratos, check-ins y reportes';\n case RoleNames.OWNER:\n return 'Acceso completo a todas las funcionalidades, organización y suscripción';\n default:\n return '';\n }\n}\n\nexport function getRoleCapabilities(roleName: string | null | undefined): string[] {\n if (!roleName) return [];\n\n switch (roleName) {\n case RoleNames.OWNER:\n return [\n 'Acceso completo a todas las funcionalidades',\n 'Gestión de organización',\n 'Gestión de suscripción y facturación',\n 'Gestión completa de clientes',\n 'Gestión completa de contratos',\n 'Gestión de colaboradores',\n 'Configuración del gimnasio',\n 'Gestión de planes',\n 'Gestión de proveedores',\n 'Gestión de métodos de pago',\n 'Reportes y estadísticas',\n 'Gestión de inventario',\n 'Check-ins',\n ];\n case RoleNames.ADMIN:\n return [\n 'Gestión completa de clientes',\n 'Gestión completa de contratos',\n 'Gestión de colaboradores',\n 'Configuración del gimnasio',\n 'Gestión de planes',\n 'Gestión de proveedores',\n 'Gestión de métodos de pago',\n 'Reportes y estadísticas',\n 'Gestión de inventario',\n 'Check-ins',\n ];\n case RoleNames.ENCARGADO:\n return [\n 'Gestión de clientes (ver, crear, editar)',\n 'Creación y renovación de contratos',\n 'Check-ins',\n 'Ver reportes',\n 'Gestión de inventario',\n 'Ventas',\n ];\n default:\n return [];\n }\n}","/**\n * Evento para enviar un mensaje de WhatsApp\n */\nexport interface WhatsAppMessageSendEventData {\n // Identificadores\n gymId: string;\n instanceName: string; // Nombre de la instancia de Evolution API\n\n // Destinatario\n phoneNumber: string;\n\n // Contenido\n content: string;\n\n // Metadata opcional\n clientId?: string;\n templateId?: string;\n variables?: Record<string, any>;\n\n // Usuario que generó el envío\n userId?: string;\n}\n\n/**\n * Nombres de eventos de WhatsApp\n */\nexport const WHATSAPP_EVENTS = {\n MESSAGE_SEND: 'whatsapp/message.send',\n MESSAGE_RECEIVED: 'whatsapp/message.received',\n CONNECTION_UPDATE: 'whatsapp/connection.update',\n} as const;\n","export const BULK_MESSAGING_EVENTS = {\n GENERATE_BULK_MESSAGE: 'whatsapp/bulk-message.generate',\n SEND_BULK_MESSAGES: 'whatsapp/bulk-messages.send',\n} as const;\n\nexport interface GenerateBulkMessageEvent {\n name: typeof BULK_MESSAGING_EVENTS.GENERATE_BULK_MESSAGE;\n data: {\n gymId: string;\n userId: string;\n prompt: string;\n includeVariables?: string[];\n tone?: 'promotional' | 'informational' | 'reminder' | 'greeting' | 'custom' | 'friendly';\n language?: string;\n additionalRequirements?: string;\n };\n}\n\nexport interface SendBulkMessagesEvent {\n name: typeof BULK_MESSAGING_EVENTS.SEND_BULK_MESSAGES;\n data: {\n sendId: string;\n gymId: string;\n userId: string;\n instanceName: string;\n templateId?: string;\n message: string;\n clients: Array<{\n clientId: string;\n clientName: string;\n phoneNumber: string;\n data: {\n id: string;\n name: string;\n email?: string;\n phone: string;\n activePlan?: {\n name: string;\n expirationDate?: Date;\n amount?: number;\n };\n membershipStatus?: string;\n metadata?: Record<string, any>;\n };\n }>;\n gymData: {\n name: string;\n phone?: string;\n address?: string;\n countryConfig: {\n currency: string;\n locale: string;\n };\n };\n };\n}\n","import { z } from 'zod';\n\nexport const templateGenerationRequestSchema = z.object({\n templateCode: z.string(),\n templateMetadata: z.object({\n title: z.string(),\n description: z.string(),\n variables: z.array(z.string()),\n exampleValues: z.record(z.string()),\n }),\n userPrompt: z.string().optional(),\n language: z.string().default('es'),\n});\n\nexport const aiGeneratedTemplateSchema = z.object({\n message: z.string().describe('Mensaje generado con variables en formato {{variable}}'),\n tone: z.enum(['professional', 'friendly', 'casual', 'urgent']).describe('Tono del mensaje'),\n usedVariables: z.array(z.string()).describe('Variables utilizadas en el mensaje'),\n suggestions: z.array(z.string()).optional().describe('Sugerencias adicionales'),\n});\n\nexport type TemplateGenerationRequest = z.infer<typeof templateGenerationRequestSchema>;\nexport type AIGeneratedTemplate = z.infer<typeof aiGeneratedTemplateSchema>;\n","import { z } from 'zod';\n\nexport const bulkMessageGenerationRequestSchema = z.object({\n prompt: z.string().describe('Prompt or context for message generation'),\n tone: z\n .enum(['promotional', 'informational', 'reminder', 'greeting', 'friendly'])\n .optional()\n .describe('Tone of the message'),\n includeVariables: z.array(z.string()).optional().describe('Variables to include in the message'),\n additionalRequirements: z.string().optional().describe('Additional requirements for the message'),\n language: z.string().default('es').describe('Language for generation'),\n});\n\nexport const bulkMessageSchema = z.object({\n message: z.string().describe('Generated message with variables'),\n tone: z\n .enum(['promotional', 'informational', 'reminder', 'greeting', 'friendly'])\n .describe('Tone of the message'),\n usedVariables: z.array(z.string()).describe('Variables used in the message'),\n suggestions: z.array(z.string()).optional().describe('Additional message suggestions'),\n});\n\nexport type BulkMessageGenerationRequest = z.infer<typeof bulkMessageGenerationRequestSchema>;\nexport type BulkMessage = z.infer<typeof bulkMessageSchema>;\n"]}
1
+ {"version":3,"sources":["../src/types/whatsapp-templates.types.ts","../src/enums.ts","../src/constants/template-codes.constants.ts","../src/constants/bulk-message-variables.ts","../src/constants.ts","../src/utils/roleHelpers.ts","../src/events/whatsapp.events.ts","../src/events/bulk-messaging.events.ts","../src/events/activity.events.ts","../src/schemas/ai-template.schema.ts","../src/schemas/bulk-message.schema.ts"],"names":["UserType","SubscriptionStatus","CollaboratorStatus","InvitationStatus","ClientStatus","PlanStatus","ContractStatus","CancellationReason","SuspensionType","PaymentFrequency","AssetStatus","AssetCategory","ContractAssetType","RoleNames","z"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Template codes for WhatsApp messages\n */\nexport const TemplateCode = {\n WELCOME: 'WELCOME',\n MEMBERSHIP_PURCHASE: 'MEMBERSHIP_PURCHASE',\n MEMBERSHIP_RENEWAL: 'MEMBERSHIP_RENEWAL',\n MEMBERSHIP_EXPIRING: 'MEMBERSHIP_EXPIRING',\n PAYMENT_REMINDER: 'PAYMENT_REMINDER',\n BIRTHDAY: 'BIRTHDAY',\n PAYMENT_RECEIPT: 'PAYMENT_RECEIPT',\n} as const;\n\nexport type TemplateCodeValue = (typeof TemplateCode)[keyof typeof TemplateCode];\nexport type TemplateCode = TemplateCodeValue;\n\n/**\n * Template types\n */\nexport const TemplateType = {\n STATIC: 'STATIC',\n PROMPT: 'PROMPT',\n} as const;\n\nexport type TemplateTypeValue = (typeof TemplateType)[keyof typeof TemplateType];\nexport type TemplateType = TemplateTypeValue;\n\n/**\n * Base interface for WhatsApp template data\n */\nexport interface WhatsAppTemplateData {\n gymId: string;\n clientId: string;\n phoneNumber: string;\n templateCode: TemplateCode;\n variables: Record<string, any>;\n metadata?: {\n contractId?: string;\n userId?: string;\n source?: string;\n instanceName?: string;\n };\n}\n\n/**\n * Welcome message template data\n */\nexport interface WelcomeTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.WELCOME;\n variables: {\n clientName: string;\n gymName: string;\n registrationDate: string;\n };\n}\n\n/**\n * Membership purchase template data\n */\nexport interface MembershipPurchaseTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_PURCHASE;\n variables: {\n clientName: string;\n planName: string;\n startDate: string;\n endDate: string;\n amount: string;\n paymentFrequency: string;\n };\n}\n\n/**\n * Membership renewal template data\n */\nexport interface MembershipRenewalTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_RENEWAL;\n variables: {\n clientName: string;\n planName: string;\n newEndDate: string;\n amount: string;\n };\n}\n\n/**\n * Membership expiring template data\n */\nexport interface MembershipExpiringTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_EXPIRING;\n variables: {\n clientName: string;\n planName: string;\n expirationDate: string;\n daysRemaining: string;\n };\n}\n\n/**\n * Payment reminder template data\n */\nexport interface PaymentReminderTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.PAYMENT_REMINDER;\n variables: {\n clientName: string;\n amount: string;\n dueDate: string;\n planName: string;\n };\n}\n\n/**\n * Birthday template data\n */\nexport interface BirthdayTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.BIRTHDAY;\n variables: {\n clientName: string;\n gymName: string;\n age: string;\n };\n}\n\n/**\n * Payment receipt template data\n */\nexport interface PaymentReceiptTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.PAYMENT_RECEIPT;\n variables: {\n gymName: string;\n receiptNumber: string;\n date: string;\n clientName: string;\n items: string;\n amount: string;\n paymentMethod: string;\n };\n metadata?: {\n saleId?: string;\n userId?: string;\n source?: string;\n instanceName?: string;\n };\n}\n\n/**\n * Union type for all template data types\n */\nexport type WhatsAppTemplateEventData =\n | WelcomeTemplateData\n | MembershipPurchaseTemplateData\n | MembershipRenewalTemplateData\n | MembershipExpiringTemplateData\n | PaymentReminderTemplateData\n | BirthdayTemplateData\n | PaymentReceiptTemplateData;\n\n/**\n * Template metadata interface\n */\nexport interface TemplateMetadata {\n code: TemplateCode;\n title: string;\n description: string;\n icon: string;\n variables: string[];\n exampleValues: Record<string, string>;\n}\n","export enum UserType {\n OWNER = 'owner',\n COLLABORATOR = 'collaborator',\n}\n\nexport enum SubscriptionStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n EXPIRED = 'expired',\n PAUSED = 'paused',\n PENDING_UPGRADE = 'pending_upgrade',\n}\n\nexport enum CollaboratorStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum InvitationStatus {\n PENDING = 'pending',\n ACCEPTED = 'accepted',\n CANCELLED = 'cancelled',\n EXPIRED = 'expired',\n}\n\nexport enum ClientStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum PlanStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n ARCHIVED = 'archived',\n}\n\nexport enum ContractStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n EXPIRING_SOON = 'expiring_soon',\n EXPIRED = 'expired',\n CANCELLED = 'cancelled',\n FOR_RENEW = 'for_renew',\n SUSPENDED = 'suspended',\n GRACE_PERIOD = 'grace_period',\n TERMINATED = 'terminated',\n}\n\nexport enum CancellationReason {\n PRICE_TOO_HIGH = 'PRICE_TOO_HIGH',\n NOT_USING_SERVICE = 'NOT_USING_SERVICE',\n MOVING_LOCATION = 'MOVING_LOCATION',\n FINANCIAL_ISSUES = 'FINANCIAL_ISSUES',\n SERVICE_DISSATISFACTION = 'SERVICE_DISSATISFACTION',\n TEMPORARY_BREAK = 'TEMPORARY_BREAK',\n OTHER = 'OTHER',\n}\n\nexport enum SuspensionType {\n VACATION = 'vacation',\n MEDICAL = 'medical',\n FINANCIAL = 'financial',\n OTHER = 'other',\n}\n\nexport enum PaymentFrequency {\n MONTHLY = 'monthly',\n QUARTERLY = 'quarterly',\n ANNUAL = 'annual',\n}\n\nexport enum AssetStatus {\n ACTIVE = 'active',\n DELETED = 'deleted',\n}\n\nexport enum AssetCategory {\n MEDICAL_DOCUMENT = 'medical_document',\n IDENTIFICATION = 'identification',\n INSURANCE = 'insurance',\n CONTRACT_COPY = 'contract_copy',\n OTHER = 'other',\n}\n\nexport enum ContractAssetType {\n PAYMENT_RECEIPT = 'payment_receipt',\n CONTRACT_DOCUMENT = 'contract_document',\n IDENTIFICATION = 'identification',\n OTHER = 'other',\n}\n","import { TemplateCode } from '../types/whatsapp-templates.types';\n\n/**\n * Template code constants\n */\nexport const TEMPLATE_CODES = {\n WELCOME: TemplateCode.WELCOME,\n MEMBERSHIP_PURCHASE: TemplateCode.MEMBERSHIP_PURCHASE,\n MEMBERSHIP_RENEWAL: TemplateCode.MEMBERSHIP_RENEWAL,\n MEMBERSHIP_EXPIRING: TemplateCode.MEMBERSHIP_EXPIRING,\n PAYMENT_REMINDER: TemplateCode.PAYMENT_REMINDER,\n BIRTHDAY: TemplateCode.BIRTHDAY,\n PAYMENT_RECEIPT: TemplateCode.PAYMENT_RECEIPT,\n} as const;\n\n/**\n * Event names for WhatsApp template events\n */\nexport const WHATSAPP_TEMPLATE_EVENTS = {\n SEND_TEMPLATE: 'whatsapp/template.send',\n TEMPLATE_SENT: 'whatsapp/template.sent',\n TEMPLATE_FAILED: 'whatsapp/template.failed',\n} as const;\n\n/**\n * Template metadata mapping\n */\nexport const TEMPLATE_METADATA = {\n [TemplateCode.WELCOME]: {\n code: TemplateCode.WELCOME,\n title: 'Mensaje de Bienvenida',\n description: 'Mensaje para nuevos clientes',\n icon: 'UserPlus',\n variables: ['clientName', 'gymName', 'registrationDate'],\n exampleValues: {\n clientName: 'Juan Pérez',\n gymName: 'GymSpace',\n registrationDate: '15/01/2024',\n },\n },\n [TemplateCode.MEMBERSHIP_PURCHASE]: {\n code: TemplateCode.MEMBERSHIP_PURCHASE,\n title: 'Compra de Membresía',\n description: 'Confirmación de nueva membresía',\n icon: 'ShoppingCart',\n variables: ['clientName', 'planName', 'startDate', 'endDate', 'amount', 'paymentFrequency'],\n exampleValues: {\n clientName: 'María López',\n planName: 'Premium',\n startDate: '01/02/2024',\n endDate: '01/03/2024',\n amount: '$50.00',\n paymentFrequency: 'mensual',\n },\n },\n [TemplateCode.MEMBERSHIP_RENEWAL]: {\n code: TemplateCode.MEMBERSHIP_RENEWAL,\n title: 'Renovación de Membresía',\n description: 'Confirmación de renovación',\n icon: 'RefreshCw',\n variables: ['clientName', 'planName', 'newEndDate', 'amount'],\n exampleValues: {\n clientName: 'Carlos Ruiz',\n planName: 'Básico',\n newEndDate: '15/04/2024',\n amount: '$30.00',\n },\n },\n [TemplateCode.MEMBERSHIP_EXPIRING]: {\n code: TemplateCode.MEMBERSHIP_EXPIRING,\n title: 'Membresía Por Vencer',\n description: 'Recordatorio de expiración próxima',\n icon: 'AlertCircle',\n variables: ['clientName', 'planName', 'expirationDate', 'daysRemaining'],\n exampleValues: {\n clientName: 'Ana García',\n planName: 'Premium',\n expirationDate: '20/02/2024',\n daysRemaining: '3',\n },\n },\n [TemplateCode.PAYMENT_REMINDER]: {\n code: TemplateCode.PAYMENT_REMINDER,\n title: 'Recordatorio de Pago',\n description: 'Recordatorio de pago pendiente',\n icon: 'DollarSign',\n variables: ['clientName', 'amount', 'dueDate', 'planName'],\n exampleValues: {\n clientName: 'Pedro Sánchez',\n amount: '$40.00',\n dueDate: '25/02/2024',\n planName: 'Estándar',\n },\n },\n [TemplateCode.BIRTHDAY]: {\n code: TemplateCode.BIRTHDAY,\n title: 'Cumpleaños',\n description: 'Felicitación de cumpleaños',\n icon: 'Cake',\n variables: ['clientName', 'gymName', 'age'],\n exampleValues: {\n clientName: 'Laura Martínez',\n gymName: 'GymSpace',\n age: '28',\n },\n },\n [TemplateCode.PAYMENT_RECEIPT]: {\n code: TemplateCode.PAYMENT_RECEIPT,\n title: 'Comprobante de Pago',\n description: 'Comprobante de venta pagada',\n icon: 'Receipt',\n variables: [\n 'gymName',\n 'receiptNumber',\n 'date',\n 'clientName',\n 'items',\n 'amount',\n 'paymentMethod',\n ],\n exampleValues: {\n gymName: 'GymSpace',\n receiptNumber: 'V-001',\n date: '15/01/2024',\n clientName: 'Juan Pérez',\n items: '• Proteína x2 = Q100.00\\n• Creatina x1 = Q50.00',\n amount: 'Q150.00',\n paymentMethod: 'Efectivo',\n },\n },\n} as const;\n","export interface BulkMessageVariable {\n name: string;\n placeholder: string;\n description: string;\n example: string;\n category: 'client' | 'gym' | 'membership' | 'datetime' | 'custom';\n required: boolean;\n formatter?: 'text' | 'currency' | 'date' | 'number';\n}\n\nexport const BULK_MESSAGE_VARIABLES: BulkMessageVariable[] = [\n // Variables de Cliente\n {\n name: 'clientName',\n placeholder: '{{clientName}}',\n description: 'Nombre completo del cliente',\n example: 'Juan Pérez',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n {\n name: 'clientEmail',\n placeholder: '{{clientEmail}}',\n description: 'Email del cliente',\n example: 'juan@example.com',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n {\n name: 'clientPhone',\n placeholder: '{{clientPhone}}',\n description: 'Teléfono del cliente',\n example: '+51 999 999 999',\n category: 'client',\n required: false,\n formatter: 'text',\n },\n\n // Variables de Gimnasio\n {\n name: 'gymName',\n placeholder: '{{gymName}}',\n description: 'Nombre del gimnasio',\n example: 'Gym Fitness',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n {\n name: 'gymPhone',\n placeholder: '{{gymPhone}}',\n description: 'Teléfono del gimnasio',\n example: '+51 999 888 777',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n {\n name: 'gymAddress',\n placeholder: '{{gymAddress}}',\n description: 'Dirección del gimnasio',\n example: 'Av. Principal 123',\n category: 'gym',\n required: false,\n formatter: 'text',\n },\n\n // Variables de Membresía\n {\n name: 'planName',\n placeholder: '{{planName}}',\n description: 'Nombre del plan de membresía',\n example: 'Plan Premium',\n category: 'membership',\n required: false,\n formatter: 'text',\n },\n {\n name: 'membershipStatus',\n placeholder: '{{membershipStatus}}',\n description: 'Estado de la membresía',\n example: 'Activa',\n category: 'membership',\n required: false,\n formatter: 'text',\n },\n {\n name: 'daysUntilExpiration',\n placeholder: '{{daysUntilExpiration}}',\n description: 'Días restantes hasta vencimiento',\n example: '15',\n category: 'membership',\n required: false,\n formatter: 'number',\n },\n {\n name: 'expirationDate',\n placeholder: '{{expirationDate}}',\n description: 'Fecha de vencimiento',\n example: '31/12/2024',\n category: 'membership',\n required: false,\n formatter: 'date',\n },\n {\n name: 'amount',\n placeholder: '{{amount}}',\n description: 'Monto con formato de moneda',\n example: 'S/ 150.00',\n category: 'membership',\n required: false,\n formatter: 'currency',\n },\n\n // Variables de Fecha/Hora\n {\n name: 'date',\n placeholder: '{{date}}',\n description: 'Fecha actual',\n example: '15/10/2024',\n category: 'datetime',\n required: false,\n formatter: 'date',\n },\n {\n name: 'time',\n placeholder: '{{time}}',\n description: 'Hora actual',\n example: '14:30',\n category: 'datetime',\n required: false,\n formatter: 'text',\n },\n {\n name: 'dayOfWeek',\n placeholder: '{{dayOfWeek}}',\n description: 'Día de la semana',\n example: 'Lunes',\n category: 'datetime',\n required: false,\n formatter: 'text',\n },\n\n // Variables Personalizadas\n {\n name: 'customField',\n placeholder: '{{customField}}',\n description: 'Campo personalizado del cliente',\n example: 'Valor personalizado',\n category: 'custom',\n required: false,\n formatter: 'text',\n },\n];\n\nexport const BULK_MESSAGE_VARIABLE_CATEGORIES = {\n client: 'Cliente',\n gym: 'Gimnasio',\n membership: 'Membresía',\n datetime: 'Fecha/Hora',\n custom: 'Personalizado',\n} as const;\n","// Permission constants\nexport const PERMISSIONS = {\n // Organizations\n ORGANIZATIONS_CREATE: 'ORGANIZATIONS_CREATE',\n ORGANIZATIONS_READ: 'ORGANIZATIONS_READ',\n ORGANIZATIONS_UPDATE: 'ORGANIZATIONS_UPDATE',\n ORGANIZATIONS_DELETE: 'ORGANIZATIONS_DELETE',\n\n // Gyms\n GYMS_CREATE: 'GYMS_CREATE',\n GYMS_READ: 'GYMS_READ',\n GYMS_UPDATE: 'GYMS_UPDATE',\n GYMS_DELETE: 'GYMS_DELETE',\n\n // Collaborators\n COLLABORATORS_CREATE: 'COLLABORATORS_CREATE',\n COLLABORATORS_READ: 'COLLABORATORS_READ',\n COLLABORATORS_UPDATE: 'COLLABORATORS_UPDATE',\n COLLABORATORS_DELETE: 'COLLABORATORS_DELETE',\n\n // Clients\n CLIENTS_CREATE: 'CLIENTS_CREATE',\n CLIENTS_READ: 'CLIENTS_READ',\n CLIENTS_UPDATE: 'CLIENTS_UPDATE',\n CLIENTS_DELETE: 'CLIENTS_DELETE',\n\n // Contracts\n CONTRACTS_CREATE: 'CONTRACTS_CREATE',\n CONTRACTS_READ: 'CONTRACTS_READ',\n CONTRACTS_UPDATE: 'CONTRACTS_UPDATE',\n CONTRACTS_APPROVE: 'CONTRACTS_APPROVE',\n CONTRACTS_CANCEL: 'CONTRACTS_CANCEL',\n\n // Check-ins\n CHECKINS_CREATE: 'CHECKINS_CREATE',\n CHECKINS_READ: 'CHECKINS_READ',\n\n // Reports\n REPORTS_VIEW: 'REPORTS_VIEW',\n REPORTS_FINANCIAL: 'REPORTS_FINANCIAL',\n\n // Settings\n SETTINGS_UPDATE: 'SETTINGS_UPDATE',\n\n // Assets\n ASSETS_CREATE: 'ASSETS_CREATE',\n ASSETS_READ: 'ASSETS_READ',\n ASSETS_DELETE: 'ASSETS_DELETE',\n\n // Files\n FILES_CREATE: 'FILES_CREATE',\n FILES_READ: 'FILES_READ',\n FILES_DELETE: 'FILES_DELETE',\n\n // Products\n PRODUCTS_CREATE: 'PRODUCTS_CREATE',\n PRODUCTS_READ: 'PRODUCTS_READ',\n PRODUCTS_UPDATE: 'PRODUCTS_UPDATE',\n PRODUCTS_DELETE: 'PRODUCTS_DELETE',\n\n // Product Categories\n PRODUCT_CATEGORIES_CREATE: 'PRODUCT_CATEGORIES_CREATE',\n PRODUCT_CATEGORIES_READ: 'PRODUCT_CATEGORIES_READ',\n PRODUCT_CATEGORIES_UPDATE: 'PRODUCT_CATEGORIES_UPDATE',\n PRODUCT_CATEGORIES_DELETE: 'PRODUCT_CATEGORIES_DELETE',\n\n // Sales\n SALES_CREATE: 'SALES_CREATE',\n SALES_READ: 'SALES_READ',\n SALES_UPDATE: 'SALES_UPDATE',\n SALES_DELETE: 'SALES_DELETE',\n\n // Suppliers\n SUPPLIERS_CREATE: 'SUPPLIERS_CREATE',\n SUPPLIERS_READ: 'SUPPLIERS_READ',\n SUPPLIERS_UPDATE: 'SUPPLIERS_UPDATE',\n SUPPLIERS_DELETE: 'SUPPLIERS_DELETE',\n\n // Payment Methods\n PAYMENT_METHODS_CREATE: 'PAYMENT_METHODS_CREATE',\n PAYMENT_METHODS_READ: 'PAYMENT_METHODS_READ',\n PAYMENT_METHODS_UPDATE: 'PAYMENT_METHODS_UPDATE',\n PAYMENT_METHODS_DELETE: 'PAYMENT_METHODS_DELETE',\n\n // WhatsApp\n WHATSAPP_READ: 'WHATSAPP_READ',\n WHATSAPP_SEND: 'WHATSAPP_SEND',\n WHATSAPP_MANAGE: 'WHATSAPP_MANAGE',\n WHATSAPP_BULK_SEND: 'WHATSAPP_BULK_SEND',\n WHATSAPP_BULK_MANAGE: 'WHATSAPP_BULK_MANAGE',\n\n // Activities\n ACTIVITIES_CREATE: 'ACTIVITIES_CREATE',\n ACTIVITIES_READ: 'ACTIVITIES_READ',\n ACTIVITIES_UPDATE: 'ACTIVITIES_UPDATE',\n ACTIVITIES_DELETE: 'ACTIVITIES_DELETE',\n ACTIVITIES_MANAGE_NOTIFICATIONS: 'ACTIVITIES_MANAGE_NOTIFICATIONS',\n\n // Tags\n TAGS_CREATE: 'TAGS_CREATE',\n TAGS_READ: 'TAGS_READ',\n TAGS_UPDATE: 'TAGS_UPDATE',\n TAGS_DELETE: 'TAGS_DELETE',\n\n // Special permissions\n SUPER_ADMIN: 'SUPER_ADMIN',\n OWNER: 'OWNER',\n All: 'ALL',\n} as const;\n\n// Role definitions\nexport const ROLE_PERMISSIONS = {\n ADMIN: Object.values(PERMISSIONS),\n MANAGER: [\n PERMISSIONS.GYMS_READ,\n PERMISSIONS.COLLABORATORS_READ,\n PERMISSIONS.CLIENTS_CREATE,\n PERMISSIONS.CLIENTS_READ,\n PERMISSIONS.CLIENTS_UPDATE,\n PERMISSIONS.CONTRACTS_CREATE,\n PERMISSIONS.CONTRACTS_READ,\n PERMISSIONS.CHECKINS_CREATE,\n PERMISSIONS.CHECKINS_READ,\n PERMISSIONS.REPORTS_VIEW,\n PERMISSIONS.ASSETS_CREATE,\n PERMISSIONS.ASSETS_READ,\n PERMISSIONS.ASSETS_DELETE,\n PERMISSIONS.FILES_CREATE,\n PERMISSIONS.FILES_READ,\n PERMISSIONS.FILES_DELETE,\n PERMISSIONS.PRODUCTS_CREATE,\n PERMISSIONS.PRODUCTS_READ,\n PERMISSIONS.PRODUCTS_UPDATE,\n PERMISSIONS.PRODUCTS_DELETE,\n PERMISSIONS.PRODUCT_CATEGORIES_CREATE,\n PERMISSIONS.PRODUCT_CATEGORIES_READ,\n PERMISSIONS.PRODUCT_CATEGORIES_UPDATE,\n PERMISSIONS.PRODUCT_CATEGORIES_DELETE,\n PERMISSIONS.SALES_CREATE,\n PERMISSIONS.SALES_READ,\n PERMISSIONS.SALES_UPDATE,\n PERMISSIONS.SUPPLIERS_CREATE,\n PERMISSIONS.SUPPLIERS_READ,\n PERMISSIONS.SUPPLIERS_UPDATE,\n PERMISSIONS.SUPPLIERS_DELETE,\n PERMISSIONS.PAYMENT_METHODS_CREATE,\n PERMISSIONS.PAYMENT_METHODS_READ,\n PERMISSIONS.PAYMENT_METHODS_UPDATE,\n PERMISSIONS.PAYMENT_METHODS_DELETE,\n ],\n} as const;\n\n// Cache TTL values (in milliseconds - cache-manager standard)\nexport const CACHE_TTL = {\n USER_PERMISSIONS: 900000, // 15 minutes\n GYM_DATA: 1800000, // 30 minutes\n STATIC_DATA: 3600000, // 60 minutes\n REPORTS: 300000, // 5 minutes\n DASHBOARD: 180000, // 3 minutes\n WHATSAPP_MESSAGE_STATUS: 300000, // 5 minutes\n} as const;\n\n// File size limits (in bytes)\nexport const FILE_LIMITS = {\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB\n MAX_IMAGE_SIZE: 5 * 1024 * 1024, // 5MB\n MAX_DOCUMENT_SIZE: 10 * 1024 * 1024, // 10MB\n} as const;\n\n// Pagination defaults\nexport const PAGINATION_DEFAULTS = {\n PAGE: 1,\n LIMIT: 20,\n MAX_LIMIT: 100,\n} as const;\n\n// Date formats\nexport const DATE_FORMATS = {\n DATE_ONLY: 'YYYY-MM-DD',\n DATETIME: 'YYYY-MM-DD HH:mm:ss',\n TIME_ONLY: 'HH:mm:ss',\n} as const;\n\n// Headers\nexport const HEADERS = {\n GYM_ID: 'X-Gym-Id',\n REQUEST_ID: 'X-Request-Id',\n} as const;\n\n// Re-export template constants\nexport * from './constants/template-codes.constants';\nexport * from './constants/bulk-message-variables';\n","export enum RoleNames {\n ADMIN = 'Admin',\n ENCARGADO = 'Encargado',\n OWNER = 'OWNER', // Pseudo-role for gym owners\n}\n\nexport const ROLE_NAMES = RoleNames;\n\nexport type RoleName = RoleNames;\n\nexport function isAdminRole(roleName: string | null | undefined): boolean {\n return roleName === RoleNames.ADMIN;\n}\n\nexport function isEncargadoRole(roleName: string | null | undefined): boolean {\n return roleName === RoleNames.ENCARGADO;\n}\n\nexport function canAccessFeature(\n userRole: string | null | undefined,\n allowedRoles: string[] | RoleNames[]\n): boolean {\n if (!userRole) return false;\n // OWNER pseudo-role has access to everything\n if (userRole === RoleNames.OWNER) return true;\n return allowedRoles.includes(userRole as any);\n}\n\nexport function getRoleDisplayName(roleName: string | null | undefined): string {\n if (!roleName) return '';\n\n switch (roleName) {\n case RoleNames.ADMIN:\n return 'Administrador';\n case RoleNames.ENCARGADO:\n return 'Encargado';\n case RoleNames.OWNER:\n return 'Propietario';\n default:\n return roleName;\n }\n}\n\nexport function getRoleDescription(roleName: string | null | undefined): string {\n if (!roleName) return '';\n\n switch (roleName) {\n case RoleNames.ADMIN:\n return 'Acceso completo a todas las funcionalidades del gimnasio, gestión de colaboradores y configuración';\n case RoleNames.ENCARGADO:\n return 'Gestión diaria del gimnasio: clientes, contratos, check-ins y reportes';\n case RoleNames.OWNER:\n return 'Acceso completo a todas las funcionalidades, organización y suscripción';\n default:\n return '';\n }\n}\n\nexport function getRoleCapabilities(roleName: string | null | undefined): string[] {\n if (!roleName) return [];\n\n switch (roleName) {\n case RoleNames.OWNER:\n return [\n 'Acceso completo a todas las funcionalidades',\n 'Gestión de organización',\n 'Gestión de suscripción y facturación',\n 'Gestión completa de clientes',\n 'Gestión completa de contratos',\n 'Gestión de colaboradores',\n 'Configuración del gimnasio',\n 'Gestión de planes',\n 'Gestión de proveedores',\n 'Gestión de métodos de pago',\n 'Reportes y estadísticas',\n 'Gestión de inventario',\n 'Check-ins',\n ];\n case RoleNames.ADMIN:\n return [\n 'Gestión completa de clientes',\n 'Gestión completa de contratos',\n 'Gestión de colaboradores',\n 'Configuración del gimnasio',\n 'Gestión de planes',\n 'Gestión de proveedores',\n 'Gestión de métodos de pago',\n 'Reportes y estadísticas',\n 'Gestión de inventario',\n 'Check-ins',\n ];\n case RoleNames.ENCARGADO:\n return [\n 'Gestión de clientes (ver, crear, editar)',\n 'Creación y renovación de contratos',\n 'Check-ins',\n 'Ver reportes',\n 'Gestión de inventario',\n 'Ventas',\n ];\n default:\n return [];\n }\n}","/**\n * Evento para enviar un mensaje de WhatsApp\n */\nexport interface WhatsAppMessageSendEventData {\n // Identificadores\n gymId: string;\n instanceName: string; // Nombre de la instancia de Evolution API\n\n // Destinatario\n phoneNumber: string;\n\n // Contenido\n content: string;\n\n // Metadata opcional\n clientId?: string;\n templateId?: string;\n variables?: Record<string, any>;\n\n // Usuario que generó el envío\n userId?: string;\n}\n\n/**\n * Nombres de eventos de WhatsApp\n */\nexport const WHATSAPP_EVENTS = {\n MESSAGE_SEND: 'whatsapp/message.send',\n MESSAGE_RECEIVED: 'whatsapp/message.received',\n CONNECTION_UPDATE: 'whatsapp/connection.update',\n} as const;\n","export const BULK_MESSAGING_EVENTS = {\n GENERATE_BULK_MESSAGE: 'whatsapp/bulk-message.generate',\n SEND_BULK_MESSAGES: 'whatsapp/bulk-messages.send',\n} as const;\n\nexport interface GenerateBulkMessageEvent {\n name: typeof BULK_MESSAGING_EVENTS.GENERATE_BULK_MESSAGE;\n data: {\n gymId: string;\n userId: string;\n prompt: string;\n includeVariables?: string[];\n tone?: 'promotional' | 'informational' | 'reminder' | 'greeting' | 'custom' | 'friendly';\n language?: string;\n additionalRequirements?: string;\n };\n}\n\nexport interface SendBulkMessagesEvent {\n name: typeof BULK_MESSAGING_EVENTS.SEND_BULK_MESSAGES;\n data: {\n sendId: string;\n gymId: string;\n userId: string;\n instanceName: string;\n templateId?: string;\n message: string;\n clients: Array<{\n clientId: string;\n clientName: string;\n phoneNumber: string;\n data: {\n id: string;\n name: string;\n email?: string;\n phone: string;\n activePlan?: {\n name: string;\n expirationDate?: Date;\n amount?: number;\n };\n membershipStatus?: string;\n metadata?: Record<string, any>;\n };\n }>;\n gymData: {\n name: string;\n phone?: string;\n address?: string;\n countryConfig: {\n currency: string;\n locale: string;\n };\n };\n };\n}\n","export const ACTIVITY_EVENTS = {\n SEND_ACTIVITY_NOTIFICATION: 'activity/notification.send',\n} as const;\n\nexport interface SendActivityNotificationEvent {\n name: typeof ACTIVITY_EVENTS.SEND_ACTIVITY_NOTIFICATION;\n data: {\n activityId: string;\n notificationId: string;\n gymId: string;\n userId: string;\n instanceName: string;\n message: string;\n clients: Array<{\n clientId: string;\n clientName: string;\n phoneNumber: string;\n data: {\n id: string;\n name: string;\n email?: string;\n phone: string;\n activePlan?: {\n name: string;\n expirationDate?: Date;\n amount?: number;\n };\n membershipStatus?: string;\n metadata?: Record<string, any>;\n };\n }>;\n gymData: {\n name: string;\n phone?: string;\n address?: string;\n countryConfig: {\n currency: string;\n locale: string;\n };\n };\n activityData: {\n name: string;\n startDateTime: Date;\n durationMinutes: number;\n location: string;\n };\n };\n}\n","import { z } from 'zod';\n\nexport const templateGenerationRequestSchema = z.object({\n templateCode: z.string(),\n templateMetadata: z.object({\n title: z.string(),\n description: z.string(),\n variables: z.array(z.string()),\n exampleValues: z.record(z.string()),\n }),\n userPrompt: z.string().optional(),\n language: z.string().default('es'),\n});\n\nexport const aiGeneratedTemplateSchema = z.object({\n message: z.string().describe('Mensaje generado con variables en formato {{variable}}'),\n tone: z.enum(['professional', 'friendly', 'casual', 'urgent']).describe('Tono del mensaje'),\n usedVariables: z.array(z.string()).describe('Variables utilizadas en el mensaje'),\n suggestions: z.array(z.string()).optional().describe('Sugerencias adicionales'),\n});\n\nexport type TemplateGenerationRequest = z.infer<typeof templateGenerationRequestSchema>;\nexport type AIGeneratedTemplate = z.infer<typeof aiGeneratedTemplateSchema>;\n","import { z } from 'zod';\n\nexport const bulkMessageGenerationRequestSchema = z.object({\n prompt: z.string().describe('Prompt or context for message generation'),\n tone: z\n .enum(['promotional', 'informational', 'reminder', 'greeting', 'friendly'])\n .optional()\n .describe('Tone of the message'),\n includeVariables: z.array(z.string()).optional().describe('Variables to include in the message'),\n additionalRequirements: z.string().optional().describe('Additional requirements for the message'),\n language: z.string().default('es').describe('Language for generation'),\n});\n\nexport const bulkMessageSchema = z.object({\n message: z.string().describe('Generated message with variables'),\n tone: z\n .enum(['promotional', 'informational', 'reminder', 'greeting', 'friendly'])\n .describe('Tone of the message'),\n usedVariables: z.array(z.string()).describe('Variables used in the message'),\n suggestions: z.array(z.string()).optional().describe('Additional message suggestions'),\n});\n\nexport type BulkMessageGenerationRequest = z.infer<typeof bulkMessageGenerationRequestSchema>;\nexport type BulkMessage = z.infer<typeof bulkMessageSchema>;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gymspace/shared",
3
- "version": "1.2.13",
3
+ "version": "1.2.15",
4
4
  "description": "Shared types and interfaces for GymSpace",
5
5
  "author": "GymSpace Team",
6
6
  "license": "MIT",
package/src/constants.ts CHANGED
@@ -89,6 +89,19 @@ export const PERMISSIONS = {
89
89
  WHATSAPP_BULK_SEND: 'WHATSAPP_BULK_SEND',
90
90
  WHATSAPP_BULK_MANAGE: 'WHATSAPP_BULK_MANAGE',
91
91
 
92
+ // Activities
93
+ ACTIVITIES_CREATE: 'ACTIVITIES_CREATE',
94
+ ACTIVITIES_READ: 'ACTIVITIES_READ',
95
+ ACTIVITIES_UPDATE: 'ACTIVITIES_UPDATE',
96
+ ACTIVITIES_DELETE: 'ACTIVITIES_DELETE',
97
+ ACTIVITIES_MANAGE_NOTIFICATIONS: 'ACTIVITIES_MANAGE_NOTIFICATIONS',
98
+
99
+ // Tags
100
+ TAGS_CREATE: 'TAGS_CREATE',
101
+ TAGS_READ: 'TAGS_READ',
102
+ TAGS_UPDATE: 'TAGS_UPDATE',
103
+ TAGS_DELETE: 'TAGS_DELETE',
104
+
92
105
  // Special permissions
93
106
  SUPER_ADMIN: 'SUPER_ADMIN',
94
107
  OWNER: 'OWNER',
package/src/enums.ts CHANGED
@@ -42,6 +42,26 @@ export enum ContractStatus {
42
42
  EXPIRED = 'expired',
43
43
  CANCELLED = 'cancelled',
44
44
  FOR_RENEW = 'for_renew',
45
+ SUSPENDED = 'suspended',
46
+ GRACE_PERIOD = 'grace_period',
47
+ TERMINATED = 'terminated',
48
+ }
49
+
50
+ export enum CancellationReason {
51
+ PRICE_TOO_HIGH = 'PRICE_TOO_HIGH',
52
+ NOT_USING_SERVICE = 'NOT_USING_SERVICE',
53
+ MOVING_LOCATION = 'MOVING_LOCATION',
54
+ FINANCIAL_ISSUES = 'FINANCIAL_ISSUES',
55
+ SERVICE_DISSATISFACTION = 'SERVICE_DISSATISFACTION',
56
+ TEMPORARY_BREAK = 'TEMPORARY_BREAK',
57
+ OTHER = 'OTHER',
58
+ }
59
+
60
+ export enum SuspensionType {
61
+ VACATION = 'vacation',
62
+ MEDICAL = 'medical',
63
+ FINANCIAL = 'financial',
64
+ OTHER = 'other',
45
65
  }
46
66
 
47
67
  export enum PaymentFrequency {
@@ -55,7 +75,6 @@ export enum AssetStatus {
55
75
  DELETED = 'deleted',
56
76
  }
57
77
 
58
-
59
78
  export enum AssetCategory {
60
79
  MEDICAL_DOCUMENT = 'medical_document',
61
80
  IDENTIFICATION = 'identification',
@@ -70,4 +89,3 @@ export enum ContractAssetType {
70
89
  IDENTIFICATION = 'identification',
71
90
  OTHER = 'other',
72
91
  }
73
-
@@ -0,0 +1,48 @@
1
+ export const ACTIVITY_EVENTS = {
2
+ SEND_ACTIVITY_NOTIFICATION: 'activity/notification.send',
3
+ } as const;
4
+
5
+ export interface SendActivityNotificationEvent {
6
+ name: typeof ACTIVITY_EVENTS.SEND_ACTIVITY_NOTIFICATION;
7
+ data: {
8
+ activityId: string;
9
+ notificationId: string;
10
+ gymId: string;
11
+ userId: string;
12
+ instanceName: string;
13
+ message: string;
14
+ clients: Array<{
15
+ clientId: string;
16
+ clientName: string;
17
+ phoneNumber: string;
18
+ data: {
19
+ id: string;
20
+ name: string;
21
+ email?: string;
22
+ phone: string;
23
+ activePlan?: {
24
+ name: string;
25
+ expirationDate?: Date;
26
+ amount?: number;
27
+ };
28
+ membershipStatus?: string;
29
+ metadata?: Record<string, any>;
30
+ };
31
+ }>;
32
+ gymData: {
33
+ name: string;
34
+ phone?: string;
35
+ address?: string;
36
+ countryConfig: {
37
+ currency: string;
38
+ locale: string;
39
+ };
40
+ };
41
+ activityData: {
42
+ name: string;
43
+ startDateTime: Date;
44
+ durationMinutes: number;
45
+ location: string;
46
+ };
47
+ };
48
+ }
@@ -1,2 +1,3 @@
1
1
  export * from './whatsapp.events';
2
2
  export * from './bulk-messaging.events';
3
+ export * from './activity.events';
package/src/types.ts CHANGED
@@ -72,7 +72,16 @@ export type Permission =
72
72
  | 'WHATSAPP_SEND'
73
73
  | 'WHATSAPP_MANAGE'
74
74
  | 'WHATSAPP_BULK_SEND'
75
- | 'WHATSAPP_BULK_MANAGE';
75
+ | 'WHATSAPP_BULK_MANAGE'
76
+ | 'ACTIVITIES_CREATE'
77
+ | 'ACTIVITIES_READ'
78
+ | 'ACTIVITIES_UPDATE'
79
+ | 'ACTIVITIES_DELETE'
80
+ | 'ACTIVITIES_MANAGE_NOTIFICATIONS'
81
+ | 'TAGS_CREATE'
82
+ | 'TAGS_READ'
83
+ | 'TAGS_UPDATE'
84
+ | 'TAGS_DELETE';
76
85
 
77
86
  export interface AuditFields {
78
87
  createdByUserId: UUID;