@abyss-project/main 20.0.0 → 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/api/activity.admin.api.d.ts +2 -1
  2. package/dist/api/activity.admin.api.js +3 -1
  3. package/dist/api/activity.admin.api.js.map +1 -1
  4. package/dist/api/analytics-snapshot.admin.api.d.ts +2 -1
  5. package/dist/api/analytics-snapshot.admin.api.js +3 -1
  6. package/dist/api/analytics-snapshot.admin.api.js.map +1 -1
  7. package/dist/api/billing-account.admin.api.d.ts +12 -2
  8. package/dist/api/billing-account.admin.api.js +25 -1
  9. package/dist/api/billing-account.admin.api.js.map +1 -1
  10. package/dist/api/index.d.ts +2 -1
  11. package/dist/api/index.js +2 -1
  12. package/dist/api/index.js.map +1 -1
  13. package/dist/api/organization-billing.api.d.ts +15 -2
  14. package/dist/api/organization-billing.api.js +38 -1
  15. package/dist/api/organization-billing.api.js.map +1 -1
  16. package/dist/api/short-link-protection.admin.api.d.ts +3 -0
  17. package/dist/api/short-link-protection.admin.api.js +9 -0
  18. package/dist/api/short-link-protection.admin.api.js.map +1 -0
  19. package/dist/api/user-billing.api.d.ts +15 -2
  20. package/dist/api/user-billing.api.js +45 -1
  21. package/dist/api/user-billing.api.js.map +1 -1
  22. package/dist/constants/index.d.ts +2 -0
  23. package/dist/constants/index.js +2 -0
  24. package/dist/constants/index.js.map +1 -1
  25. package/dist/constants/key-action-catalog.constants.d.ts +19 -0
  26. package/dist/constants/key-action-catalog.constants.js +171 -0
  27. package/dist/constants/key-action-catalog.constants.js.map +1 -0
  28. package/dist/constants/public-plans.constants.js +8 -0
  29. package/dist/constants/public-plans.constants.js.map +1 -1
  30. package/dist/constants/tests/key-action-catalog.constants.spec.d.ts +1 -0
  31. package/dist/constants/tests/key-action-catalog.constants.spec.js +52 -0
  32. package/dist/constants/tests/key-action-catalog.constants.spec.js.map +1 -0
  33. package/dist/constants/unpaid-invoice.constants.d.ts +1 -0
  34. package/dist/constants/unpaid-invoice.constants.js +5 -0
  35. package/dist/constants/unpaid-invoice.constants.js.map +1 -0
  36. package/dist/index.d.ts +34 -1
  37. package/dist/index.js +34 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/translate/en.translate.d.ts +24 -0
  40. package/dist/translate/en.translate.js +24 -0
  41. package/dist/translate/en.translate.js.map +1 -1
  42. package/dist/translate/fr.translate.d.ts +24 -0
  43. package/dist/translate/fr.translate.js +24 -0
  44. package/dist/translate/fr.translate.js.map +1 -1
  45. package/dist/types/enum/abyss-application-event.enum.d.ts +2 -0
  46. package/dist/types/enum/abyss-application-event.enum.js +2 -0
  47. package/dist/types/enum/abyss-application-event.enum.js.map +1 -1
  48. package/dist/types/enum/admin-audit-target-type.enum.d.ts +2 -1
  49. package/dist/types/enum/admin-audit-target-type.enum.js +1 -0
  50. package/dist/types/enum/admin-audit-target-type.enum.js.map +1 -1
  51. package/dist/types/enum/api-error.enum.d.ts +3 -0
  52. package/dist/types/enum/api-error.enum.js +3 -0
  53. package/dist/types/enum/api-error.enum.js.map +1 -1
  54. package/dist/types/enum/billing-interval.enum.d.ts +8 -0
  55. package/dist/types/enum/billing-interval.enum.js +14 -0
  56. package/dist/types/enum/billing-interval.enum.js.map +1 -0
  57. package/dist/types/enum/billing-subscription-event.enum.d.ts +27 -0
  58. package/dist/types/enum/billing-subscription-event.enum.js +34 -0
  59. package/dist/types/enum/billing-subscription-event.enum.js.map +1 -0
  60. package/dist/types/enum/email-type.enum.d.ts +6 -0
  61. package/dist/types/enum/email-type.enum.js +6 -0
  62. package/dist/types/enum/email-type.enum.js.map +1 -1
  63. package/dist/types/enum/index.d.ts +9 -0
  64. package/dist/types/enum/index.js +9 -0
  65. package/dist/types/enum/index.js.map +1 -1
  66. package/dist/types/enum/key-action-event.enum.d.ts +20 -0
  67. package/dist/types/enum/key-action-event.enum.js +25 -0
  68. package/dist/types/enum/key-action-event.enum.js.map +1 -0
  69. package/dist/types/enum/key-action-property-type.enum.d.ts +5 -0
  70. package/dist/types/enum/key-action-property-type.enum.js +10 -0
  71. package/dist/types/enum/key-action-property-type.enum.js.map +1 -0
  72. package/dist/types/enum/loyalty-grant-mode.enum.d.ts +4 -0
  73. package/dist/types/enum/loyalty-grant-mode.enum.js +9 -0
  74. package/dist/types/enum/loyalty-grant-mode.enum.js.map +1 -0
  75. package/dist/types/enum/paid-purchase-reason.enum.d.ts +5 -0
  76. package/dist/types/enum/paid-purchase-reason.enum.js +10 -0
  77. package/dist/types/enum/paid-purchase-reason.enum.js.map +1 -0
  78. package/dist/types/enum/referred-traffic-medium.enum.d.ts +4 -0
  79. package/dist/types/enum/referred-traffic-medium.enum.js +9 -0
  80. package/dist/types/enum/referred-traffic-medium.enum.js.map +1 -0
  81. package/dist/types/enum/service-activation.enum.d.ts +10 -0
  82. package/dist/types/enum/service-activation.enum.js +16 -0
  83. package/dist/types/enum/service-activation.enum.js.map +1 -0
  84. package/dist/types/enum/subscription-pause.enum.d.ts +6 -0
  85. package/dist/types/enum/subscription-pause.enum.js +11 -0
  86. package/dist/types/enum/subscription-pause.enum.js.map +1 -0
  87. package/dist/types/enum/user-notification-category.enum.js +6 -0
  88. package/dist/types/enum/user-notification-category.enum.js.map +1 -1
  89. package/dist/types/enum/user-notification-content-type.enum.d.ts +30 -0
  90. package/dist/types/enum/user-notification-content-type.enum.js +7 -1
  91. package/dist/types/enum/user-notification-content-type.enum.js.map +1 -1
  92. package/dist/types/interface/api/index.d.ts +13 -1
  93. package/dist/types/interface/api/index.js +13 -1
  94. package/dist/types/interface/api/index.js.map +1 -1
  95. package/dist/types/interface/api/requests/activity.admin.request.d.ts +5 -0
  96. package/dist/types/interface/api/requests/billing-account.admin.request.d.ts +3 -0
  97. package/dist/types/interface/api/requests/index.d.ts +2 -0
  98. package/dist/types/interface/api/requests/index.js +2 -0
  99. package/dist/types/interface/api/requests/index.js.map +1 -1
  100. package/dist/types/interface/api/requests/loyalty-rule.admin.request.d.ts +16 -0
  101. package/dist/types/interface/api/requests/loyalty-rule.admin.request.js +3 -0
  102. package/dist/types/interface/api/requests/loyalty-rule.admin.request.js.map +1 -0
  103. package/dist/types/interface/api/requests/organization-billing.request.d.ts +15 -1
  104. package/dist/types/interface/api/requests/referred-traffic.admin.request.d.ts +4 -0
  105. package/dist/types/interface/api/requests/referred-traffic.admin.request.js +3 -0
  106. package/dist/types/interface/api/requests/referred-traffic.admin.request.js.map +1 -0
  107. package/dist/types/interface/api/requests/retention-metrics.admin.request.d.ts +4 -0
  108. package/dist/types/interface/api/requests/retention-metrics.admin.request.js +3 -0
  109. package/dist/types/interface/api/requests/retention-metrics.admin.request.js.map +1 -0
  110. package/dist/types/interface/api/requests/short-link-protection.admin.request.d.ts +6 -0
  111. package/dist/types/interface/api/requests/short-link-protection.admin.request.js +3 -0
  112. package/dist/types/interface/api/requests/short-link-protection.admin.request.js.map +1 -0
  113. package/dist/types/interface/api/requests/subscription-retention.request.d.ts +34 -0
  114. package/dist/types/interface/api/requests/subscription-retention.request.js +3 -0
  115. package/dist/types/interface/api/requests/subscription-retention.request.js.map +1 -0
  116. package/dist/types/interface/api/requests/user-billing.request.d.ts +12 -1
  117. package/dist/types/interface/api/responses/activity.admin.response.d.ts +5 -0
  118. package/dist/types/interface/api/responses/billing-account.admin.response.d.ts +6 -1
  119. package/dist/types/interface/api/responses/billing-module.response.d.ts +1 -0
  120. package/dist/types/interface/api/responses/billing-plan.response.d.ts +1 -0
  121. package/dist/types/interface/api/responses/index.d.ts +3 -1
  122. package/dist/types/interface/api/responses/index.js +3 -1
  123. package/dist/types/interface/api/responses/index.js.map +1 -1
  124. package/dist/types/interface/api/responses/loyalty-bonus.response.d.ts +16 -0
  125. package/dist/types/interface/api/responses/loyalty-bonus.response.js +3 -0
  126. package/dist/types/interface/api/responses/loyalty-bonus.response.js.map +1 -0
  127. package/dist/types/interface/api/responses/loyalty-rule.admin.response.d.ts +12 -0
  128. package/dist/types/interface/api/responses/loyalty-rule.admin.response.js +3 -0
  129. package/dist/types/interface/api/responses/loyalty-rule.admin.response.js.map +1 -0
  130. package/dist/types/interface/api/responses/organization-billing.response.d.ts +3 -1
  131. package/dist/types/interface/api/responses/referred-traffic.admin.response.d.ts +19 -0
  132. package/dist/types/interface/api/responses/referred-traffic.admin.response.js +3 -0
  133. package/dist/types/interface/api/responses/referred-traffic.admin.response.js.map +1 -0
  134. package/dist/types/interface/api/responses/retention-metrics.admin.response.d.ts +29 -0
  135. package/dist/types/interface/api/responses/retention-metrics.admin.response.js +3 -0
  136. package/dist/types/interface/api/responses/retention-metrics.admin.response.js.map +1 -0
  137. package/dist/types/interface/api/responses/short-link-protection.admin.response.d.ts +17 -0
  138. package/dist/types/interface/api/responses/short-link-protection.admin.response.js +3 -0
  139. package/dist/types/interface/api/responses/short-link-protection.admin.response.js.map +1 -0
  140. package/dist/types/interface/api/responses/subscription-retention.response.d.ts +11 -0
  141. package/dist/types/interface/api/responses/subscription-retention.response.js +3 -0
  142. package/dist/types/interface/api/responses/subscription-retention.response.js.map +1 -0
  143. package/dist/types/interface/api/responses/unpaid-amount.response.d.ts +9 -0
  144. package/dist/types/interface/api/responses/unpaid-amount.response.js +3 -0
  145. package/dist/types/interface/api/responses/unpaid-amount.response.js.map +1 -0
  146. package/dist/types/interface/api/responses/user-billing.response.d.ts +14 -1
  147. package/dist/types/interface/index.d.ts +4 -1
  148. package/dist/types/interface/index.js +4 -1
  149. package/dist/types/interface/index.js.map +1 -1
  150. package/dist/types/interface/models/billing-account.model.d.ts +22 -1
  151. package/dist/types/interface/models/billing-subscription-event.model.d.ts +17 -0
  152. package/dist/types/interface/models/billing-subscription-event.model.js +3 -0
  153. package/dist/types/interface/models/billing-subscription-event.model.js.map +1 -0
  154. package/dist/types/interface/models/index.d.ts +4 -1
  155. package/dist/types/interface/models/index.js +4 -1
  156. package/dist/types/interface/models/index.js.map +1 -1
  157. package/dist/types/interface/models/loyalty-rule.model.d.ts +12 -0
  158. package/dist/types/interface/models/loyalty-rule.model.js +3 -0
  159. package/dist/types/interface/models/loyalty-rule.model.js.map +1 -0
  160. package/dist/types/interface/models/plan-template.model.d.ts +1 -0
  161. package/dist/types/interface/models/service-activation.model.d.ts +13 -0
  162. package/dist/types/interface/models/service-activation.model.js +3 -0
  163. package/dist/types/interface/models/service-activation.model.js.map +1 -0
  164. package/dist/utils/index.d.ts +1 -0
  165. package/dist/utils/index.js +1 -0
  166. package/dist/utils/index.js.map +1 -1
  167. package/dist/utils/pricing.utils.d.ts +11 -1
  168. package/dist/utils/pricing.utils.js +55 -8
  169. package/dist/utils/pricing.utils.js.map +1 -1
  170. package/dist/utils/subscription-retention.utils.d.ts +12 -0
  171. package/dist/utils/subscription-retention.utils.js +40 -0
  172. package/dist/utils/subscription-retention.utils.js.map +1 -0
  173. package/dist/utils/tests/annual-price.utils.spec.d.ts +1 -0
  174. package/dist/utils/tests/annual-price.utils.spec.js +50 -0
  175. package/dist/utils/tests/annual-price.utils.spec.js.map +1 -0
  176. package/dist/utils/tests/pricing-calculator.utils.spec.js +1 -0
  177. package/dist/utils/tests/pricing-calculator.utils.spec.js.map +1 -1
  178. package/dist/utils/tests/subscription-retention.utils.spec.d.ts +1 -0
  179. package/dist/utils/tests/subscription-retention.utils.spec.js +80 -0
  180. package/dist/utils/tests/subscription-retention.utils.spec.js.map +1 -0
  181. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { BillingMetric, BillingService } from '../../../enum';
1
+ import { BillingInterval, BillingMetric, BillingService, PlanChangeTiming } from '../../../enum';
2
2
  import { IBillingAccount } from '../../models/billing-account.model';
3
3
  import { IBillingQuotaCap } from '../../models/billing-quota-cap.model';
4
4
  import { IStorageBreakdown } from '../../models/storage-subtotal.model';
@@ -42,12 +42,25 @@ export interface IPlanChangeOverMetric {
42
42
  nanocentsPerUnit: number;
43
43
  estimateEur: number;
44
44
  }
45
+ export interface IPlanChangePricing {
46
+ interval: BillingInterval;
47
+ recurringPriceCents: number;
48
+ monthlyEquivalentCents: number;
49
+ dueNowCents: number;
50
+ timing: PlanChangeTiming;
51
+ }
45
52
  export interface IPreviewUserPlanChangeData {
46
53
  hasCard: boolean;
47
54
  effectiveDate: string;
48
55
  overMetrics: IPlanChangeOverMetric[];
56
+ pricing: IPlanChangePricing;
49
57
  }
50
58
  export type IPreviewUserPlanChangeResponse = IResponse<IPreviewUserPlanChangeData>;
59
+ export interface ISetBillingIntervalData {
60
+ billingAccount: IBillingAccount;
61
+ scheduled: boolean;
62
+ }
63
+ export type ISetUserBillingIntervalResponse = IResponse<ISetBillingIntervalData>;
51
64
  export interface IListUserInvoicesData {
52
65
  invoices: ICustomerInvoice[];
53
66
  }
@@ -18,6 +18,8 @@ export * from './models/report.model';
18
18
  export * from './models/wrapped-report.model';
19
19
  export * from './models/daily-digest.model';
20
20
  export * from './models/analytics-snapshot.model';
21
+ export * from './models/service-activation.model';
22
+ export * from './models/user-feedback-state.model';
21
23
  export * from './models/report-notification-audience.model';
22
24
  export * from './models/report-notification-subscription.model';
23
25
  export * from './models/organization.model';
@@ -66,7 +68,6 @@ export * from './models/support-ticket-activity.model';
66
68
  export * from './models/invitation.model';
67
69
  export * from './models/user-asset.model';
68
70
  export * from './models/user-cookie-consent.model';
69
- export * from './models/user-feedback-state.model';
70
71
  export * from './models/user-sidebar-pin.model';
71
72
  export * from './models/admin-audit-log.model';
72
73
  export * from './quota-reservation-event';
@@ -78,3 +79,5 @@ export * from './mcp';
78
79
  export * from './models/activity.model';
79
80
  export * from './models/service-nudge.model';
80
81
  export * from './models/funding.model';
82
+ export * from './models/billing-subscription-event.model';
83
+ export * from './models/loyalty-rule.model';
@@ -34,6 +34,8 @@ __exportStar(require("./models/report.model"), exports);
34
34
  __exportStar(require("./models/wrapped-report.model"), exports);
35
35
  __exportStar(require("./models/daily-digest.model"), exports);
36
36
  __exportStar(require("./models/analytics-snapshot.model"), exports);
37
+ __exportStar(require("./models/service-activation.model"), exports);
38
+ __exportStar(require("./models/user-feedback-state.model"), exports);
37
39
  __exportStar(require("./models/report-notification-audience.model"), exports);
38
40
  __exportStar(require("./models/report-notification-subscription.model"), exports);
39
41
  __exportStar(require("./models/organization.model"), exports);
@@ -82,7 +84,6 @@ __exportStar(require("./models/support-ticket-activity.model"), exports);
82
84
  __exportStar(require("./models/invitation.model"), exports);
83
85
  __exportStar(require("./models/user-asset.model"), exports);
84
86
  __exportStar(require("./models/user-cookie-consent.model"), exports);
85
- __exportStar(require("./models/user-feedback-state.model"), exports);
86
87
  __exportStar(require("./models/user-sidebar-pin.model"), exports);
87
88
  __exportStar(require("./models/admin-audit-log.model"), exports);
88
89
  __exportStar(require("./quota-reservation-event"), exports);
@@ -94,4 +95,6 @@ __exportStar(require("./mcp"), exports);
94
95
  __exportStar(require("./models/activity.model"), exports);
95
96
  __exportStar(require("./models/service-nudge.model"), exports);
96
97
  __exportStar(require("./models/funding.model"), exports);
98
+ __exportStar(require("./models/billing-subscription-event.model"), exports);
99
+ __exportStar(require("./models/loyalty-rule.model"), exports);
97
100
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,gEAA8C;AAC9C,4EAA0D;AAC1D,6DAA2C;AAC3C,mEAAiD;AACjD,yEAAuD;AACvD,+DAA6C;AAC7C,+DAA6C;AAC7C,8DAA4C;AAC5C,mEAAiD;AACjD,oEAAkD;AAGlD,2DAAyC;AACzC,sEAAoD;AAGpD,wCAAsB;AAGtB,uDAAqC;AAGrC,wDAAsC;AACtC,gEAA8C;AAC9C,8DAA4C;AAC5C,oEAAkD;AAClD,8EAA4D;AAC5D,kFAAgE;AAGhE,8DAA4C;AAC5C,0EAAwD;AACxD,qEAAmD;AACnD,gFAA8D;AAC9D,mEAAiD;AAGjD,+DAA6C;AAC7C,iEAA+C;AAC/C,uEAAqD;AACrD,4EAA0D;AAC1D,4EAA0D;AAC1D,8DAA4C;AAC5C,yDAAuC;AACvC,8DAA4C;AAC5C,oEAAkD;AAClD,6DAA2C;AAC3C,oEAAkD;AAClD,iEAA+C;AAC/C,0EAAwD;AACxD,6DAA2C;AAC3C,sEAAoD;AACpD,mEAAiD;AACjD,mEAAiD;AACjD,kEAAgD;AAChD,qEAAmD;AACnD,wEAAsD;AACtD,+DAA6C;AAC7C,8DAA4C;AAC5C,qEAAmD;AACnD,sDAAoC;AACpC,6DAA2C;AAC3C,qEAAmD;AACnD,iFAA+D;AAC/D,iEAA+C;AAC/C,oFAAkE;AAGlE,kEAAgD;AAGhD,mEAAiD;AAGjD,+DAA6C;AAO7C,gEAA8C;AAG9C,gEAA8C;AAC9C,wEAAsD;AACtD,2EAAyD;AACzD,oEAAkD;AAClD,yEAAuD;AAGvD,4DAA0C;AAG1C,4DAA0C;AAG1C,qEAAmD;AAGnD,qEAAmD;AAGnD,kEAAgD;AAGhD,iEAA+C;AAC/C,4DAA0C;AAG1C,yDAAuC;AACvC,yDAAuC;AAGvC,gEAA8C;AAC9C,qEAAmD;AACnD,wCAAsB;AAGtB,0DAAwC;AAGxC,+DAA6C;AAG7C,yDAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,gEAA8C;AAC9C,4EAA0D;AAC1D,6DAA2C;AAC3C,mEAAiD;AACjD,yEAAuD;AACvD,+DAA6C;AAC7C,+DAA6C;AAC7C,8DAA4C;AAC5C,mEAAiD;AACjD,oEAAkD;AAGlD,2DAAyC;AACzC,sEAAoD;AAGpD,wCAAsB;AAGtB,uDAAqC;AAGrC,wDAAsC;AACtC,gEAA8C;AAC9C,8DAA4C;AAC5C,oEAAkD;AAClD,oEAAkD;AAClD,qEAAmD;AACnD,8EAA4D;AAC5D,kFAAgE;AAGhE,8DAA4C;AAC5C,0EAAwD;AACxD,qEAAmD;AACnD,gFAA8D;AAC9D,mEAAiD;AAGjD,+DAA6C;AAC7C,iEAA+C;AAC/C,uEAAqD;AACrD,4EAA0D;AAC1D,4EAA0D;AAC1D,8DAA4C;AAC5C,yDAAuC;AACvC,8DAA4C;AAC5C,oEAAkD;AAClD,6DAA2C;AAC3C,oEAAkD;AAClD,iEAA+C;AAC/C,0EAAwD;AACxD,6DAA2C;AAC3C,sEAAoD;AACpD,mEAAiD;AACjD,mEAAiD;AACjD,kEAAgD;AAChD,qEAAmD;AACnD,wEAAsD;AACtD,+DAA6C;AAC7C,8DAA4C;AAC5C,qEAAmD;AACnD,sDAAoC;AACpC,6DAA2C;AAC3C,qEAAmD;AACnD,iFAA+D;AAC/D,iEAA+C;AAC/C,oFAAkE;AAGlE,kEAAgD;AAGhD,mEAAiD;AAGjD,+DAA6C;AAO7C,gEAA8C;AAG9C,gEAA8C;AAC9C,wEAAsD;AACtD,2EAAyD;AACzD,oEAAkD;AAClD,yEAAuD;AAGvD,4DAA0C;AAG1C,4DAA0C;AAG1C,qEAAmD;AAKnD,kEAAgD;AAGhD,iEAA+C;AAC/C,4DAA0C;AAG1C,yDAAuC;AACvC,yDAAuC;AAGvC,gEAA8C;AAC9C,qEAAmD;AACnD,wCAAsB;AAGtB,0DAAwC;AAGxC,+DAA6C;AAG7C,yDAAuC;AAGvC,4EAA0D;AAC1D,8DAA4C"}
@@ -1,4 +1,5 @@
1
- import { BillingAccountStatus } from '../../enum';
1
+ import { BillingAccountStatus, BillingAddonStatus, BillingInterval } from '../../enum';
2
+ import { BillingModuleId } from '../../../constants/module-catalog.constants';
2
3
  import { IOrganization } from './organization.model';
3
4
  import { IUser } from './user.model';
4
5
  import { IPlanTemplate } from './plan-template.model';
@@ -13,6 +14,17 @@ export interface IBillingAddress {
13
14
  postalCode: string;
14
15
  country: string;
15
16
  }
17
+ export interface IPausedSubscriptionModule {
18
+ moduleId: BillingModuleId;
19
+ quantity: number;
20
+ status: BillingAddonStatus.ACTIVE | BillingAddonStatus.SUSPENDED_BY_PLAN;
21
+ }
22
+ export interface IPausedSubscriptionSnapshot {
23
+ planTemplateId: string;
24
+ interval: BillingInterval;
25
+ modules: IPausedSubscriptionModule[];
26
+ pausedAt: string;
27
+ }
16
28
  export interface IBillingAccount {
17
29
  id?: string;
18
30
  userId: string | null;
@@ -36,6 +48,15 @@ export interface IBillingAccount {
36
48
  currentPeriodEnd: Date;
37
49
  billingAnchorDay: number | null;
38
50
  trialEndsAt: Date | null;
51
+ paidSince: Date | null;
52
+ billingInterval: BillingInterval;
53
+ pendingBillingInterval: BillingInterval | null;
54
+ annualPeriodStart: Date | null;
55
+ annualPeriodEnd: Date | null;
56
+ pauseStartsAt: Date | null;
57
+ pauseEndsAt: Date | null;
58
+ pausedSnapshot: IPausedSubscriptionSnapshot | null;
59
+ pauseResumeFailedAt: Date | null;
39
60
  unpaidStripeInvoiceIds: string[];
40
61
  openStripeDisputeIds: string[];
41
62
  billingEmail: string | null;
@@ -0,0 +1,17 @@
1
+ import { BillingInterval, BillingSubscriptionEventType } from '../../enum';
2
+ export interface IBillingSubscriptionEvent {
3
+ id: string;
4
+ billingAccountId: string;
5
+ type: BillingSubscriptionEventType;
6
+ occurredAt: Date;
7
+ planBefore: string | null;
8
+ planAfter: string | null;
9
+ intervalBefore: BillingInterval | null;
10
+ intervalAfter: BillingInterval | null;
11
+ mrrCentsBefore: number | null;
12
+ mrrCentsAfter: number | null;
13
+ payload: Record<string, unknown>;
14
+ stripeEventId: string | null;
15
+ createdAt: Date;
16
+ updatedAt: Date;
17
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=billing-subscription-event.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-subscription-event.model.js","sourceRoot":"","sources":["../../../../src/types/interface/models/billing-subscription-event.model.ts"],"names":[],"mappings":""}
@@ -35,6 +35,8 @@ export * from './billing-quota-cap.model';
35
35
  export * from './quota-reservation.model';
36
36
  export * from './storage-subtotal.model';
37
37
  export * from './billing-trial-grant.model';
38
+ export * from './billing-subscription-event.model';
39
+ export * from './loyalty-rule.model';
38
40
  export * from './billing-daily-snapshot.model';
39
41
  export * from './webhook-event.model';
40
42
  export * from './ledger-entry.model';
@@ -57,7 +59,6 @@ export * from './support-ticket-activity.model';
57
59
  export * from './invitation.model';
58
60
  export * from './user-asset.model';
59
61
  export * from './user-cookie-consent.model';
60
- export * from './user-feedback-state.model';
61
62
  export * from './user-sidebar-pin.model';
62
63
  export * from './admin-audit-log.model';
63
64
  export * from './session.model';
@@ -67,3 +68,5 @@ export * from './mcp-connection-read.model';
67
68
  export * from './activity.model';
68
69
  export * from './service-nudge.model';
69
70
  export * from './funding.model';
71
+ export * from './service-activation.model';
72
+ export * from './user-feedback-state.model';
@@ -51,6 +51,8 @@ __exportStar(require("./billing-quota-cap.model"), exports);
51
51
  __exportStar(require("./quota-reservation.model"), exports);
52
52
  __exportStar(require("./storage-subtotal.model"), exports);
53
53
  __exportStar(require("./billing-trial-grant.model"), exports);
54
+ __exportStar(require("./billing-subscription-event.model"), exports);
55
+ __exportStar(require("./loyalty-rule.model"), exports);
54
56
  __exportStar(require("./billing-daily-snapshot.model"), exports);
55
57
  __exportStar(require("./webhook-event.model"), exports);
56
58
  __exportStar(require("./ledger-entry.model"), exports);
@@ -73,7 +75,6 @@ __exportStar(require("./support-ticket-activity.model"), exports);
73
75
  __exportStar(require("./invitation.model"), exports);
74
76
  __exportStar(require("./user-asset.model"), exports);
75
77
  __exportStar(require("./user-cookie-consent.model"), exports);
76
- __exportStar(require("./user-feedback-state.model"), exports);
77
78
  __exportStar(require("./user-sidebar-pin.model"), exports);
78
79
  __exportStar(require("./admin-audit-log.model"), exports);
79
80
  __exportStar(require("./session.model"), exports);
@@ -83,4 +84,6 @@ __exportStar(require("./mcp-connection-read.model"), exports);
83
84
  __exportStar(require("./activity.model"), exports);
84
85
  __exportStar(require("./service-nudge.model"), exports);
85
86
  __exportStar(require("./funding.model"), exports);
87
+ __exportStar(require("./service-activation.model"), exports);
88
+ __exportStar(require("./user-feedback-state.model"), exports);
86
89
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/interface/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,kDAAgC;AAChC,yDAAuC;AACvC,qEAAmD;AACnD,sDAAoC;AACpC,4DAA0C;AAC1C,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AACrC,4DAA0C;AAC1C,6DAA2C;AAG3C,oDAAkC;AAClC,+DAA6C;AAG7C,gDAA8B;AAG9B,iDAA+B;AAG/B,uDAAqC;AACrC,mEAAiD;AACjD,8DAA4C;AAG5C,wDAAsC;AACtC,0DAAwC;AACxC,gEAA8C;AAC9C,qEAAmD;AACnD,qEAAmD;AACnD,uDAAqC;AACrC,kDAAgC;AAChC,uDAAqC;AACrC,6DAA2C;AAC3C,sDAAoC;AACpC,6DAA2C;AAC3C,0DAAwC;AACxC,mEAAiD;AACjD,sDAAoC;AACpC,+DAA6C;AAC7C,4DAA0C;AAC1C,4DAA0C;AAC1C,2DAAyC;AACzC,8DAA4C;AAC5C,iEAA+C;AAC/C,wDAAsC;AACtC,uDAAqC;AACrC,8DAA4C;AAC5C,+CAA6B;AAC7B,sDAAoC;AACpC,8DAA4C;AAC5C,0EAAwD;AACxD,0DAAwC;AACxC,6EAA2D;AAG3D,2DAAyC;AAGzC,4DAA0C;AAG1C,wDAAsC;AAGtC,yDAAuC;AACvC,iEAA+C;AAC/C,oEAAkD;AAClD,yDAAuC;AACvC,6DAA2C;AAC3C,kEAAgD;AAGhD,qDAAmC;AAGnC,qDAAmC;AAGnC,8DAA4C;AAG5C,8DAA4C;AAG5C,2DAAyC;AAGzC,0DAAwC;AAGxC,kDAAgC;AAChC,kDAAgC;AAGhC,yDAAuC;AACvC,8DAA4C;AAG5C,mDAAiC;AAGjC,wDAAsC;AAGtC,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/interface/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,kDAAgC;AAChC,yDAAuC;AACvC,qEAAmD;AACnD,sDAAoC;AACpC,4DAA0C;AAC1C,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AACrC,4DAA0C;AAC1C,6DAA2C;AAG3C,oDAAkC;AAClC,+DAA6C;AAG7C,gDAA8B;AAG9B,iDAA+B;AAG/B,uDAAqC;AACrC,mEAAiD;AACjD,8DAA4C;AAG5C,wDAAsC;AACtC,0DAAwC;AACxC,gEAA8C;AAC9C,qEAAmD;AACnD,qEAAmD;AACnD,uDAAqC;AACrC,kDAAgC;AAChC,uDAAqC;AACrC,6DAA2C;AAC3C,sDAAoC;AACpC,6DAA2C;AAC3C,0DAAwC;AACxC,mEAAiD;AACjD,sDAAoC;AACpC,+DAA6C;AAC7C,4DAA0C;AAC1C,4DAA0C;AAC1C,2DAAyC;AACzC,8DAA4C;AAC5C,qEAAmD;AACnD,uDAAqC;AACrC,iEAA+C;AAC/C,wDAAsC;AACtC,uDAAqC;AACrC,8DAA4C;AAC5C,+CAA6B;AAC7B,sDAAoC;AACpC,8DAA4C;AAC5C,0EAAwD;AACxD,0DAAwC;AACxC,6EAA2D;AAG3D,2DAAyC;AAGzC,4DAA0C;AAG1C,wDAAsC;AAGtC,yDAAuC;AACvC,iEAA+C;AAC/C,oEAAkD;AAClD,yDAAuC;AACvC,6DAA2C;AAC3C,kEAAgD;AAGhD,qDAAmC;AAGnC,qDAAmC;AAGnC,8DAA4C;AAK5C,2DAAyC;AAGzC,0DAAwC;AAGxC,kDAAgC;AAChC,kDAAgC;AAGhC,yDAAuC;AACvC,8DAA4C;AAG5C,mDAAiC;AAGjC,wDAAsC;AAGtC,kDAAgC;AAEhC,6DAA2C;AAC3C,8DAA4C"}
@@ -0,0 +1,12 @@
1
+ import { BillingMetric, LoyaltyGrantMode, PlanAccountType } from '../../enum';
2
+ export interface ILoyaltyRule {
3
+ id: string;
4
+ metric: BillingMetric;
5
+ minTenureMonths: number;
6
+ mode: LoyaltyGrantMode;
7
+ value: number;
8
+ scopes: PlanAccountType[];
9
+ active: boolean;
10
+ createdAt: Date;
11
+ updatedAt: Date;
12
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=loyalty-rule.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loyalty-rule.model.js","sourceRoot":"","sources":["../../../../src/types/interface/models/loyalty-rule.model.ts"],"names":[],"mappings":""}
@@ -22,6 +22,7 @@ export interface IPlanTemplate {
22
22
  isPublic: boolean;
23
23
  isArchived: boolean;
24
24
  monthlyPriceEur: number;
25
+ yearlyPriceCents: number;
25
26
  quotas: IPlanServiceQuota[];
26
27
  overagePricing: IPlanOveragePricing[];
27
28
  quotaAlertThresholds: number[];
@@ -0,0 +1,13 @@
1
+ import { AbyssService } from '../../enum/abyss-service.enum';
2
+ import { ServiceActivationSource, ServiceActivationSubjectType } from '../../enum/service-activation.enum';
3
+ export interface IServiceActivation {
4
+ id: string;
5
+ subjectType: ServiceActivationSubjectType;
6
+ subjectId: string;
7
+ service: AbyssService;
8
+ activatedAt: Date;
9
+ deactivatedAt: Date | null;
10
+ source: ServiceActivationSource;
11
+ createdAt: Date;
12
+ updatedAt: Date;
13
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=service-activation.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-activation.model.js","sourceRoot":"","sources":["../../../../src/types/interface/models/service-activation.model.ts"],"names":[],"mappings":""}
@@ -25,6 +25,7 @@ export * from './invoice-amounts.utils';
25
25
  export * from './invoice-line-label.utils';
26
26
  export * from './resolve-user.utils';
27
27
  export * from './record-presence.utils';
28
+ export * from './subscription-retention.utils';
28
29
  export * from './pricing.utils';
29
30
  export * from './plan-capacity.utils';
30
31
  export * from './billing-deep-link.utils';
@@ -41,6 +41,7 @@ __exportStar(require("./invoice-amounts.utils"), exports);
41
41
  __exportStar(require("./invoice-line-label.utils"), exports);
42
42
  __exportStar(require("./resolve-user.utils"), exports);
43
43
  __exportStar(require("./record-presence.utils"), exports);
44
+ __exportStar(require("./subscription-retention.utils"), exports);
44
45
  __exportStar(require("./pricing.utils"), exports);
45
46
  __exportStar(require("./plan-capacity.utils"), exports);
46
47
  __exportStar(require("./billing-deep-link.utils"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,gDAA8B;AAC9B,0DAAwC;AACxC,+CAA6B;AAC7B,iDAA+B;AAC/B,uDAAqC;AACrC,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B;AAC7B,sDAAoC;AACpC,iDAA+B;AAC/B,mDAAiC;AACjC,mDAAiC;AACjC,sDAAoC;AACpC,kDAAgC;AAChC,wDAAsC;AACtC,wDAAsC;AACtC,wDAAsC;AACtC,6DAA2C;AAC3C,8DAA4C;AAC5C,qDAAmC;AACnC,0DAAwC;AACxC,6DAA2C;AAC3C,uDAAqC;AACrC,0DAAwC;AAIxC,kDAAgC;AAChC,wDAAsC;AACtC,4DAA0C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,gDAA8B;AAC9B,0DAAwC;AACxC,+CAA6B;AAC7B,iDAA+B;AAC/B,uDAAqC;AACrC,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B;AAC7B,sDAAoC;AACpC,iDAA+B;AAC/B,mDAAiC;AACjC,mDAAiC;AACjC,sDAAoC;AACpC,kDAAgC;AAChC,wDAAsC;AACtC,wDAAsC;AACtC,wDAAsC;AACtC,6DAA2C;AAC3C,8DAA4C;AAC5C,qDAAmC;AACnC,0DAAwC;AACxC,6DAA2C;AAC3C,uDAAqC;AACrC,0DAAwC;AACxC,iEAA+C;AAI/C,kDAAgC;AAChC,wDAAsC;AACtC,4DAA0C"}
@@ -2,6 +2,7 @@ import { BillingPackId } from '../constants/pack-catalog.constants';
2
2
  import { BillingModuleId } from '../constants/module-catalog.constants';
3
3
  import { PriceTranche } from '../constants/metric-price-scale.constants';
4
4
  import { BillingMetric } from '../types/enum/organization-billing.enum';
5
+ import { BillingInterval } from '../types/enum/billing-interval.enum';
5
6
  export declare const priceForQuantity: (scale: PriceTranche[], quantity: number) => number;
6
7
  export declare const quantityForBudget: (scale: PriceTranche[], budgetCents: number) => number;
7
8
  export declare const overageNanocentsPerUnit: (scale: PriceTranche[]) => number;
@@ -37,8 +38,17 @@ export interface StripePriceTier {
37
38
  }
38
39
  export declare const shiftedTiersForModule: (scale: PriceTranche[], includedQuantity: number) => StripePriceTier[];
39
40
  export declare const modulePriceCentsFor: (scale: PriceTranche[], includedQuantity: number, quantity: number) => number;
41
+ export declare const moduleExactPriceCentsFor: (scale: PriceTranche[], includedQuantity: number, quantity: number) => number;
40
42
  export declare const moduleMonthlyPriceCents: (moduleId: BillingModuleId, includedQuantity: number, quantity: number) => number;
43
+ export declare const moduleExactMonthlyPriceCents: (moduleId: BillingModuleId, includedQuantity: number, quantity: number) => number;
44
+ export declare const moduleIntervalPriceCents: (moduleId: BillingModuleId, includedQuantity: number, quantity: number, interval: BillingInterval) => number;
41
45
  export declare const moduleMetricUnits: (moduleId: BillingModuleId, lots: number) => number;
42
46
  export declare const remainingPeriodShare: (now: Date, periodStart: Date, periodEnd: Date) => number;
43
- export declare const moduleProratedPriceCents: (moduleId: BillingModuleId, includedQuantity: number, quantity: number, now: Date, periodStart: Date, periodEnd: Date) => number;
47
+ export declare const moduleProratedPriceCents: (moduleId: BillingModuleId, includedQuantity: number, quantity: number, now: Date, periodStart: Date, periodEnd: Date, interval?: BillingInterval) => number;
44
48
  export declare const packMonthlyPriceCents: (packId: BillingPackId, includedByModule: Partial<Record<BillingModuleId, number>>) => number;
49
+ export declare const ANNUAL_MONTHS_CHARGED = 10;
50
+ export declare const annualPriceCents: (monthlyCents: number) => number;
51
+ export declare const intervalPriceCents: (monthlyCents: number, interval: BillingInterval) => number;
52
+ export declare const monthlyEquivalentCents: (priceCents: number, interval: BillingInterval) => number;
53
+ export declare const decimalTimesTen: (decimal: string) => string;
54
+ export declare const annualTiersForModule: (tiers: StripePriceTier[]) => StripePriceTier[];
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.packMonthlyPriceCents = exports.moduleProratedPriceCents = exports.remainingPeriodShare = exports.moduleMetricUnits = exports.moduleMonthlyPriceCents = exports.modulePriceCentsFor = exports.shiftedTiersForModule = exports.quoteOverageRate = exports.OVERAGE_QUOTE_QUANTITIES = exports.formatNanoCentsAsEur = exports.planCapacityShare = exports.planCapacityValueCents = exports.overagePriceCents = exports.overageAmountCents = exports.resolveOverageNanocentsPerUnit = exports.resolveOverageRate = exports.OverageRateSource = exports.overageNanocentsPerUnit = exports.quantityForBudget = exports.priceForQuantity = void 0;
3
+ exports.annualTiersForModule = exports.decimalTimesTen = exports.monthlyEquivalentCents = exports.intervalPriceCents = exports.annualPriceCents = exports.ANNUAL_MONTHS_CHARGED = exports.packMonthlyPriceCents = exports.moduleProratedPriceCents = exports.remainingPeriodShare = exports.moduleMetricUnits = exports.moduleIntervalPriceCents = exports.moduleExactMonthlyPriceCents = exports.moduleMonthlyPriceCents = exports.moduleExactPriceCentsFor = exports.modulePriceCentsFor = exports.shiftedTiersForModule = exports.quoteOverageRate = exports.OVERAGE_QUOTE_QUANTITIES = exports.formatNanoCentsAsEur = exports.planCapacityShare = exports.planCapacityValueCents = exports.overagePriceCents = exports.overageAmountCents = exports.resolveOverageNanocentsPerUnit = exports.resolveOverageRate = exports.OverageRateSource = exports.overageNanocentsPerUnit = exports.quantityForBudget = exports.priceForQuantity = void 0;
4
4
  const pack_catalog_constants_1 = require("../constants/pack-catalog.constants");
5
5
  const overage_base_rates_constants_1 = require("../constants/overage-base-rates.constants");
6
6
  const module_catalog_constants_1 = require("../constants/module-catalog.constants");
7
7
  const metric_price_scale_constants_1 = require("../constants/metric-price-scale.constants");
8
+ const billing_interval_enum_1 = require("../types/enum/billing-interval.enum");
8
9
  const priceForQuantity = (scale, quantity) => {
9
10
  if (!Number.isFinite(quantity) || quantity <= 0) {
10
11
  return 0;
@@ -170,7 +171,9 @@ const shiftedTiersForModule = (scale, includedQuantity) => {
170
171
  return tiers;
171
172
  };
172
173
  exports.shiftedTiersForModule = shiftedTiersForModule;
173
- const modulePriceCentsFor = (scale, includedQuantity, quantity) => {
174
+ const modulePriceCentsFor = (scale, includedQuantity, quantity) => Math.round((0, exports.moduleExactPriceCentsFor)(scale, includedQuantity, quantity));
175
+ exports.modulePriceCentsFor = modulePriceCentsFor;
176
+ const moduleExactPriceCentsFor = (scale, includedQuantity, quantity) => {
174
177
  if (!Number.isFinite(quantity) || quantity <= 0) {
175
178
  return 0;
176
179
  }
@@ -190,10 +193,12 @@ const modulePriceCentsFor = (scale, includedQuantity, quantity) => {
190
193
  break;
191
194
  }
192
195
  }
193
- return Math.round(centimes);
196
+ return centimes;
194
197
  };
195
- exports.modulePriceCentsFor = modulePriceCentsFor;
196
- const moduleMonthlyPriceCents = (moduleId, includedQuantity, quantity) => {
198
+ exports.moduleExactPriceCentsFor = moduleExactPriceCentsFor;
199
+ const moduleMonthlyPriceCents = (moduleId, includedQuantity, quantity) => Math.round((0, exports.moduleExactMonthlyPriceCents)(moduleId, includedQuantity, quantity));
200
+ exports.moduleMonthlyPriceCents = moduleMonthlyPriceCents;
201
+ const moduleExactMonthlyPriceCents = (moduleId, includedQuantity, quantity) => {
197
202
  const module = (0, module_catalog_constants_1.moduleById)(moduleId);
198
203
  if (!module || !Number.isFinite(quantity) || quantity <= 0) {
199
204
  return 0;
@@ -205,9 +210,11 @@ const moduleMonthlyPriceCents = (moduleId, includedQuantity, quantity) => {
205
210
  if (!scale) {
206
211
  return 0;
207
212
  }
208
- return (0, exports.modulePriceCentsFor)(scale, includedQuantity, (0, exports.moduleMetricUnits)(module.id, quantity));
213
+ return (0, exports.moduleExactPriceCentsFor)(scale, includedQuantity, (0, exports.moduleMetricUnits)(module.id, quantity));
209
214
  };
210
- exports.moduleMonthlyPriceCents = moduleMonthlyPriceCents;
215
+ exports.moduleExactMonthlyPriceCents = moduleExactMonthlyPriceCents;
216
+ const moduleIntervalPriceCents = (moduleId, includedQuantity, quantity, interval) => (0, exports.intervalPriceCents)((0, exports.moduleExactMonthlyPriceCents)(moduleId, includedQuantity, quantity), interval);
217
+ exports.moduleIntervalPriceCents = moduleIntervalPriceCents;
211
218
  const moduleMetricUnits = (moduleId, lots) => {
212
219
  const module = (0, module_catalog_constants_1.moduleById)(moduleId);
213
220
  if (!module || !Number.isFinite(lots) || lots <= 0) {
@@ -234,7 +241,7 @@ const remainingPeriodShare = (now, periodStart, periodEnd) => {
234
241
  return Math.min(1, restant / duree);
235
242
  };
236
243
  exports.remainingPeriodShare = remainingPeriodShare;
237
- const moduleProratedPriceCents = (moduleId, includedQuantity, quantity, now, periodStart, periodEnd) => Math.floor((0, exports.moduleMonthlyPriceCents)(moduleId, includedQuantity, quantity) *
244
+ const moduleProratedPriceCents = (moduleId, includedQuantity, quantity, now, periodStart, periodEnd, interval = billing_interval_enum_1.BillingInterval.MONTH) => Math.floor((0, exports.moduleIntervalPriceCents)(moduleId, includedQuantity, quantity, interval) *
238
245
  (0, exports.remainingPeriodShare)(now, periodStart, periodEnd));
239
246
  exports.moduleProratedPriceCents = moduleProratedPriceCents;
240
247
  const packMonthlyPriceCents = (packId, includedByModule) => {
@@ -246,4 +253,44 @@ const packMonthlyPriceCents = (packId, includedByModule) => {
246
253
  return Math.round(somme * (1 - pack_catalog_constants_1.PACK_DISCOUNT_RATE));
247
254
  };
248
255
  exports.packMonthlyPriceCents = packMonthlyPriceCents;
256
+ exports.ANNUAL_MONTHS_CHARGED = 10;
257
+ const MONTHS_PER_YEAR = 12;
258
+ const annualPriceCents = (monthlyCents) => {
259
+ if (!Number.isFinite(monthlyCents) || monthlyCents <= 0) {
260
+ return 0;
261
+ }
262
+ return Math.round(monthlyCents * exports.ANNUAL_MONTHS_CHARGED);
263
+ };
264
+ exports.annualPriceCents = annualPriceCents;
265
+ const intervalPriceCents = (monthlyCents, interval) => {
266
+ if (interval === billing_interval_enum_1.BillingInterval.YEAR) {
267
+ return (0, exports.annualPriceCents)(monthlyCents);
268
+ }
269
+ if (!Number.isFinite(monthlyCents) || monthlyCents <= 0) {
270
+ return 0;
271
+ }
272
+ return Math.round(monthlyCents);
273
+ };
274
+ exports.intervalPriceCents = intervalPriceCents;
275
+ const monthlyEquivalentCents = (priceCents, interval) => interval === billing_interval_enum_1.BillingInterval.YEAR ? Math.round(priceCents / MONTHS_PER_YEAR) : priceCents;
276
+ exports.monthlyEquivalentCents = monthlyEquivalentCents;
277
+ const decimalTimesTen = (decimal) => {
278
+ const [mantissa, exponentText = '0'] = decimal.toLowerCase().split('e');
279
+ const [integerPart, fractionPart = ''] = mantissa.split('.');
280
+ const digits = `${integerPart}${fractionPart}`;
281
+ const pointIndex = integerPart.length + Number(exponentText) + 1;
282
+ const padded = pointIndex <= 0
283
+ ? `${'0'.repeat(1 - pointIndex)}${digits}`
284
+ : digits.padEnd(Math.max(digits.length, pointIndex), '0');
285
+ const at = Math.max(pointIndex, 1);
286
+ const whole = padded.slice(0, at).replace(/^0+(?=\d)/, '');
287
+ const fraction = padded.slice(at).replace(/0+$/, '');
288
+ return fraction.length > 0 ? `${whole}.${fraction}` : whole;
289
+ };
290
+ exports.decimalTimesTen = decimalTimesTen;
291
+ const annualTiersForModule = (tiers) => tiers.map((tier) => ({
292
+ upTo: tier.upTo,
293
+ unitAmountDecimal: (0, exports.decimalTimesTen)(tier.unitAmountDecimal),
294
+ }));
295
+ exports.annualTiersForModule = annualTiersForModule;
249
296
  //# sourceMappingURL=pricing.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.utils.js","sourceRoot":"","sources":["../../src/utils/pricing.utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pricing.utils.js","sourceRoot":"","sources":["../../src/utils/pricing.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { CancellationReason, RetentionOffer } from '../types/enum/billing-subscription-event.enum';
2
+ import { SubscriptionPauseState } from '../types/enum/subscription-pause.enum';
3
+ import type { IBillingAccount } from '../types/interface/models/billing-account.model';
4
+ export declare const SUBSCRIPTION_PAUSE_MONTHS: readonly [1, 2, 3];
5
+ export type SubscriptionPauseMonths = typeof SUBSCRIPTION_PAUSE_MONTHS[number];
6
+ export declare const SUBSCRIPTION_PAUSE_WINDOW_MONTHS = 12;
7
+ export declare const SUBSCRIPTION_RESUME_REMINDER_DAYS = 7;
8
+ export declare const CANCELLATION_REASON_TEXT_MAX_LENGTH = 500;
9
+ export declare const subscriptionPauseStateOf: (account: Pick<IBillingAccount, "pauseStartsAt" | "pausedSnapshot" | "pauseResumeFailedAt">) => SubscriptionPauseState;
10
+ export declare const retentionOffersFor: (reason?: CancellationReason | null) => RetentionOffer[];
11
+ export declare const RETENTION_OFFERS_SHOWN_MAX = 2;
12
+ export declare const retentionOffersShownMax: (reason?: CancellationReason | null) => number;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retentionOffersShownMax = exports.RETENTION_OFFERS_SHOWN_MAX = exports.retentionOffersFor = exports.subscriptionPauseStateOf = exports.CANCELLATION_REASON_TEXT_MAX_LENGTH = exports.SUBSCRIPTION_RESUME_REMINDER_DAYS = exports.SUBSCRIPTION_PAUSE_WINDOW_MONTHS = exports.SUBSCRIPTION_PAUSE_MONTHS = void 0;
4
+ const billing_subscription_event_enum_1 = require("../types/enum/billing-subscription-event.enum");
5
+ const subscription_pause_enum_1 = require("../types/enum/subscription-pause.enum");
6
+ exports.SUBSCRIPTION_PAUSE_MONTHS = [1, 2, 3];
7
+ exports.SUBSCRIPTION_PAUSE_WINDOW_MONTHS = 12;
8
+ exports.SUBSCRIPTION_RESUME_REMINDER_DAYS = 7;
9
+ exports.CANCELLATION_REASON_TEXT_MAX_LENGTH = 500;
10
+ const subscriptionPauseStateOf = (account) => {
11
+ if (account.pausedSnapshot !== null) {
12
+ return account.pauseResumeFailedAt !== null
13
+ ? subscription_pause_enum_1.SubscriptionPauseState.RESUME_FAILED
14
+ : subscription_pause_enum_1.SubscriptionPauseState.ACTIVE;
15
+ }
16
+ return account.pauseStartsAt !== null
17
+ ? subscription_pause_enum_1.SubscriptionPauseState.SCHEDULED
18
+ : subscription_pause_enum_1.SubscriptionPauseState.NONE;
19
+ };
20
+ exports.subscriptionPauseStateOf = subscriptionPauseStateOf;
21
+ const retentionOffersFor = (reason) => {
22
+ switch (reason) {
23
+ case billing_subscription_event_enum_1.CancellationReason.TOO_EXPENSIVE:
24
+ return [billing_subscription_event_enum_1.RetentionOffer.SWITCH_TO_ANNUAL, billing_subscription_event_enum_1.RetentionOffer.DOWNGRADE_PLAN, billing_subscription_event_enum_1.RetentionOffer.PAUSE];
25
+ case billing_subscription_event_enum_1.CancellationReason.NOT_USING_ENOUGH:
26
+ case billing_subscription_event_enum_1.CancellationReason.TEMPORARY_NEED:
27
+ return [billing_subscription_event_enum_1.RetentionOffer.PAUSE];
28
+ case billing_subscription_event_enum_1.CancellationReason.MISSING_FEATURE:
29
+ case billing_subscription_event_enum_1.CancellationReason.SWITCHING:
30
+ case billing_subscription_event_enum_1.CancellationReason.OTHER:
31
+ return [];
32
+ default:
33
+ return [billing_subscription_event_enum_1.RetentionOffer.SWITCH_TO_ANNUAL, billing_subscription_event_enum_1.RetentionOffer.PAUSE];
34
+ }
35
+ };
36
+ exports.retentionOffersFor = retentionOffersFor;
37
+ exports.RETENTION_OFFERS_SHOWN_MAX = 2;
38
+ const retentionOffersShownMax = (reason) => reason ? exports.RETENTION_OFFERS_SHOWN_MAX : 1;
39
+ exports.retentionOffersShownMax = retentionOffersShownMax;
40
+ //# sourceMappingURL=subscription-retention.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-retention.utils.js","sourceRoot":"","sources":["../../src/utils/subscription-retention.utils.ts"],"names":[],"mappings":";;;AAAA,mGAAmG;AACnG,mFAA+E;AAIlE,QAAA,yBAAyB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,CAAC;AAK/C,QAAA,gCAAgC,GAAG,EAAE,CAAC;AAGtC,QAAA,iCAAiC,GAAG,CAAC,CAAC;AAGtC,QAAA,mCAAmC,GAAG,GAAG,CAAC;AAOhD,MAAM,wBAAwB,GAAG,CACtC,OAA0F,EAClE,EAAE;IAC1B,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC,mBAAmB,KAAK,IAAI;YACzC,CAAC,CAAC,gDAAsB,CAAC,aAAa;YACtC,CAAC,CAAC,gDAAsB,CAAC,MAAM,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC,aAAa,KAAK,IAAI;QACnC,CAAC,CAAC,gDAAsB,CAAC,SAAS;QAClC,CAAC,CAAC,gDAAsB,CAAC,IAAI,CAAC;AAClC,CAAC,CAAC;AAXW,QAAA,wBAAwB,4BAWnC;AASK,MAAM,kBAAkB,GAAG,CAAC,MAAkC,EAAoB,EAAE;IACzF,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oDAAkB,CAAC,aAAa;YACnC,OAAO,CAAC,gDAAc,CAAC,gBAAgB,EAAE,gDAAc,CAAC,cAAc,EAAE,gDAAc,CAAC,KAAK,CAAC,CAAC;QAChG,KAAK,oDAAkB,CAAC,gBAAgB,CAAC;QACzC,KAAK,oDAAkB,CAAC,cAAc;YACpC,OAAO,CAAC,gDAAc,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,oDAAkB,CAAC,eAAe,CAAC;QACxC,KAAK,oDAAkB,CAAC,SAAS,CAAC;QAClC,KAAK,oDAAkB,CAAC,KAAK;YAC3B,OAAO,EAAE,CAAC;QACZ;YACE,OAAO,CAAC,gDAAc,CAAC,gBAAgB,EAAE,gDAAc,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;AACH,CAAC,CAAC;AAdW,QAAA,kBAAkB,sBAc7B;AAGW,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAMrC,MAAM,uBAAuB,GAAG,CAAC,MAAkC,EAAU,EAAE,CACpF,MAAM,CAAC,CAAC,CAAC,kCAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;AAD7B,QAAA,uBAAuB,2BACM"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const billing_interval_enum_1 = require("../../types/enum/billing-interval.enum");
4
+ const module_catalog_constants_1 = require("../../constants/module-catalog.constants");
5
+ const pricing_utils_1 = require("../pricing.utils");
6
+ describe('annual price', () => {
7
+ it('a plan or an unlock: exactly ten monthly prices', () => {
8
+ expect(pricing_utils_1.ANNUAL_MONTHS_CHARGED).toBe(10);
9
+ expect((0, pricing_utils_1.annualPriceCents)(900)).toBe(9000);
10
+ expect((0, pricing_utils_1.annualPriceCents)(2900)).toBe(29000);
11
+ expect((0, pricing_utils_1.annualPriceCents)(0)).toBe(0);
12
+ expect((0, pricing_utils_1.annualPriceCents)(-1)).toBe(0);
13
+ expect((0, pricing_utils_1.annualPriceCents)(Number.NaN)).toBe(0);
14
+ });
15
+ it('a fractional monthly amount is rounded once, after the ×10', () => {
16
+ expect((0, pricing_utils_1.annualPriceCents)(223.65)).toBe(2237);
17
+ expect(10 * Math.round(223.65)).toBe(2240);
18
+ });
19
+ it('per interval, and back to a monthly equivalent', () => {
20
+ expect((0, pricing_utils_1.intervalPriceCents)(900, billing_interval_enum_1.BillingInterval.MONTH)).toBe(900);
21
+ expect((0, pricing_utils_1.intervalPriceCents)(900, billing_interval_enum_1.BillingInterval.YEAR)).toBe(9000);
22
+ expect((0, pricing_utils_1.monthlyEquivalentCents)(9000, billing_interval_enum_1.BillingInterval.YEAR)).toBe(750);
23
+ expect((0, pricing_utils_1.monthlyEquivalentCents)(4990, billing_interval_enum_1.BillingInterval.YEAR)).toBe(416);
24
+ expect((0, pricing_utils_1.monthlyEquivalentCents)(900, billing_interval_enum_1.BillingInterval.MONTH)).toBe(900);
25
+ });
26
+ it('a module: the yearly price rounds the EXACT monthly amount once', () => {
27
+ const lots = 1700;
28
+ const exact = (0, pricing_utils_1.moduleExactMonthlyPriceCents)(module_catalog_constants_1.BillingModuleId.STORAGE, 200, lots);
29
+ expect((0, pricing_utils_1.moduleMonthlyPriceCents)(module_catalog_constants_1.BillingModuleId.STORAGE, 200, lots)).toBe(Math.round(exact));
30
+ expect((0, pricing_utils_1.moduleIntervalPriceCents)(module_catalog_constants_1.BillingModuleId.STORAGE, 200, lots, billing_interval_enum_1.BillingInterval.YEAR)).toBe(Math.round(exact * 10));
31
+ expect((0, pricing_utils_1.moduleIntervalPriceCents)(module_catalog_constants_1.BillingModuleId.UNLOCK_CRYPT_FILE_SIZE, 0, 1, billing_interval_enum_1.BillingInterval.YEAR)).toBe(1900);
32
+ });
33
+ it('a tier rate × 10 is exact in text, even in scientific notation', () => {
34
+ expect((0, pricing_utils_1.decimalTimesTen)('0.6')).toBe('6');
35
+ expect((0, pricing_utils_1.decimalTimesTen)('25')).toBe('250');
36
+ expect((0, pricing_utils_1.decimalTimesTen)('1.5')).toBe('15');
37
+ expect((0, pricing_utils_1.decimalTimesTen)('0.07')).toBe('0.7');
38
+ expect((0, pricing_utils_1.decimalTimesTen)('0.000014')).toBe('0.00014');
39
+ expect((0, pricing_utils_1.decimalTimesTen)('1.4e-7')).toBe('0.0000014');
40
+ expect((0, pricing_utils_1.decimalTimesTen)('2e-7')).toBe('0.000002');
41
+ expect((0, pricing_utils_1.annualTiersForModule)([
42
+ { upTo: 100, unitAmountDecimal: '1.5' },
43
+ { upTo: 'inf', unitAmountDecimal: '0.4' },
44
+ ])).toStrictEqual([
45
+ { upTo: 100, unitAmountDecimal: '15' },
46
+ { upTo: 'inf', unitAmountDecimal: '4' },
47
+ ]);
48
+ });
49
+ });
50
+ //# sourceMappingURL=annual-price.utils.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annual-price.utils.spec.js","sourceRoot":"","sources":["../../../src/utils/tests/annual-price.utils.spec.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ const plan = (catalogKey, monthlyPriceEur) => ({
8
8
  tier: monthlyPriceEur === 0 ? organization_billing_enum_1.PlanTier.FREEMIUM : organization_billing_enum_1.PlanTier.DEFAULT,
9
9
  accountType: organization_billing_enum_1.PlanAccountType.USER,
10
10
  name: catalogKey,
11
+ yearlyPriceCents: Math.round(monthlyPriceEur * 100) * 10,
11
12
  description: null,
12
13
  isPublic: true,
13
14
  isArchived: false,