@gymspace/shared 1.2.20 → 1.2.22

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
@@ -31,6 +31,11 @@ declare enum PlanStatus {
31
31
  INACTIVE = "inactive",
32
32
  ARCHIVED = "archived"
33
33
  }
34
+ declare enum PlanType {
35
+ BASIC = "BASIC",
36
+ PREMIUM = "PREMIUM",
37
+ ENTERPRISE = "ENTERPRISE"
38
+ }
34
39
  declare enum ContractStatus {
35
40
  PENDING = "pending",
36
41
  ACTIVE = "active",
@@ -231,7 +236,7 @@ interface TemplateMetadata {
231
236
  type UUID = string;
232
237
  type Currency = 'USD' | 'EUR' | 'PEN' | 'MXN' | 'COP' | 'ARS' | 'CLP';
233
238
  type EntityType = 'user' | 'organization' | 'gym' | 'collaborator' | 'client' | 'contract' | 'asset';
234
- type Permission = 'SUPER_ADMIN' | 'OWNER' | 'ORGANIZATIONS_CREATE' | 'ORGANIZATIONS_READ' | 'ORGANIZATIONS_UPDATE' | 'ORGANIZATIONS_DELETE' | 'GYMS_CREATE' | 'GYMS_READ' | 'GYMS_UPDATE' | 'GYMS_DELETE' | 'COLLABORATORS_CREATE' | 'COLLABORATORS_READ' | 'COLLABORATORS_UPDATE' | 'COLLABORATORS_DELETE' | 'CLIENTS_CREATE' | 'CLIENTS_READ' | 'CLIENTS_UPDATE' | 'CLIENTS_DELETE' | 'CONTRACTS_CREATE' | 'CONTRACTS_READ' | 'CONTRACTS_UPDATE' | 'CONTRACTS_APPROVE' | 'CONTRACTS_CANCEL' | 'CHECKINS_CREATE' | 'CHECKINS_READ' | 'REPORTS_VIEW' | 'REPORTS_FINANCIAL' | 'SETTINGS_UPDATE' | 'ASSETS_CREATE' | 'ASSETS_READ' | 'ASSETS_DELETE' | 'FILES_CREATE' | 'FILES_READ' | 'FILES_DELETE' | 'PRODUCTS_CREATE' | 'PRODUCTS_READ' | 'PRODUCTS_UPDATE' | 'PRODUCTS_DELETE' | 'PRODUCT_CATEGORIES_CREATE' | 'PRODUCT_CATEGORIES_READ' | 'PRODUCT_CATEGORIES_UPDATE' | 'PRODUCT_CATEGORIES_DELETE' | 'SALES_CREATE' | 'SALES_READ' | 'SALES_UPDATE' | 'SALES_DELETE' | 'SUPPLIERS_CREATE' | 'SUPPLIERS_READ' | 'SUPPLIERS_UPDATE' | 'SUPPLIERS_DELETE' | 'PAYMENT_METHODS_CREATE' | 'PAYMENT_METHODS_READ' | 'PAYMENT_METHODS_UPDATE' | 'PAYMENT_METHODS_DELETE' | 'WHATSAPP_READ' | 'WHATSAPP_SEND' | 'WHATSAPP_MANAGE' | 'WHATSAPP_BULK_SEND' | 'WHATSAPP_BULK_MANAGE' | 'ACTIVITIES_CREATE' | 'ACTIVITIES_READ' | 'ACTIVITIES_UPDATE' | 'ACTIVITIES_DELETE' | 'ACTIVITIES_MANAGE_NOTIFICATIONS' | 'TAGS_CREATE' | 'TAGS_READ' | 'TAGS_UPDATE' | 'TAGS_DELETE' | 'COMMISSIONS_CONFIG_CREATE' | 'COMMISSIONS_CONFIG_READ' | 'COMMISSIONS_CONFIG_UPDATE' | 'COMMISSIONS_RULES_CREATE' | 'COMMISSIONS_RULES_READ' | 'COMMISSIONS_RULES_UPDATE' | 'COMMISSIONS_RULES_DELETE' | 'COMMISSIONS_CALCULATIONS_READ' | 'COMMISSIONS_REPORTS_VIEW' | 'ALL';
239
+ type Permission = 'SUPER_ADMIN' | 'OWNER' | 'ORGANIZATIONS_CREATE' | 'ORGANIZATIONS_READ' | 'ORGANIZATIONS_UPDATE' | 'ORGANIZATIONS_DELETE' | 'GYMS_CREATE' | 'GYMS_READ' | 'GYMS_UPDATE' | 'GYMS_DELETE' | 'COLLABORATORS_CREATE' | 'COLLABORATORS_READ' | 'COLLABORATORS_UPDATE' | 'COLLABORATORS_DELETE' | 'CLIENTS_CREATE' | 'CLIENTS_READ' | 'CLIENTS_UPDATE' | 'CLIENTS_DELETE' | 'CONTRACTS_CREATE' | 'CONTRACTS_READ' | 'CONTRACTS_UPDATE' | 'CONTRACTS_APPROVE' | 'CONTRACTS_CANCEL' | 'CHECKINS_CREATE' | 'CHECKINS_READ' | 'REPORTS_VIEW' | 'REPORTS_FINANCIAL' | 'SETTINGS_UPDATE' | 'ASSETS_CREATE' | 'ASSETS_READ' | 'ASSETS_DELETE' | 'FILES_CREATE' | 'FILES_READ' | 'FILES_DELETE' | 'PRODUCTS_CREATE' | 'PRODUCTS_READ' | 'PRODUCTS_UPDATE' | 'PRODUCTS_DELETE' | 'PRODUCT_CATEGORIES_CREATE' | 'PRODUCT_CATEGORIES_READ' | 'PRODUCT_CATEGORIES_UPDATE' | 'PRODUCT_CATEGORIES_DELETE' | 'SALES_CREATE' | 'SALES_READ' | 'SALES_UPDATE' | 'SALES_DELETE' | 'SUPPLIERS_CREATE' | 'SUPPLIERS_READ' | 'SUPPLIERS_UPDATE' | 'SUPPLIERS_DELETE' | 'PAYMENT_METHODS_CREATE' | 'PAYMENT_METHODS_READ' | 'PAYMENT_METHODS_UPDATE' | 'PAYMENT_METHODS_DELETE' | 'WHATSAPP_READ' | 'WHATSAPP_SEND' | 'WHATSAPP_MANAGE' | 'WHATSAPP_BULK_SEND' | 'WHATSAPP_BULK_MANAGE' | 'ACTIVITIES_CREATE' | 'ACTIVITIES_READ' | 'ACTIVITIES_UPDATE' | 'ACTIVITIES_DELETE' | 'ACTIVITIES_MANAGE_NOTIFICATIONS' | 'TAGS_CREATE' | 'TAGS_READ' | 'TAGS_UPDATE' | 'TAGS_DELETE' | 'COMMISSIONS_CONFIG_CREATE' | 'COMMISSIONS_CONFIG_READ' | 'COMMISSIONS_CONFIG_UPDATE' | 'COMMISSIONS_RULES_CREATE' | 'COMMISSIONS_RULES_READ' | 'COMMISSIONS_RULES_UPDATE' | 'COMMISSIONS_RULES_DELETE' | 'COMMISSIONS_CALCULATIONS_READ' | 'COMMISSIONS_REPORTS_VIEW' | 'CATALOG_READ' | 'CATALOG_UPDATE' | 'CATALOG_MANAGE' | 'ALL';
235
240
  interface AuditFields {
236
241
  createdByUserId: UUID;
237
242
  updatedByUserId?: UUID;
@@ -581,17 +586,18 @@ interface BulkMessageVariable {
581
586
  placeholder: string;
582
587
  description: string;
583
588
  example: string;
584
- category: 'client' | 'gym' | 'membership' | 'datetime' | 'custom';
589
+ category: 'client' | 'gym' | 'membership' | 'activity' | 'datetime';
585
590
  required: boolean;
586
- formatter?: 'text' | 'currency' | 'date' | 'number';
591
+ formatter?: 'text' | 'currency' | 'date' | 'datetime' | 'number';
587
592
  }
588
593
  declare const BULK_MESSAGE_VARIABLES: BulkMessageVariable[];
594
+ declare const ACTIVITY_MESSAGE_VARIABLES: BulkMessageVariable[];
589
595
  declare const BULK_MESSAGE_VARIABLE_CATEGORIES: {
590
596
  readonly client: "Cliente";
591
597
  readonly gym: "Gimnasio";
592
598
  readonly membership: "Membresía";
599
+ readonly activity: "Actividad";
593
600
  readonly datetime: "Fecha/Hora";
594
- readonly custom: "Personalizado";
595
601
  };
596
602
 
597
603
  declare const PERMISSIONS: {
@@ -670,12 +676,15 @@ declare const PERMISSIONS: {
670
676
  readonly COMMISSIONS_RULES_DELETE: "COMMISSIONS_RULES_DELETE";
671
677
  readonly COMMISSIONS_CALCULATIONS_READ: "COMMISSIONS_CALCULATIONS_READ";
672
678
  readonly COMMISSIONS_REPORTS_VIEW: "COMMISSIONS_REPORTS_VIEW";
679
+ readonly CATALOG_READ: "CATALOG_READ";
680
+ readonly CATALOG_UPDATE: "CATALOG_UPDATE";
681
+ readonly CATALOG_MANAGE: "CATALOG_MANAGE";
673
682
  readonly SUPER_ADMIN: "SUPER_ADMIN";
674
683
  readonly OWNER: "OWNER";
675
684
  readonly All: "ALL";
676
685
  };
677
686
  declare const ROLE_PERMISSIONS: {
678
- readonly ADMIN: ("SUPER_ADMIN" | "OWNER" | "ORGANIZATIONS_CREATE" | "ORGANIZATIONS_READ" | "ORGANIZATIONS_UPDATE" | "ORGANIZATIONS_DELETE" | "GYMS_CREATE" | "GYMS_READ" | "GYMS_UPDATE" | "GYMS_DELETE" | "COLLABORATORS_CREATE" | "COLLABORATORS_READ" | "COLLABORATORS_UPDATE" | "COLLABORATORS_DELETE" | "CLIENTS_CREATE" | "CLIENTS_READ" | "CLIENTS_UPDATE" | "CLIENTS_DELETE" | "CONTRACTS_CREATE" | "CONTRACTS_READ" | "CONTRACTS_UPDATE" | "CONTRACTS_APPROVE" | "CONTRACTS_CANCEL" | "CHECKINS_CREATE" | "CHECKINS_READ" | "REPORTS_VIEW" | "REPORTS_FINANCIAL" | "SETTINGS_UPDATE" | "ASSETS_CREATE" | "ASSETS_READ" | "ASSETS_DELETE" | "FILES_CREATE" | "FILES_READ" | "FILES_DELETE" | "PRODUCTS_CREATE" | "PRODUCTS_READ" | "PRODUCTS_UPDATE" | "PRODUCTS_DELETE" | "PRODUCT_CATEGORIES_CREATE" | "PRODUCT_CATEGORIES_READ" | "PRODUCT_CATEGORIES_UPDATE" | "PRODUCT_CATEGORIES_DELETE" | "SALES_CREATE" | "SALES_READ" | "SALES_UPDATE" | "SALES_DELETE" | "SUPPLIERS_CREATE" | "SUPPLIERS_READ" | "SUPPLIERS_UPDATE" | "SUPPLIERS_DELETE" | "PAYMENT_METHODS_CREATE" | "PAYMENT_METHODS_READ" | "PAYMENT_METHODS_UPDATE" | "PAYMENT_METHODS_DELETE" | "WHATSAPP_READ" | "WHATSAPP_SEND" | "WHATSAPP_MANAGE" | "WHATSAPP_BULK_SEND" | "WHATSAPP_BULK_MANAGE" | "ACTIVITIES_CREATE" | "ACTIVITIES_READ" | "ACTIVITIES_UPDATE" | "ACTIVITIES_DELETE" | "ACTIVITIES_MANAGE_NOTIFICATIONS" | "TAGS_CREATE" | "TAGS_READ" | "TAGS_UPDATE" | "TAGS_DELETE" | "COMMISSIONS_CONFIG_CREATE" | "COMMISSIONS_CONFIG_READ" | "COMMISSIONS_CONFIG_UPDATE" | "COMMISSIONS_RULES_CREATE" | "COMMISSIONS_RULES_READ" | "COMMISSIONS_RULES_UPDATE" | "COMMISSIONS_RULES_DELETE" | "COMMISSIONS_CALCULATIONS_READ" | "COMMISSIONS_REPORTS_VIEW" | "ALL")[];
687
+ readonly ADMIN: ("SUPER_ADMIN" | "OWNER" | "ORGANIZATIONS_CREATE" | "ORGANIZATIONS_READ" | "ORGANIZATIONS_UPDATE" | "ORGANIZATIONS_DELETE" | "GYMS_CREATE" | "GYMS_READ" | "GYMS_UPDATE" | "GYMS_DELETE" | "COLLABORATORS_CREATE" | "COLLABORATORS_READ" | "COLLABORATORS_UPDATE" | "COLLABORATORS_DELETE" | "CLIENTS_CREATE" | "CLIENTS_READ" | "CLIENTS_UPDATE" | "CLIENTS_DELETE" | "CONTRACTS_CREATE" | "CONTRACTS_READ" | "CONTRACTS_UPDATE" | "CONTRACTS_APPROVE" | "CONTRACTS_CANCEL" | "CHECKINS_CREATE" | "CHECKINS_READ" | "REPORTS_VIEW" | "REPORTS_FINANCIAL" | "SETTINGS_UPDATE" | "ASSETS_CREATE" | "ASSETS_READ" | "ASSETS_DELETE" | "FILES_CREATE" | "FILES_READ" | "FILES_DELETE" | "PRODUCTS_CREATE" | "PRODUCTS_READ" | "PRODUCTS_UPDATE" | "PRODUCTS_DELETE" | "PRODUCT_CATEGORIES_CREATE" | "PRODUCT_CATEGORIES_READ" | "PRODUCT_CATEGORIES_UPDATE" | "PRODUCT_CATEGORIES_DELETE" | "SALES_CREATE" | "SALES_READ" | "SALES_UPDATE" | "SALES_DELETE" | "SUPPLIERS_CREATE" | "SUPPLIERS_READ" | "SUPPLIERS_UPDATE" | "SUPPLIERS_DELETE" | "PAYMENT_METHODS_CREATE" | "PAYMENT_METHODS_READ" | "PAYMENT_METHODS_UPDATE" | "PAYMENT_METHODS_DELETE" | "WHATSAPP_READ" | "WHATSAPP_SEND" | "WHATSAPP_MANAGE" | "WHATSAPP_BULK_SEND" | "WHATSAPP_BULK_MANAGE" | "ACTIVITIES_CREATE" | "ACTIVITIES_READ" | "ACTIVITIES_UPDATE" | "ACTIVITIES_DELETE" | "ACTIVITIES_MANAGE_NOTIFICATIONS" | "TAGS_CREATE" | "TAGS_READ" | "TAGS_UPDATE" | "TAGS_DELETE" | "COMMISSIONS_CONFIG_CREATE" | "COMMISSIONS_CONFIG_READ" | "COMMISSIONS_CONFIG_UPDATE" | "COMMISSIONS_RULES_CREATE" | "COMMISSIONS_RULES_READ" | "COMMISSIONS_RULES_UPDATE" | "COMMISSIONS_RULES_DELETE" | "COMMISSIONS_CALCULATIONS_READ" | "COMMISSIONS_REPORTS_VIEW" | "CATALOG_READ" | "CATALOG_UPDATE" | "CATALOG_MANAGE" | "ALL")[];
679
688
  readonly MANAGER: readonly ["GYMS_READ", "COLLABORATORS_READ", "CLIENTS_CREATE", "CLIENTS_READ", "CLIENTS_UPDATE", "CONTRACTS_CREATE", "CONTRACTS_READ", "CHECKINS_CREATE", "CHECKINS_READ", "REPORTS_VIEW", "ASSETS_CREATE", "ASSETS_READ", "ASSETS_DELETE", "FILES_CREATE", "FILES_READ", "FILES_DELETE", "PRODUCTS_CREATE", "PRODUCTS_READ", "PRODUCTS_UPDATE", "PRODUCTS_DELETE", "PRODUCT_CATEGORIES_CREATE", "PRODUCT_CATEGORIES_READ", "PRODUCT_CATEGORIES_UPDATE", "PRODUCT_CATEGORIES_DELETE", "SALES_CREATE", "SALES_READ", "SALES_UPDATE", "SUPPLIERS_CREATE", "SUPPLIERS_READ", "SUPPLIERS_UPDATE", "SUPPLIERS_DELETE", "PAYMENT_METHODS_CREATE", "PAYMENT_METHODS_READ", "PAYMENT_METHODS_UPDATE", "PAYMENT_METHODS_DELETE", "COMMISSIONS_RULES_READ", "COMMISSIONS_CALCULATIONS_READ"];
680
689
  };
681
690
  declare const CACHE_TTL: {
@@ -943,4 +952,33 @@ declare const bulkMessageSchema: z.ZodObject<{
943
952
  type BulkMessageGenerationRequest = z.infer<typeof bulkMessageGenerationRequestSchema>;
944
953
  type BulkMessage = z.infer<typeof bulkMessageSchema>;
945
954
 
946
- export { ACTIVITY_EVENTS, type AIGeneratedTemplate, type AcceptInvitationDto, type ActivityItem, type ActivityQueryParams, AssetCategory, AssetStatus, type AuditFields, BULK_MESSAGE_VARIABLES, BULK_MESSAGE_VARIABLE_CATEGORIES, BULK_MESSAGING_EVENTS, type BirthdayTemplateData, type BulkMessage, type BulkMessageGenerationRequest, type BulkMessageVariable, CACHE_TTL, CancellationReason, ClientStatus, type Collaborator, type CollaboratorStats, CollaboratorStatus, ContractAssetType, ContractStatus, type CreateInvitationDto, type Currency, DATE_FORMATS, type EntityType, FILE_LIMITS, type GenerateBulkMessageEvent, HEADERS, type ICollaborator, type IGym, type IOrganization, type IRequestContext, type IRole, type ISubscription, type ISubscriptionPlan, type IUser, type Invitation, InvitationStatus, type ListCollaboratorsParams, type MembershipExpiringTemplateData, type MembershipPurchaseTemplateData, type MembershipRenewalTemplateData, PAGINATION_DEFAULTS, PERMISSIONS, type PaginatedResponse, type PaginationMeta, type PaginationParams, PaymentFrequency, type PaymentReceiptTemplateData, type PaymentReminderTemplateData, type Permission, PlanStatus, ROLE_NAMES, ROLE_PERMISSIONS, type Role, type RoleName, RoleNames, type SendActivityNotificationEvent, type SendBulkMessagesEvent, type StatsQueryParams, SubscriptionStatus, SuspensionType, TEMPLATE_CODES, TEMPLATE_METADATA, TemplateCode, type TemplateGenerationRequest, type TemplateMetadata, TemplateType, type UUID, type UpdateCollaboratorDto, type UpdateCollaboratorRoleDto, type UpdateCollaboratorStatusDto, type User, UserType, type ValidateByCodeDto, WHATSAPP_EVENTS, WHATSAPP_TEMPLATE_EVENTS, type WelcomeTemplateData, type WhatsAppMessageSendEventData, type WhatsAppTemplateData, type WhatsAppTemplateEventData, aiGeneratedTemplateSchema, bulkMessageGenerationRequestSchema, bulkMessageSchema, canAccessFeature, getRoleCapabilities, getRoleDescription, getRoleDisplayName, isAdminRole, isEncargadoRole, templateGenerationRequestSchema };
955
+ declare const activityNotificationGenerationRequestSchema: z.ZodObject<{
956
+ prompt: z.ZodString;
957
+ tone: z.ZodOptional<z.ZodEnum<["friendly", "formal", "urgent", "motivational", "reminder"]>>;
958
+ currentMessage: z.ZodOptional<z.ZodString>;
959
+ additionalRequirements: z.ZodOptional<z.ZodString>;
960
+ language: z.ZodDefault<z.ZodString>;
961
+ }, "strip", z.ZodTypeAny, {
962
+ language: string;
963
+ prompt: string;
964
+ tone?: "reminder" | "friendly" | "urgent" | "formal" | "motivational" | undefined;
965
+ additionalRequirements?: string | undefined;
966
+ currentMessage?: string | undefined;
967
+ }, {
968
+ prompt: string;
969
+ language?: string | undefined;
970
+ tone?: "reminder" | "friendly" | "urgent" | "formal" | "motivational" | undefined;
971
+ additionalRequirements?: string | undefined;
972
+ currentMessage?: string | undefined;
973
+ }>;
974
+ declare const activityNotificationSchema: z.ZodObject<{
975
+ message: z.ZodString;
976
+ }, "strip", z.ZodTypeAny, {
977
+ message: string;
978
+ }, {
979
+ message: string;
980
+ }>;
981
+ type ActivityNotificationGenerationRequest = z.infer<typeof activityNotificationGenerationRequestSchema>;
982
+ type ActivityNotification = z.infer<typeof activityNotificationSchema>;
983
+
984
+ export { ACTIVITY_EVENTS, ACTIVITY_MESSAGE_VARIABLES, type AIGeneratedTemplate, type AcceptInvitationDto, type ActivityItem, type ActivityNotification, type ActivityNotificationGenerationRequest, type ActivityQueryParams, AssetCategory, AssetStatus, type AuditFields, BULK_MESSAGE_VARIABLES, BULK_MESSAGE_VARIABLE_CATEGORIES, BULK_MESSAGING_EVENTS, type BirthdayTemplateData, type BulkMessage, type 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, PlanType, ROLE_NAMES, ROLE_PERMISSIONS, type Role, type RoleName, RoleNames, type SendActivityNotificationEvent, type SendBulkMessagesEvent, type StatsQueryParams, SubscriptionStatus, SuspensionType, TEMPLATE_CODES, TEMPLATE_METADATA, TemplateCode, type TemplateGenerationRequest, type TemplateMetadata, TemplateType, type UUID, type UpdateCollaboratorDto, type UpdateCollaboratorRoleDto, type UpdateCollaboratorStatusDto, type User, UserType, type ValidateByCodeDto, WHATSAPP_EVENTS, WHATSAPP_TEMPLATE_EVENTS, type WelcomeTemplateData, type WhatsAppMessageSendEventData, type WhatsAppTemplateData, type WhatsAppTemplateEventData, activityNotificationGenerationRequestSchema, activityNotificationSchema, aiGeneratedTemplateSchema, bulkMessageGenerationRequestSchema, bulkMessageSchema, canAccessFeature, getRoleCapabilities, getRoleDescription, getRoleDisplayName, isAdminRole, isEncargadoRole, templateGenerationRequestSchema };
package/dist/index.d.ts CHANGED
@@ -31,6 +31,11 @@ declare enum PlanStatus {
31
31
  INACTIVE = "inactive",
32
32
  ARCHIVED = "archived"
33
33
  }
34
+ declare enum PlanType {
35
+ BASIC = "BASIC",
36
+ PREMIUM = "PREMIUM",
37
+ ENTERPRISE = "ENTERPRISE"
38
+ }
34
39
  declare enum ContractStatus {
35
40
  PENDING = "pending",
36
41
  ACTIVE = "active",
@@ -231,7 +236,7 @@ interface TemplateMetadata {
231
236
  type UUID = string;
232
237
  type Currency = 'USD' | 'EUR' | 'PEN' | 'MXN' | 'COP' | 'ARS' | 'CLP';
233
238
  type EntityType = 'user' | 'organization' | 'gym' | 'collaborator' | 'client' | 'contract' | 'asset';
234
- type Permission = 'SUPER_ADMIN' | 'OWNER' | 'ORGANIZATIONS_CREATE' | 'ORGANIZATIONS_READ' | 'ORGANIZATIONS_UPDATE' | 'ORGANIZATIONS_DELETE' | 'GYMS_CREATE' | 'GYMS_READ' | 'GYMS_UPDATE' | 'GYMS_DELETE' | 'COLLABORATORS_CREATE' | 'COLLABORATORS_READ' | 'COLLABORATORS_UPDATE' | 'COLLABORATORS_DELETE' | 'CLIENTS_CREATE' | 'CLIENTS_READ' | 'CLIENTS_UPDATE' | 'CLIENTS_DELETE' | 'CONTRACTS_CREATE' | 'CONTRACTS_READ' | 'CONTRACTS_UPDATE' | 'CONTRACTS_APPROVE' | 'CONTRACTS_CANCEL' | 'CHECKINS_CREATE' | 'CHECKINS_READ' | 'REPORTS_VIEW' | 'REPORTS_FINANCIAL' | 'SETTINGS_UPDATE' | 'ASSETS_CREATE' | 'ASSETS_READ' | 'ASSETS_DELETE' | 'FILES_CREATE' | 'FILES_READ' | 'FILES_DELETE' | 'PRODUCTS_CREATE' | 'PRODUCTS_READ' | 'PRODUCTS_UPDATE' | 'PRODUCTS_DELETE' | 'PRODUCT_CATEGORIES_CREATE' | 'PRODUCT_CATEGORIES_READ' | 'PRODUCT_CATEGORIES_UPDATE' | 'PRODUCT_CATEGORIES_DELETE' | 'SALES_CREATE' | 'SALES_READ' | 'SALES_UPDATE' | 'SALES_DELETE' | 'SUPPLIERS_CREATE' | 'SUPPLIERS_READ' | 'SUPPLIERS_UPDATE' | 'SUPPLIERS_DELETE' | 'PAYMENT_METHODS_CREATE' | 'PAYMENT_METHODS_READ' | 'PAYMENT_METHODS_UPDATE' | 'PAYMENT_METHODS_DELETE' | 'WHATSAPP_READ' | 'WHATSAPP_SEND' | 'WHATSAPP_MANAGE' | 'WHATSAPP_BULK_SEND' | 'WHATSAPP_BULK_MANAGE' | 'ACTIVITIES_CREATE' | 'ACTIVITIES_READ' | 'ACTIVITIES_UPDATE' | 'ACTIVITIES_DELETE' | 'ACTIVITIES_MANAGE_NOTIFICATIONS' | 'TAGS_CREATE' | 'TAGS_READ' | 'TAGS_UPDATE' | 'TAGS_DELETE' | 'COMMISSIONS_CONFIG_CREATE' | 'COMMISSIONS_CONFIG_READ' | 'COMMISSIONS_CONFIG_UPDATE' | 'COMMISSIONS_RULES_CREATE' | 'COMMISSIONS_RULES_READ' | 'COMMISSIONS_RULES_UPDATE' | 'COMMISSIONS_RULES_DELETE' | 'COMMISSIONS_CALCULATIONS_READ' | 'COMMISSIONS_REPORTS_VIEW' | 'ALL';
239
+ type Permission = 'SUPER_ADMIN' | 'OWNER' | 'ORGANIZATIONS_CREATE' | 'ORGANIZATIONS_READ' | 'ORGANIZATIONS_UPDATE' | 'ORGANIZATIONS_DELETE' | 'GYMS_CREATE' | 'GYMS_READ' | 'GYMS_UPDATE' | 'GYMS_DELETE' | 'COLLABORATORS_CREATE' | 'COLLABORATORS_READ' | 'COLLABORATORS_UPDATE' | 'COLLABORATORS_DELETE' | 'CLIENTS_CREATE' | 'CLIENTS_READ' | 'CLIENTS_UPDATE' | 'CLIENTS_DELETE' | 'CONTRACTS_CREATE' | 'CONTRACTS_READ' | 'CONTRACTS_UPDATE' | 'CONTRACTS_APPROVE' | 'CONTRACTS_CANCEL' | 'CHECKINS_CREATE' | 'CHECKINS_READ' | 'REPORTS_VIEW' | 'REPORTS_FINANCIAL' | 'SETTINGS_UPDATE' | 'ASSETS_CREATE' | 'ASSETS_READ' | 'ASSETS_DELETE' | 'FILES_CREATE' | 'FILES_READ' | 'FILES_DELETE' | 'PRODUCTS_CREATE' | 'PRODUCTS_READ' | 'PRODUCTS_UPDATE' | 'PRODUCTS_DELETE' | 'PRODUCT_CATEGORIES_CREATE' | 'PRODUCT_CATEGORIES_READ' | 'PRODUCT_CATEGORIES_UPDATE' | 'PRODUCT_CATEGORIES_DELETE' | 'SALES_CREATE' | 'SALES_READ' | 'SALES_UPDATE' | 'SALES_DELETE' | 'SUPPLIERS_CREATE' | 'SUPPLIERS_READ' | 'SUPPLIERS_UPDATE' | 'SUPPLIERS_DELETE' | 'PAYMENT_METHODS_CREATE' | 'PAYMENT_METHODS_READ' | 'PAYMENT_METHODS_UPDATE' | 'PAYMENT_METHODS_DELETE' | 'WHATSAPP_READ' | 'WHATSAPP_SEND' | 'WHATSAPP_MANAGE' | 'WHATSAPP_BULK_SEND' | 'WHATSAPP_BULK_MANAGE' | 'ACTIVITIES_CREATE' | 'ACTIVITIES_READ' | 'ACTIVITIES_UPDATE' | 'ACTIVITIES_DELETE' | 'ACTIVITIES_MANAGE_NOTIFICATIONS' | 'TAGS_CREATE' | 'TAGS_READ' | 'TAGS_UPDATE' | 'TAGS_DELETE' | 'COMMISSIONS_CONFIG_CREATE' | 'COMMISSIONS_CONFIG_READ' | 'COMMISSIONS_CONFIG_UPDATE' | 'COMMISSIONS_RULES_CREATE' | 'COMMISSIONS_RULES_READ' | 'COMMISSIONS_RULES_UPDATE' | 'COMMISSIONS_RULES_DELETE' | 'COMMISSIONS_CALCULATIONS_READ' | 'COMMISSIONS_REPORTS_VIEW' | 'CATALOG_READ' | 'CATALOG_UPDATE' | 'CATALOG_MANAGE' | 'ALL';
235
240
  interface AuditFields {
236
241
  createdByUserId: UUID;
237
242
  updatedByUserId?: UUID;
@@ -581,17 +586,18 @@ interface BulkMessageVariable {
581
586
  placeholder: string;
582
587
  description: string;
583
588
  example: string;
584
- category: 'client' | 'gym' | 'membership' | 'datetime' | 'custom';
589
+ category: 'client' | 'gym' | 'membership' | 'activity' | 'datetime';
585
590
  required: boolean;
586
- formatter?: 'text' | 'currency' | 'date' | 'number';
591
+ formatter?: 'text' | 'currency' | 'date' | 'datetime' | 'number';
587
592
  }
588
593
  declare const BULK_MESSAGE_VARIABLES: BulkMessageVariable[];
594
+ declare const ACTIVITY_MESSAGE_VARIABLES: BulkMessageVariable[];
589
595
  declare const BULK_MESSAGE_VARIABLE_CATEGORIES: {
590
596
  readonly client: "Cliente";
591
597
  readonly gym: "Gimnasio";
592
598
  readonly membership: "Membresía";
599
+ readonly activity: "Actividad";
593
600
  readonly datetime: "Fecha/Hora";
594
- readonly custom: "Personalizado";
595
601
  };
596
602
 
597
603
  declare const PERMISSIONS: {
@@ -670,12 +676,15 @@ declare const PERMISSIONS: {
670
676
  readonly COMMISSIONS_RULES_DELETE: "COMMISSIONS_RULES_DELETE";
671
677
  readonly COMMISSIONS_CALCULATIONS_READ: "COMMISSIONS_CALCULATIONS_READ";
672
678
  readonly COMMISSIONS_REPORTS_VIEW: "COMMISSIONS_REPORTS_VIEW";
679
+ readonly CATALOG_READ: "CATALOG_READ";
680
+ readonly CATALOG_UPDATE: "CATALOG_UPDATE";
681
+ readonly CATALOG_MANAGE: "CATALOG_MANAGE";
673
682
  readonly SUPER_ADMIN: "SUPER_ADMIN";
674
683
  readonly OWNER: "OWNER";
675
684
  readonly All: "ALL";
676
685
  };
677
686
  declare const ROLE_PERMISSIONS: {
678
- readonly ADMIN: ("SUPER_ADMIN" | "OWNER" | "ORGANIZATIONS_CREATE" | "ORGANIZATIONS_READ" | "ORGANIZATIONS_UPDATE" | "ORGANIZATIONS_DELETE" | "GYMS_CREATE" | "GYMS_READ" | "GYMS_UPDATE" | "GYMS_DELETE" | "COLLABORATORS_CREATE" | "COLLABORATORS_READ" | "COLLABORATORS_UPDATE" | "COLLABORATORS_DELETE" | "CLIENTS_CREATE" | "CLIENTS_READ" | "CLIENTS_UPDATE" | "CLIENTS_DELETE" | "CONTRACTS_CREATE" | "CONTRACTS_READ" | "CONTRACTS_UPDATE" | "CONTRACTS_APPROVE" | "CONTRACTS_CANCEL" | "CHECKINS_CREATE" | "CHECKINS_READ" | "REPORTS_VIEW" | "REPORTS_FINANCIAL" | "SETTINGS_UPDATE" | "ASSETS_CREATE" | "ASSETS_READ" | "ASSETS_DELETE" | "FILES_CREATE" | "FILES_READ" | "FILES_DELETE" | "PRODUCTS_CREATE" | "PRODUCTS_READ" | "PRODUCTS_UPDATE" | "PRODUCTS_DELETE" | "PRODUCT_CATEGORIES_CREATE" | "PRODUCT_CATEGORIES_READ" | "PRODUCT_CATEGORIES_UPDATE" | "PRODUCT_CATEGORIES_DELETE" | "SALES_CREATE" | "SALES_READ" | "SALES_UPDATE" | "SALES_DELETE" | "SUPPLIERS_CREATE" | "SUPPLIERS_READ" | "SUPPLIERS_UPDATE" | "SUPPLIERS_DELETE" | "PAYMENT_METHODS_CREATE" | "PAYMENT_METHODS_READ" | "PAYMENT_METHODS_UPDATE" | "PAYMENT_METHODS_DELETE" | "WHATSAPP_READ" | "WHATSAPP_SEND" | "WHATSAPP_MANAGE" | "WHATSAPP_BULK_SEND" | "WHATSAPP_BULK_MANAGE" | "ACTIVITIES_CREATE" | "ACTIVITIES_READ" | "ACTIVITIES_UPDATE" | "ACTIVITIES_DELETE" | "ACTIVITIES_MANAGE_NOTIFICATIONS" | "TAGS_CREATE" | "TAGS_READ" | "TAGS_UPDATE" | "TAGS_DELETE" | "COMMISSIONS_CONFIG_CREATE" | "COMMISSIONS_CONFIG_READ" | "COMMISSIONS_CONFIG_UPDATE" | "COMMISSIONS_RULES_CREATE" | "COMMISSIONS_RULES_READ" | "COMMISSIONS_RULES_UPDATE" | "COMMISSIONS_RULES_DELETE" | "COMMISSIONS_CALCULATIONS_READ" | "COMMISSIONS_REPORTS_VIEW" | "ALL")[];
687
+ readonly ADMIN: ("SUPER_ADMIN" | "OWNER" | "ORGANIZATIONS_CREATE" | "ORGANIZATIONS_READ" | "ORGANIZATIONS_UPDATE" | "ORGANIZATIONS_DELETE" | "GYMS_CREATE" | "GYMS_READ" | "GYMS_UPDATE" | "GYMS_DELETE" | "COLLABORATORS_CREATE" | "COLLABORATORS_READ" | "COLLABORATORS_UPDATE" | "COLLABORATORS_DELETE" | "CLIENTS_CREATE" | "CLIENTS_READ" | "CLIENTS_UPDATE" | "CLIENTS_DELETE" | "CONTRACTS_CREATE" | "CONTRACTS_READ" | "CONTRACTS_UPDATE" | "CONTRACTS_APPROVE" | "CONTRACTS_CANCEL" | "CHECKINS_CREATE" | "CHECKINS_READ" | "REPORTS_VIEW" | "REPORTS_FINANCIAL" | "SETTINGS_UPDATE" | "ASSETS_CREATE" | "ASSETS_READ" | "ASSETS_DELETE" | "FILES_CREATE" | "FILES_READ" | "FILES_DELETE" | "PRODUCTS_CREATE" | "PRODUCTS_READ" | "PRODUCTS_UPDATE" | "PRODUCTS_DELETE" | "PRODUCT_CATEGORIES_CREATE" | "PRODUCT_CATEGORIES_READ" | "PRODUCT_CATEGORIES_UPDATE" | "PRODUCT_CATEGORIES_DELETE" | "SALES_CREATE" | "SALES_READ" | "SALES_UPDATE" | "SALES_DELETE" | "SUPPLIERS_CREATE" | "SUPPLIERS_READ" | "SUPPLIERS_UPDATE" | "SUPPLIERS_DELETE" | "PAYMENT_METHODS_CREATE" | "PAYMENT_METHODS_READ" | "PAYMENT_METHODS_UPDATE" | "PAYMENT_METHODS_DELETE" | "WHATSAPP_READ" | "WHATSAPP_SEND" | "WHATSAPP_MANAGE" | "WHATSAPP_BULK_SEND" | "WHATSAPP_BULK_MANAGE" | "ACTIVITIES_CREATE" | "ACTIVITIES_READ" | "ACTIVITIES_UPDATE" | "ACTIVITIES_DELETE" | "ACTIVITIES_MANAGE_NOTIFICATIONS" | "TAGS_CREATE" | "TAGS_READ" | "TAGS_UPDATE" | "TAGS_DELETE" | "COMMISSIONS_CONFIG_CREATE" | "COMMISSIONS_CONFIG_READ" | "COMMISSIONS_CONFIG_UPDATE" | "COMMISSIONS_RULES_CREATE" | "COMMISSIONS_RULES_READ" | "COMMISSIONS_RULES_UPDATE" | "COMMISSIONS_RULES_DELETE" | "COMMISSIONS_CALCULATIONS_READ" | "COMMISSIONS_REPORTS_VIEW" | "CATALOG_READ" | "CATALOG_UPDATE" | "CATALOG_MANAGE" | "ALL")[];
679
688
  readonly MANAGER: readonly ["GYMS_READ", "COLLABORATORS_READ", "CLIENTS_CREATE", "CLIENTS_READ", "CLIENTS_UPDATE", "CONTRACTS_CREATE", "CONTRACTS_READ", "CHECKINS_CREATE", "CHECKINS_READ", "REPORTS_VIEW", "ASSETS_CREATE", "ASSETS_READ", "ASSETS_DELETE", "FILES_CREATE", "FILES_READ", "FILES_DELETE", "PRODUCTS_CREATE", "PRODUCTS_READ", "PRODUCTS_UPDATE", "PRODUCTS_DELETE", "PRODUCT_CATEGORIES_CREATE", "PRODUCT_CATEGORIES_READ", "PRODUCT_CATEGORIES_UPDATE", "PRODUCT_CATEGORIES_DELETE", "SALES_CREATE", "SALES_READ", "SALES_UPDATE", "SUPPLIERS_CREATE", "SUPPLIERS_READ", "SUPPLIERS_UPDATE", "SUPPLIERS_DELETE", "PAYMENT_METHODS_CREATE", "PAYMENT_METHODS_READ", "PAYMENT_METHODS_UPDATE", "PAYMENT_METHODS_DELETE", "COMMISSIONS_RULES_READ", "COMMISSIONS_CALCULATIONS_READ"];
680
689
  };
681
690
  declare const CACHE_TTL: {
@@ -943,4 +952,33 @@ declare const bulkMessageSchema: z.ZodObject<{
943
952
  type BulkMessageGenerationRequest = z.infer<typeof bulkMessageGenerationRequestSchema>;
944
953
  type BulkMessage = z.infer<typeof bulkMessageSchema>;
945
954
 
946
- export { ACTIVITY_EVENTS, type AIGeneratedTemplate, type AcceptInvitationDto, type ActivityItem, type ActivityQueryParams, AssetCategory, AssetStatus, type AuditFields, BULK_MESSAGE_VARIABLES, BULK_MESSAGE_VARIABLE_CATEGORIES, BULK_MESSAGING_EVENTS, type BirthdayTemplateData, type BulkMessage, type BulkMessageGenerationRequest, type BulkMessageVariable, CACHE_TTL, CancellationReason, ClientStatus, type Collaborator, type CollaboratorStats, CollaboratorStatus, ContractAssetType, ContractStatus, type CreateInvitationDto, type Currency, DATE_FORMATS, type EntityType, FILE_LIMITS, type GenerateBulkMessageEvent, HEADERS, type ICollaborator, type IGym, type IOrganization, type IRequestContext, type IRole, type ISubscription, type ISubscriptionPlan, type IUser, type Invitation, InvitationStatus, type ListCollaboratorsParams, type MembershipExpiringTemplateData, type MembershipPurchaseTemplateData, type MembershipRenewalTemplateData, PAGINATION_DEFAULTS, PERMISSIONS, type PaginatedResponse, type PaginationMeta, type PaginationParams, PaymentFrequency, type PaymentReceiptTemplateData, type PaymentReminderTemplateData, type Permission, PlanStatus, ROLE_NAMES, ROLE_PERMISSIONS, type Role, type RoleName, RoleNames, type SendActivityNotificationEvent, type SendBulkMessagesEvent, type StatsQueryParams, SubscriptionStatus, SuspensionType, TEMPLATE_CODES, TEMPLATE_METADATA, TemplateCode, type TemplateGenerationRequest, type TemplateMetadata, TemplateType, type UUID, type UpdateCollaboratorDto, type UpdateCollaboratorRoleDto, type UpdateCollaboratorStatusDto, type User, UserType, type ValidateByCodeDto, WHATSAPP_EVENTS, WHATSAPP_TEMPLATE_EVENTS, type WelcomeTemplateData, type WhatsAppMessageSendEventData, type WhatsAppTemplateData, type WhatsAppTemplateEventData, aiGeneratedTemplateSchema, bulkMessageGenerationRequestSchema, bulkMessageSchema, canAccessFeature, getRoleCapabilities, getRoleDescription, getRoleDisplayName, isAdminRole, isEncargadoRole, templateGenerationRequestSchema };
955
+ declare const activityNotificationGenerationRequestSchema: z.ZodObject<{
956
+ prompt: z.ZodString;
957
+ tone: z.ZodOptional<z.ZodEnum<["friendly", "formal", "urgent", "motivational", "reminder"]>>;
958
+ currentMessage: z.ZodOptional<z.ZodString>;
959
+ additionalRequirements: z.ZodOptional<z.ZodString>;
960
+ language: z.ZodDefault<z.ZodString>;
961
+ }, "strip", z.ZodTypeAny, {
962
+ language: string;
963
+ prompt: string;
964
+ tone?: "reminder" | "friendly" | "urgent" | "formal" | "motivational" | undefined;
965
+ additionalRequirements?: string | undefined;
966
+ currentMessage?: string | undefined;
967
+ }, {
968
+ prompt: string;
969
+ language?: string | undefined;
970
+ tone?: "reminder" | "friendly" | "urgent" | "formal" | "motivational" | undefined;
971
+ additionalRequirements?: string | undefined;
972
+ currentMessage?: string | undefined;
973
+ }>;
974
+ declare const activityNotificationSchema: z.ZodObject<{
975
+ message: z.ZodString;
976
+ }, "strip", z.ZodTypeAny, {
977
+ message: string;
978
+ }, {
979
+ message: string;
980
+ }>;
981
+ type ActivityNotificationGenerationRequest = z.infer<typeof activityNotificationGenerationRequestSchema>;
982
+ type ActivityNotification = z.infer<typeof activityNotificationSchema>;
983
+
984
+ export { ACTIVITY_EVENTS, ACTIVITY_MESSAGE_VARIABLES, type AIGeneratedTemplate, type AcceptInvitationDto, type ActivityItem, type ActivityNotification, type ActivityNotificationGenerationRequest, type ActivityQueryParams, AssetCategory, AssetStatus, type AuditFields, BULK_MESSAGE_VARIABLES, BULK_MESSAGE_VARIABLE_CATEGORIES, BULK_MESSAGING_EVENTS, type BirthdayTemplateData, type BulkMessage, type 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, PlanType, ROLE_NAMES, ROLE_PERMISSIONS, type Role, type RoleName, RoleNames, type SendActivityNotificationEvent, type SendBulkMessagesEvent, type StatsQueryParams, SubscriptionStatus, SuspensionType, TEMPLATE_CODES, TEMPLATE_METADATA, TemplateCode, type TemplateGenerationRequest, type TemplateMetadata, TemplateType, type UUID, type UpdateCollaboratorDto, type UpdateCollaboratorRoleDto, type UpdateCollaboratorStatusDto, type User, UserType, type ValidateByCodeDto, WHATSAPP_EVENTS, WHATSAPP_TEMPLATE_EVENTS, type WelcomeTemplateData, type WhatsAppMessageSendEventData, type WhatsAppTemplateData, type WhatsAppTemplateEventData, activityNotificationGenerationRequestSchema, activityNotificationSchema, aiGeneratedTemplateSchema, bulkMessageGenerationRequestSchema, bulkMessageSchema, canAccessFeature, getRoleCapabilities, getRoleDescription, getRoleDisplayName, isAdminRole, isEncargadoRole, templateGenerationRequestSchema };
package/dist/index.js CHANGED
@@ -55,6 +55,12 @@ var PlanStatus = /* @__PURE__ */ ((PlanStatus2) => {
55
55
  PlanStatus2["ARCHIVED"] = "archived";
56
56
  return PlanStatus2;
57
57
  })(PlanStatus || {});
58
+ var PlanType = /* @__PURE__ */ ((PlanType2) => {
59
+ PlanType2["BASIC"] = "BASIC";
60
+ PlanType2["PREMIUM"] = "PREMIUM";
61
+ PlanType2["ENTERPRISE"] = "ENTERPRISE";
62
+ return PlanType2;
63
+ })(PlanType || {});
58
64
  var ContractStatus = /* @__PURE__ */ ((ContractStatus2) => {
59
65
  ContractStatus2["PENDING"] = "pending";
60
66
  ContractStatus2["ACTIVE"] = "active";
@@ -362,24 +368,79 @@ var BULK_MESSAGE_VARIABLES = [
362
368
  category: "datetime",
363
369
  required: false,
364
370
  formatter: "text"
371
+ }
372
+ ];
373
+ var ACTIVITY_MESSAGE_VARIABLES = [
374
+ {
375
+ name: "activityName",
376
+ placeholder: "{{activityName}}",
377
+ description: "Nombre de la actividad",
378
+ example: "Yoga Matutino",
379
+ category: "activity",
380
+ required: false,
381
+ formatter: "text"
382
+ },
383
+ {
384
+ name: "activityDescription",
385
+ placeholder: "{{activityDescription}}",
386
+ description: "Descripci\xF3n de la actividad",
387
+ example: "Sesi\xF3n de yoga para principiantes",
388
+ category: "activity",
389
+ required: false,
390
+ formatter: "text"
391
+ },
392
+ {
393
+ name: "activityStartDate",
394
+ placeholder: "{{activityStartDate}}",
395
+ description: "Fecha de inicio de la actividad",
396
+ example: "15/10/2024",
397
+ category: "activity",
398
+ required: false,
399
+ formatter: "date"
365
400
  },
366
- // Variables Personalizadas
367
401
  {
368
- name: "customField",
369
- placeholder: "{{customField}}",
370
- description: "Campo personalizado del cliente",
371
- example: "Valor personalizado",
372
- category: "custom",
402
+ name: "activityStartTime",
403
+ placeholder: "{{activityStartTime}}",
404
+ description: "Hora de inicio de la actividad",
405
+ example: "08:00",
406
+ category: "activity",
373
407
  required: false,
374
408
  formatter: "text"
409
+ },
410
+ {
411
+ name: "activityStartDateTime",
412
+ placeholder: "{{activityStartDateTime}}",
413
+ description: "Fecha y hora de inicio de la actividad",
414
+ example: "15/10/2024 08:00",
415
+ category: "activity",
416
+ required: false,
417
+ formatter: "datetime"
418
+ },
419
+ {
420
+ name: "activityDuration",
421
+ placeholder: "{{activityDuration}}",
422
+ description: "Duraci\xF3n de la actividad en minutos",
423
+ example: "60",
424
+ category: "activity",
425
+ required: false,
426
+ formatter: "number"
427
+ },
428
+ {
429
+ name: "activityMaxParticipants",
430
+ placeholder: "{{activityMaxParticipants}}",
431
+ description: "N\xFAmero m\xE1ximo de participantes",
432
+ example: "20",
433
+ category: "activity",
434
+ required: false,
435
+ formatter: "number"
375
436
  }
376
437
  ];
377
438
  var BULK_MESSAGE_VARIABLE_CATEGORIES = {
378
439
  client: "Cliente",
379
440
  gym: "Gimnasio",
380
441
  membership: "Membres\xEDa",
381
- datetime: "Fecha/Hora",
382
- custom: "Personalizado"
442
+ activity: "Actividad",
443
+ datetime: "Fecha/Hora"
383
444
  };
384
445
 
385
446
  // src/constants.ts
@@ -478,6 +539,10 @@ var PERMISSIONS = {
478
539
  COMMISSIONS_RULES_DELETE: "COMMISSIONS_RULES_DELETE",
479
540
  COMMISSIONS_CALCULATIONS_READ: "COMMISSIONS_CALCULATIONS_READ",
480
541
  COMMISSIONS_REPORTS_VIEW: "COMMISSIONS_REPORTS_VIEW",
542
+ // Catalog
543
+ CATALOG_READ: "CATALOG_READ",
544
+ CATALOG_UPDATE: "CATALOG_UPDATE",
545
+ CATALOG_MANAGE: "CATALOG_MANAGE",
481
546
  // Special permissions
482
547
  SUPER_ADMIN: "SUPER_ADMIN",
483
548
  OWNER: "OWNER",
@@ -700,8 +765,19 @@ var bulkMessageSchema = zod.z.object({
700
765
  usedVariables: zod.z.array(zod.z.string()).describe("Variables used in the message"),
701
766
  suggestions: zod.z.array(zod.z.string()).optional().describe("Additional message suggestions")
702
767
  });
768
+ var activityNotificationGenerationRequestSchema = zod.z.object({
769
+ prompt: zod.z.string().describe("Prompt or context for notification generation"),
770
+ tone: zod.z.enum(["friendly", "formal", "urgent", "motivational", "reminder"]).optional().describe("Tone of the notification"),
771
+ currentMessage: zod.z.string().optional().describe("Current message to improve or use as reference"),
772
+ additionalRequirements: zod.z.string().optional().describe("Additional requirements for the notification"),
773
+ language: zod.z.string().default("es").describe("Language for generation")
774
+ });
775
+ var activityNotificationSchema = zod.z.object({
776
+ message: zod.z.string().describe("Generated notification message with activity variables")
777
+ });
703
778
 
704
779
  exports.ACTIVITY_EVENTS = ACTIVITY_EVENTS;
780
+ exports.ACTIVITY_MESSAGE_VARIABLES = ACTIVITY_MESSAGE_VARIABLES;
705
781
  exports.AssetCategory = AssetCategory;
706
782
  exports.AssetStatus = AssetStatus;
707
783
  exports.BULK_MESSAGE_VARIABLES = BULK_MESSAGE_VARIABLES;
@@ -721,6 +797,7 @@ exports.PAGINATION_DEFAULTS = PAGINATION_DEFAULTS;
721
797
  exports.PERMISSIONS = PERMISSIONS;
722
798
  exports.PaymentFrequency = PaymentFrequency;
723
799
  exports.PlanStatus = PlanStatus;
800
+ exports.PlanType = PlanType;
724
801
  exports.ROLE_NAMES = ROLE_NAMES;
725
802
  exports.ROLE_PERMISSIONS = ROLE_PERMISSIONS;
726
803
  exports.RoleNames = RoleNames;
@@ -733,6 +810,8 @@ exports.TemplateType = TemplateType;
733
810
  exports.UserType = UserType;
734
811
  exports.WHATSAPP_EVENTS = WHATSAPP_EVENTS;
735
812
  exports.WHATSAPP_TEMPLATE_EVENTS = WHATSAPP_TEMPLATE_EVENTS;
813
+ exports.activityNotificationGenerationRequestSchema = activityNotificationGenerationRequestSchema;
814
+ exports.activityNotificationSchema = activityNotificationSchema;
736
815
  exports.aiGeneratedTemplateSchema = aiGeneratedTemplateSchema;
737
816
  exports.bulkMessageGenerationRequestSchema = bulkMessageGenerationRequestSchema;
738
817
  exports.bulkMessageSchema = bulkMessageSchema;
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/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 // Commissions\n COMMISSIONS_CONFIG_CREATE: 'COMMISSIONS_CONFIG_CREATE',\n COMMISSIONS_CONFIG_READ: 'COMMISSIONS_CONFIG_READ',\n COMMISSIONS_CONFIG_UPDATE: 'COMMISSIONS_CONFIG_UPDATE',\n COMMISSIONS_RULES_CREATE: 'COMMISSIONS_RULES_CREATE',\n COMMISSIONS_RULES_READ: 'COMMISSIONS_RULES_READ',\n COMMISSIONS_RULES_UPDATE: 'COMMISSIONS_RULES_UPDATE',\n COMMISSIONS_RULES_DELETE: 'COMMISSIONS_RULES_DELETE',\n COMMISSIONS_CALCULATIONS_READ: 'COMMISSIONS_CALCULATIONS_READ',\n COMMISSIONS_REPORTS_VIEW: 'COMMISSIONS_REPORTS_VIEW',\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 PERMISSIONS.COMMISSIONS_RULES_READ,\n PERMISSIONS.COMMISSIONS_CALCULATIONS_READ,\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"]}
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","../src/schemas/activity-notification.schema.ts"],"names":["UserType","SubscriptionStatus","CollaboratorStatus","InvitationStatus","ClientStatus","PlanStatus","PlanType","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 PlanType {\n BASIC = 'BASIC',\n PREMIUM = 'PREMIUM',\n ENTERPRISE = 'ENTERPRISE',\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' | 'activity' | 'datetime';\n required: boolean;\n formatter?: 'text' | 'currency' | 'date' | 'datetime' | '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\n// Variables de Actividades\nexport const ACTIVITY_MESSAGE_VARIABLES: BulkMessageVariable[] = [\n {\n name: 'activityName',\n placeholder: '{{activityName}}',\n description: 'Nombre de la actividad',\n example: 'Yoga Matutino',\n category: 'activity',\n required: false,\n formatter: 'text',\n },\n {\n name: 'activityDescription',\n placeholder: '{{activityDescription}}',\n description: 'Descripción de la actividad',\n example: 'Sesión de yoga para principiantes',\n category: 'activity',\n required: false,\n formatter: 'text',\n },\n {\n name: 'activityStartDate',\n placeholder: '{{activityStartDate}}',\n description: 'Fecha de inicio de la actividad',\n example: '15/10/2024',\n category: 'activity',\n required: false,\n formatter: 'date',\n },\n {\n name: 'activityStartTime',\n placeholder: '{{activityStartTime}}',\n description: 'Hora de inicio de la actividad',\n example: '08:00',\n category: 'activity',\n required: false,\n formatter: 'text',\n },\n {\n name: 'activityStartDateTime',\n placeholder: '{{activityStartDateTime}}',\n description: 'Fecha y hora de inicio de la actividad',\n example: '15/10/2024 08:00',\n category: 'activity',\n required: false,\n formatter: 'datetime',\n },\n {\n name: 'activityDuration',\n placeholder: '{{activityDuration}}',\n description: 'Duración de la actividad en minutos',\n example: '60',\n category: 'activity',\n required: false,\n formatter: 'number',\n },\n {\n name: 'activityMaxParticipants',\n placeholder: '{{activityMaxParticipants}}',\n description: 'Número máximo de participantes',\n example: '20',\n category: 'activity',\n required: false,\n formatter: 'number',\n },\n];\n\nexport const BULK_MESSAGE_VARIABLE_CATEGORIES = {\n client: 'Cliente',\n gym: 'Gimnasio',\n membership: 'Membresía',\n activity: 'Actividad',\n datetime: 'Fecha/Hora',\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 // Commissions\n COMMISSIONS_CONFIG_CREATE: 'COMMISSIONS_CONFIG_CREATE',\n COMMISSIONS_CONFIG_READ: 'COMMISSIONS_CONFIG_READ',\n COMMISSIONS_CONFIG_UPDATE: 'COMMISSIONS_CONFIG_UPDATE',\n COMMISSIONS_RULES_CREATE: 'COMMISSIONS_RULES_CREATE',\n COMMISSIONS_RULES_READ: 'COMMISSIONS_RULES_READ',\n COMMISSIONS_RULES_UPDATE: 'COMMISSIONS_RULES_UPDATE',\n COMMISSIONS_RULES_DELETE: 'COMMISSIONS_RULES_DELETE',\n COMMISSIONS_CALCULATIONS_READ: 'COMMISSIONS_CALCULATIONS_READ',\n COMMISSIONS_REPORTS_VIEW: 'COMMISSIONS_REPORTS_VIEW',\n\n // Catalog\n CATALOG_READ: 'CATALOG_READ',\n CATALOG_UPDATE: 'CATALOG_UPDATE',\n CATALOG_MANAGE: 'CATALOG_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 PERMISSIONS.COMMISSIONS_RULES_READ,\n PERMISSIONS.COMMISSIONS_CALCULATIONS_READ,\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","import { z } from 'zod';\n\nexport const activityNotificationGenerationRequestSchema = z.object({\n prompt: z.string().describe('Prompt or context for notification generation'),\n tone: z\n .enum(['friendly', 'formal', 'urgent', 'motivational', 'reminder'])\n .optional()\n .describe('Tone of the notification'),\n currentMessage: z.string().optional().describe('Current message to improve or use as reference'),\n additionalRequirements: z\n .string()\n .optional()\n .describe('Additional requirements for the notification'),\n language: z.string().default('es').describe('Language for generation'),\n});\n\nexport const activityNotificationSchema = z.object({\n message: z.string().describe('Generated notification message with activity variables'),\n});\n\nexport type ActivityNotificationGenerationRequest = z.infer<\n typeof activityNotificationGenerationRequestSchema\n>;\nexport type ActivityNotification = z.infer<typeof activityNotificationSchema>;\n"]}
package/dist/index.mjs CHANGED
@@ -53,6 +53,12 @@ var PlanStatus = /* @__PURE__ */ ((PlanStatus2) => {
53
53
  PlanStatus2["ARCHIVED"] = "archived";
54
54
  return PlanStatus2;
55
55
  })(PlanStatus || {});
56
+ var PlanType = /* @__PURE__ */ ((PlanType2) => {
57
+ PlanType2["BASIC"] = "BASIC";
58
+ PlanType2["PREMIUM"] = "PREMIUM";
59
+ PlanType2["ENTERPRISE"] = "ENTERPRISE";
60
+ return PlanType2;
61
+ })(PlanType || {});
56
62
  var ContractStatus = /* @__PURE__ */ ((ContractStatus2) => {
57
63
  ContractStatus2["PENDING"] = "pending";
58
64
  ContractStatus2["ACTIVE"] = "active";
@@ -360,24 +366,79 @@ var BULK_MESSAGE_VARIABLES = [
360
366
  category: "datetime",
361
367
  required: false,
362
368
  formatter: "text"
369
+ }
370
+ ];
371
+ var ACTIVITY_MESSAGE_VARIABLES = [
372
+ {
373
+ name: "activityName",
374
+ placeholder: "{{activityName}}",
375
+ description: "Nombre de la actividad",
376
+ example: "Yoga Matutino",
377
+ category: "activity",
378
+ required: false,
379
+ formatter: "text"
380
+ },
381
+ {
382
+ name: "activityDescription",
383
+ placeholder: "{{activityDescription}}",
384
+ description: "Descripci\xF3n de la actividad",
385
+ example: "Sesi\xF3n de yoga para principiantes",
386
+ category: "activity",
387
+ required: false,
388
+ formatter: "text"
389
+ },
390
+ {
391
+ name: "activityStartDate",
392
+ placeholder: "{{activityStartDate}}",
393
+ description: "Fecha de inicio de la actividad",
394
+ example: "15/10/2024",
395
+ category: "activity",
396
+ required: false,
397
+ formatter: "date"
363
398
  },
364
- // Variables Personalizadas
365
399
  {
366
- name: "customField",
367
- placeholder: "{{customField}}",
368
- description: "Campo personalizado del cliente",
369
- example: "Valor personalizado",
370
- category: "custom",
400
+ name: "activityStartTime",
401
+ placeholder: "{{activityStartTime}}",
402
+ description: "Hora de inicio de la actividad",
403
+ example: "08:00",
404
+ category: "activity",
371
405
  required: false,
372
406
  formatter: "text"
407
+ },
408
+ {
409
+ name: "activityStartDateTime",
410
+ placeholder: "{{activityStartDateTime}}",
411
+ description: "Fecha y hora de inicio de la actividad",
412
+ example: "15/10/2024 08:00",
413
+ category: "activity",
414
+ required: false,
415
+ formatter: "datetime"
416
+ },
417
+ {
418
+ name: "activityDuration",
419
+ placeholder: "{{activityDuration}}",
420
+ description: "Duraci\xF3n de la actividad en minutos",
421
+ example: "60",
422
+ category: "activity",
423
+ required: false,
424
+ formatter: "number"
425
+ },
426
+ {
427
+ name: "activityMaxParticipants",
428
+ placeholder: "{{activityMaxParticipants}}",
429
+ description: "N\xFAmero m\xE1ximo de participantes",
430
+ example: "20",
431
+ category: "activity",
432
+ required: false,
433
+ formatter: "number"
373
434
  }
374
435
  ];
375
436
  var BULK_MESSAGE_VARIABLE_CATEGORIES = {
376
437
  client: "Cliente",
377
438
  gym: "Gimnasio",
378
439
  membership: "Membres\xEDa",
379
- datetime: "Fecha/Hora",
380
- custom: "Personalizado"
440
+ activity: "Actividad",
441
+ datetime: "Fecha/Hora"
381
442
  };
382
443
 
383
444
  // src/constants.ts
@@ -476,6 +537,10 @@ var PERMISSIONS = {
476
537
  COMMISSIONS_RULES_DELETE: "COMMISSIONS_RULES_DELETE",
477
538
  COMMISSIONS_CALCULATIONS_READ: "COMMISSIONS_CALCULATIONS_READ",
478
539
  COMMISSIONS_REPORTS_VIEW: "COMMISSIONS_REPORTS_VIEW",
540
+ // Catalog
541
+ CATALOG_READ: "CATALOG_READ",
542
+ CATALOG_UPDATE: "CATALOG_UPDATE",
543
+ CATALOG_MANAGE: "CATALOG_MANAGE",
479
544
  // Special permissions
480
545
  SUPER_ADMIN: "SUPER_ADMIN",
481
546
  OWNER: "OWNER",
@@ -698,7 +763,17 @@ var bulkMessageSchema = z.object({
698
763
  usedVariables: z.array(z.string()).describe("Variables used in the message"),
699
764
  suggestions: z.array(z.string()).optional().describe("Additional message suggestions")
700
765
  });
766
+ var activityNotificationGenerationRequestSchema = z.object({
767
+ prompt: z.string().describe("Prompt or context for notification generation"),
768
+ tone: z.enum(["friendly", "formal", "urgent", "motivational", "reminder"]).optional().describe("Tone of the notification"),
769
+ currentMessage: z.string().optional().describe("Current message to improve or use as reference"),
770
+ additionalRequirements: z.string().optional().describe("Additional requirements for the notification"),
771
+ language: z.string().default("es").describe("Language for generation")
772
+ });
773
+ var activityNotificationSchema = z.object({
774
+ message: z.string().describe("Generated notification message with activity variables")
775
+ });
701
776
 
702
- 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 };
777
+ export { ACTIVITY_EVENTS, ACTIVITY_MESSAGE_VARIABLES, 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, PlanType, ROLE_NAMES, ROLE_PERMISSIONS, RoleNames, SubscriptionStatus, SuspensionType, TEMPLATE_CODES, TEMPLATE_METADATA, TemplateCode, TemplateType, UserType, WHATSAPP_EVENTS, WHATSAPP_TEMPLATE_EVENTS, activityNotificationGenerationRequestSchema, activityNotificationSchema, aiGeneratedTemplateSchema, bulkMessageGenerationRequestSchema, bulkMessageSchema, canAccessFeature, getRoleCapabilities, getRoleDescription, getRoleDisplayName, isAdminRole, isEncargadoRole, templateGenerationRequestSchema };
703
778
  //# sourceMappingURL=index.mjs.map
704
779
  //# 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/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 // Commissions\n COMMISSIONS_CONFIG_CREATE: 'COMMISSIONS_CONFIG_CREATE',\n COMMISSIONS_CONFIG_READ: 'COMMISSIONS_CONFIG_READ',\n COMMISSIONS_CONFIG_UPDATE: 'COMMISSIONS_CONFIG_UPDATE',\n COMMISSIONS_RULES_CREATE: 'COMMISSIONS_RULES_CREATE',\n COMMISSIONS_RULES_READ: 'COMMISSIONS_RULES_READ',\n COMMISSIONS_RULES_UPDATE: 'COMMISSIONS_RULES_UPDATE',\n COMMISSIONS_RULES_DELETE: 'COMMISSIONS_RULES_DELETE',\n COMMISSIONS_CALCULATIONS_READ: 'COMMISSIONS_CALCULATIONS_READ',\n COMMISSIONS_REPORTS_VIEW: 'COMMISSIONS_REPORTS_VIEW',\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 PERMISSIONS.COMMISSIONS_RULES_READ,\n PERMISSIONS.COMMISSIONS_CALCULATIONS_READ,\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"]}
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","../src/schemas/activity-notification.schema.ts"],"names":["UserType","SubscriptionStatus","CollaboratorStatus","InvitationStatus","ClientStatus","PlanStatus","PlanType","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 PlanType {\n BASIC = 'BASIC',\n PREMIUM = 'PREMIUM',\n ENTERPRISE = 'ENTERPRISE',\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' | 'activity' | 'datetime';\n required: boolean;\n formatter?: 'text' | 'currency' | 'date' | 'datetime' | '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\n// Variables de Actividades\nexport const ACTIVITY_MESSAGE_VARIABLES: BulkMessageVariable[] = [\n {\n name: 'activityName',\n placeholder: '{{activityName}}',\n description: 'Nombre de la actividad',\n example: 'Yoga Matutino',\n category: 'activity',\n required: false,\n formatter: 'text',\n },\n {\n name: 'activityDescription',\n placeholder: '{{activityDescription}}',\n description: 'Descripción de la actividad',\n example: 'Sesión de yoga para principiantes',\n category: 'activity',\n required: false,\n formatter: 'text',\n },\n {\n name: 'activityStartDate',\n placeholder: '{{activityStartDate}}',\n description: 'Fecha de inicio de la actividad',\n example: '15/10/2024',\n category: 'activity',\n required: false,\n formatter: 'date',\n },\n {\n name: 'activityStartTime',\n placeholder: '{{activityStartTime}}',\n description: 'Hora de inicio de la actividad',\n example: '08:00',\n category: 'activity',\n required: false,\n formatter: 'text',\n },\n {\n name: 'activityStartDateTime',\n placeholder: '{{activityStartDateTime}}',\n description: 'Fecha y hora de inicio de la actividad',\n example: '15/10/2024 08:00',\n category: 'activity',\n required: false,\n formatter: 'datetime',\n },\n {\n name: 'activityDuration',\n placeholder: '{{activityDuration}}',\n description: 'Duración de la actividad en minutos',\n example: '60',\n category: 'activity',\n required: false,\n formatter: 'number',\n },\n {\n name: 'activityMaxParticipants',\n placeholder: '{{activityMaxParticipants}}',\n description: 'Número máximo de participantes',\n example: '20',\n category: 'activity',\n required: false,\n formatter: 'number',\n },\n];\n\nexport const BULK_MESSAGE_VARIABLE_CATEGORIES = {\n client: 'Cliente',\n gym: 'Gimnasio',\n membership: 'Membresía',\n activity: 'Actividad',\n datetime: 'Fecha/Hora',\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 // Commissions\n COMMISSIONS_CONFIG_CREATE: 'COMMISSIONS_CONFIG_CREATE',\n COMMISSIONS_CONFIG_READ: 'COMMISSIONS_CONFIG_READ',\n COMMISSIONS_CONFIG_UPDATE: 'COMMISSIONS_CONFIG_UPDATE',\n COMMISSIONS_RULES_CREATE: 'COMMISSIONS_RULES_CREATE',\n COMMISSIONS_RULES_READ: 'COMMISSIONS_RULES_READ',\n COMMISSIONS_RULES_UPDATE: 'COMMISSIONS_RULES_UPDATE',\n COMMISSIONS_RULES_DELETE: 'COMMISSIONS_RULES_DELETE',\n COMMISSIONS_CALCULATIONS_READ: 'COMMISSIONS_CALCULATIONS_READ',\n COMMISSIONS_REPORTS_VIEW: 'COMMISSIONS_REPORTS_VIEW',\n\n // Catalog\n CATALOG_READ: 'CATALOG_READ',\n CATALOG_UPDATE: 'CATALOG_UPDATE',\n CATALOG_MANAGE: 'CATALOG_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 PERMISSIONS.COMMISSIONS_RULES_READ,\n PERMISSIONS.COMMISSIONS_CALCULATIONS_READ,\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","import { z } from 'zod';\n\nexport const activityNotificationGenerationRequestSchema = z.object({\n prompt: z.string().describe('Prompt or context for notification generation'),\n tone: z\n .enum(['friendly', 'formal', 'urgent', 'motivational', 'reminder'])\n .optional()\n .describe('Tone of the notification'),\n currentMessage: z.string().optional().describe('Current message to improve or use as reference'),\n additionalRequirements: z\n .string()\n .optional()\n .describe('Additional requirements for the notification'),\n language: z.string().default('es').describe('Language for generation'),\n});\n\nexport const activityNotificationSchema = z.object({\n message: z.string().describe('Generated notification message with activity variables'),\n});\n\nexport type ActivityNotificationGenerationRequest = z.infer<\n typeof activityNotificationGenerationRequestSchema\n>;\nexport type ActivityNotification = z.infer<typeof activityNotificationSchema>;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gymspace/shared",
3
- "version": "1.2.20",
3
+ "version": "1.2.22",
4
4
  "description": "Shared types and interfaces for GymSpace",
5
5
  "author": "GymSpace Team",
6
6
  "license": "MIT",
@@ -3,9 +3,9 @@ export interface BulkMessageVariable {
3
3
  placeholder: string;
4
4
  description: string;
5
5
  example: string;
6
- category: 'client' | 'gym' | 'membership' | 'datetime' | 'custom';
6
+ category: 'client' | 'gym' | 'membership' | 'activity' | 'datetime';
7
7
  required: boolean;
8
- formatter?: 'text' | 'currency' | 'date' | 'number';
8
+ formatter?: 'text' | 'currency' | 'date' | 'datetime' | 'number';
9
9
  }
10
10
 
11
11
  export const BULK_MESSAGE_VARIABLES: BulkMessageVariable[] = [
@@ -142,23 +142,79 @@ export const BULK_MESSAGE_VARIABLES: BulkMessageVariable[] = [
142
142
  required: false,
143
143
  formatter: 'text',
144
144
  },
145
+ ];
145
146
 
146
- // Variables Personalizadas
147
+ // Variables de Actividades
148
+ export const ACTIVITY_MESSAGE_VARIABLES: BulkMessageVariable[] = [
147
149
  {
148
- name: 'customField',
149
- placeholder: '{{customField}}',
150
- description: 'Campo personalizado del cliente',
151
- example: 'Valor personalizado',
152
- category: 'custom',
150
+ name: 'activityName',
151
+ placeholder: '{{activityName}}',
152
+ description: 'Nombre de la actividad',
153
+ example: 'Yoga Matutino',
154
+ category: 'activity',
153
155
  required: false,
154
156
  formatter: 'text',
155
157
  },
158
+ {
159
+ name: 'activityDescription',
160
+ placeholder: '{{activityDescription}}',
161
+ description: 'Descripción de la actividad',
162
+ example: 'Sesión de yoga para principiantes',
163
+ category: 'activity',
164
+ required: false,
165
+ formatter: 'text',
166
+ },
167
+ {
168
+ name: 'activityStartDate',
169
+ placeholder: '{{activityStartDate}}',
170
+ description: 'Fecha de inicio de la actividad',
171
+ example: '15/10/2024',
172
+ category: 'activity',
173
+ required: false,
174
+ formatter: 'date',
175
+ },
176
+ {
177
+ name: 'activityStartTime',
178
+ placeholder: '{{activityStartTime}}',
179
+ description: 'Hora de inicio de la actividad',
180
+ example: '08:00',
181
+ category: 'activity',
182
+ required: false,
183
+ formatter: 'text',
184
+ },
185
+ {
186
+ name: 'activityStartDateTime',
187
+ placeholder: '{{activityStartDateTime}}',
188
+ description: 'Fecha y hora de inicio de la actividad',
189
+ example: '15/10/2024 08:00',
190
+ category: 'activity',
191
+ required: false,
192
+ formatter: 'datetime',
193
+ },
194
+ {
195
+ name: 'activityDuration',
196
+ placeholder: '{{activityDuration}}',
197
+ description: 'Duración de la actividad en minutos',
198
+ example: '60',
199
+ category: 'activity',
200
+ required: false,
201
+ formatter: 'number',
202
+ },
203
+ {
204
+ name: 'activityMaxParticipants',
205
+ placeholder: '{{activityMaxParticipants}}',
206
+ description: 'Número máximo de participantes',
207
+ example: '20',
208
+ category: 'activity',
209
+ required: false,
210
+ formatter: 'number',
211
+ },
156
212
  ];
157
213
 
158
214
  export const BULK_MESSAGE_VARIABLE_CATEGORIES = {
159
215
  client: 'Cliente',
160
216
  gym: 'Gimnasio',
161
217
  membership: 'Membresía',
218
+ activity: 'Actividad',
162
219
  datetime: 'Fecha/Hora',
163
- custom: 'Personalizado',
164
220
  } as const;
package/src/constants.ts CHANGED
@@ -113,6 +113,11 @@ export const PERMISSIONS = {
113
113
  COMMISSIONS_CALCULATIONS_READ: 'COMMISSIONS_CALCULATIONS_READ',
114
114
  COMMISSIONS_REPORTS_VIEW: 'COMMISSIONS_REPORTS_VIEW',
115
115
 
116
+ // Catalog
117
+ CATALOG_READ: 'CATALOG_READ',
118
+ CATALOG_UPDATE: 'CATALOG_UPDATE',
119
+ CATALOG_MANAGE: 'CATALOG_MANAGE',
120
+
116
121
  // Special permissions
117
122
  SUPER_ADMIN: 'SUPER_ADMIN',
118
123
  OWNER: 'OWNER',
package/src/enums.ts CHANGED
@@ -35,6 +35,12 @@ export enum PlanStatus {
35
35
  ARCHIVED = 'archived',
36
36
  }
37
37
 
38
+ export enum PlanType {
39
+ BASIC = 'BASIC',
40
+ PREMIUM = 'PREMIUM',
41
+ ENTERPRISE = 'ENTERPRISE',
42
+ }
43
+
38
44
  export enum ContractStatus {
39
45
  PENDING = 'pending',
40
46
  ACTIVE = 'active',
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+
3
+ export const activityNotificationGenerationRequestSchema = z.object({
4
+ prompt: z.string().describe('Prompt or context for notification generation'),
5
+ tone: z
6
+ .enum(['friendly', 'formal', 'urgent', 'motivational', 'reminder'])
7
+ .optional()
8
+ .describe('Tone of the notification'),
9
+ currentMessage: z.string().optional().describe('Current message to improve or use as reference'),
10
+ additionalRequirements: z
11
+ .string()
12
+ .optional()
13
+ .describe('Additional requirements for the notification'),
14
+ language: z.string().default('es').describe('Language for generation'),
15
+ });
16
+
17
+ export const activityNotificationSchema = z.object({
18
+ message: z.string().describe('Generated notification message with activity variables'),
19
+ });
20
+
21
+ export type ActivityNotificationGenerationRequest = z.infer<
22
+ typeof activityNotificationGenerationRequestSchema
23
+ >;
24
+ export type ActivityNotification = z.infer<typeof activityNotificationSchema>;
@@ -1,2 +1,3 @@
1
1
  export * from './ai-template.schema';
2
2
  export * from './bulk-message.schema';
3
+ export * from './activity-notification.schema';
package/src/types.ts CHANGED
@@ -91,6 +91,9 @@ export type Permission =
91
91
  | 'COMMISSIONS_RULES_DELETE'
92
92
  | 'COMMISSIONS_CALCULATIONS_READ'
93
93
  | 'COMMISSIONS_REPORTS_VIEW'
94
+ | 'CATALOG_READ'
95
+ | 'CATALOG_UPDATE'
96
+ | 'CATALOG_MANAGE'
94
97
  | 'ALL';
95
98
 
96
99
  export interface AuditFields {