@escapenavigator/types 2.0.34 → 2.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/admin/aggregator-order/create-aggregator-order.dto.d.ts +1 -0
  2. package/dist/agregator/agregator-questroom.ro.d.ts +2 -0
  3. package/dist/agregator/agregator-questroom.ro.js +5 -0
  4. package/dist/certificate-sale/certificate-sale.ro.d.ts +6 -0
  5. package/dist/certificate-sale/certificate-sale.ro.js +4 -0
  6. package/dist/certificate-uploaded/certificate-uploaded.ro.d.ts +1 -1
  7. package/dist/client/client.ro.d.ts +13 -0
  8. package/dist/client/client.ro.js +21 -0
  9. package/dist/constants/uploading/upload-bookeo-certificate-rows.js +2 -2
  10. package/dist/constants/uploading/upload-certificate-rows.js +1 -1
  11. package/dist/email-builder/email-content.dto.d.ts +26 -0
  12. package/dist/email-builder/email-content.dto.js +62 -0
  13. package/dist/email-builder/index.d.ts +81 -0
  14. package/dist/email-builder/index.js +89 -1
  15. package/dist/emails/index.d.ts +25 -2
  16. package/dist/location/create-location.dto.d.ts +2 -0
  17. package/dist/location/create-location.dto.js +7 -0
  18. package/dist/location/location-light.ro.d.ts +3 -1
  19. package/dist/location/location-light.ro.js +6 -1
  20. package/dist/location/update-location-for-admin.dto.d.ts +2 -0
  21. package/dist/location/update-location-for-admin.dto.js +7 -0
  22. package/dist/log/log-title.enum.d.ts +3 -0
  23. package/dist/log/log-title.enum.js +3 -0
  24. package/dist/loyalty/adjust-bonus.dto.d.ts +14 -0
  25. package/dist/loyalty/adjust-bonus.dto.js +35 -0
  26. package/dist/loyalty/assign-client-tier.dto.d.ts +9 -0
  27. package/dist/loyalty/assign-client-tier.dto.js +29 -0
  28. package/dist/loyalty/client-loyalty.ro.d.ts +30 -0
  29. package/dist/loyalty/client-loyalty.ro.js +71 -0
  30. package/dist/loyalty/enum/loyalty-bonus-type.enum.d.ts +13 -0
  31. package/dist/loyalty/enum/loyalty-bonus-type.enum.js +17 -0
  32. package/dist/loyalty/enum/loyalty-history-mode.enum.d.ts +18 -0
  33. package/dist/loyalty/enum/loyalty-history-mode.enum.js +22 -0
  34. package/dist/loyalty/enum/loyalty-metric.enum.d.ts +12 -0
  35. package/dist/loyalty/enum/loyalty-metric.enum.js +16 -0
  36. package/dist/loyalty/enum/loyalty-program-type.enum.d.ts +12 -0
  37. package/dist/loyalty/enum/loyalty-program-type.enum.js +16 -0
  38. package/dist/loyalty/enum/loyalty-stacking.enum.d.ts +14 -0
  39. package/dist/loyalty/enum/loyalty-stacking.enum.js +18 -0
  40. package/dist/loyalty/enum/loyalty-tier-color.enum.d.ts +16 -0
  41. package/dist/loyalty/enum/loyalty-tier-color.enum.js +20 -0
  42. package/dist/loyalty/enum/loyalty-tier-source.enum.d.ts +13 -0
  43. package/dist/loyalty/enum/loyalty-tier-source.enum.js +17 -0
  44. package/dist/loyalty/loyalty-bonus.ro.d.ts +20 -0
  45. package/dist/loyalty/loyalty-bonus.ro.js +55 -0
  46. package/dist/loyalty/loyalty-presets.d.ts +45 -0
  47. package/dist/loyalty/loyalty-presets.js +30 -0
  48. package/dist/loyalty/loyalty-preview.dto.d.ts +19 -0
  49. package/dist/loyalty/loyalty-preview.dto.js +64 -0
  50. package/dist/loyalty/loyalty-preview.ro.d.ts +20 -0
  51. package/dist/loyalty/loyalty-preview.ro.js +53 -0
  52. package/dist/loyalty/loyalty-settings.dto.d.ts +51 -0
  53. package/dist/loyalty/loyalty-settings.dto.js +103 -0
  54. package/dist/loyalty/loyalty-settings.ro.d.ts +33 -0
  55. package/dist/loyalty/loyalty-settings.ro.js +67 -0
  56. package/dist/loyalty/loyalty-tier.dto.d.ts +33 -0
  57. package/dist/loyalty/loyalty-tier.dto.js +69 -0
  58. package/dist/loyalty/loyalty-tier.ro.d.ts +12 -0
  59. package/dist/loyalty/loyalty-tier.ro.js +42 -0
  60. package/dist/loyalty/pay-with-bonus.dto.d.ts +10 -0
  61. package/dist/loyalty/pay-with-bonus.dto.js +36 -0
  62. package/dist/openapi/order-groups/openapi-batch-create-preorder.dto.d.ts +3 -3
  63. package/dist/openapi/orders/openapi-order.ro.d.ts +12 -0
  64. package/dist/openapi/orders/openapi-order.ro.js +8 -0
  65. package/dist/openapi/profiles/enum/openapi-certificate-status.enum.d.ts +29 -0
  66. package/dist/openapi/profiles/enum/openapi-certificate-status.enum.js +38 -0
  67. package/dist/openapi/profiles/openapi-annul-certificate.dto.d.ts +3 -0
  68. package/dist/openapi/profiles/openapi-annul-certificate.dto.js +29 -0
  69. package/dist/openapi/profiles/openapi-certificate.ro.d.ts +33 -0
  70. package/dist/openapi/profiles/openapi-certificate.ro.js +195 -0
  71. package/dist/openapi/profiles/openapi-create-certificate.dto.d.ts +24 -0
  72. package/dist/openapi/profiles/openapi-create-certificate.dto.js +208 -0
  73. package/dist/openapi/slots/openapi-widget-slot.ro.d.ts +3 -0
  74. package/dist/openapi/slots/openapi-widget-slot.ro.js +24 -2
  75. package/dist/openapi/upsellings/openapi-upselling.ro.d.ts +1 -0
  76. package/dist/openapi/upsellings/openapi-upselling.ro.js +4 -0
  77. package/dist/order/order.ro.d.ts +23 -1
  78. package/dist/order/order.ro.js +19 -0
  79. package/dist/order-discount/enum/order-discount-source.enum.d.ts +10 -0
  80. package/dist/order-discount/enum/order-discount-source.enum.js +14 -0
  81. package/dist/packages/book-package.dto.d.ts +3 -0
  82. package/dist/packages/book-package.dto.js +9 -0
  83. package/dist/packages/create-package.dto.d.ts +23 -0
  84. package/dist/packages/create-package.dto.js +81 -1
  85. package/dist/packages/package-addon.dto.d.ts +5 -0
  86. package/dist/packages/package-addon.dto.js +31 -0
  87. package/dist/packages/package-audience.enum.d.ts +6 -0
  88. package/dist/packages/package-audience.enum.js +10 -0
  89. package/dist/packages/package-feature.dto.d.ts +12 -0
  90. package/dist/packages/package-feature.dto.js +41 -0
  91. package/dist/packages/package-pricing-mode.enum.d.ts +14 -0
  92. package/dist/packages/package-pricing-mode.enum.js +18 -0
  93. package/dist/packages/package.ro.d.ts +14 -0
  94. package/dist/packages/package.ro.js +48 -0
  95. package/dist/profile/birthday-marketing/birthday-marketing.dto.d.ts +2 -2
  96. package/dist/profile/birthday-marketing/birthday-marketing.dto.js +3 -1
  97. package/dist/profile/company-ai-context.d.ts +2 -0
  98. package/dist/profile/cross-sale/cross-sale.dto.d.ts +2 -2
  99. package/dist/profile/cross-sale/cross-sale.dto.js +3 -1
  100. package/dist/profile/cross-sale/cross-sale.ro.d.ts +2 -2
  101. package/dist/profile/custom-client-booking-email/custom-client-booking-email.dto.d.ts +2 -2
  102. package/dist/profile/custom-client-booking-email/custom-client-booking-email.dto.js +3 -1
  103. package/dist/profile/custom-client-booking-email/custom-client-booking-email.ro.d.ts +2 -2
  104. package/dist/profile/marketing-automation/marketing-automation.dto.d.ts +2 -2
  105. package/dist/profile/marketing-automation/marketing-automation.dto.js +3 -1
  106. package/dist/profile/marketing-automation/marketing-automation.ro.d.ts +2 -2
  107. package/dist/profile/marketing-email/create-profile-marketing-email-campaign.dto.d.ts +14 -13
  108. package/dist/profile/marketing-email/create-profile-marketing-email-campaign.dto.js +19 -28
  109. package/dist/profile/marketing-email/preflight-issue.ro.d.ts +31 -1
  110. package/dist/profile/marketing-email/preflight-issue.ro.js +30 -0
  111. package/dist/profile/marketing-email/preview-campaign-v2.dto.d.ts +2 -2
  112. package/dist/profile/marketing-email/preview-campaign-v2.dto.js +2 -2
  113. package/dist/profile/marketing-email/preview-profile-marketing-segment.dto.d.ts +6 -0
  114. package/dist/profile/marketing-email/preview-profile-marketing-segment.dto.js +8 -0
  115. package/dist/profile/marketing-email/preview-profile-marketing-segment.ro.d.ts +6 -1
  116. package/dist/profile/marketing-email/preview-profile-marketing-segment.ro.js +9 -1
  117. package/dist/profile/marketing-email/profile-marketing-email-campaign.ro.d.ts +11 -2
  118. package/dist/profile/marketing-email/profile-marketing-email-campaign.ro.js +12 -0
  119. package/dist/profile/marketing-email/profile-marketing-email-recipient-status.enum.d.ts +6 -0
  120. package/dist/profile/marketing-email/profile-marketing-email-recipient-status.enum.js +6 -0
  121. package/dist/profile/marketing-email/test-send-email-v2.dto.d.ts +2 -2
  122. package/dist/profile/marketing-email/test-send-email-v2.dto.js +2 -2
  123. package/dist/profile/notification-chanel/notification-chanel-action.enum.d.ts +16 -1
  124. package/dist/profile/notification-chanel/notification-chanel-action.enum.js +21 -1
  125. package/dist/profile/notification-chanel/notification-chanel.ro.d.ts +5 -0
  126. package/dist/profile/notification-chanel/notification-chanel.ro.js +4 -0
  127. package/dist/profile/notification-chanel/test-notification-chanel.dto.d.ts +7 -2
  128. package/dist/profile/notification-chanel/test-notification-chanel.dto.js +7 -0
  129. package/dist/questroom/questroom-ai-context.d.ts +5 -0
  130. package/dist/questroom-scenario-email/create-questroom-scenario-email.dto.d.ts +2 -2
  131. package/dist/questroom-scenario-email/create-questroom-scenario-email.dto.js +3 -1
  132. package/dist/questroom-scenario-email/questroom-scenario-email.ro.d.ts +2 -2
  133. package/dist/shared/enum/availability.enum.d.ts +11 -0
  134. package/dist/shared/enum/availability.enum.js +15 -0
  135. package/dist/slot/bulk-update-slots.dto.d.ts +2 -0
  136. package/dist/slot/bulk-update-slots.dto.js +7 -0
  137. package/dist/slot/change-template-slots-form.dto.d.ts +3 -0
  138. package/dist/slot/change-template-slots-form.dto.js +13 -0
  139. package/dist/slot/create-slot-form.dto.d.ts +2 -0
  140. package/dist/slot/create-slot-form.dto.js +7 -0
  141. package/dist/slot/create-slot.dto.d.ts +2 -0
  142. package/dist/slot/create-slot.dto.js +7 -0
  143. package/dist/slot/daily-window-range.validator.d.ts +15 -0
  144. package/dist/slot/daily-window-range.validator.js +46 -0
  145. package/dist/slot/enum/slot-discount-type.enum.d.ts +15 -0
  146. package/dist/slot/enum/slot-discount-type.enum.js +19 -0
  147. package/dist/slot/slot-autocomplite-form.dto.d.ts +2 -0
  148. package/dist/slot/slot-autocomplite-form.dto.js +7 -0
  149. package/dist/slot/slot-discount-range.validator.d.ts +10 -0
  150. package/dist/slot/slot-discount-range.validator.js +36 -0
  151. package/dist/slot/slot.ro.d.ts +10 -0
  152. package/dist/slot/update-slot-upsellings-range.dto.d.ts +17 -0
  153. package/dist/slot/update-slot-upsellings-range.dto.js +68 -0
  154. package/dist/slot/update-slot.dto.d.ts +4 -0
  155. package/dist/slot/update-slot.dto.js +14 -0
  156. package/dist/slot-template/slot-template-element.d.ts +4 -0
  157. package/dist/slot-template/slot-template-element.js +9 -0
  158. package/dist/slot-template/slot-template-flex-rule.d.ts +8 -0
  159. package/dist/slot-template/slot-template-flex-rule.js +15 -2
  160. package/dist/tsconfig.build.tsbuildinfo +1 -1
  161. package/dist/upselling/create-upselling.dto.d.ts +5 -0
  162. package/dist/upselling/create-upselling.dto.js +8 -0
  163. package/dist/upselling/upselling.ro.d.ts +1 -0
  164. package/dist/upselling/upselling.ro.js +4 -0
  165. package/dist/user/crud/user.ro.d.ts +3 -0
  166. package/dist/user/crud/user.ro.js +11 -0
  167. package/dist/user/current/update-current-user-notifications.dto.d.ts +7 -0
  168. package/dist/user/current/update-current-user-notifications.dto.js +13 -0
  169. package/dist/user/enum/push-order-scope.enum.d.ts +15 -0
  170. package/dist/user/enum/push-order-scope.enum.js +19 -0
  171. package/dist/widget/enum/widget-type.enum.d.ts +3 -1
  172. package/dist/widget/enum/widget-type.enum.js +2 -0
  173. package/package.json +2 -2
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Ручная правка баланса: подарок за отзыв, компенсация за сорванную
3
+ * игру, исправление ошибки администратора. Причина обязательна — без неё
4
+ * через месяц никто не вспомнит, откуда у клиента лишние бонусы.
5
+ */
6
+ export declare class AdjustBonusDto {
7
+ /**
8
+ * Минорные единицы со знаком: положительное начисляет, отрицательное
9
+ * списывает. В минус баланс не уходит — сервер обрежет списание по
10
+ * остатку.
11
+ */
12
+ amount: number;
13
+ comment?: string;
14
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AdjustBonusDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ /**
16
+ * Ручная правка баланса: подарок за отзыв, компенсация за сорванную
17
+ * игру, исправление ошибки администратора. Причина обязательна — без неё
18
+ * через месяц никто не вспомнит, откуда у клиента лишние бонусы.
19
+ */
20
+ class AdjustBonusDto {
21
+ }
22
+ exports.AdjustBonusDto = AdjustBonusDto;
23
+ __decorate([
24
+ (0, class_transformer_1.Transform)(({ value }) => Math.round(+value) || 0),
25
+ (0, class_validator_1.IsInt)(),
26
+ (0, class_transformer_1.Expose)(),
27
+ __metadata("design:type", Number)
28
+ ], AdjustBonusDto.prototype, "amount", void 0);
29
+ __decorate([
30
+ (0, class_validator_1.IsOptional)(),
31
+ (0, class_validator_1.IsString)(),
32
+ (0, class_validator_1.MaxLength)(200),
33
+ (0, class_transformer_1.Expose)(),
34
+ __metadata("design:type", String)
35
+ ], AdjustBonusDto.prototype, "comment", void 0);
@@ -0,0 +1,9 @@
1
+ import { LoyaltyTierSourceEnum } from './enum/loyalty-tier-source.enum';
2
+ export declare class AssignClientTierDto {
3
+ source: LoyaltyTierSourceEnum;
4
+ /**
5
+ * Обязателен только для ручного назначения: возврат в `auto` и
6
+ * исключение из программы статус не выбирают.
7
+ */
8
+ tierId?: number | null;
9
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AssignClientTierDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const loyalty_tier_source_enum_1 = require("./enum/loyalty-tier-source.enum");
16
+ class AssignClientTierDto {
17
+ }
18
+ exports.AssignClientTierDto = AssignClientTierDto;
19
+ __decorate([
20
+ (0, class_validator_1.IsEnum)(loyalty_tier_source_enum_1.LoyaltyTierSourceEnum),
21
+ (0, class_transformer_1.Expose)(),
22
+ __metadata("design:type", String)
23
+ ], AssignClientTierDto.prototype, "source", void 0);
24
+ __decorate([
25
+ (0, class_validator_1.ValidateIf)((o) => o.source === loyalty_tier_source_enum_1.LoyaltyTierSourceEnum.MANUAL),
26
+ (0, class_validator_1.IsInt)(),
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", Number)
29
+ ], AssignClientTierDto.prototype, "tierId", void 0);
@@ -0,0 +1,30 @@
1
+ import { LoyaltyMetricEnum } from './enum/loyalty-metric.enum';
2
+ import { LoyaltyProgramTypeEnum } from './enum/loyalty-program-type.enum';
3
+ import { LoyaltyTierSourceEnum } from './enum/loyalty-tier-source.enum';
4
+ import { LoyaltyTierRO } from './loyalty-tier.ro';
5
+ /**
6
+ * Состояние одного клиента в программе: статус, накопленные счётчики и
7
+ * остаток до следующего статуса. Отдаётся и при выключенной программе —
8
+ * карточка клиента тогда просто ничего не рисует.
9
+ */
10
+ export declare class ClientLoyaltyRO {
11
+ enabled: boolean;
12
+ programType: LoyaltyProgramTypeEnum;
13
+ metric: LoyaltyMetricEnum;
14
+ /** Бонусы в минорных единицах: один бонус равен одной единице валюты. */
15
+ balance: number;
16
+ /**
17
+ * Процент кэшбэка, который клиент получает сейчас, — со статуса, а
18
+ * если статуса нет, то базовый из настроек.
19
+ */
20
+ cashbackPercent: number;
21
+ source: LoyaltyTierSourceEnum;
22
+ /** Состоявшиеся игры, попавшие в зачёт программы. */
23
+ games: number;
24
+ /** Квесты и допуслуги в минорных единицах, попавшие в зачёт. */
25
+ revenue: number;
26
+ tier: LoyaltyTierRO | null;
27
+ nextTier: LoyaltyTierRO | null;
28
+ /** Сколько игр или денег не хватает до `nextTier`. */
29
+ toNextTier: number;
30
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ClientLoyaltyRO = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const loyalty_metric_enum_1 = require("./enum/loyalty-metric.enum");
15
+ const loyalty_program_type_enum_1 = require("./enum/loyalty-program-type.enum");
16
+ const loyalty_tier_source_enum_1 = require("./enum/loyalty-tier-source.enum");
17
+ const loyalty_tier_ro_1 = require("./loyalty-tier.ro");
18
+ /**
19
+ * Состояние одного клиента в программе: статус, накопленные счётчики и
20
+ * остаток до следующего статуса. Отдаётся и при выключенной программе —
21
+ * карточка клиента тогда просто ничего не рисует.
22
+ */
23
+ class ClientLoyaltyRO {
24
+ }
25
+ exports.ClientLoyaltyRO = ClientLoyaltyRO;
26
+ __decorate([
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", Boolean)
29
+ ], ClientLoyaltyRO.prototype, "enabled", void 0);
30
+ __decorate([
31
+ (0, class_transformer_1.Expose)(),
32
+ __metadata("design:type", String)
33
+ ], ClientLoyaltyRO.prototype, "programType", void 0);
34
+ __decorate([
35
+ (0, class_transformer_1.Expose)(),
36
+ __metadata("design:type", String)
37
+ ], ClientLoyaltyRO.prototype, "metric", void 0);
38
+ __decorate([
39
+ (0, class_transformer_1.Expose)(),
40
+ __metadata("design:type", Number)
41
+ ], ClientLoyaltyRO.prototype, "balance", void 0);
42
+ __decorate([
43
+ (0, class_transformer_1.Expose)(),
44
+ __metadata("design:type", Number)
45
+ ], ClientLoyaltyRO.prototype, "cashbackPercent", void 0);
46
+ __decorate([
47
+ (0, class_transformer_1.Expose)(),
48
+ __metadata("design:type", String)
49
+ ], ClientLoyaltyRO.prototype, "source", void 0);
50
+ __decorate([
51
+ (0, class_transformer_1.Expose)(),
52
+ __metadata("design:type", Number)
53
+ ], ClientLoyaltyRO.prototype, "games", void 0);
54
+ __decorate([
55
+ (0, class_transformer_1.Expose)(),
56
+ __metadata("design:type", Number)
57
+ ], ClientLoyaltyRO.prototype, "revenue", void 0);
58
+ __decorate([
59
+ (0, class_transformer_1.Expose)(),
60
+ (0, class_transformer_1.Type)(() => loyalty_tier_ro_1.LoyaltyTierRO),
61
+ __metadata("design:type", loyalty_tier_ro_1.LoyaltyTierRO)
62
+ ], ClientLoyaltyRO.prototype, "tier", void 0);
63
+ __decorate([
64
+ (0, class_transformer_1.Expose)(),
65
+ (0, class_transformer_1.Type)(() => loyalty_tier_ro_1.LoyaltyTierRO),
66
+ __metadata("design:type", loyalty_tier_ro_1.LoyaltyTierRO)
67
+ ], ClientLoyaltyRO.prototype, "nextTier", void 0);
68
+ __decorate([
69
+ (0, class_transformer_1.Expose)(),
70
+ __metadata("design:type", Number)
71
+ ], ClientLoyaltyRO.prototype, "toNextTier", void 0);
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Тип операции в журнале бонусов. Баланс клиента — не колонка, а сумма
3
+ * этого журнала: без операций нельзя ни объяснить клиенту, откуда взялись
4
+ * его 350, ни откатить списание при отмене игры.
5
+ */
6
+ export declare enum LoyaltyBonusTypeEnum {
7
+ /** Кэшбэк за состоявшуюся игру. Одна операция на игру. */
8
+ ACCRUAL = "accrual",
9
+ /** Оплата игры бонусами. Хранится отрицательной суммой. */
10
+ SPENDING = "spending",
11
+ /** Правка администратора: подарок, компенсация, исправление ошибки. */
12
+ MANUAL = "manual"
13
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoyaltyBonusTypeEnum = void 0;
4
+ /**
5
+ * Тип операции в журнале бонусов. Баланс клиента — не колонка, а сумма
6
+ * этого журнала: без операций нельзя ни объяснить клиенту, откуда взялись
7
+ * его 350, ни откатить списание при отмене игры.
8
+ */
9
+ var LoyaltyBonusTypeEnum;
10
+ (function (LoyaltyBonusTypeEnum) {
11
+ /** Кэшбэк за состоявшуюся игру. Одна операция на игру. */
12
+ LoyaltyBonusTypeEnum["ACCRUAL"] = "accrual";
13
+ /** Оплата игры бонусами. Хранится отрицательной суммой. */
14
+ LoyaltyBonusTypeEnum["SPENDING"] = "spending";
15
+ /** Правка администратора: подарок, компенсация, исправление ошибки. */
16
+ LoyaltyBonusTypeEnum["MANUAL"] = "manual";
17
+ })(LoyaltyBonusTypeEnum || (exports.LoyaltyBonusTypeEnum = LoyaltyBonusTypeEnum = {}));
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Что делать с историей существующих клиентов в момент включения
3
+ * программы. Вопрос задаётся один раз при онбординге и превращается в
4
+ * дату отсечки `countFrom`, после чего накопление всегда идёт вперёд:
5
+ * статус не сгорает.
6
+ *
7
+ * `ALL` — зачесть всю историю: половина базы получит статус сразу.
8
+ * `LAST_YEAR` — зачесть игры за последние 12 месяцев на момент
9
+ * включения. Отсечка замораживается датой, а не «ползёт» вместе с
10
+ * сегодняшним днём, — иначе клиент терял бы статус просто от того, что
11
+ * год назад он играл, а сейчас нет.
12
+ * `FROM_ACTIVATION` — начать всех с нуля, считать только новые игры.
13
+ */
14
+ export declare enum LoyaltyHistoryModeEnum {
15
+ ALL = "all",
16
+ LAST_YEAR = "lastYear",
17
+ FROM_ACTIVATION = "fromActivation"
18
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoyaltyHistoryModeEnum = void 0;
4
+ /**
5
+ * Что делать с историей существующих клиентов в момент включения
6
+ * программы. Вопрос задаётся один раз при онбординге и превращается в
7
+ * дату отсечки `countFrom`, после чего накопление всегда идёт вперёд:
8
+ * статус не сгорает.
9
+ *
10
+ * `ALL` — зачесть всю историю: половина базы получит статус сразу.
11
+ * `LAST_YEAR` — зачесть игры за последние 12 месяцев на момент
12
+ * включения. Отсечка замораживается датой, а не «ползёт» вместе с
13
+ * сегодняшним днём, — иначе клиент терял бы статус просто от того, что
14
+ * год назад он играл, а сейчас нет.
15
+ * `FROM_ACTIVATION` — начать всех с нуля, считать только новые игры.
16
+ */
17
+ var LoyaltyHistoryModeEnum;
18
+ (function (LoyaltyHistoryModeEnum) {
19
+ LoyaltyHistoryModeEnum["ALL"] = "all";
20
+ LoyaltyHistoryModeEnum["LAST_YEAR"] = "lastYear";
21
+ LoyaltyHistoryModeEnum["FROM_ACTIVATION"] = "fromActivation";
22
+ })(LoyaltyHistoryModeEnum || (exports.LoyaltyHistoryModeEnum = LoyaltyHistoryModeEnum = {}));
@@ -0,0 +1,12 @@
1
+ /**
2
+ * По какому счётчику клиент поднимается по статусам.
3
+ *
4
+ * `GAMES` — состоявшиеся игры, `REVENUE` — сумма, которую клиент оставил
5
+ * за квесты и допуслуги. Одновременно работает только одна метрика:
6
+ * пороги «5 игр» и «5 000» отбирают разные множества клиентов, и
7
+ * объяснить администратору смешанное правило почти невозможно.
8
+ */
9
+ export declare enum LoyaltyMetricEnum {
10
+ GAMES = "games",
11
+ REVENUE = "revenue"
12
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoyaltyMetricEnum = void 0;
4
+ /**
5
+ * По какому счётчику клиент поднимается по статусам.
6
+ *
7
+ * `GAMES` — состоявшиеся игры, `REVENUE` — сумма, которую клиент оставил
8
+ * за квесты и допуслуги. Одновременно работает только одна метрика:
9
+ * пороги «5 игр» и «5 000» отбирают разные множества клиентов, и
10
+ * объяснить администратору смешанное правило почти невозможно.
11
+ */
12
+ var LoyaltyMetricEnum;
13
+ (function (LoyaltyMetricEnum) {
14
+ LoyaltyMetricEnum["GAMES"] = "games";
15
+ LoyaltyMetricEnum["REVENUE"] = "revenue";
16
+ })(LoyaltyMetricEnum || (exports.LoyaltyMetricEnum = LoyaltyMetricEnum = {}));
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Какую механику компания включила. Программы взаимоисключающие: клиент
3
+ * не может одновременно получать скидку за статус и кэшбэк с той же
4
+ * игры — иначе одна и та же лояльность стоила бы венью дважды, а
5
+ * администратор на стойке не смог бы объяснить итоговую цифру в чеке.
6
+ */
7
+ export declare enum LoyaltyProgramTypeEnum {
8
+ /** Статус даёт процент скидки сразу в чеке текущей игры. */
9
+ DISCOUNT = "discount",
10
+ /** Игра начисляет бонусы на баланс клиента, ими платят в следующий раз. */
11
+ CASHBACK = "cashback"
12
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoyaltyProgramTypeEnum = void 0;
4
+ /**
5
+ * Какую механику компания включила. Программы взаимоисключающие: клиент
6
+ * не может одновременно получать скидку за статус и кэшбэк с той же
7
+ * игры — иначе одна и та же лояльность стоила бы венью дважды, а
8
+ * администратор на стойке не смог бы объяснить итоговую цифру в чеке.
9
+ */
10
+ var LoyaltyProgramTypeEnum;
11
+ (function (LoyaltyProgramTypeEnum) {
12
+ /** Статус даёт процент скидки сразу в чеке текущей игры. */
13
+ LoyaltyProgramTypeEnum["DISCOUNT"] = "discount";
14
+ /** Игра начисляет бонусы на баланс клиента, ими платят в следующий раз. */
15
+ LoyaltyProgramTypeEnum["CASHBACK"] = "cashback";
16
+ })(LoyaltyProgramTypeEnum || (exports.LoyaltyProgramTypeEnum = LoyaltyProgramTypeEnum = {}));
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Что делать, когда на игре уже есть другая скидка — промокод, ручная
3
+ * скидка администратора или скидка на время слота.
4
+ *
5
+ * `EXCLUSIVE` (по умолчанию) — статусная скидка не применяется вовсе:
6
+ * на игре работает одна скидка. Правило намеренно грубое, зато
7
+ * администратору его можно объяснить одной фразой, а чек не уходит в
8
+ * минус от промокода, утреннего слота и золотого статуса разом.
9
+ * `STACK` — статусная скидка складывается с остальными.
10
+ */
11
+ export declare enum LoyaltyStackingEnum {
12
+ EXCLUSIVE = "exclusive",
13
+ STACK = "stack"
14
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoyaltyStackingEnum = void 0;
4
+ /**
5
+ * Что делать, когда на игре уже есть другая скидка — промокод, ручная
6
+ * скидка администратора или скидка на время слота.
7
+ *
8
+ * `EXCLUSIVE` (по умолчанию) — статусная скидка не применяется вовсе:
9
+ * на игре работает одна скидка. Правило намеренно грубое, зато
10
+ * администратору его можно объяснить одной фразой, а чек не уходит в
11
+ * минус от промокода, утреннего слота и золотого статуса разом.
12
+ * `STACK` — статусная скидка складывается с остальными.
13
+ */
14
+ var LoyaltyStackingEnum;
15
+ (function (LoyaltyStackingEnum) {
16
+ LoyaltyStackingEnum["EXCLUSIVE"] = "exclusive";
17
+ LoyaltyStackingEnum["STACK"] = "stack";
18
+ })(LoyaltyStackingEnum || (exports.LoyaltyStackingEnum = LoyaltyStackingEnum = {}));
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Палитра бейджа статуса. Фиксированный набор вместо свободного HEX:
3
+ * бейдж встречается в списке клиентов, в карточке и в мобильном
4
+ * приложении, и произвольный цвет от компании слишком легко делает его
5
+ * нечитаемым на одном из фонов.
6
+ */
7
+ export declare enum LoyaltyTierColorEnum {
8
+ BRONZE = "bronze",
9
+ SILVER = "silver",
10
+ GOLD = "gold",
11
+ PLATINUM = "platinum",
12
+ BLUE = "blue",
13
+ GREEN = "green",
14
+ PURPLE = "purple",
15
+ RED = "red"
16
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoyaltyTierColorEnum = void 0;
4
+ /**
5
+ * Палитра бейджа статуса. Фиксированный набор вместо свободного HEX:
6
+ * бейдж встречается в списке клиентов, в карточке и в мобильном
7
+ * приложении, и произвольный цвет от компании слишком легко делает его
8
+ * нечитаемым на одном из фонов.
9
+ */
10
+ var LoyaltyTierColorEnum;
11
+ (function (LoyaltyTierColorEnum) {
12
+ LoyaltyTierColorEnum["BRONZE"] = "bronze";
13
+ LoyaltyTierColorEnum["SILVER"] = "silver";
14
+ LoyaltyTierColorEnum["GOLD"] = "gold";
15
+ LoyaltyTierColorEnum["PLATINUM"] = "platinum";
16
+ LoyaltyTierColorEnum["BLUE"] = "blue";
17
+ LoyaltyTierColorEnum["GREEN"] = "green";
18
+ LoyaltyTierColorEnum["PURPLE"] = "purple";
19
+ LoyaltyTierColorEnum["RED"] = "red";
20
+ })(LoyaltyTierColorEnum || (exports.LoyaltyTierColorEnum = LoyaltyTierColorEnum = {}));
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Откуда у клиента текущий статус.
3
+ *
4
+ * `MANUAL` — назначен сотрудником и приоритетнее расчёта: пересчёт
5
+ * метрик его не трогает, пока статус не вернут в автоматический.
6
+ * `EXCLUDED` — клиент выведен из программы: скидка не применяется, в
7
+ * распределении по статусам он не участвует, но история сохраняется.
8
+ */
9
+ export declare enum LoyaltyTierSourceEnum {
10
+ AUTO = "auto",
11
+ MANUAL = "manual",
12
+ EXCLUDED = "excluded"
13
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoyaltyTierSourceEnum = void 0;
4
+ /**
5
+ * Откуда у клиента текущий статус.
6
+ *
7
+ * `MANUAL` — назначен сотрудником и приоритетнее расчёта: пересчёт
8
+ * метрик его не трогает, пока статус не вернут в автоматический.
9
+ * `EXCLUDED` — клиент выведен из программы: скидка не применяется, в
10
+ * распределении по статусам он не участвует, но история сохраняется.
11
+ */
12
+ var LoyaltyTierSourceEnum;
13
+ (function (LoyaltyTierSourceEnum) {
14
+ LoyaltyTierSourceEnum["AUTO"] = "auto";
15
+ LoyaltyTierSourceEnum["MANUAL"] = "manual";
16
+ LoyaltyTierSourceEnum["EXCLUDED"] = "excluded";
17
+ })(LoyaltyTierSourceEnum || (exports.LoyaltyTierSourceEnum = LoyaltyTierSourceEnum = {}));
@@ -0,0 +1,20 @@
1
+ import { RO } from '../shared/ro-class';
2
+ import { LoyaltyBonusTypeEnum } from './enum/loyalty-bonus-type.enum';
3
+ /**
4
+ * Одна операция по бонусам клиента. Начисления положительные, списания
5
+ * отрицательные — как в любом журнале, чтобы баланс был обычной суммой,
6
+ * а не разностью двух колонок.
7
+ */
8
+ export declare class LoyaltyBonusRO extends RO {
9
+ clientId: number;
10
+ type: LoyaltyBonusTypeEnum;
11
+ /** Минорные единицы со знаком: `+` начислено, `−` списано. */
12
+ amount: number;
13
+ /** Баланс клиента после операции — чтобы историю можно было читать глазами. */
14
+ balanceAfter: number;
15
+ orderId: number | null;
16
+ userId: number | null;
17
+ comment: string;
18
+ /** Операция погашена: игру отменили или списание снял администратор. */
19
+ canceled: boolean;
20
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LoyaltyBonusRO = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const ro_class_1 = require("../shared/ro-class");
15
+ const loyalty_bonus_type_enum_1 = require("./enum/loyalty-bonus-type.enum");
16
+ /**
17
+ * Одна операция по бонусам клиента. Начисления положительные, списания
18
+ * отрицательные — как в любом журнале, чтобы баланс был обычной суммой,
19
+ * а не разностью двух колонок.
20
+ */
21
+ class LoyaltyBonusRO extends ro_class_1.RO {
22
+ }
23
+ exports.LoyaltyBonusRO = LoyaltyBonusRO;
24
+ __decorate([
25
+ (0, class_transformer_1.Expose)(),
26
+ __metadata("design:type", Number)
27
+ ], LoyaltyBonusRO.prototype, "clientId", void 0);
28
+ __decorate([
29
+ (0, class_transformer_1.Expose)(),
30
+ __metadata("design:type", String)
31
+ ], LoyaltyBonusRO.prototype, "type", void 0);
32
+ __decorate([
33
+ (0, class_transformer_1.Expose)(),
34
+ __metadata("design:type", Number)
35
+ ], LoyaltyBonusRO.prototype, "amount", void 0);
36
+ __decorate([
37
+ (0, class_transformer_1.Expose)(),
38
+ __metadata("design:type", Number)
39
+ ], LoyaltyBonusRO.prototype, "balanceAfter", void 0);
40
+ __decorate([
41
+ (0, class_transformer_1.Expose)(),
42
+ __metadata("design:type", Number)
43
+ ], LoyaltyBonusRO.prototype, "orderId", void 0);
44
+ __decorate([
45
+ (0, class_transformer_1.Expose)(),
46
+ __metadata("design:type", Number)
47
+ ], LoyaltyBonusRO.prototype, "userId", void 0);
48
+ __decorate([
49
+ (0, class_transformer_1.Expose)(),
50
+ __metadata("design:type", String)
51
+ ], LoyaltyBonusRO.prototype, "comment", void 0);
52
+ __decorate([
53
+ (0, class_transformer_1.Expose)(),
54
+ __metadata("design:type", Boolean)
55
+ ], LoyaltyBonusRO.prototype, "canceled", void 0);
@@ -0,0 +1,45 @@
1
+ import { LoyaltyTierColorEnum } from './enum/loyalty-tier-color.enum';
2
+ export type LoyaltyTierPreset = {
3
+ color: LoyaltyTierColorEnum;
4
+ /** Порог для метрики «игры»: сколько квестов надо пройти. */
5
+ games: number;
6
+ /**
7
+ * Порог для метрики «сумма» — в средних чеках компании, а не в
8
+ * деньгах. Валюты и цены у квестов разные, поэтому абсолютные суммы
9
+ * в пресете были бы бессмысленны в половине стран: API умножает это
10
+ * число на реальный средний чек профиля.
11
+ */
12
+ checks: number;
13
+ /** Процент скидки на статусе — для скидочной программы. */
14
+ discount: number;
15
+ /**
16
+ * Процент кэшбэка на статусе — для накопительной программы. Ниже
17
+ * скидки не случайно: скидку венью отдаёт один раз, а бонусы клиент
18
+ * тратит на следующей игре, то есть они возвращаются в кассу
19
+ * вторым визитом. Поэтому у одного и того же статуса кэшбэк
20
+ * выгоднее держать скромнее, чем прямую скидку.
21
+ */
22
+ cashback: number;
23
+ };
24
+ /**
25
+ * Стартовый набор «бронза — серебро — золото», который создаётся одной
26
+ * кнопкой. Разрыв между серебром и золотом сделан заметным (3 игры → 6):
27
+ * если статусы идут вплотную, клиент не видит смысла доигрывать до
28
+ * следующего, а компания раздаёт максимальную скидку с четвёртой игры.
29
+ */
30
+ export declare const LOYALTY_TIER_PRESETS: LoyaltyTierPreset[];
31
+ /** Доля чека, которую по умолчанию разрешено закрыть бонусами. */
32
+ export declare const LOYALTY_DEFAULT_MAX_BONUS_PAY_PERCENT = 50;
33
+ /**
34
+ * Названия на случай, если клиент API не передал свои. Обычно названия
35
+ * приходят из CRM уже переведёнными — держать словарь статусов в API
36
+ * значило бы дублировать локали интерфейса.
37
+ */
38
+ export declare const LOYALTY_PRESET_FALLBACK_TITLES: string[];
39
+ /**
40
+ * Средний чек для пресета по сумме, когда истории игр ещё нет и взять
41
+ * цифру неоткуда. Число заведомо приблизительное — владелец правит
42
+ * пороги руками сразу после создания, — но пустые нули в конструкторе
43
+ * были бы хуже.
44
+ */
45
+ export declare const LOYALTY_FALLBACK_AVERAGE_CHECK = 500000;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LOYALTY_FALLBACK_AVERAGE_CHECK = exports.LOYALTY_PRESET_FALLBACK_TITLES = exports.LOYALTY_DEFAULT_MAX_BONUS_PAY_PERCENT = exports.LOYALTY_TIER_PRESETS = void 0;
4
+ const loyalty_tier_color_enum_1 = require("./enum/loyalty-tier-color.enum");
5
+ /**
6
+ * Стартовый набор «бронза — серебро — золото», который создаётся одной
7
+ * кнопкой. Разрыв между серебром и золотом сделан заметным (3 игры → 6):
8
+ * если статусы идут вплотную, клиент не видит смысла доигрывать до
9
+ * следующего, а компания раздаёт максимальную скидку с четвёртой игры.
10
+ */
11
+ exports.LOYALTY_TIER_PRESETS = [
12
+ { color: loyalty_tier_color_enum_1.LoyaltyTierColorEnum.BRONZE, games: 1, checks: 1, discount: 3, cashback: 3 },
13
+ { color: loyalty_tier_color_enum_1.LoyaltyTierColorEnum.SILVER, games: 3, checks: 3, discount: 5, cashback: 5 },
14
+ { color: loyalty_tier_color_enum_1.LoyaltyTierColorEnum.GOLD, games: 6, checks: 6, discount: 10, cashback: 7 },
15
+ ];
16
+ /** Доля чека, которую по умолчанию разрешено закрыть бонусами. */
17
+ exports.LOYALTY_DEFAULT_MAX_BONUS_PAY_PERCENT = 50;
18
+ /**
19
+ * Названия на случай, если клиент API не передал свои. Обычно названия
20
+ * приходят из CRM уже переведёнными — держать словарь статусов в API
21
+ * значило бы дублировать локали интерфейса.
22
+ */
23
+ exports.LOYALTY_PRESET_FALLBACK_TITLES = ['Bronze', 'Silver', 'Gold'];
24
+ /**
25
+ * Средний чек для пресета по сумме, когда истории игр ещё нет и взять
26
+ * цифру неоткуда. Число заведомо приблизительное — владелец правит
27
+ * пороги руками сразу после создания, — но пустые нули в конструкторе
28
+ * были бы хуже.
29
+ */
30
+ exports.LOYALTY_FALLBACK_AVERAGE_CHECK = 500000;
@@ -0,0 +1,19 @@
1
+ import { LoyaltyHistoryModeEnum } from './enum/loyalty-history-mode.enum';
2
+ import { LoyaltyMetricEnum } from './enum/loyalty-metric.enum';
3
+ export declare class LoyaltyPreviewTierDto {
4
+ threshold: number;
5
+ /** Процент, который стоит денег: скидка или кэшбэк — смотря какая программа. */
6
+ discount: number;
7
+ }
8
+ /**
9
+ * Прикидка «что будет, если включить» по ещё не сохранённым порогам:
10
+ * сколько клиентов попадёт на каждый статус и во что это обошлось бы за
11
+ * последний год. Считается по реальной истории игр и ничего не меняет —
12
+ * владелец должен видеть цену решения до того, как раздаст скидку
13
+ * половине базы.
14
+ */
15
+ export declare class LoyaltyPreviewDto {
16
+ metric: LoyaltyMetricEnum;
17
+ historyMode: LoyaltyHistoryModeEnum;
18
+ tiers: LoyaltyPreviewTierDto[];
19
+ }