{"version":3,"sources":["../src/enums/general/index.ts","../src/enums/permissions/index.ts","../src/enums/pushNotifications/index.ts","../src/utils/constants/formFields/index.ts","../src/utils/constants/generic/index.ts","../src/utils/constants/appFeatures/index.ts","../src/utils/constants/googleApis/index.ts","../src/utils/constants/messages/perk.ts","../src/utils/constants/terms/index.ts","../src/utils/constants/messages/perkApprovalRequest.ts","../src/utils/constants/messages/group.ts","../src/utils/constants/messages/emailDomain.ts","../src/utils/constants/messages/blockEmailExpression.ts","../src/utils/constants/messages/general.ts","../src/utils/constants/messages/user.ts","../src/utils/constants/messages/settings.ts","../src/utils/constants/messages/invites.ts","../src/utils/constants/messages/category.ts","../src/utils/constants/messages/sentry.ts","../src/utils/constants/messages/perkRedeemCodes.ts","../src/utils/constants/messages/testAccounts.ts","../src/utils/constants/messages/stripe.ts","../src/utils/constants/messages/discount.ts","../src/utils/constants/messages/role.ts","../src/utils/constants/messages/permission.ts","../src/utils/constants/messages/auth.ts","../src/utils/constants/messages/profile.ts","../src/utils/constants/messages/budget.ts","../src/utils/constants/messages/voucher.ts","../src/utils/constants/messages/carousel.ts","../src/utils/constants/messages/card.ts","../src/utils/constants/messages/order.ts","../src/utils/constants/messages/mobileApp.ts","../src/utils/constants/messages/slack.ts","../src/utils/constants/messages/msTeams.ts","../src/utils/constants/messages/notifications.ts","../src/utils/constants/messages/migration.ts","../src/utils/constants/messages/setup.ts","../src/utils/constants/messages/cart.ts","../src/utils/constants/messages/index.ts","../src/utils/constants/resolvers/index.ts","../src/utils/constants/routes/index.ts","../src/utils/constants/pushNotifications/index.ts","../src/utils/helpers/permissions/index.ts","../src/utils/helpers/index.ts","../src/organizations/enums.ts","../src/memberships/enums.ts","../src/connections/enums.ts","../src/users/enums.ts","../src/perks/enums.ts","../src/notifications/enums.ts","../src/permissions/permissions.ts","../src/permissions/roles.ts","../src/permissions/utils.ts"],"names":["UserTypeEnum","StatusEnum","BrandLogoEnum","OrderTypeEnum","UnavailableItemTypeEnum","GroupTypeEnum","FormModeEnum","AllowedAccessBecauseEnum","PlatformEnum","ValidationRuleEnum","TestAccountsTypeEnum","IntegrationAppEnum","IntegrationStateEnum","PerkActionEnum","SortOrderEnum","LocationTypeEnum","ButtonTypeEnum","ButtonVariantEnum","ButtonColorEnum","NotificationPermissionsEnum","CaptureMethodEnum","ButtonSizeEnum","FlexAlignEnum","FlexJustifyEnum","CustomCategoryImageTypeEnum","SelectedCategoryTypeEnum","ImportRedeemCodesTypeEnum","RedeemCodeTypeEnum","PlatformTypeEnum","ApiResponseStatusEnum","PermissionCheckModeEnum","EnvironmentTypeEnum","DataStoredFromEnum","BudgetStatusEnum","PerkTypeEnum","FormActionEnum","QueryKeyTypeEnum","UserLogChangeTypeEnum","DateFormatEnum","BrandCarouselSettingEffectEnum","PermissionCategoryEnum","PermissionsEnum","FcmSendMethodEnum","FCMTopicsEnum","FirebasePushNotificationSendToEnum","formFieldsConstants","URL_PARAMS","GENERAL_CONFIG","MAP_CONFIG","COMMUNICATION_CONFIG","DATE_FORMATS","IMAGE_CONFIG","CHART_TYPES","CHART_OPTIONS","CHART_DATASET_OPTIONS","GOOGLE_OAUTH_STATIC_URL","LINKEDIN_OAUTH_STATIC_URL","LINKEDIN_OAUTH_USER_INFO_URL","LINKEDIN_OAUTH_ACCESS_TOKEN_URL","LINKEDIN_OAUTH_USER_DATA_URL","GOOGLE_OAUTH_USER_INFO_URL","FACEBOOK_OAUTH_USER_DATA_URL","GOOGLE_OAUTH_REVOKE_TOKEN","AUTH_REDIRECTS","FACEBOOK_OAUTH_URL","TRUNCATE_TEXT_LENGTH_SMALL","TRUNCATE_TEXT_LENGTH_MEDIUM","TOKEN_LOCALSTORAGE_KEY","ADMIN_TOKEN_LOCALSTORAGE_KEY","IMPERSONATE_LOCALSTORAGE_KEY","USER_LOCALSTORAGE_KEY","SHOW_MODAL_LOCALSTORAGE_KEY","VERIFY_EMAIL_TOKEN_LOCALSTORAGE_KEY","PAGE_REFRESHED_ONCE_LOCALSTORAGE_KEY","TRY_AND_REDIRECT_USER_TO_MOBILE_APP","TOKEN_HEADER_KEY","USER_HEADER_KEY","IMPERSONATE_HEADER_KEY","VERIFY_EMAIL_TOKEN_HEADER_KEY","GET_USER_API_UPDATED_AT","TOKEN_VERIFICATION_URL_KEY","PERKS_PARENT_CATEGORY","S3_BUCKET_FOLDERS","SEND_IN_BLUE_TEMPLATES","PERKFORCE_LOGO","SLACK_BOT","stateData","clientId","url","FIREBASE_RESPONSES","VAR_TYPES","PERKFORCE_DOMAINS","TIME_UNIT_TYPE","LOTTIE_ANIMATION_START_DELAY","DEVICE_UUID_LOCALSTORAGE_KEY","SOCKET_IO_EVENTS","URL_TARGET","TOOLTIP_TRIGGER_ALL","MS_TEAMS","msAuthStateData","id","teamId","channelId","POPOVER_TRIGGER","PERKFORCE_DETAILS","SVG_ICON_TYPES","PERK_FORM_GROUPS","APP_FEATURES","googleApis","PERK","perkCreateLimit","GIVE_PERKS","PERK_CLICK","VERIFY_PERK_REDEEM","PERK_INTEREST","pfrTextTerms","PERK_APPROVAL_REQUEST","perkApprovalRequest_default","GROUP","group_default","EMAIL_DOMAIN","emailDomain_default","BLOCK_EMAIL_EXPRESSION","blockEmailExpression_default","GENERAL","prop","type","svgIconTypes","general_default","USER","code","phoneNo","minutes","USER_HISTORY","EMPLOYEE","importEmployeesLimit","EMPLOYER","USER_FEEDBACK","SETTINGS","org","settings_default","INVITES","invites_default","CATEGORY","SUB_CATEGORY","PERK_CATEGORY","SENTRY","sentry_default","PERK_REDEEM_CODES","redeemCodesImportLimit","unique","duplicate","invalid","perkRedeemCodes_default","TEST_ACCOUNTS","testAccounts_default","STRIPE","stripe_default","DISCOUNT_CODE","discount_default","ROLE","role","role_default","PERMISSION","count","permission_default","AUTH","retryNumber","auth_default","PROFILE","profile_default","BUDGET","budget_default","VOUCHER","voucher_default","CAROUSEL","BRAND_CAROUSEL","CAROUSEL_SETTINGS","BRAND_CAROUSEL_SETTINGS","CUSTOM_CATEGORY_ICONS","CARD","CARD_SETTINGS","CREDIT_CARD","ORDER","order_default","MOBILE_APP_FORCE_EXCLUDE","APPS_INTEGRATIONS","SLACK","msTeams_default","PUSH_NOTIFICATIONS","MIGRATION","migration_default","SETUP","setup_default","CART","limit","cart_default","MESSAGES","PERK_CONFIG","ROLE_CONFIG","routeSearchParams","pagesInnerRoutes","routeParams","SHARED_ROUTES","userData","_a","_b","_c","_d","organizationsFcmTopicIdentifiers","hasPfPermission","permission","userPermissions","hasPermission","validatePfRequiredPermissions","requiredPermissions","checkModeForRequiredPermissions","validateRequiredPermissions","validatePfExcludedPermissions","excludedPermissions","checkModeForExcludedPermissions","validateExcludedPermissions","validatePfUserPermissions","validateUserPermissions","getCompanyText","distanceBusiness","loc","curr","location","_loc","distance","calcCrow","a","b","getNearestSortedBusiness","locBusiness","nearby","region","sort","businessCoordinates","cord","_distance","__spreadProps","__spreadValues","coord","isMerchantEmployee","user","isTestAccount","testAccountEmails","userEmail","isScheduledPerk","perk","dayjs","isScheduledPerkV2","todayStart","displayFromDate","isEndingSoonPerk","dateTwoWeeksLater","isEndedPerk","currentPerkStatus","status","getPerkScheduledStatus","isEnded","checkIntegrationIsAllowedAndItsState","isEmployee","isSuperUserEmployee","isSimpleEmployee","msTeamsIntegrationIsAllowed","slackIntegrationIsAllowed","stripeIntegrationIsAllowed","orgOwnerUser","msTeamsIsConnected","slackIsConnected","slackIntegrationIsEnabled","microsoftTeamsIntegrationIsEnabled","getDefaultBrandLogoType","_userData","brandLogoType","getPhoneAttemptsV1","attemptDate","futureDate","nowDate","diff","timeDiffInMinutes","timeDiffInSeconds","timeDiff","getPhoneAttempts","diffInMillis","diffInSeconds","diffInMinutes","getSortQuery","result","isSuperUser","generatePfCouponCode","generateCouponCode","getPerkViewUrl","perkId","userSubDomain","frontEndUrl","addTimeToDate","time","unit","date","formatDate","dateString","formate","formatCompanyName","companyName","validatedValue","validateInputCharacters","generateSlug","ORGANIZATION_TYPES","VERIFIED_STATUS","VISIBILITY","MEMBER_ROLES","ROLE_HIERARCHY","MEMBERSHIP_STATUS","JOIN_METHODS","CONNECTION_STATUS","CONNECTION_TYPES","USER_STATUS","AUTH_PROVIDERS","AUDIENCE_SCOPES","PERK_STATUS","APPROVAL_STATUS","DIGEST_FREQUENCY","NOTIFICATION_CHANNELS","PERMISSION_GROUPS","ALL_PERMISSIONS","ROLE_PERMISSIONS","hasAnyPermission","permissions","p","hasAllPermissions","getPermissions","isHigherRole","roleA","roleB","canModifyRole","actorRole","targetRole","canAssignRole","getAssignableRoles","isValidPermission","getRequiredRole","roles"],"mappings":"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","file":"index.mjs","sourcesContent":["export enum UserTypeEnum {\n  merchant = 'merchant',\n  employer = 'employer',\n  employee = 'employee',\n  studentBody = 'studentBody',\n  admin = 'admin',\n\n  all = 'all',\n  madeByMe = 'madeByMe',\n  owner = 'owner',\n  superUser = 'superUser',\n  standardUser = 'standardUser',\n\n  invalid = 'invalid', // use this for invalid user type\n}\n\nexport enum StatusEnum {\n  draft = 'draft',\n  approved = 'approved',\n  live = 'live',\n  scheduled = 'scheduled',\n  ended = 'ended',\n  endingSoon = 'endingSoon',\n  pendingApproval = 'pendingApproval',\n  disapproved = 'disapproved',\n  invalid = 'invalid',\n  pending = 'pending',\n  accepted = 'accepted',\n  paused = 'paused',\n  available = 'available',\n  verified = 'verified',\n  unverified = 'unverified',\n  active = 'active',\n  inactive = 'inactive',\n  deprecated = 'deprecated',\n  added = 'added',\n  invited = 'invited',\n  signedUp = 'signedUp',\n  completed = 'completed',\n  failed = 'failed',\n  inProgress = 'inProgress',\n  processing = 'processing',\n}\n\nexport enum BrandLogoEnum {\n  noLogo = 'noLogo',\n  usePerkLogo = 'usePerkLogo',\n  useProfileLogo = 'useProfileLogo',\n}\n\nexport enum OrderTypeEnum {\n  purchased = 'purchased',\n  free = 'free',\n}\n\nexport enum UnavailableItemTypeEnum {\n  outOfStock = 'outOfStock',\n  perUserLimitReached = 'perUserLimitReached',\n  draft = 'draft',\n  scheduled = 'scheduled',\n  expired = 'expired',\n  deleted = 'deleted',\n}\n\nexport enum GroupTypeEnum {\n  superUsers = 'superUsers',\n  allUsers = 'allUsers',\n  normal = 'normal',\n}\n\nexport enum FormModeEnum {\n  add = 'add',\n  edit = 'edit',\n  list = 'list',\n}\n\nexport enum AllowedAccessBecauseEnum {\n  manual = 'manual',\n  emailFormat = 'emailFormat',\n  newSignupsEmployees = 'newSignupsEmployees',\n}\nexport enum PlatformEnum {\n  android = 'android',\n  ios = 'ios',\n  web = 'web',\n}\nexport enum ValidationRuleEnum {\n  string = 'string',\n  email = 'email',\n  password = 'password',\n  positiveInt = 'positiveInt',\n  url = 'url',\n}\n\nexport enum TestAccountsTypeEnum {\n  internal = 'internal',\n  external = 'external',\n}\n\nexport enum IntegrationAppEnum {\n  microsoftTeams = 'microsoftTeams',\n  slack = 'slack',\n  stripe = 'stripe',\n  pushNotifications = 'pushNotifications',\n}\n\nexport enum IntegrationStateEnum {\n  enabled = 'enabled',\n  disabled = 'disabled',\n  notConnected = 'notConnected',\n}\n\nexport enum PerkActionEnum {\n  addEdit = 'addEdit',\n  pubUnPub = 'pubUnPub',\n  sendForApproval = 'sendForApproval',\n}\n\nexport enum SortOrderEnum {\n  ascend = 'ascend',\n  descend = 'descend',\n}\n\n// we can not change this because this is required by mongodb as it is\nexport enum LocationTypeEnum {\n  point = 'Point',\n  lineString = 'LineString',\n  polygon = 'Polygon',\n  multiPoint = 'MultiPoint',\n}\n\nexport enum ButtonTypeEnum {\n  primary = 'primary',\n  dashed = 'dashed',\n  default = 'default',\n  link = 'link',\n  text = 'text',\n}\n\nexport enum ButtonVariantEnum {\n  link = 'link',\n  text = 'text',\n  dashed = 'dashed',\n  outlined = 'outlined',\n  solid = 'solid',\n  filled = 'filled',\n}\n\nexport enum ButtonColorEnum {\n  default = 'default',\n  danger = 'danger',\n  primary = 'primary',\n  blue = 'blue',\n  purple = 'purple',\n  cyan = 'cyan',\n  green = 'green',\n  magenta = 'magenta',\n  pink = 'pink',\n  red = 'red',\n  orange = 'orange',\n  yellow = 'yellow',\n  volcano = 'volcano',\n  geekBlue = 'geekblue',\n  lime = 'lime',\n  gold = 'gold',\n}\n\nexport enum NotificationPermissionsEnum {\n  granted = 'granted',\n  denied = 'denied',\n  default = 'default',\n}\n\nexport enum CaptureMethodEnum {\n  automatic = 'automatic',\n  manual = 'manual',\n}\n\nexport enum ButtonSizeEnum {\n  small = 'small',\n  middle = 'middle',\n  large = 'large',\n}\n\n// we can not change this because this is required by antd as it is\nexport enum FlexAlignEnum {\n  flexStart = 'flex-start',\n  center = 'center',\n  flexEnd = 'flex-end',\n}\n\n// we can not change this because this is required by antd as it is\nexport enum FlexJustifyEnum {\n  flexStart = 'flex-start',\n  center = 'center',\n  flexEnd = 'flex-end',\n  spaceBetween = 'space-between',\n  spaceAround = 'space-around',\n  spaceEvenly = 'space-evenly',\n}\n\nexport enum CustomCategoryImageTypeEnum {\n  svg = 'svg',\n  other = 'other',\n}\n\nexport enum SelectedCategoryTypeEnum {\n  category = 'category',\n  subcategory = 'subcategory',\n}\n\nexport enum ImportRedeemCodesTypeEnum {\n  file = 'file',\n  csv = 'csv',\n}\n\nexport enum RedeemCodeTypeEnum {\n  file = 'file',\n  url = 'url',\n  text = 'text',\n}\n\nexport enum PlatformTypeEnum {\n  web = 'web',\n  android = 'android',\n  ios = 'ios',\n}\n\nexport enum ApiResponseStatusEnum {\n  success = 'success',\n  error = 'error',\n}\n\nexport enum PermissionCheckModeEnum {\n  every = 'every', // user must have every permissions that have passed.\n  any = 'any', // user must have any permissions that have passed.\n}\n\n/**\n * Enum to distinguish between frontend and backend environments.\n * This enum helps in conditionally setting types in shared interfaces based on the environment.\n */\nexport enum EnvironmentTypeEnum {\n  frontend = 'frontend',\n  backend = 'backend',\n}\n\nexport enum DataStoredFromEnum {\n  mobileBrowser = 'mobileBrowser',\n  mobileApp = 'mobileApp',\n}\n\nexport enum BudgetStatusEnum {\n  notClaimed = 'notClaimed',\n  requested = 'requested',\n  granted = 'granted',\n  rejected = 'rejected',\n  expired = 'expired',\n  refunded = 'refunded',\n}\n\nexport enum PerkTypeEnum {\n  perk = 'perk',\n  benefit = 'benefit',\n}\n\nexport enum FormActionEnum {\n  add = 'add',\n  update = 'update',\n}\n\nexport enum QueryKeyTypeEnum {\n  id = 'id',\n  roleIdentifier = 'roleIdentifier',\n  defaultRoleForEmployer = 'defaultRoleForEmployer',\n  defaultRoleForStudentBody = 'defaultRoleForStudentBody',\n  defaultRoleForMerchant = 'defaultRoleForMerchant',\n  defaultRoleForMerchantEmployee = 'defaultRoleForMerchantEmployee',\n  defaultRoleForStudentBodyEmployee = 'defaultRoleForStudentBodyEmployee',\n  defaultRoleForStudentBodySuperUser = 'defaultRoleForStudentBodySuperUser',\n  defaultRoleForEmployerEmployee = 'defaultRoleForEmployerEmployee',\n  defaultRoleForEmployerSuperUser = 'defaultRoleForEmployerSuperUser',\n  defaultRoleForAdmin = 'defaultRoleForAdmin',\n}\n\nexport enum UserLogChangeTypeEnum {\n  validationFailed = 'validationFailed',\n  roleUpdate = 'roleUpdate',\n  processingError = 'processingError',\n}\n\nexport enum DateFormatEnum {\n  default = 'default',\n  dateTimeWithAt = 'dateTimeWithAt',\n  dateTimeWithDash = 'dateTimeWithDash',\n}\n\nexport enum BrandCarouselSettingEffectEnum {\n  fade = 'fade',\n  scrollx = 'scrollx',\n}\n\n","export enum PermissionCategoryEnum {\n  userManagement = 'userManagement',\n  roleManagement = 'roleManagement',\n  perkManagement = 'perkManagement',\n  perkApprovalManagement = 'perkApprovalManagement',\n  permissionManagement = 'permissionManagement',\n}\n\nexport enum PermissionsEnum {\n  // Perks\n  viewAnyPerk = 'viewAnyPerk',\n  deleteAnyPerk = 'deleteAnyPerk',\n  updateAnyPerk = 'updateAnyPerk',\n  listPerks = 'listPerks',\n  viewPerk = 'viewPerk',\n  canViewNonPublishedPerkOfOrganizationOwner = 'canViewNonPublishedPerkOfOrganizationOwner',\n  canViewNonPublishedPerkOfOrganizationSuperUser = 'canViewNonPublishedPerkOfOrganizationSuperUser',\n  canViewNonPublishedPerkOfOrganizationStandardUser = 'canViewNonPublishedPerkOfOrganizationStandardUser',\n  createPerk = 'createPerk',\n  updatePerk = 'updatePerk',\n  updateOrgUserPerk = 'updateOrgUserPerk',\n  deletePerk = 'deletePerk',\n  deleteOrgUserPerk = 'deleteOrgUserPerk',\n  canAddDescriptionToPerk = 'canAddDescriptionToPerk',\n  canAddImageToPerk = 'canAddImageToPerk',\n  canAddCustomCategoryToPerk = 'canAddCustomCategoryToPerk',\n  canAddLogoToPerk = 'canAddLogoToPerk',\n  canAddCategoryToPerk = 'canAddCategoryToPerk',\n  canAddGroupsToPerk = 'canAddGroupsToPerk',\n  canSelectOrganisationsInPerk = 'canSelectOrganisationsInPerk',\n  canAddContactToPerk = 'canAddContactToPerk',\n  canAddDisplayScheduleToPerk = 'canAddDisplayScheduleToPerk',\n  canAddDiscountToPerk = 'canAddDiscountToPerk',\n  canAddPurchasableToPerk = 'canAddPurchasableToPerk',\n  canAddLimitsAndConstraintsToPerk = 'canAddLimitsAndConstraintsToPerk',\n  canAddCodesToPerk = 'canAddCodesToPerk',\n  canAddInterestToPerk = 'canAddInterestToPerk',\n  canAddLocationsToPerk = 'canAddLocationsToPerk',\n  canPublishPerk = 'canPublishPerk',\n\n  // Perk Approval Requests\n  listAllPerkApprovalRequests = 'listAllPerkApprovalRequests',\n  listPerkApprovalRequests = 'listPerkApprovalRequests',\n  viewAnyPerkApprovalRequest = 'viewAnyPerkApprovalRequest',\n  viewPerkApprovalRequest = 'viewPerkApprovalRequest',\n  rejectAnyPerkApprovalRequest = 'rejectAnyPerkApprovalRequest',\n  rejectPerkApprovalRequest = 'rejectPerkApprovalRequest',\n  approveAnyPerkApprovalRequest = 'approveAnyPerkApprovalRequest',\n  approvePerkApprovalRequest = 'approvePerkApprovalRequest',\n\n  // Role\n  listRoles = 'listRoles',\n  viewRole = 'viewRole',\n  createRole = 'createRole',\n  updateRole = 'updateRole',\n  deleteRole = 'deleteRole',\n  canAssignRoleToUser = 'canAssignRoleToUser',\n  canRemoveRoleFromUser = 'canRemoveRoleFromUser',\n  canRunRoleValidatorManager = 'canRunRoleValidatorManager',\n  canRunUserRoleBackgroundMigration = 'canRunUserRoleBackgroundMigration',\n  canViewUserRoleBackgroundMigration = 'canViewUserRoleBackgroundMigration',\n  assignPermissionsToRole = 'assignPermissionsToRole',\n  removePermissionsFromRole = 'removePermissionsFromRole',\n\n  // Permission\n  listPermissions = 'listPermissions',\n  viewPermission = 'viewPermission',\n  createPermission = 'createPermission',\n  updatePermission = 'updatePermission',\n  deletePermission = 'deletePermission',\n  deprecatePermission = 'deprecatePermission',\n  initializePermissions = 'initializePermissions',\n\n  /**\n     * New module permission template\n       listModuleNameHere = 'listModuleNameHere',\n       viewModuleNameHere = 'viewModuleNameHere',\n       createModuleNameHere = 'createModuleNameHere',\n       updateModuleNameHere = 'updateModuleNameHere',\n       deleteModuleNameHere = 'deleteModuleNameHere',\n       restoreModuleNameHere = 'restoreModuleNameHere',\n       forceDeleteModuleNameHere = 'forceDeleteModuleNameHere',\n       listTrashedModuleNameHere = 'listTrashedModuleNameHere',\n       viewTrashedModuleNameHere = 'viewTrashedModuleNameHere',\n       blockModuleNameHere = 'blockModuleNameHere',\n       unblockModuleNameHere = 'unblockModuleNameHere',\n     */\n}\n","export enum FcmSendMethodEnum {\n  tokens = 'tokens',\n  topics = 'topics',\n}\n\nexport enum FCMTopicsEnum {\n  allUsers = 'allUsers',\n  allAdmins = 'allAdmins',\n  allEmployers = 'allEmployers',\n  allMerchants = 'allMerchants',\n  allStudentBodies = 'allStudentBodies',\n  allStandardUsers = 'allStandardUsers',\n  allSuperUsers = 'allSuperUsers',\n  webAppUsers = 'webAppUsers',\n  androidAppUsers = 'androidAppUsers',\n  iosAppUsers = 'iosAppUsers',\n}\n\nexport enum FirebasePushNotificationSendToEnum {\n  specificUsers = 'specificUsers',\n  fcmTopics = 'fcmTopics',\n}\n","export const formFieldsConstants = {\n  testArea: {\n    max: 10000,\n  },\n  remarks: {\n    max: 500,\n  },\n} as const;\n","export const URL_PARAMS = {\n  GOOGLE_MAPS_API_KEY: '{{googleMapsApiKey}}',\n} as const;\n\nexport const GENERAL_CONFIG = {\n  NOT_AVAILABLE: '-',\n  DEFAULT_OFFSET: 0,\n  DEFAULT_LIMIT: 10,\n  DEFAULT_PERKS_CATEGORY: 'perks',\n} as const;\n\nexport const MAP_CONFIG = {\n  DEFAULT_ZOOM: 12,\n  OFFICE_COORDINATES: {\n    LAT: 51.931934000000005,\n    LNG: -8.123001,\n  },\n} as const;\n\nexport const COMMUNICATION_CONFIG = {\n  PHONE_ATTEMPTS_LIMIT: 3,\n  SMS_CODE_EXPIRY_SECONDS: 600,\n  PHONE_ATTEMPTS_TIME_LIMIT_IN_MINUTES: 60,\n  CODE_RETRIES_LIMIT: 5,\n} as const;\n\nexport const DATE_FORMATS = {\n  DEFAULT: 'DD MMMM YYYY',\n  TIME: 'hh:mmA',\n} as const;\n\nexport const IMAGE_CONFIG = {\n  SIZE_LIMIT_MB: 4,\n  ALLOWED_IMAGE_TYPES: 'image/png, image/jpeg, image/gif',\n} as const;\n\nexport const CHART_TYPES = [\n  { value: 'bar', label: 'Bar' },\n  { value: 'line', label: 'Line' },\n  { value: 'doughnut', label: 'Doughnut' },\n  { value: 'pie', label: 'Pie' },\n  { value: 'polar', label: 'Polar' },\n] as const;\n\nexport const CHART_OPTIONS = {\n  maintainAspectRatio: false,\n  scales: { y: { beginAtZero: true, precision: 0 } },\n  plugins: {\n    legend: { display: true, labels: { boxWidth: 0, font: { size: 18 } } },\n  },\n} as const;\n\nexport const CHART_DATASET_OPTIONS = {\n  backgroundColor: [\n    'rgba(255, 99, 132, 0.2)',\n    'rgba(54, 162, 235, 0.2)',\n    'rgba(255, 206, 86, 0.2)',\n    'rgba(75, 192, 192, 0.2)',\n    'rgba(153, 102, 255, 0.2)',\n    'rgba(255, 159, 64, 0.2)',\n    'rgba(255, 99, 232, 0.2)',\n    'rgba(54, 162, 135, 0.2)',\n    'rgba(255, 206, 186, 0.2)',\n    'rgba(75, 192, 12, 0.2)',\n    'rgba(153, 202, 55, 0.2)',\n    'rgba(25, 159, 64, 0.2)',\n  ],\n  borderColor: [\n    'rgba(255, 99, 132, 1)',\n    'rgba(54, 162, 235, 1)',\n    'rgba(255, 206, 86, 1)',\n    'rgba(75, 192, 192, 1)',\n    'rgba(153, 102, 255, 1)',\n    'rgba(255, 159, 64, 1)',\n    'rgba(255, 99, 32, 1)',\n    'rgba(54, 162, 35, 1)',\n    'rgba(255, 206, 186, 1)',\n    'rgba(75, 292, 192, 1)',\n    'rgba(153, 202, 255, 1)',\n    'rgba(255, 259, 64, 1)',\n  ],\n  borderWidth: 1,\n  barThickness: 30,\n} as const;\n\nexport const GOOGLE_OAUTH_STATIC_URL =\n  'https://accounts.google.com/o/oauth2/auth/oauthchooseaccount?access_type=online&response_type=token&scope=email%20profile&flowName=GeneralOAuthFlow';\n\nexport const LINKEDIN_OAUTH_STATIC_URL =\n  'https://www.linkedin.com/oauth/v2/authorization?response_type=code&scope=r_liteprofile%20r_emailaddress';\n\nexport const LINKEDIN_OAUTH_USER_INFO_URL =\n  'https://api.linkedin.com/v2/me?projection=(id,firstName,lastName,profilePicture(displayImage~:playableStreams))';\nexport const LINKEDIN_OAUTH_ACCESS_TOKEN_URL =\n  'https://api.linkedin.com/oauth/v2/accessToken';\nexport const LINKEDIN_OAUTH_USER_DATA_URL =\n  'https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))';\nexport const GOOGLE_OAUTH_USER_INFO_URL =\n  'https://www.googleapis.com/oauth2/v1/userinfo';\nexport const FACEBOOK_OAUTH_USER_DATA_URL =\n  'https://graph.facebook.com/me?fields=id,first_name,last_name,email,picture';\nexport const GOOGLE_OAUTH_REVOKE_TOKEN =\n  'https://oauth2.googleapis.com/revoke?token=';\n\nexport const AUTH_REDIRECTS = {\n  GOOGLE_AUTH_SIGNIN_CALLBACK: '/social-auth/googlesignin/callback',\n  GOOGLE_AUTH_SIGNUP_CALLBACK: '/social-auth/googlesignup/callback',\n  FACEBOOK_AUTH_SIGNUP_CALLBACK: '/social-auth/facebooksignup/callback',\n  FACEBOOK_AUTH_SIGNIN_CALLBACK: '/social-auth/facebooksignin/callback',\n  LINKEDIN_AUTH_CALLBACK: '/social-auth/linkedin/callback',\n  LINKEDIN_AUTH_SIGNUP_CALLBACK: '/social-auth/linkedinsignup/callback',\n  LINKEDIN_AUTH_SIGNIN_CALLBACK: '/social-auth/linkedinsignin/callback',\n  GOOGLE_AUTH_CALLBACK: '/social-auth/google/callback',\n  FACEBOOK_AUTH_CALLBACK: '/social-auth/facebook/callback',\n  MS_AUTH_REDIRECT: '/ms-auth',\n  MicrosoftTeamsConfigTab: '/microsoft-teams/channel-app/config',\n} as const;\n\nexport const FACEBOOK_OAUTH_URL =\n  'https://www.facebook.com/v12.0/dialog/oauth?response_type=token&scope=email';\nexport const TRUNCATE_TEXT_LENGTH_SMALL = 10;\nexport const TRUNCATE_TEXT_LENGTH_MEDIUM = 30;\n\n// localstorage data keys names\n// store the active user auth token\nexport const TOKEN_LOCALSTORAGE_KEY = 'pf_r32_4ui3_234';\n// store admin auth token\nexport const ADMIN_TOKEN_LOCALSTORAGE_KEY = 'pf_r32_nhg_5t';\n// store (true|false) depending on impersonation state, (true if impersonating a account)\nexport const IMPERSONATE_LOCALSTORAGE_KEY = 'vcx_sdf_Ge_rhb';\n// store user data (encrypted object containing user data)\nexport const USER_LOCALSTORAGE_KEY = 'we_lk_gpf_rre_23';\n// store (true|false) depending on model state, (true if showing model)\nexport const SHOW_MODAL_LOCALSTORAGE_KEY = 're_2we_lk_gpf_r3';\n// store user token and email=true data as encrypted object\nexport const VERIFY_EMAIL_TOKEN_LOCALSTORAGE_KEY = 'wer_Vssdf_vf_r3';\n// store (true|false) depending on page_last_refresh state, (true if page was refreshed in last call)\nexport const PAGE_REFRESHED_ONCE_LOCALSTORAGE_KEY = 'ds09sdf_vf_r3';\n// i (ahsan) will use this key to check whether i have already tried to redirect user to mobile app when user clicks on a email login link, i will also use this keep to redirect user to mobile app when he opens the url manually in mobile browser\nexport const TRY_AND_REDIRECT_USER_TO_MOBILE_APP = 'dscr38g4-234-r23-4_Vd2';\n\n// header auth keys names (should be same in backend and frontend otherwise will throw error)\n// store value of 'TOKEN_LOCALSTORAGE_KEY'\nexport const TOKEN_HEADER_KEY = 'cus_5rge_svsb_5pf_3r';\n// store a encrypted object containing value of user email from 'USER_LOCALSTORAGE_KEY' and token from 'TOKEN_LOCALSTORAGE_KEY' for API auth verification\nexport const USER_HEADER_KEY = 'o5r_5pf_3r4ui3_90';\n// store value of 'IMPERSONATE_LOCALSTORAGE_KEY'\nexport const IMPERSONATE_HEADER_KEY = 'r4uo5r_5pf_3i3_90';\n// store value of 'VERIFY_EMAIL_TOKEN_LOCALSTORAGE_KEY'\nexport const VERIFY_EMAIL_TOKEN_HEADER_KEY = 'r_5vnopf_3i3_90';\n// store time info when we fetched the getUser api data last time on navigation change\nexport const GET_USER_API_UPDATED_AT = 'pf_3i3_9das42_30';\n\n// url token key\n// using this key in URL of manual email auth callback verification\nexport const TOKEN_VERIFICATION_URL_KEY = 'rb_5pf_3_3i3_90';\n\n// category used for perks\nexport const PERKS_PARENT_CATEGORY = 'perks';\n\nexport const S3_BUCKET_FOLDERS = {\n  RedeemCodes: 'redeem-codes',\n  ImportRedeemCodes: 'import-redeem-codes',\n} as const;\n\nexport const SEND_IN_BLUE_TEMPLATES = {\n  ORDER_CHECKOUT: 52, // updated order checkout email template, (sent to user on order completion)\n  GET_PERK_CODE: 53,\n} as const;\n\nexport const PERKFORCE_LOGO =\n  'https://perkforce.com/wp-content/uploads/2022/03/perkforce-logo.png';\n\n// Slack Bot Constants\nexport const SLACK_BOT = {\n  SLACK_OAUTH_URL: (stateData: string, clientId: string, url: string) =>\n    `https://slack.com/oauth/v2/authorize?client_id=${clientId}&scope=chat:write,chat:write.public,channels:read&redirect_uri=${url}&state=${stateData}`,\n  SLACK_AUTH_REDIRECT_URL: '/slack-bot/auth-redirect',\n};\n\nexport const FIREBASE_RESPONSES = {\n  CLOSED_BY_USER: 'auth/popup-closed-by-user',\n} as const;\n\nexport const VAR_TYPES = {\n  STRING: 'string',\n  OBJECT: 'object',\n  ARRAY: 'array',\n  boolean: 'boolean',\n  NUMBER: 'number',\n  FUNCTION: 'function',\n} as const;\n\nexport const PERKFORCE_DOMAINS = [\n  'perkforce.com',\n  'pfstag.com',\n  'pfdevqa.com',\n] as const;\n\nexport const TIME_UNIT_TYPE = {\n  MINUTES: 'minutes',\n} as const;\n\nexport const LOTTIE_ANIMATION_START_DELAY = 2000; // 2s (please provide in miliseconds)\n\nexport const DEVICE_UUID_LOCALSTORAGE_KEY = 'WFE_vwevV_sf_F-ssdfdsf_';\n\nexport const SOCKET_IO_EVENTS = {\n  // frontend clients will emit these events and server will listen for them\n  client: {\n    perksDataChanged: 'perksDataChanged__client', // client will emit this when a manager changes perks data (by adding, updating or deleting a perk) | params { employerId } | known use case to cover, when a merchant changes his data, as he is not the employer of the users where i should clear the data\n    userSettingChanged: 'userSettingChanged__client',\n  },\n  // frontend clients will listen these events and server will emit these events\n  server: {\n    perksDataChanged: 'perksDataChanged__server', // client will listen for this event (emitted by server, when server received 'SocketIoEvents.client.perksDataChanged' event from client)\n    userSettingChanged: 'userSettingChanged__server',\n  },\n} as const;\n\nexport const URL_TARGET = {\n  blank: '_blank',\n} as const;\n\nexport const TOOLTIP_TRIGGER_ALL = [\n  'click',\n  'hover',\n  'focus',\n  'contextMenu',\n] as const;\n\nexport const MS_TEAMS = {\n  TENANT_TYPE: 'common',\n  RESPONSE_TYPE: 'code',\n  REQUESTED_SCOPES:\n    'Channel.ReadBasic.All ChannelMessage.Send email offline_access openid profile Team.ReadBasic.All User.Read',\n  GET_SERVER_AUTH_URL: (msAuthStateData: string, id: string, url: string) =>\n    `https://login.microsoftonline.com/${MS_TEAMS.TENANT_TYPE}/oauth2/v2.0/authorize?client_id=${id}&response_type=${MS_TEAMS.RESPONSE_TYPE}&redirect_uri=${url}&response_mode=query&scope=${MS_TEAMS.REQUESTED_SCOPES}&state=${msAuthStateData}`,\n  AUTH_SCOPES:\n    'email offline_access openid profile User.Read Team.ReadBasic.All Channel.ReadBasic.All ChannelMessage.Send',\n  GRAPH_API_ENDPOINTS: {\n    JOINED_TEAMS: 'https://graph.microsoft.com/v1.0/me/joinedTeams',\n    CHANNELS_IN_TEAM: (teamId: string) =>\n      `https://graph.microsoft.com/v1.0/teams/${teamId}/channels`,\n    SEND_MESSAGE_IN_CHANNEL: (teamId: string, channelId: string) =>\n      `https://graph.microsoft.com/v1.0/teams/${teamId}/channels/${channelId}/messages`,\n  },\n};\n\nexport const POPOVER_TRIGGER = ['click', 'hover'] as const;\n\nexport const PERKFORCE_DETAILS = {\n  supportEmail: 'support@perkforce.com',\n  webAppUrl: 'https://app.perkforce.com',\n  androidAppUrl:\n    'https://play.google.com/store/apps/details?id=com.perkforce.app',\n  iosAppUrl: 'https://apps.apple.com/pk/app/perkforce/id1608229415',\n} as const;\n\nexport const SVG_ICON_TYPES = ['image/svg', 'image/svg+xml'] as const;\n\nexport const PERK_FORM_GROUPS = {\n  YOU: { name: 'You', _id: 'you' },\n  CREATOR: { name: 'Creator', _id: 'creator' },\n} as const;\n","export const APP_FEATURES = {\n  PERK_UNIQUE_REDEEM_ENABLED: 'perk_unique_redeem_enabled',\n} as const;\n","import { URL_PARAMS } from '../generic';\n\nexport const googleApis = {\n  geoLocationApi: {\n    url: `https://www.googleapis.com/geolocation/v1/geolocate?key=${URL_PARAMS.GOOGLE_MAPS_API_KEY}`,\n  },\n} as const;\n","export const PERK = {\n  // General messages\n  START_DATE_REQUIRED:\n    'Display From Date is required when perk is not always displayed.',\n  END_DATE_GREATER:\n    'Display Until Date should be greater than Display From Date.',\n  USER_REQUIRED: 'User is required.',\n  INVALID_NAME: \"'Perks' as a name is not allowed.\",\n  NOT_FOUND: 'Perk not found.',\n  NOT_AVAILABLE: 'Perk not available.',\n  ACCEPT_TERMS: 'Please accept the terms and conditions.',\n  CREATED: 'Perk created.',\n  UPDATED: 'Perk updated.',\n  EDIT_UNPUB_IN_CAROUSEL:\n    'Perk updated. Users will not be able to view this unpublished perk in the carousel.',\n  STATUS_UPDATED: 'Perk status updated.',\n  DELETED: 'Perk deleted.',\n\n  // Validation errors\n  PROVIDE_PRICE_FOR_PURCHASABLE:\n    'Please provide a price to make this perk purchasable.',\n  INVALID_PRICE: 'Please provide valid price.',\n  REMAINING_QUANTITY_REQUIRED: 'Remaining quantity is required.',\n  INVALID_REMAINING_QUANTITY: 'Please provide valid remaining quantity.',\n  INVALID_MAX_ALLOWED_PER_USER:\n    'Please provide valid max allowed per user value.',\n  INVALID_ALLOWED_PER_USER: 'Please provide valid per user value.',\n  INVALID_ALLOWED_EVERY_DAY: 'Please provide valid every day(s) value.',\n  START_DATE_SHOULD_LESS_THEN_END_DATE:\n    'Perk display from date cannot be after the display until date.',\n  START_DATE_OR_ALWAYS_AVAILABLE_REQUIRED:\n    'Please provide display from date or check \"Always Display\" box.',\n  REDEEM_LIMIT_EXCEEDED_PROVIDED_CODES:\n    'Remaining quantity cannot be greater than provided redeem codes.',\n\n  // Redeem code errors\n  REDEEM_CODE_COPIED: 'Code copied to clipboard.',\n  REDEEM_CODE_DUPLICATE: 'Redeem Code already available.',\n  REDEEM_CODE_DUPLICATE_IN_ALL_PERKS:\n    'Redeem Code already available in other perk.',\n  REDEEM_CODE_SPACE: 'Redeem Code cannot contain white spaces.',\n  REDDEM_CODES_REQUIRED:\n    'You need to add your redeem codes, or you can select to have us automatically create redeem codes for you.',\n  MAX_USER_REDEEM_LIMIT_EXCEEDED:\n    'Your allowance has been reached, try again later.',\n\n  // Constraints and limitations\n  LIMITS_NOT_ALLOWED:\n    'Limits/Constraints can’t be implemented without \"Use Redeem Codes\".',\n  DISCOUNT_CODE_NOT_ALLOWED:\n    'Discount code is not allowed with these controls selection made (Purchasable, Use Redeem Codes, Total Quantity Available, Max Allowed Per User/Days).',\n\n  // Permission errors\n  DESCRIPTION_PERMISSION_ERROR_MESSAGE:\n    'You do not have permission to add a description to this perk. Please contact your administrator for assistance.',\n  IMAGE_PERMISSION_ERROR_MESSAGE:\n    'You do not have permission to add an image to this perk. Please contact your administrator for assistance.',\n  CATEGORY_PERMISSION_ERROR_MESSAGE:\n    'You do not have permission to assign a category to this perk. Please contact your administrator for assistance.',\n  LOGO_PERMISSION_ERROR_MESSAGE:\n    'You do not have permission to add a logo image to this perk. Please contact your administrator for assistance.',\n  GROUP_PERMISSION_ERROR_MESSAGE:\n    'You do not have permission to modify the user selector for this perk. Please contact your administrator for assistance.',\n  CONTACT_PERMISSION_ERROR_MESSAGE:\n    'You do not have permission to add contact information (name, website, phone number) to this perk. Please contact your administrator for assistance.',\n  DISPLAY_SCHEDULE_PERMISSION_ERROR_MESSAGE:\n    'You do not have permission to modify the display schedule settings. Please contact your administrator for assistance.',\n  DISCOUNT_PERMISSION_ERROR_MESSAGE:\n    'You are not authorized to set discounts. Please contact your administrator if you need this permission.',\n  PURCHASABLE_PERMISSION_ERROR_MESSAGE:\n    'You do not have the required permissions to modify the purchasable options or set a price. Contact your administrator for help.',\n  LIMITS_CONSTRAINTS_PERMISSION_ERROR_MESSAGE:\n    'You are not permitted to modify limits or constraints for this perk. Please reach out to your administrator for further assistance.',\n  CODES_PERMISSION_ERROR_MESSAGE:\n    'You do not have permission to manage redeem codes for this perk. Contact your administrator for permission.',\n  REGISTER_INTEREST_PERMISSION_ERROR_MESSAGE:\n    \"You are not authorized to manage the 'Register Interest'. Please reach out to your administrator for assistance.\",\n  LOCATIONS_PERMISSION_ERROR_MESSAGE:\n    'You do not have permission to add or modify locations. Contact your administrator for further help.',\n\n  // Other messages\n  PERK_CREATE_LIMIT_REACHED: (perkCreateLimit: number): string =>\n    `You are not allowed to create more than ${perkCreateLimit} perk${\n      perkCreateLimit > 1 ? 's' : ''\n    } right now. Contact admin to increase your limit and try again later.`,\n  VERIFY_PERK_REDEEM_ERROR: 'Error occurred while verifying perk redeem.',\n  INVALID_STATUS:\n    \"Cannot send a notification while the perk is in Draft mode. You'll need to Publish it first.\",\n  NOTIFICATION_ON_UNPUBLISH:\n    'Cannot send a notification, while trying to unpublish a perk.',\n  PERK_WEBSITE_OPEN_ERROR:\n    'Error occurred while trying to open the perk website URL.',\n\n  // Descriptive messages\n  FOR_USERS: 'Select the organisations that can avail of your perk.',\n  FOR_USERS_PREVIEW:\n    'Allow your perk to be previewed by Companies and Colleges, before connecting with them.',\n  LEGEND_STUDENT_DESC:\n    'The graduate cap represents a connected College, their <b>Students</b> will see your perk 👩🏾‍🎓👨‍🎓',\n} as const;\n\nexport const GIVE_PERKS = {\n  TRANSACTION_PROCESS: 'Transaction is processing.',\n} as const;\n\nexport const PERK_CLICK = {\n  CAPTURED: 'Perk Click captured.',\n} as const;\n\nexport const VERIFY_PERK_REDEEM = {\n  FOUND: 'Perk redeem code found.',\n  NOT_FOUND: 'Perk redeem code not found.',\n  CODE_CREATED: 'Code created successfully.',\n  UPDATED: 'Perk redeem updated.',\n} as const;\n\nexport const PERK_INTEREST = {\n  ADDED: 'Perk interest registered.',\n  REMOVED: 'Perk interest unregistered.',\n  NOT_FOUND: 'Interest not registered for this perk.',\n  DUPLICATE: 'Perk interest already registered.',\n} as const;\n","export const pfrTextTerms = {\n  standardUsers: {\n    pluralCapitalized: 'Standard users',\n    pluralPascalCase: 'Standard Users',\n    pluralLowerCase: 'standard users',\n    pluralUpperCase: 'STANDARD USERS',\n    singularCapitalized: 'Standard user',\n    singularPascalCase: 'Standard User',\n    singularLowerCase: 'standard user',\n    singularUpperCase: 'STANDARD USER',\n  },\n  approve: {\n    pluralCapitalized: 'Approve',\n    pluralLowerCase: 'approve',\n    pluralUpperCase: 'APPROVE',\n    singularCapitalized: 'Approve',\n    singularLowerCase: 'approve',\n    singularUpperCase: 'APPROVE',\n  },\n  disapprove: {\n    pluralCapitalized: 'Disapprove',\n    pluralLowerCase: 'disapprove',\n    pluralUpperCase: 'DISAPPROVE',\n    singularCapitalized: 'Disapprove',\n    singularLowerCase: 'disapprove',\n    singularUpperCase: 'DISAPPROVE',\n  },\n} as const;\n","import { pfrTextTerms } from '../terms';\n\nconst PERK_APPROVAL_REQUEST = {\n  NO_DISAPPROVE_PERMISSION: `You do not have permission to ${pfrTextTerms.disapprove.singularLowerCase} this request.`,\n  REQUEST_ALREADY_PROCESSED: 'This request has already been processed.',\n  NO_APPROVE_PERMISSION: `You do not have permission to ${pfrTextTerms.approve.singularLowerCase} this request.`,\n  NO_VIEW_PERMISSION:\n    'You do not have permission to view the details of this request.',\n  NOT_FOUND: 'Perk approval request not found.',\n  UPDATED: 'Perk approval request updated successfully.',\n  ALREADY_PROCESSED: 'Perk approval request already processed.',\n  NO_APPROVAL_HISTORY: 'No approval history exists for this perk',\n} as const;\n\nexport default PERK_APPROVAL_REQUEST;\n","const GROUP = {\n  AT_LAST_1_MEMBER: 'Please select at least 1 group member.',\n  CREATED: 'Group created.',\n  NOT_FOUND: 'Group not found.',\n  DELETED: 'Group deleted.',\n  UPDATED: 'Group updated.',\n  MEMBER_CREATED: 'Group member added.',\n  MEMBER_DELETED: 'Group member deleted.',\n  MEMBER_EXISTS: 'Group member already added.',\n  MEMBER_NOT_FOUND: 'Group member not found',\n  MEMBERS_ADDED_TO_GROUPS: 'Groups updated.',\n  DUPLICATE: 'Group name already exists.',\n} as const;\n\nexport default GROUP;\n","const EMAIL_DOMAIN = {\n  INVALID: 'Please enter valid domain name',\n  EMPTY_REQUEST: 'Please enter request',\n  EMPTY_EXPRESSION: 'Please enter expression',\n  CREATED: 'Email domain created. Pending for approval.',\n  UPDATED: 'Email domain updated.',\n  NOT_FOUND: 'Email domain not found.',\n  DELETED: 'Email domain deleted.',\n  EXPRESSION_ADDED: 'Regular Expression created.',\n} as const;\n\nexport default EMAIL_DOMAIN;\n","const BLOCK_EMAIL_EXPRESSION = {\n  EMPTY_EXPRESSION: 'Please enter valid regular expression to block emails',\n  INVALID_EXPRESSION: 'Please enter a valid regular expression.',\n  CREATED: 'A new regular expression added to\\nblock Emails.',\n  NOT_FOUND: 'Block Email expression not found.',\n  DELETED: 'Block Email expression deleted.',\n  EXPRESSION_ALREADY_EXISTS: 'This regular expression already exists.',\n  REQUEST_BLOCKED:\n    'Sorry, this request is not permitted.\\nFor further information contact us using the Give Feedback button <svg style=\"position:relative;top:3px;\" viewBox=\"64 64 896 896\" focusable=\"false\" data-icon=\"notification\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z\"></path></svg> or email <a href=\"mailto:support@perkforce.com\">support@perkforce.com</a>',\n} as const;\n\nexport default BLOCK_EMAIL_EXPRESSION;\n","import { svgIconTypes } from 'ts-buildkit';\nimport { formFieldsConstants } from '../formFields';\nimport { IMAGE_CONFIG } from '../generic';\n\nconst GENERAL = {\n  RELOAD_DATA: 'Reload Data',\n  FILE_SIZE_LIMIT: `File size has exceeded it's max limit of ${IMAGE_CONFIG.SIZE_LIMIT_MB}MB`,\n  INVALID_FILE_TYPE: `Invalid file type selected. Allowed file types are ${IMAGE_CONFIG.ALLOWED_IMAGE_TYPES}.`,\n  INVALID_FILE: 'Invalid file selected. Please try again.',\n  INVALID_PHONE: 'Please enter valid Phone No.',\n  THANKS_FOR_FEEDBACK: 'Thank you for the feedback.',\n  CHAR_LIMIT_EXCEEDED: (prop: string | number): string =>\n    `${prop} limit exceeded ${formFieldsConstants.testArea.max\n      .toString()\n      .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')} characters`,\n  SPECIAL_CHARS_NOT_ALLOWED: 'Special characters are not allowed.',\n  SPECIAL_CHARS_AND_SPACES_NOT_ALLOWED:\n    'Special characters and spaces are not allowed.',\n  IMAGE_REQUIRED: 'Image is required.',\n  INVALID_URL: 'Please enter a valid URL',\n  AFFILIATE_LINK_WARNING:\n    'Please ensure this is not an affiliate link. See Perkforce Terms & Conditions for more details',\n  INVALID_REQUEST: 'Invalid request.',\n  ERROR_OCCURRED: 'Error occurred, try again later',\n  CANCELLED_BY_USER: 'Request cancelled by user.',\n  ACCEPT_CONDITION: 'Please accept the condition.',\n  REQUEST_EXPIRED: 'Requested token expired, try again later.',\n  INVALID_EMPLOYEE_PERMISSIONS:\n    'Invalid request. Your permissions are changed. Please refresh your page.',\n  INVALID_ICON_TYPE: (type: string = 'svg'): string =>\n    `Invalid file type selected. Allowed file types are ${\n      type === 'svg'\n        ? svgIconTypes.join(', ')\n        : IMAGE_CONFIG.ALLOWED_IMAGE_TYPES\n    }.`,\n  GIVE_FEEDBACK: 'Give Feedback',\n  COLLEGE: 'College',\n  BUSINESS: 'Business',\n  COMPANY: 'Company',\n  COMPANY_OR_COLLEGE: 'Company or College',\n  SUCCESS: 'Request completed successfully.',\n  NAME_REQUIRED: 'Name is required.',\n  ID_REQUIRED: \"Id is required, can't proceed without id.\",\n  REMARKS_MAX_ERROR: `Remarks must contain at most ${formFieldsConstants.remarks.max} character(s)`,\n  REMARKS_REQUIRED: 'Remarks is required.',\n  INVALID: 'Invalid request.',\n  EMAIL_EXISTS: 'Email address already occupied.',\n  CARD_BANNER_NOT_FOUND: 'Card or Banner not found.',\n  PERKS_SENT: 'Perks Sent.',\n  DB_CONNECTED: 'Database Connected Successfully.',\n  UNAUTHENTICATED: 'please authenticate',\n  SPECIAL_CHARACTERS_NOT_ALLOWED:\n    'Please provide a valid value, Special characters are not allowed.',\n  CHARATCER_LIMIT_EXCEEDED: 'Characters Limit Exceeded.',\n  FILE_UPLOAD_SUCCESS: 'File upload completed successfully.',\n  FILE_UPLOAD_FAILED: 'File upload failed.',\n  NOT_FOUND: 'Item not found.',\n  INVALID_SLUG:\n    'Invalid category name, name should contain at least one alphabet and should be unique.',\n  INVALID_EMAIL: 'Please provide a valid email address.',\n  UNAUTHORIZED:\n    'Unauthorized access. You do not have permission to perform this action. Please check your credentials or contact support if you believe this is a mistake.',\n  UNEXPECTED_ERROR_MESSAGE: 'An unexpected error occurred. Please try again.',\n  DEPRECATION_REASON_REQUIRED: 'Deprecated reason is required.',\n} as const;\n\nexport default GENERAL;\n","export const USER = {\n  PERKFORCE_DOMAIN_UPDATE_INFO:\n    'Perkforce domain change will take effect in next sign in.',\n  DESCRIPTON_REQUIRED: 'Description is required.',\n  CREATED: 'User Created.',\n  NOT_FOUND: 'User not found.',\n  VANITY_URL_EXISTS: 'Vanity url already occupied.',\n  COMPANY_NAME_EXISTS: (type: string): string =>\n    `${type || 'Company'} name already occupied.`,\n  INVALID_TOKEN: 'Invalid token.',\n  CODE_EXPIRED: 'Code is expired.',\n  CODE_INVALID: 'Code is invalid.',\n  LOGGED_OUT: 'User logged out.',\n  UPDATED: 'User updated.',\n  ORDER_EMAIL_RECIPIENTS_UPDATED: 'Order email recipients updated.',\n  NOT_ONBOARDED: 'User not onboarded.',\n  PHONE_CODE: (code: string | number, phoneNo: string): string =>\n    `Please use this code ${code} to verify your phone number ${phoneNo}.`,\n  INVALID_PHONE_ATTEMPT: (minutes: string): string =>\n    `Sorry, you can’t sign up right now. You can try again in ${minutes}.`,\n  PRIVACY_POLICY_RESET:\n    'Terms, conditions and privacy policy reset done for all users.',\n  ACTIVE_STATUS_UPDATED: 'User Active Status Updated Successfully.',\n  DELETED: 'User Deleted Successfully.',\n  CANNOT_DOWNGRADE_EMAIL_ORDER_RECIPIENT:\n    'Can not remove superuser access, Please remove the user from order email recipient list first.',\n  CANNOT_REMOE_LAST_EMAIL_ORDER_RECIPIENT:\n    'Can not remove last order email recipient.',\n  INVALID_EMPLOYER_ID:\n    'Error Occurred, Invalid employer id, please try again later.',\n  LOCATION_UPDATED: 'Location Updated Successfully.',\n  FAILED_TO_FETCH_PERMISSIONS: 'Failed to fetch permissions, please try again.',\n  NO_ROLE_ASSIGNED:\n    \"You currently don't have any roles assigned. Please contact the administrator for assistance.\",\n} as const;\n\nexport const USER_HISTORY = {\n  CREATED: 'User history created.',\n} as const;\n\nexport const EMPLOYEE = {\n  CREATED: 'User created.',\n  NOT_FOUND: 'User not found.',\n  DELETED: 'User deleted.',\n  UPDATED: 'User updated.',\n  NO_FILE_FOUND: 'No file found to import users.',\n  EMPLOYEES_IMPORT_SUCCESS: 'Users imported successfully.',\n  EMPLOYEES_IMPORT_FAILED: 'Users import failed.',\n  INVALID_FILE_TYPE: 'Invalid file type, upload csv file.',\n  MAXIMUM_IMPORT_LIMIT: (importEmployeesLimit: string): string =>\n    `Each import is restricted to a maximum of ${importEmployeesLimit} users.\\nInstead, separate your file into smaller files and import multiple times.`,\n  EMPLOYEES_EMAIL_COLUMN_NOT_FOUND: 'Users email column not found.',\n  INVITE_SENT: 'Invite sent.',\n} as const;\n\nexport const EMPLOYER = {\n  EMPLOYEES_LANDING_CAT_CHANGED: 'Users landing category changed.',\n} as const;\n\nexport const USER_FEEDBACK = {\n  FEEDBACK_SUCCESS: 'Feedback submitted successfully.',\n  FEEDBACK_FAILED: 'Feedback submission failed.',\n} as const;\n","const SETTINGS = {\n  INVALID_STRIPE_FEE:\n    'Fee percentage cannot be less than 0 or greater than 100.',\n  CANNOT_NEGATIVE: 'Cannot be less than 1.',\n  FEE_FOR_ORGANIZATION: (org: string | number): string =>\n    `Application Fee from ${org}.`,\n  UPDATED: 'Settings updated.',\n  INVALID_PERKS_PER_PAGE: 'Perks per page should not be less than 1.',\n  INVALID_CONNECTIONS_UPTO: 'Number of connections should not be less than 1.',\n  NEW_SIGNUPS: {\n    SUCCESS: 'New signups settings updated successfully.',\n    INVALID_EMAIL:\n      'Invalid email, no emplopyer/merchant/student-body user found with this email.',\n  },\n  MOBILE_APP_INFO: {\n    SUCCESS: 'Mobile app info updated successfully.',\n  },\n} as const;\n\nexport default SETTINGS;\n","const INVITES = {\n  INVITE_SENT: 'Connection invite sent.',\n  CONNECTION_REQUEST_SENT: 'Connection request sent.',\n  REFER_A_BUSINESS: 'Refer a Business',\n  SENT: 'Connection request sent.',\n  NOT_FOUND: 'Connection request not found',\n  NOT_FOUND_OR_ACCEPTED: 'Connection request not found or already accepted.',\n  EXISTS: 'Connection request already exists or invalid.',\n  CONNECTION_EXISTS: 'Users already connected.',\n  DELETED: 'Connection request deleted.',\n  INVALID: 'Invalid connection request.',\n  ACCEPTED: 'Connection request accepted.',\n  CONNECTION_CREATED: 'Connection created.',\n  STATUS_CHANGED: 'Status updated.',\n  INVALID_USER:\n    'Cannot send connection request to this user. Please reach out to Perkforce or send feedback for help.',\n  REFERRAL_SENT: 'Referral sent.',\n} as const;\n\nexport default INVITES;\n","export const CATEGORY = {\n  NO_ICON_PROVIDED: 'No icon provided for category.',\n  NO_ICONS_FOUND: 'No Icons Found!',\n  ICON_DIMENSION_LIMIT_EXCEED:\n    'Image dimensions should be less than or equal to 256*256',\n  CREATED: 'Category created.',\n  EXISTS: 'Category with the same name already exists.',\n  UPDATED: 'Category updated.',\n  DELETED: 'Category deleted.',\n  NOT_FOUND: 'Category not found.',\n  CONTAIN_SUB_CATEGORIES:\n    'Cannot delete because there are sub categories in this category.',\n  REORDER: 'Categories reordered.',\n} as const;\n\nexport const SUB_CATEGORY = {\n  CREATED: 'Sub Category created.',\n  EXISTS: 'Sub Category with the same name already exists.',\n  UPDATED: 'Sub Category updated.',\n  DELETED: 'Sub Category deleted.',\n  NOT_FOUND: 'Sub Category not found.',\n  DEFAULT: 'Cannot update default Sub Category.',\n  CONTAIN_PERKS: 'Cannot delete because there are perks in this sub category.',\n  REORDER: 'Sub Categories reordered.',\n} as const;\n\nexport const PERK_CATEGORY = {\n  DEFAULT: 'Cannot update default Perk Category.',\n  NOT_FOUND: 'Default Perk Category not found.',\n  CREATED: 'Default Perk Category created.',\n  DELETED: 'Default Perk Category deleted',\n  UPDATED: 'Default Perk Category updated',\n  EXISTS: 'Default Perk Category with the same name already exists.',\n  CONTAIN_PERKS: 'Cannot delete because there are perks in this category.',\n  REORDER: 'Default Perk Categories reordered.',\n} as const;\n","const SENTRY = {\n  TEST_ERROR_REPORTING: 'Testing frontend sentry error reporting.',\n} as const;\n\nexport default SENTRY;\n","const PERK_REDEEM_CODES = {\n  INVALID_REQUEST: 'Cannot change, once a purchase has occured.',\n  ADDED: 'Perk Redeem Code added.',\n  EDITED: 'Perk Redeem Code edited.',\n  DELETED: 'Perk Redeem Code deleted.',\n  PERK_ID_REQUIRED: 'Perk id is required.',\n  COMPLETED: 'Redeem Codes added successfully.',\n  FAILED: 'Failed to add requested redeem Codes.',\n  LIMIT_REACHED: (redeemCodesImportLimit: number): string =>\n    `Limit reached, can not add more than ${redeemCodesImportLimit} redeem codes at a time.`,\n  NO_FILE_FOUND: 'No file found to import data.',\n  NO_REDEEM_CODE_AVAILABLE:\n    'No Perk code available right now, try again later.',\n  INVALID_REDEEM_CODE: 'Invalid redeem code found, please try again later.',\n  DUPLICATE_RECORDS_FOUND: (unique: string, duplicate: string): string =>\n    `${unique} unique codes added.\\nFound ${duplicate} duplicate codes, which were skiped.`,\n  INVALID_RECORDS_FOUND: (unique: string, invalid: string): string =>\n    `${unique} unique codes added.\\nFound ${invalid} invalid codes, which were skiped.`,\n  DUPLICATE_INVALID_RECORDS_FOUND: (\n    unique: string,\n    duplicate: string,\n    invalid: string\n  ): string =>\n    `${unique} unique codes added.\\nFound ${duplicate} duplicate codes & ${invalid} invalid codes, which were skiped.`,\n  REDEEM_CODE_DUPLICATE_IN_ALL_PERKS:\n    'Redeem Code already available in other perk.',\n} as const;\n\nexport default PERK_REDEEM_CODES;\n","const TEST_ACCOUNTS = {\n  ALREADY_EXISTS: 'Test account email already exists.',\n  INVALID_ACTION: 'Invalid test account form action passed, please try again.',\n  ADDED: 'Test account added successfully.',\n  UPDATED: 'Test account updated successfully.',\n  DELETED: 'Test account deleted successfully.',\n  SETTING_UPDATED: 'Test accounts setting updated successfully.',\n  INVALID_EMAIL: 'Please add a valid email to add new test account.',\n  EXISTS: 'Test account already exists, please try a different user.',\n  NOT_FOUND: 'Test account not found, please try again.',\n  MUST_BE_MANAGER: 'Internal tester should be a manager account.',\n} as const;\n\nexport default TEST_ACCOUNTS;\n","const STRIPE = {\n  REDIRECT_FAILED:\n    'Error occured while trying to redirect to Stripe to complete checkout request.',\n  DISCONNECTED:\n    \"You're now disconnected from Stripe.\\nReconnect anytime to access its amazing features again.\",\n  ENABLED:\n    'Stripe is enabled again!\\nAll its amazing features are ready for you to enjoy.',\n  DISABLED:\n    \"Stripe is disabled.\\nYou're still connected, so turning it back on is easy whenever you're ready!\",\n} as const;\nexport default STRIPE;\n","const DISCOUNT_CODE = {\n  CODE_COPIED: 'Code copied successfully.',\n  AMOUNT_SELECTION: 'Please select amount.',\n} as const;\n\nexport default DISCOUNT_CODE;\n","const ROLE = {\n  DUPLICATE_TITLE: 'A role with the same title already exists.',\n  CREATED: 'Role created successfully.',\n  UPDATED: 'Role updated successfully.',\n  DELETED: 'Role deleted successfully.',\n  MISSING_TITLE: 'Role title is required.',\n  NOT_FOUND: 'Role not found.',\n  ERROR_DEFAULT_ROLE_UNSET: (role: string): string =>\n    `Cannot unset the ${role} without setting another role as ${role} first`,\n  ERROR_DEFAULT_ROLE_DELETE: (role: string): string =>\n    `Cannot delete the ${role} role without setting another role as ${role} first`,\n  ERROR_ASSIGNED_ROLE_DELETE:\n    'Cannot delete role because it is assigned to existing users',\n  REPLACEMENT_ROLE_NOT_FOUND: 'Replacement role not found',\n  REPLACEMENT_ROLE_MUST_ACTIVE: 'Replacement role must be active.',\n  REPLACEMENT_INVALID_DEPRECATED_ROLE:\n    'Invalid replacement role, provided replacement role is in deprecated state',\n  INVALID_DEPRECATED_ROLE: 'Invalid role, provided role is in deprecated state',\n  ROLE_DELETE_REQUIRES_REPLACEMENT:\n    'Cannot delete the role as it is assigned to users. Please provide a replacement role to proceed.',\n  ROLE_ALREADY_ASSIGNED: 'Role already assigned to user.',\n  USER_ROLE_NOT_ASSIGNED: 'Role is not assigned to the user.',\n  USER_LAST_ROLE_REMOVAL:\n    'You cannot remove the last role assigned to the user.',\n  ASSIGNED: 'Role successfully assigned to user.',\n  REMOVED: 'Role successfully removed from user.',\n  ROLES_UPDATED: 'Roles updated successfully',\n  SOME_ROLES_UPDATED_FAILED: 'Some roles failed to update',\n  CANNOT_SET_DEPRECATED_AS_DEFAULT:\n    'Cannot set a deprecated role as default for any user type',\n  REPLACEMENT_ROLE_REQUIRED:\n    'Replacement role id is required in case of deprecated state',\n  PERMISSIONS_ASSIGNED: 'Permissions assigned to role successfully.',\n  PERMISSIONS_REMOVED: 'Permissions removed from role successfully.',\n  CANNOT_REMOVE_ALL_PERMISSIONS: 'Cannot remove all permissions from role.',\n  NO_NEW_PERMISSIONS:\n    'The requested permissions are already assigned to this role',\n  CANNOT_UPDATE_DEFAULT_ROLE:\n    'Cannot update default roles. Default roles are system-defined and cannot be modified.',\n  CANNOT_DELETE_DEFAULT_ROLE:\n    'Cannot delete default roles. Default roles are system-defined and cannot be removed.',\n} as const;\n\nexport default ROLE;\n","const PERMISSION = {\n  NOT_FOUND: 'Permission not found.',\n  CREATED: 'Permission created successfully.',\n  UPDATED: 'Permission updated successfully.',\n  UPDATED_PERMISSIONS: 'Permissions updated successfully.',\n  DELETED: 'Permission deleted successfully.',\n  REPLACEMENT_PERMISSION_NOT_FOUND: 'Replacement permission not found.',\n  REPLACEMENT_PERMISSION_ID_REQUIRED: 'Replacement permission id is required.',\n  CANNOT_DEPRECATE_PERMISSION_IN_USE:\n    'Cannot deprecate permission that is in use without a replacement.',\n  DEPRECATED_SUCCESSFULLY: 'Permission deprecated successfully.',\n  IN_USE: (count: number): string =>\n    `Permission is currently in use by ${count} role${\n      count === 1 ? '' : 's'\n    }. Please transfer to another permission by providing replacement permission id before deleting.`,\n  TRANSFER_TARGET_NOT_FOUND: 'The permission to transfer to does not exist.',\n  TRANSFER_TARGET_INVALID:\n    'The target permission for transfer must be active and not deprecated.',\n  PERMISSION_ALREADY_EXISTS: 'Permission with this identifier already exists.',\n  DELETED_BY_ADMINISTRATOR: 'Deleted by administrator.',\n  INITIALIZED: 'Permissions successfully initialized.',\n  IDENTIFIER_REQUIRED: 'Permission identifier is required.',\n  ID_REQUIRED: 'Permission id is required.',\n  TITLE_REQUIRED: 'Permission title is required.',\n  TRANSFERRED_AND_DELETED: 'Permission transferred and deleted successfully.',\n} as const;\n\nexport default PERMISSION;\n","import { COMMUNICATION_CONFIG } from '../generic';\n\nconst AUTH = {\n  RESTRICT_ACCESS:\n    'Unable to access for now. Please Try Later. Sorry for inconvenience.',\n  CODE_RETRIES_LIMIT_REACHED: `${COMMUNICATION_CONFIG.CODE_RETRIES_LIMIT} unsuccessful attempts were made to Sign-in to your account. Access to your account is restricted.`,\n  CODE_RETRIES: (retryNumber: number): string =>\n    `Incorrect code. ${COMMUNICATION_CONFIG.CODE_RETRIES_LIMIT - retryNumber} ${\n      COMMUNICATION_CONFIG.CODE_RETRIES_LIMIT - retryNumber === 1\n        ? 'try'\n        : 'tries'\n    } remaining.`,\n  ACCOUNT_UNDER_REVIEW:\n    'We are reviewing your account. We will get back to you soon.',\n  NO_TERMS_CONDITION_STATUS:\n    'Please accept the Terms of Service and Privacy Policy to continue.',\n} as const;\n\nexport default AUTH;\n","const PROFILE = {\n  UPDATED: 'Profile updated.',\n} as const;\n\nexport default PROFILE;\n","const BUDGET = {\n  NOT_FOUND: 'Budget not found or you do not have access to this budget.',\n  EXPIRED_OR_CLAIMED: 'Budget expired or already claimed.',\n  REFUND_REQUEST: 'Refund Requested.',\n  APPROVED: 'Amount approved.',\n  REJECTED: 'Amount rejected.',\n  REFUNDED: 'Budget Refunded.',\n} as const;\n\nexport default BUDGET;\n","const VOUCHER = {\n  NOT_ENOUGH_BALANCE: 'You dont have enough balance for this voucher.',\n} as const;\n\nexport default VOUCHER;\n","export const CAROUSEL = {\n  ITEM_CREATED: 'Carousel item created.',\n  NOT_FOUND: 'Carousel item not found.',\n  ITEM_DELETED: 'Carousel item deleted.',\n  ITEM_UPDATED: 'Carousel item updated.',\n  REORDER: 'Carousel items reordered.',\n} as const;\n\nexport const BRAND_CAROUSEL = {\n  ITEM_CREATED: 'Carousel item created.',\n  NOT_FOUND: 'Carousel item not found.',\n  ITEM_DELETED: 'Carousel item deleted.',\n  ITEM_UPDATED: 'Carousel item updated.',\n  LIMIT_REACHED:\n    'Cannot create carousel item, limit reached. Please contact Perkforce for furthur information.',\n} as const;\n\nexport const CAROUSEL_SETTINGS = {\n  UPDATED: 'Carousel settings updated.',\n} as const;\n\nexport const BRAND_CAROUSEL_SETTINGS = {\n  UPDATED: 'Carousel settings updated.',\n} as const;\n\nexport const CUSTOM_CATEGORY_ICONS = {\n  ADDED: 'Custom category icon added.',\n  UPDATED: 'Custom category icon updated.',\n  DELETED: 'Custom category icon deleted.',\n} as const;\n","export const CARD = {\n  ITEM_CREATED: 'Card item created.',\n  NOT_FOUND: 'Card item not found.',\n  ITEM_DELETED: 'Card item deleted.',\n  ITEM_UPDATED: 'Card item updated.',\n  REORDER: 'Card items reordered.',\n} as const;\n\nexport const CARD_SETTINGS = {\n  UPDATED: 'Card settings updated.',\n} as const;\n\nexport const CREDIT_CARD = {\n  ADDED: 'Credit card added.',\n  EXISTS: 'Credit card already exists.',\n  DELETED: 'Credit card deleted.',\n} as const;\n","const ORDER = {\n  NOT_FOUND: 'Order not found.',\n  DELETED: 'Order deleted.',\n} as const;\n\nexport default ORDER;\n","export const MOBILE_APP_FORCE_EXCLUDE = {\n  ADDED: 'Manager Email added successfully.',\n  UPDATED: 'Manager Email updated successfully.',\n  DELETED: 'Manager Email deleted successfully.',\n  ITEM_EXISTS: 'Manager Email already added in the list.',\n  MANAGER_NOT_FOUND:\n    'Manager not found, please make sure to enter a manager email.',\n} as const;\n\nexport const APPS_INTEGRATIONS = {\n  INVALID_APP_OR_STATUS: 'Invalid integration app or status, please try again.',\n} as const;\n","export const SLACK_BOT = {\n  ACCESS_DENIED: 'Access Denied By User.',\n  SEND_PERK_NOTIFICATION:\n    'Click here to send a notification about this perk to your slack organisation.',\n  NO_CHANNELS_FOUND:\n    'No channels found, please create some public channels in your workspace or add perkforce slack app to some private channels to continue.',\n  INVALID_CHANNEL: 'Invalid channel, please try again.',\n  INVALID_WORKSPACE_DATA: 'Invalid workspace data, please try again.',\n  SELECT_CHANNEL:\n    'Please select channel to continue to send a notification to slack.',\n  ERROR_OCCURRED:\n    'Error ocurred while opening slack app to complete the integration process.',\n  ENABLE_INTEGRATION: 'Please enable slack integration to use this feature.',\n} as const;\n\nexport const SLACK = {\n  NOTIFICATION_SENT: 'Notification sent successfully.',\n  CONNECTED:\n    \"Congrats! You're now connected to Slack.\\nNow each perk has a feature where you can notify your Slack channels about it. 🚀\",\n  DISCONNECTED:\n    \"You're now disconnected from Slack.\\nReconnect anytime to access its amazing features again.\",\n  ENABLED:\n    'Slack is enabled again!\\nAll its amazing features are ready for you to enjoy.',\n  DISABLED:\n    \"Slack is disabled.\\nYou're still connected, so turning it back on is easy whenever you're ready!\",\n} as const;\n","const MS_TEAMS = {\n  SEND_PERK_NOTIFICATION:\n    'Click here to send a notification about this perk to your Microsoft Teams.',\n  NO_TEAMS_FOUND:\n    'No teams found, please create some public teams with public channels in your Microsoft Teams account.',\n  NO_CHANNELS_FOUND:\n    'No public channels found in selected team, please selected another team or create some public channels and try again.',\n  MS_CONNECTION_NOT_ALLOWED:\n    'MS Connection is not allowed, please request admin and try again later.',\n  ERROR_OCCURRED: 'Error occurred while processing microsoft auth request.',\n  SELECT_TEAM:\n    'Please select team to continue to send a notification to microsoft teams.',\n  SELECT_CHANNEL:\n    'Please select channel to continue to send a notification to microsoft teams.',\n  NOT_IN_MS_TEAMS: 'Initialization Failed. No Parent window found.',\n  ENABLE_INTEGRATION:\n    'Please enable microsoft teams integration to use this feature.',\n  ID_TOKEN_REQUIRED:\n    'ID Token is required to complete the MS Teams SSO Auth Request.',\n  ACCESS_TOKEN_EXPIRED:\n    'Access Token Expired, please open perkforce app in ms teams again to refresh your access token.',\n  TEAM_ID_IS_REQUIRED:\n    'Team Id is required to fetch the channels for that team.',\n  TEAM_CHANNEL_ID_IS_REQUIRED:\n    'Team & Channel Id is required to send notification message to the channel.',\n  MESSAGE_SENDING_FAILED:\n    'Error occurred while sending the message to channel in MS Teams, please try again.',\n  ADAPTIVE_CARD_FAILED:\n    'Error Occurred while creating adaptive card to send message to MS Teams.',\n  NOT_ALLOWED: 'You are not allowed to use MS Teams feature.',\n  INVALID_DATA:\n    'No valid data found for requested MS Teams action, please try again.',\n  ERROR_WHILE_SENDING_NOTIFICATION:\n    'Error occurred while sending notification to MS Teams.',\n  NOTIFICATION_SENT: 'Notification sent successfully.',\n  CONNECTED:\n    \"Congrats! You're now connected to Microsoft Teams.\\nNow each perk has a feature where you can notify your Microsoft Teams channels about it. 🚀\",\n  DISCONNECTED:\n    \"You're now disconnected from Microsoft Teams.\\nReconnect anytime to access its amazing features again.\",\n  ENABLED:\n    'Microsoft Teams is enabled again!\\nAll its amazing features are ready for you to enjoy.',\n  DISABLED:\n    \"Microsoft Teams is disabled.\\nYou're still connected, so turning it back on is easy whenever you're ready!\",\n} as const;\n\nexport default MS_TEAMS;\n","export const PUSH_NOTIFICATIONS = {\n  SUCCESS: 'Push notification sent successfully.',\n  FAILED: 'Error occurred while sending push notification to users.',\n  ENABLED: 'Push notifications are enabled.',\n  DISABLED: 'Push notifications are disabled.',\n} as const;\n","const MIGRATION = {\n  USER_TYPE_MISSING: 'User type is missing',\n  INVALID_USER_TYPE: 'Invalid user type',\n  NO_EMAIL: 'No Email',\n  ALREADY_IN_PROGRESS:\n    'User role migration is already in progress. Please wait for the current migration to complete before initiating a new one.',\n};\n\nexport default MIGRATION;\n","const SETUP = {\n  CHECK_STATUS:\n    'Initialization is in process for more detail run getMigrationStatus query to get the status of the migration',\n};\n\nexport default SETUP;\n","const CART = {\n  NOT_FOUND: 'Cart not found.',\n  CART_EMPTY: 'Cart is empty.',\n  ITEM_NOT_FOUND: 'Cart item not found.',\n  ITEM_ADDED: 'Item added in cart.',\n  QUANTITY_REQUIRED: 'Quantity is required.',\n  CHECKOUT_SUCCESS: 'Transaction in process.',\n  ITEMS_OUT_OF_STOCK: 'One or more items are not available.',\n  ITEM_OUT_OF_STOCK_AND_UPDATED: 'Item not available. Removed it from cart.',\n  PURCHASE_SUCCESS: 'Purchased Successfully.',\n  BUSINESS_NOT_FOUND: 'Business not found.',\n  ITEM_NOT_AVAILABLE_FOR_PURCHASE: 'Item(s) not available to purchase.',\n  ONLY_SAME_BUSINESS_ALLOWED:\n    'Items from different seller cannot be added in Cart. Please clear your cart to add items from a different seller.',\n  ADD_QUANTITY_EXCEEDED: (limit: number): string =>\n    limit\n      ? `There are a max of ${limit} items available, so we have updated your cart with the ${limit} available.`\n      : 'Item not available.',\n} as const;\nexport default CART;\n","import {\n  PERK,\n  GIVE_PERKS,\n  PERK_CLICK,\n  VERIFY_PERK_REDEEM,\n  PERK_INTEREST,\n} from './perk';\nimport PERK_APPROVAL_REQUEST from './perkApprovalRequest';\nimport GROUP from './group';\nimport EMAIL_DOMAIN from './emailDomain';\nimport BLOCK_EMAIL_EXPRESSION from './blockEmailExpression';\nimport GENERAL from './general';\nimport { EMPLOYEE, EMPLOYER, USER, USER_FEEDBACK, USER_HISTORY } from './user';\nimport SETTINGS from './settings';\nimport INVITES from './invites';\nimport { CATEGORY, PERK_CATEGORY, SUB_CATEGORY } from './category';\nimport SENTRY from './sentry';\nimport PERK_REDEEM_CODES from './perkRedeemCodes';\nimport TEST_ACCOUNTS from './testAccounts';\nimport STRIPE from './stripe';\nimport DISCOUNT_CODE from './discount';\nimport ROLE from './role';\nimport PERMISSION from './permission';\nimport AUTH from './auth';\nimport PROFILE from './profile';\nimport BUDGET from './budget';\nimport VOUCHER from './voucher';\nimport {\n  CAROUSEL,\n  BRAND_CAROUSEL,\n  CAROUSEL_SETTINGS,\n  BRAND_CAROUSEL_SETTINGS,\n  CUSTOM_CATEGORY_ICONS,\n} from './carousel';\nimport { CARD, CARD_SETTINGS, CREDIT_CARD } from './card';\nimport ORDER from './order';\nimport { APPS_INTEGRATIONS, MOBILE_APP_FORCE_EXCLUDE } from './mobileApp';\nimport { SLACK_BOT, SLACK } from './slack';\nimport MS_TEAMS from './msTeams';\nimport { PUSH_NOTIFICATIONS } from './notifications';\nimport MIGRATION from './migration';\nimport SETUP from './setup';\nimport CART from './cart';\n\nexport const MESSAGES = {\n  SETUP,\n  PERK,\n  CART,\n  GIVE_PERKS,\n  GROUP,\n  EMAIL_DOMAIN,\n  DISCOUNT_CODE,\n  GENERAL,\n  USER,\n  USER_HISTORY,\n  SETTINGS,\n  INVITES,\n  SLACK,\n  SLACK_BOT,\n  CATEGORY,\n  SUB_CATEGORY,\n  SENTRY,\n  PERK_REDEEM_CODES,\n  TEST_ACCOUNTS,\n  STRIPE,\n  BLOCK_EMAIL_EXPRESSION,\n  MS_TEAMS,\n  PERK_APPROVAL_REQUEST,\n  ROLE,\n  PERMISSION,\n  AUTH,\n  PROFILE,\n  BUDGET,\n  EMPLOYEE,\n  VOUCHER,\n  CAROUSEL,\n  BRAND_CAROUSEL,\n  CARD,\n  CAROUSEL_SETTINGS,\n  BRAND_CAROUSEL_SETTINGS,\n  CARD_SETTINGS,\n  PERK_CLICK,\n  PERK_CATEGORY,\n  EMPLOYER,\n  USER_FEEDBACK,\n  VERIFY_PERK_REDEEM,\n  ORDER,\n  CREDIT_CARD,\n  CUSTOM_CATEGORY_ICONS,\n  PERK_INTEREST,\n  MOBILE_APP_FORCE_EXCLUDE,\n  APPS_INTEGRATIONS,\n  PUSH_NOTIFICATIONS,\n  MIGRATION,\n} as const;\n","export const PERK_CONFIG = {\n  PERKS_PER_PAGE: 9,\n} as const;\n\nexport const ROLE_CONFIG = {\n  ROLES_PER_PAGE: 9,\n} as const;\n","import type { IUser } from '@app-types/queryMutationTypes/user';\n\nexport const routeSearchParams = {\n  pageStep: 'p',\n} as const;\n\nexport const pagesInnerRoutes = {\n  profile: {\n    details: 'details',\n    edit: 'edit',\n  },\n} as const;\n\nexport const routeParams = {\n  perkEditId: ':perkEditId',\n  perkViewId: ':perkViewId',\n  perkIdIU: ':perkIdIU',\n  groupSlug: ':groupSlug',\n  brandVanityUrlOrId: ':brandVanityUrlOrId',\n  brandSubCat: ':brandSubCat',\n  brandPerkViewId: ':brandPerkViewId',\n  perkBenefitListCat: ':perkBenefitListCat',\n  perkBenefitListSubCat: ':perkBenefitListSubCat',\n  roleId: ':roleId',\n  permissionId: ':permissionId',\n} as const;\n\n// Please make sure to use unique and clear url params as now we can get them directly using \"useParam\" hook, avoid using duplicate params, (like, instead of \"slug\" for group, and category, use \"groupSlug\" & \"categorySlug\", make it unique and it will make our development work easy)\nexport const SHARED_ROUTES = {\n  APP_ROOT_URL: '/',\n  SIGN_IN_ROUTE: '/sign-in',\n  SIGN_UP_ROUTE: '/sign-up',\n  ONBOARDING_ROUTE: '/onboarding',\n  HOME: '/dashboard',\n  PROFILE: '/profile',\n  INVITATIONS: '/invitations',\n  PERK_INSIGHTS: '/perk-insights',\n  LOGOUT: '/logout',\n  PERK_MANAGEMENT: '/perk',\n  PERK_APPROVAL_REQUESTS: '/perk-approval-requests',\n  SINGLE_PERK: `/perk/${routeParams.perkViewId}`,\n  PERK_INTERESTED_USERS: `/perk/${routeParams.perkIdIU}/interested-users`,\n  PERK_APPROVAL_REQUEST_HISTORY: `/perk/${routeParams.perkIdIU}/approval-request-history`,\n  SINGLE_GROUP: `/group/${routeParams.groupSlug}`,\n  EDIT_PERK: `/perk/edit/${routeParams.perkEditId}`,\n  CATEGORIES: '/categories',\n  EMPLOYEES: '/employees',\n  MERCHANTS: '/merchants',\n  EDIT_EMPLOYEE_DASHBOARD: '/employee-dashboard',\n  GROUPS: '/groups',\n  IMPORT_EMPLOYEES: '/import-employees',\n  VERIFIED_MEMBER: '/verified-member',\n  INVALID_INVITE: '/invalid-invite',\n  CHECKOUT_SUCCESS: '/checkout-success',\n  CART: '/cart',\n  PURCHASES: '/purchases',\n  VERIFY_PERK_REDEEM: '/orders',\n  PERKS: '/perks',\n  EMPLOYERS: '/employers',\n  USERS: '/users',\n  MERCHANDIZE: `/organisation/${routeParams.brandVanityUrlOrId}`,\n  MERCHANDIZE_SUB: `/organisation/${routeParams.brandVanityUrlOrId}/${routeParams.brandSubCat}`,\n  SINGLE_PERK_BRAND: `/organisation/${routeParams.brandVanityUrlOrId}/perk/${routeParams.brandPerkViewId}`,\n  NEARBY_LOCATION: '/nearby-location',\n  NEARBY_LOCATION_CAT: `/nearby-location/${routeParams.perkBenefitListCat}`,\n  NEARBY_LOCATION_SUB_CAT: `/nearby-location/${routeParams.perkBenefitListCat}/${routeParams.perkBenefitListSubCat}`,\n  PERK_MANAGEMENT_CAT: `/${routeParams.perkBenefitListCat}`,\n  PERK_MANAGEMENT_SUBCAT: `/${routeParams.perkBenefitListCat}/${routeParams.perkBenefitListSubCat}`,\n  REFERRALS: '/referrals',\n  SETTINGS: '/settings',\n  EMAIL_DOMAINS: '/email-domains',\n  BLOCK_EMAIL_EXPRESSIONS: '/block-email-expressions',\n  USER_HISTORY: '/user-history',\n  PERK_CATEGORIES: '/perk-categories',\n  BENEFIT_CATEGORIES: '/benefit-categories',\n  LANDIND_PAGE: (userData: IUser): string =>\n    userData?.employerId\n      ? userData?.employerId?.employeesLandingCategory?.categorySlug\n        ? `/${userData?.employerId?.employeesLandingCategory?.categorySlug}`\n        : SHARED_ROUTES.PERKS\n      : SHARED_ROUTES.PERKS,\n  EMAIL_SIGNIN_VERIFY: '/callback/verification',\n  PAGE_NOT_FOUND: '/page-not-found',\n  WILD_CARD: '*',\n  APP_ROOT_SIGN_UP_MODAL: '/?type=signup',\n  INTEGRATIONS_LIST_PAGE: '/integrations',\n  PUSH_NOTIFICATIONS_PAGE: '/push-notifications',\n  PUSH_NOTIFICATION_GROUPS: '/push-notification-groups',\n  SINGLE_PUSH_NOTIFICATION_GROUP: '/push-notification-groups/:groupSlug',\n} as const;\n","export const organizationsFcmTopicIdentifiers = {\n  mtu: 'mtuOrganizationFcmTopic',\n  doterra: 'doterraOrganizationFcmTopic',\n  republicofwork: 'republicofworkOrganizationFcmTopic',\n  everymancork: 'everymancorkOrganizationFcmTopic',\n} as const;\n","import { PermissionsEnum } from '@app-enums/permissions';\nimport {\n  hasPermission,\n  IHasRequiredPermissions,\n  PermissionCheckModeEnum,\n  validateExcludedPermissions,\n  validateRequiredPermissions,\n  validateUserPermissions,\n} from 'ts-buildkit';\n\nexport const hasPfPermission = ({\n  permission,\n  userPermissions,\n}: {\n  userPermissions: PermissionsEnum[];\n  permission: PermissionsEnum;\n}): boolean => hasPermission<PermissionsEnum>({ permission, userPermissions });\n\nexport const validatePfRequiredPermissions = ({\n  userPermissions,\n  requiredPermissions = [],\n  checkModeForRequiredPermissions = PermissionCheckModeEnum.every,\n}: {\n  userPermissions: Array<PermissionsEnum>;\n  requiredPermissions?: Array<PermissionsEnum>;\n  checkModeForRequiredPermissions?: PermissionCheckModeEnum;\n}): boolean =>\n  validateRequiredPermissions<PermissionsEnum>({\n    userPermissions,\n    checkModeForRequiredPermissions,\n    requiredPermissions,\n  });\n\nexport const validatePfExcludedPermissions = ({\n  userPermissions,\n  excludedPermissions = [], // to check for permissions that, if present, will hide the component\n  checkModeForExcludedPermissions = PermissionCheckModeEnum.every,\n}: {\n  userPermissions: Array<PermissionsEnum>;\n  excludedPermissions?: Array<PermissionsEnum>;\n  checkModeForExcludedPermissions?: PermissionCheckModeEnum;\n}): boolean =>\n  validateExcludedPermissions<PermissionsEnum>({\n    userPermissions,\n    checkModeForExcludedPermissions,\n    excludedPermissions,\n  });\n\nexport const validatePfUserPermissions = ({\n  userPermissions,\n  requiredPermissions = [],\n  excludedPermissions = [], // to check for permissions that, if present, will hide the component\n  checkModeForRequiredPermissions = PermissionCheckModeEnum.every,\n  checkModeForExcludedPermissions = PermissionCheckModeEnum.every,\n}: IHasRequiredPermissions<PermissionsEnum>): boolean =>\n  validateUserPermissions<PermissionsEnum>({\n    userPermissions,\n    checkModeForExcludedPermissions,\n    checkModeForRequiredPermissions,\n    excludedPermissions,\n    requiredPermissions,\n  });\n","import { DateFormatEnum } from '@app-enums/general';\nimport {\n  BrandLogoEnum,\n  EnvironmentTypeEnum,\n  IntegrationStateEnum,\n  SortOrderEnum,\n  StatusEnum,\n  UserTypeEnum,\n} from '@app-enums/index';\nimport { ISortOptions } from '@app-types/general';\nimport { IPerk } from '@app-types/queryMutationTypes/perk';\nimport { Loc } from '@app-types/queryMutationTypes/profile';\nimport { IPfFoBUser, IUser } from '@app-types/queryMutationTypes/user';\nimport {\n  COMMUNICATION_CONFIG,\n  DATE_FORMATS,\n} from '@app-utils/constants/generic';\nimport dayjs, { ManipulateType } from 'dayjs';\nimport {\n  calcCrow,\n  generateCouponCode,\n  generateSlug,\n  validateInputCharacters,\n} from 'ts-buildkit';\n\nexport const getCompanyText = (userData: IUser): string => {\n  if (userData?.type === UserTypeEnum.merchant) return 'Business';\n  if (userData?.type === UserTypeEnum.studentBody) return 'College';\n  if (userData?.type === UserTypeEnum.employer) return 'Company';\n\n  if (userData?.type === UserTypeEnum.employee && userData?.employerId?._id) {\n    if (\n      userData?.employerId?.type === UserTypeEnum.employer ||\n      userData?.employerId?.type === UserTypeEnum.merchant ||\n      (userData?.employerId?.type === UserTypeEnum.studentBody &&\n        userData?.isSuperUser)\n    )\n      return 'Member of staff';\n    return 'Student';\n  } else {\n    return 'Company';\n  }\n};\n\nexport const distanceBusiness = (\n  loc?: Array<Loc>,\n  curr?: Loc\n): number | false => {\n  const location: Array<number> = [];\n\n  loc?.forEach((_loc) => {\n    const distance = calcCrow(\n      curr?.lat ?? 0,\n      curr?.lng ?? 0,\n      _loc?.lat ? _loc?.lat : 0,\n      _loc?.lng ? _loc?.lng : 0\n    );\n    location?.push(distance);\n  });\n\n  location?.sort((a: number, b: number) => {\n    return a - b;\n  });\n  return location?.[0];\n};\n\nexport const getNearestSortedBusiness = async ({\n  curr,\n  locBusiness,\n  nearby,\n  region,\n  sort,\n}: {\n  curr: Loc;\n  locBusiness: Array<IUser>;\n  nearby: any;\n  sort: any;\n  region: string;\n}) => {\n  const businessCoordinates = [];\n\n  if (locBusiness) {\n    for (const cord of locBusiness) {\n      if (cord?.locations?.length === 0) {\n        const _distance =\n          nearby && sort?.distance === -1 ? 0 : nearby ? 100000000 : 0;\n        businessCoordinates?.push({\n          ...cord,\n          distance: Number(_distance),\n\n          region,\n        });\n      } else {\n        const distance = distanceBusiness(cord?.locations, curr);\n        const coord = { ...cord, distance, region };\n        businessCoordinates?.push(coord);\n      }\n    }\n  }\n\n  if (nearby || sort?.distance === 1) {\n    businessCoordinates?.sort((a, b) => {\n      return Number(a?.distance) - Number(b?.distance);\n    });\n  }\n  if (nearby && sort?.distance === -1) {\n    businessCoordinates?.sort((a, b) => {\n      return Number(b?.distance) - Number(a?.distance);\n    });\n  }\n\n  return businessCoordinates;\n};\n\nexport const isMerchantEmployee = (user: IUser): boolean => {\n  return user?.employerId?.type === UserTypeEnum.merchant;\n};\n\nexport const isTestAccount = (\n  user: IUser,\n  testAccountEmails: string[]\n): boolean => {\n  const userEmail = user?.email;\n  if (testAccountEmails?.length && userEmail) {\n    const result = testAccountEmails?.includes(userEmail);\n    return result;\n  } else {\n    return false;\n  }\n};\n\nexport const isScheduledPerk = <\n  Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend\n>(\n  perk: IPerk<Env> | null\n): boolean => {\n  if (!perk?.displayFromDate) return false;\n  const scheduled =\n    dayjs(perk?.displayFromDate?.toString())?.isAfter(dayjs()) ?? false;\n\n  return scheduled;\n};\n\nexport const isScheduledPerkV2 = <\n  Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend\n>(\n  perk: IPerk<Env> | null\n): boolean => {\n  if (!perk) return false; // If the perk is null or undefined, it's not scheduled.\n\n  const todayStart = dayjs()?.startOf('day'); // Today's date at 00:00:00\n  const displayFromDate = perk?.displayFromDate\n    ? dayjs(perk?.displayFromDate?.toString()) // Ensure dayjs can handle the date\n    : null;\n\n  const isScheduled =\n    !perk?.alwaysDisplay && displayFromDate?.isAfter(todayStart); // Compare against the start of today.\n\n  return Boolean(isScheduled);\n};\n\nexport const isEndingSoonPerk = <\n  Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend\n>(\n  perk: IPerk<Env> | null\n): boolean => {\n  if (perk?.alwaysDisplay || !perk?.displayUntilDate) return false;\n  let dateTwoWeeksLater = dayjs(dayjs()).add(14, 'days');\n  const ending =\n    !perk?.alwaysDisplay &&\n    dayjs(perk?.displayUntilDate?.toString())?.isBefore(dateTwoWeeksLater);\n  return ending;\n};\n\nexport const isEndedPerk = <\n  Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend\n>(\n  perk: IPerk<Env> | null\n): boolean => {\n  if (perk?.alwaysDisplay || !perk?.displayUntilDate) return false;\n  const ended =\n    !perk?.alwaysDisplay &&\n    dayjs(perk?.displayUntilDate?.toString())?.isBefore(dayjs());\n  return ended;\n};\n\nexport const currentPerkStatus = <\n  Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend\n>(\n  perk: IPerk<Env> | null\n): StatusEnum => {\n  let status = StatusEnum.live;\n\n  if (perk?.status === StatusEnum.draft) {\n    status = StatusEnum.draft;\n  } else if (perk?.status === StatusEnum.pendingApproval) {\n    status = StatusEnum.pendingApproval;\n  } else if (perk?.status === StatusEnum.disapproved) {\n    status = StatusEnum.disapproved;\n  } else if (isEndedPerk(perk)) {\n    status = StatusEnum.ended;\n  } else if (isScheduledPerk(perk)) {\n    status = StatusEnum.scheduled;\n  } else if (isEndingSoonPerk(perk)) {\n    status = StatusEnum.endingSoon;\n  }\n  return status;\n};\n\nexport const getPerkScheduledStatus = <\n  Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend\n>(\n  perk: IPerk<Env> | null\n): StatusEnum => {\n  const isEnded = isEndedPerk(perk);\n  if (!isScheduledPerk(perk) && !isEnded) {\n    return StatusEnum.live;\n  } else if (isEnded) {\n    return StatusEnum.ended;\n  } else {\n    return StatusEnum.scheduled;\n  }\n};\n\nexport const checkIntegrationIsAllowedAndItsState = (\n  userData: IUser\n): {\n  msTeamsIntegrationIsAllowed: boolean;\n  msTeamsIsConnected: boolean;\n  slackIntegrationIsAllowed?: boolean;\n  slackIsConnected?: boolean;\n  stripeIntegrationIsAllowed?: boolean;\n  slackIntegrationIsEnabled?: boolean;\n  microsoftTeamsIntegrationIsEnabled?: boolean;\n  userCanSendSlackNotifications?: boolean;\n  userCanSendMSTeamsNotifications?: boolean;\n} => {\n  const userType = userData?.type;\n  const isEmployee = userType === UserTypeEnum.employee;\n  const isSuperUserEmployee = isEmployee && userData?.isSuperUser;\n  const isSimpleEmployee = isEmployee && !isSuperUserEmployee;\n\n  // Check if integrations are allowed\n  let msTeamsIntegrationIsAllowed = userData?.allowMSTeamsConnection ?? false;\n  let slackIntegrationIsAllowed = userData?.allowSlackConnection;\n  let stripeIntegrationIsAllowed = userData?.allowStripeConnection;\n\n  if (isSuperUserEmployee || isSimpleEmployee) {\n    const orgOwnerUser = userData?.employerId;\n    msTeamsIntegrationIsAllowed = orgOwnerUser?.allowMSTeamsConnection!;\n    slackIntegrationIsAllowed = orgOwnerUser?.allowSlackConnection;\n    stripeIntegrationIsAllowed = orgOwnerUser?.allowStripeConnection;\n  }\n\n  // Check integrations connection status\n  const msTeamsIsConnected = userData?.msTeamsConDetails != null;\n  const slackIsConnected =\n    (userData?.slackConnectionDetails?.app_id ?? null) != null;\n\n  const slackIntegrationIsEnabled =\n    userData?.slackIntegrationState &&\n    userData?.slackIntegrationState === IntegrationStateEnum.enabled;\n  const microsoftTeamsIntegrationIsEnabled =\n    userData?.microsoftTeamsIntegrationState &&\n    userData?.microsoftTeamsIntegrationState === IntegrationStateEnum.enabled;\n\n  const userCanSendSlackNotifications =\n    slackIntegrationIsEnabled && slackIsConnected;\n  const userCanSendMSTeamsNotifications =\n    msTeamsIsConnected && microsoftTeamsIntegrationIsEnabled;\n\n  return {\n    msTeamsIntegrationIsAllowed,\n    msTeamsIsConnected,\n    slackIntegrationIsAllowed,\n    slackIsConnected,\n    stripeIntegrationIsAllowed,\n    slackIntegrationIsEnabled,\n    microsoftTeamsIntegrationIsEnabled,\n    userCanSendSlackNotifications,\n    userCanSendMSTeamsNotifications,\n  };\n};\n\nexport const getDefaultBrandLogoType = (_userData: IUser): BrandLogoEnum => {\n  let brandLogoType = BrandLogoEnum.noLogo;\n\n  // if current user is merchant or merchant employee use profile logo as default\n  if (\n    (_userData?.type === UserTypeEnum.merchant && _userData?.brandLogo) ||\n    (isMerchantEmployee(_userData) && _userData?.employerId?.brandLogo)\n  ) {\n    brandLogoType = BrandLogoEnum.useProfileLogo;\n  }\n\n  return brandLogoType;\n};\n\n// Just for reference, will be removed after testing getPhoneAttempts\nexport const getPhoneAttemptsV1 = (\n  user: IUser\n): {\n  invalid: boolean;\n  timeDiff: string;\n} => {\n  const attemptDate = new Date(user?.lastPhoneAttempt!);\n  const futureDate = new Date(\n    attemptDate.getTime() +\n      COMMUNICATION_CONFIG.PHONE_ATTEMPTS_TIME_LIMIT_IN_MINUTES * 60000\n  );\n  const nowDate = new Date();\n  const diff = Math.abs(\n    new Date(nowDate).getTime() - new Date(futureDate).getTime()\n  );\n  const timeDiffInMinutes = Math.floor(diff / 1000 / 60);\n  const timeDiffInSeconds = Math.floor(diff / 1000);\n  let timeDiff: string;\n  if (timeDiffInMinutes === 1) {\n    timeDiff = timeDiffInMinutes.toString() + ' minute';\n  } else if (timeDiffInMinutes < 1) {\n    timeDiff = timeDiffInSeconds.toString() + ' seconds';\n  } else {\n    timeDiff = timeDiffInMinutes.toString() + ' minutes';\n  }\n\n  return { invalid: nowDate < futureDate, timeDiff };\n};\n\n/**\n * Calculates the time difference for phone attempts and checks if the attempt is invalid.\n *\n * @param {Object} user - The user object containing the last phone attempt timestamp.\n * @param {string | Date} user?.lastPhoneAttempt - The timestamp of the user's last phone attempt.\n * @returns {{ invalid: boolean; timeDiff: string }} - An object indicating whether the attempt is invalid and the time difference.\n */\nexport const getPhoneAttempts = (\n  user: IPfFoBUser | null\n): { invalid: boolean; timeDiff: string } => {\n  const attemptDate = user?.lastPhoneAttempt\n    ? new Date(user?.lastPhoneAttempt)\n    : new Date();\n  const futureDate = new Date(\n    attemptDate.getTime() +\n      COMMUNICATION_CONFIG.PHONE_ATTEMPTS_TIME_LIMIT_IN_MINUTES * 60 * 1000\n  );\n  const nowDate = new Date();\n\n  const diffInMillis = Math.abs(futureDate.getTime() - nowDate.getTime());\n\n  const diffInSeconds = Math.floor(diffInMillis / 1000);\n\n  const diffInMinutes = Math.floor(diffInSeconds / 60);\n\n  let timeDiff: string;\n  if (diffInMinutes > 1) {\n    timeDiff = `${diffInMinutes} minutes`;\n  } else if (diffInMinutes === 1) {\n    timeDiff = `${diffInMinutes} minute`;\n  } else {\n    timeDiff = `${diffInSeconds} seconds`;\n  }\n\n  return { invalid: nowDate < futureDate, timeDiff };\n};\n\nexport const getSortQuery = (sort: ISortOptions) => {\n  if (Object.keys(sort || {}).length) {\n    const result: Record<string, number> = {};\n    result[sort?.order ? sort?.field ?? '_id' : '_id'] =\n      sort?.order === SortOrderEnum.ascend ? 1 : -1;\n\n    return result;\n  } else {\n    return { _id: -1 };\n  }\n};\n\nexport const isSuperUser = <\n  Env extends EnvironmentTypeEnum = EnvironmentTypeEnum.frontend\n>(\n  user: IUser<Env>\n): boolean => {\n  return (user?.type === UserTypeEnum.employee && user?.isSuperUser) ?? false;\n};\n\nexport const generatePfCouponCode = (): string => {\n  return generateCouponCode({ parts: 1, partLen: 6 }).toString().toUpperCase();\n};\n\nexport const getPerkViewUrl = ({\n  perkId,\n  userSubDomain,\n  frontEndUrl,\n}: {\n  perkId: string;\n  userSubDomain: string;\n  frontEndUrl?: string;\n}) => {\n  return `${userSubDomain || frontEndUrl}/perk/${perkId}`;\n};\n\nexport const addTimeToDate = (\n  time = 3,\n  unit: ManipulateType = 'minutes',\n  date: Date = new Date()\n): string => {\n  return new Date(dayjs(date).add(time, unit).toString()).getTime().toString();\n};\n\nexport const formatDate = ({\n  dateString,\n  formate = DateFormatEnum.default,\n}: {\n  dateString: string;\n  formate?: DateFormatEnum;\n}): string => {\n  switch (formate) {\n    case DateFormatEnum.default:\n      return dayjs(dateString).format(DATE_FORMATS.DEFAULT);\n\n    case DateFormatEnum.dateTimeWithAt:\n      return `${dayjs(dateString).format(DATE_FORMATS.DEFAULT)} at ${dayjs(\n        dateString\n      ).format(DATE_FORMATS.TIME)}`;\n\n    case DateFormatEnum.dateTimeWithDash:\n      return `${dayjs(dateString).format(DATE_FORMATS.DEFAULT)} - ${dayjs(\n        dateString\n      ).format(DATE_FORMATS.TIME)}`;\n  }\n};\n\nexport const formatCompanyName = ({\n  companyName,\n}: {\n  companyName?: string;\n}) => {\n  const { validatedValue } = validateInputCharacters({\n    input: companyName ?? '',\n    type: 'name',\n  });\n\n  return {\n    companyName: validatedValue,\n    vanityUrl: generateSlug({ text: validatedValue }),\n  };\n};\n","// Organization Types\nexport const ORGANIZATION_TYPES = {\n  COMPANY: 'company',\n  MERCHANT: 'merchant',\n  COLLEGE: 'college',\n  COMMUNITY: 'community',\n  OTHER: 'other',\n} as const;\n\nexport type OrganizationType = typeof ORGANIZATION_TYPES[keyof typeof ORGANIZATION_TYPES];\n\n// Verified Status\nexport const VERIFIED_STATUS = {\n  UNVERIFIED: 'unverified',\n  PENDING: 'pending',\n  VERIFIED: 'verified',\n  OFFICIAL: 'official',\n} as const;\n\nexport type VerifiedStatus = typeof VERIFIED_STATUS[keyof typeof VERIFIED_STATUS];\n\n// Visibility\nexport const VISIBILITY = {\n  DISCOVERABLE: 'discoverable',\n  LIMITED: 'limited',\n  PRIVATE: 'private',\n} as const;\n\nexport type Visibility = typeof VISIBILITY[keyof typeof VISIBILITY];\n","// Member Roles\nexport const MEMBER_ROLES = {\n  OWNER: 'owner',\n  ADMIN: 'admin',\n  MODERATOR: 'moderator',\n  MEMBER: 'member',\n} as const;\n\nexport type MemberRole = typeof MEMBER_ROLES[keyof typeof MEMBER_ROLES];\n\n// Role Hierarchy (higher number = more permissions)\nexport const ROLE_HIERARCHY: Record<MemberRole, number> = {\n  [MEMBER_ROLES.OWNER]: 4,\n  [MEMBER_ROLES.ADMIN]: 3,\n  [MEMBER_ROLES.MODERATOR]: 2,\n  [MEMBER_ROLES.MEMBER]: 1,\n};\n\n// Membership Status\nexport const MEMBERSHIP_STATUS = {\n  PENDING: 'pending',\n  ACTIVE: 'active',\n  SUSPENDED: 'suspended',\n  REJECTED: 'rejected',\n} as const;\n\nexport type MembershipStatus = typeof MEMBERSHIP_STATUS[keyof typeof MEMBERSHIP_STATUS];\n\n// Join Methods\nexport const JOIN_METHODS = {\n  DOMAIN_AUTO: 'domain_auto',\n  INVITE: 'invite',\n  MANUAL_REQUEST: 'manual_request',\n  ADMIN_ADDED: 'admin_added',\n  OWNER_CREATED: 'owner_created',\n} as const;\n\nexport type JoinMethod = typeof JOIN_METHODS[keyof typeof JOIN_METHODS];\n","// Connection Status\nexport const CONNECTION_STATUS = {\n  PENDING: 'pending',\n  APPROVED: 'approved',\n  PAUSED: 'paused',\n  REJECTED: 'rejected',\n} as const;\n\nexport type ConnectionStatus = typeof CONNECTION_STATUS[keyof typeof CONNECTION_STATUS];\n\n// Connection Type\nexport const CONNECTION_TYPES = {\n  PARTNER: 'partner',\n  NEARBY: 'nearby',\n  COMMUNITY: 'community',\n  VENDOR: 'vendor',\n  CUSTOMER: 'customer',\n  OTHER: 'other',\n} as const;\n\nexport type ConnectionType = typeof CONNECTION_TYPES[keyof typeof CONNECTION_TYPES];\n","// User Status\nexport const USER_STATUS = {\n  ACTIVE: 'active',\n  SUSPENDED: 'suspended',\n  DEACTIVATED: 'deactivated',\n} as const;\n\nexport type UserStatus = typeof USER_STATUS[keyof typeof USER_STATUS];\n\n// Auth Providers\nexport const AUTH_PROVIDERS = {\n  EMAIL: 'email',\n  GOOGLE: 'google',\n  APPLE: 'apple',\n  MS_TEAMS: 'ms_teams',\n  SLACK: 'slack',\n} as const;\n\nexport type AuthProvider = typeof AUTH_PROVIDERS[keyof typeof AUTH_PROVIDERS];\n","// Audience Scope\nexport const AUDIENCE_SCOPES = {\n  PUBLIC: 'public',\n  MEMBERS_ONLY: 'members_only',\n  ORG_NETWORK: 'org_network',\n} as const;\n\nexport type AudienceScope = typeof AUDIENCE_SCOPES[keyof typeof AUDIENCE_SCOPES];\n\n// Perk Status\nexport const PERK_STATUS = {\n  DRAFT: 'draft',\n  ACTIVE: 'active',\n  PAUSED: 'paused',\n  EXPIRED: 'expired',\n} as const;\n\nexport type PerkStatus = typeof PERK_STATUS[keyof typeof PERK_STATUS];\n\n// Approval Status\nexport const APPROVAL_STATUS = {\n  DRAFT: 'draft',\n  PENDING: 'pending',\n  APPROVED: 'approved',\n  REJECTED: 'rejected',\n} as const;\n\nexport type ApprovalStatus = typeof APPROVAL_STATUS[keyof typeof APPROVAL_STATUS];\n","// Digest Frequency\nexport const DIGEST_FREQUENCY = {\n  INSTANT: 'instant',\n  DAILY: 'daily',\n  WEEKLY: 'weekly',\n  NEVER: 'never',\n} as const;\n\nexport type DigestFrequency = typeof DIGEST_FREQUENCY[keyof typeof DIGEST_FREQUENCY];\n\n// Notification Channels\nexport const NOTIFICATION_CHANNELS = {\n  EMAIL: 'email',\n  PUSH: 'push',\n  IN_APP: 'inApp',\n  SLACK: 'slack',\n  MS_TEAMS: 'msTeams',\n} as const;\n\nexport type NotificationChannel = typeof NOTIFICATION_CHANNELS[keyof typeof NOTIFICATION_CHANNELS];\n","// Permission group definitions (7 groups, 27 permissions total)\nexport const PERMISSION_GROUPS = {\n  ORGANIZATION: ['org:view', 'org:edit', 'org:delete', 'org:transfer'],\n  MEMBERSHIP: [\n    'member:view',\n    'member:invite',\n    'member:approve',\n    'member:remove',\n    'member:suspend',\n    'member:change_role',\n  ],\n  PERK: ['perk:view', 'perk:create', 'perk:edit_own', 'perk:edit_all', 'perk:delete', 'perk:approve'],\n  CONNECTION: ['connection:view', 'connection:request', 'connection:approve', 'connection:manage'],\n  GROUP: ['group:view', 'group:create', 'group:manage'],\n  ANALYTICS: ['analytics:view', 'analytics:export'],\n  INTEGRATION: ['integration:view', 'integration:manage'],\n} as const;\n\n// Permission union type (derived from PERMISSION_GROUPS)\nexport type Permission = (typeof PERMISSION_GROUPS)[keyof typeof PERMISSION_GROUPS][number];\n\n// All permissions array (for validation) - 27 total\nexport const ALL_PERMISSIONS: Permission[] = Object.values(PERMISSION_GROUPS).flat() as Permission[];\n","import type { MemberRole } from '../memberships/enums';\nimport type { Permission } from './permissions';\nimport { PERMISSION_GROUPS } from './permissions';\n\n// Role-permission matrix\n// Counts: owner (27), admin (25), moderator (13), member (5)\nexport const ROLE_PERMISSIONS: Record<MemberRole, readonly Permission[]> = {\n  // Owner: ALL permissions (27)\n  owner: [\n    ...PERMISSION_GROUPS.ORGANIZATION,\n    ...PERMISSION_GROUPS.MEMBERSHIP,\n    ...PERMISSION_GROUPS.PERK,\n    ...PERMISSION_GROUPS.CONNECTION,\n    ...PERMISSION_GROUPS.GROUP,\n    ...PERMISSION_GROUPS.ANALYTICS,\n    ...PERMISSION_GROUPS.INTEGRATION,\n  ],\n\n  // Admin: All except org:delete, org:transfer (25)\n  admin: [\n    'org:view',\n    'org:edit',\n    ...PERMISSION_GROUPS.MEMBERSHIP,\n    ...PERMISSION_GROUPS.PERK,\n    ...PERMISSION_GROUPS.CONNECTION,\n    ...PERMISSION_GROUPS.GROUP,\n    ...PERMISSION_GROUPS.ANALYTICS,\n    ...PERMISSION_GROUPS.INTEGRATION,\n  ],\n\n  // Moderator: Limited permissions (13)\n  moderator: [\n    'org:view',\n    'member:view',\n    'member:invite',\n    'member:approve',\n    'perk:view',\n    'perk:create',\n    'perk:edit_own',\n    'connection:view',\n    ...PERMISSION_GROUPS.GROUP,\n    'analytics:view',\n    'integration:view',\n  ],\n\n  // Member: View-only permissions (5)\n  member: ['org:view', 'member:view', 'perk:view', 'connection:view', 'group:view'],\n} as const;\n","import type { MemberRole } from '../memberships/enums';\nimport { MEMBER_ROLES, ROLE_HIERARCHY } from '../memberships/enums';\nimport type { Permission } from './permissions';\nimport { ALL_PERMISSIONS } from './permissions';\nimport { ROLE_PERMISSIONS } from './roles';\n\n/**\n * Check if a role has a specific permission.\n */\nexport function hasPermission(role: MemberRole, permission: Permission): boolean {\n  return ROLE_PERMISSIONS[role].includes(permission);\n}\n\n/**\n * Check if a role has at least one of the given permissions.\n */\nexport function hasAnyPermission(role: MemberRole, permissions: Permission[]): boolean {\n  return permissions.some((p) => hasPermission(role, p));\n}\n\n/**\n * Check if a role has all of the given permissions.\n */\nexport function hasAllPermissions(role: MemberRole, permissions: Permission[]): boolean {\n  return permissions.every((p) => hasPermission(role, p));\n}\n\n/**\n * Get all permissions for a role.\n */\nexport function getPermissions(role: MemberRole): Permission[] {\n  return [...ROLE_PERMISSIONS[role]];\n}\n\n/**\n * Check if roleA is higher than roleB in the hierarchy.\n */\nexport function isHigherRole(roleA: MemberRole, roleB: MemberRole): boolean {\n  return ROLE_HIERARCHY[roleA] > ROLE_HIERARCHY[roleB];\n}\n\n/**\n * Check if actor can modify target's role (strict hierarchy).\n * Can only modify roles lower than your own.\n */\nexport function canModifyRole(actorRole: MemberRole, targetRole: MemberRole): boolean {\n  return isHigherRole(actorRole, targetRole);\n}\n\n/**\n * Check if actor can assign a specific role to someone.\n * Explicit assignment rules per spec:\n * - owner can assign: admin, moderator, member\n * - admin can assign: moderator, member\n * - moderator can assign: none\n * - member can assign: none\n */\nexport function canAssignRole(actorRole: MemberRole, targetRole: MemberRole): boolean {\n  if (actorRole === 'owner') {\n    return targetRole !== 'owner';\n  }\n  if (actorRole === 'admin') {\n    return targetRole === 'moderator' || targetRole === 'member';\n  }\n  return false;\n}\n\n/**\n * Get all roles that an actor can assign.\n */\nexport function getAssignableRoles(actorRole: MemberRole): MemberRole[] {\n  const allRoles = Object.values(MEMBER_ROLES) as MemberRole[];\n  return allRoles.filter((role) => canAssignRole(actorRole, role));\n}\n\n/**\n * Type guard to check if a string is a valid Permission.\n */\nexport function isValidPermission(permission: string): permission is Permission {\n  return ALL_PERMISSIONS.includes(permission as Permission);\n}\n\n/**\n * Get the minimum required role for a permission.\n * Returns the lowest role that has this permission.\n */\nexport function getRequiredRole(permission: Permission): MemberRole {\n  const roles: MemberRole[] = ['member', 'moderator', 'admin', 'owner'];\n  for (const role of roles) {\n    if (hasPermission(role, permission)) {\n      return role;\n    }\n  }\n  return 'owner'; // Fallback (should never reach for valid permissions)\n}\n"]}