@myrjfa/state 2.2.0 → 2.3.2

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 (117) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +20 -3
  3. package/dist/index.d.ts +8 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +8 -0
  6. package/dist/lib/actions/actions.d.ts +13 -13
  7. package/dist/lib/actions/actions.d.ts.map +1 -1
  8. package/dist/lib/actions/actions.js +5 -4
  9. package/dist/lib/actions/auth.d.ts +116 -7
  10. package/dist/lib/actions/auth.d.ts.map +1 -1
  11. package/dist/lib/actions/auth.js +59 -10
  12. package/dist/lib/actions/chat.d.ts +261 -24
  13. package/dist/lib/actions/chat.d.ts.map +1 -1
  14. package/dist/lib/actions/chat.js +525 -41
  15. package/dist/lib/actions/fetcher.d.ts.map +1 -1
  16. package/dist/lib/actions/fetcher.js +26 -9
  17. package/dist/lib/actions/serverActions.d.ts +1 -0
  18. package/dist/lib/actions/serverActions.d.ts.map +1 -1
  19. package/dist/lib/actions/serverActions.js +15 -0
  20. package/dist/lib/actions/socket.d.ts.map +1 -1
  21. package/dist/lib/actions/socket.js +5 -1
  22. package/dist/lib/actions.d.ts +26 -26
  23. package/dist/lib/actions.d.ts.map +1 -1
  24. package/dist/lib/actions.js +17 -12
  25. package/dist/lib/adminDashboardActions.d.ts +15 -3
  26. package/dist/lib/adminDashboardActions.d.ts.map +1 -1
  27. package/dist/lib/adminDashboardActions.js +16 -7
  28. package/dist/lib/authSessionManager.d.ts.map +1 -1
  29. package/dist/lib/authSessionManager.js +77 -12
  30. package/dist/lib/authSessionPolicy.d.ts +44 -0
  31. package/dist/lib/authSessionPolicy.d.ts.map +1 -0
  32. package/dist/lib/authSessionPolicy.js +61 -0
  33. package/dist/lib/authorizationActions.d.ts +77 -0
  34. package/dist/lib/authorizationActions.d.ts.map +1 -0
  35. package/dist/lib/authorizationActions.js +61 -0
  36. package/dist/lib/context/ChatContext.d.ts +25 -6
  37. package/dist/lib/context/ChatContext.d.ts.map +1 -1
  38. package/dist/lib/context/ChatContext.js +356 -245
  39. package/dist/lib/discountActions.d.ts +43 -0
  40. package/dist/lib/discountActions.d.ts.map +1 -0
  41. package/dist/lib/discountActions.js +69 -0
  42. package/dist/lib/loyaltyActions.d.ts +32 -0
  43. package/dist/lib/loyaltyActions.d.ts.map +1 -0
  44. package/dist/lib/loyaltyActions.js +92 -0
  45. package/dist/lib/models/adventure.d.ts +0 -2
  46. package/dist/lib/models/adventure.d.ts.map +1 -1
  47. package/dist/lib/models/authorization.d.ts +108 -0
  48. package/dist/lib/models/authorization.d.ts.map +1 -0
  49. package/dist/lib/models/authorization.js +266 -0
  50. package/dist/lib/models/blog.d.ts +6 -6
  51. package/dist/lib/models/booking.d.ts +7 -2
  52. package/dist/lib/models/booking.d.ts.map +1 -1
  53. package/dist/lib/models/chat.d.ts +418 -32
  54. package/dist/lib/models/chat.d.ts.map +1 -1
  55. package/dist/lib/models/chat.js +5 -1
  56. package/dist/lib/models/discount.d.ts +589 -138
  57. package/dist/lib/models/discount.d.ts.map +1 -1
  58. package/dist/lib/models/discount.js +118 -96
  59. package/dist/lib/models/guide.d.ts +0 -2
  60. package/dist/lib/models/guide.d.ts.map +1 -1
  61. package/dist/lib/models/loyalty.d.ts +88 -0
  62. package/dist/lib/models/loyalty.d.ts.map +1 -0
  63. package/dist/lib/models/loyalty.js +1 -0
  64. package/dist/lib/models/notifications.d.ts +6 -6
  65. package/dist/lib/models/opportunities/freelance.d.ts +66 -20
  66. package/dist/lib/models/opportunities/freelance.d.ts.map +1 -1
  67. package/dist/lib/models/opportunities/internship.d.ts +66 -20
  68. package/dist/lib/models/opportunities/internship.d.ts.map +1 -1
  69. package/dist/lib/models/opportunities/job.d.ts +66 -20
  70. package/dist/lib/models/opportunities/job.d.ts.map +1 -1
  71. package/dist/lib/models/opportunities/opportunity.d.ts +66 -20
  72. package/dist/lib/models/opportunities/opportunity.d.ts.map +1 -1
  73. package/dist/lib/models/opportunities/opportunity.js +2 -0
  74. package/dist/lib/models/opportunities/volunteerJob.d.ts +66 -20
  75. package/dist/lib/models/opportunities/volunteerJob.d.ts.map +1 -1
  76. package/dist/lib/models/package.d.ts +77 -216
  77. package/dist/lib/models/package.d.ts.map +1 -1
  78. package/dist/lib/models/package.js +0 -2
  79. package/dist/lib/models/portfolio.d.ts +2 -2
  80. package/dist/lib/models/pricing.d.ts +12 -12
  81. package/dist/lib/models/props.d.ts +1 -1
  82. package/dist/lib/models/props.d.ts.map +1 -1
  83. package/dist/lib/models/rental.d.ts +0 -2
  84. package/dist/lib/models/rental.d.ts.map +1 -1
  85. package/dist/lib/models/review.d.ts +2 -2
  86. package/dist/lib/models/stay.d.ts +17 -17
  87. package/dist/lib/models/store.d.ts +71 -0
  88. package/dist/lib/models/store.d.ts.map +1 -0
  89. package/dist/lib/models/store.js +1 -0
  90. package/dist/lib/models/tile.d.ts +0 -2
  91. package/dist/lib/models/tile.d.ts.map +1 -1
  92. package/dist/lib/models/travelPackage.d.ts +211 -310
  93. package/dist/lib/models/travelPackage.d.ts.map +1 -1
  94. package/dist/lib/models/travelPackage.js +0 -2
  95. package/dist/lib/models/user.d.ts +32 -8
  96. package/dist/lib/models/user.d.ts.map +1 -1
  97. package/dist/lib/models/user.js +10 -1
  98. package/dist/lib/opportunityFormPage.d.ts +1 -0
  99. package/dist/lib/opportunityFormPage.d.ts.map +1 -1
  100. package/dist/lib/opportunityFormPage.js +1 -0
  101. package/dist/lib/rentalActions.js +0 -1
  102. package/dist/lib/rentalDummyData.d.ts.map +1 -1
  103. package/dist/lib/rentalDummyData.js +0 -35
  104. package/dist/lib/rentalFormPage.d.ts +0 -2
  105. package/dist/lib/rentalFormPage.d.ts.map +1 -1
  106. package/dist/lib/rentalFormPage.js +0 -3
  107. package/dist/lib/storeActions.d.ts +25 -0
  108. package/dist/lib/storeActions.d.ts.map +1 -0
  109. package/dist/lib/storeActions.js +46 -0
  110. package/dist/lib/storeDummyData.d.ts +2 -26
  111. package/dist/lib/storeDummyData.d.ts.map +1 -1
  112. package/dist/lib/userAtom.d.ts +178 -42
  113. package/dist/lib/userAtom.d.ts.map +1 -1
  114. package/dist/lib/userAtom.js +80 -52
  115. package/dist/lib/utils.d.ts.map +1 -1
  116. package/dist/lib/utils.js +1 -1
  117. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"discount.d.ts","sourceRoot":"","sources":["../../../src/lib/models/discount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBjC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEzB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,wBAAgB,2BAA2B,IAAI,QAAQ,CAkDtD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAItE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,GAAG,MAAM,CAO1G;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACrC,IAAI,EAAE,MAAM,EACZ,WAAW,GAAE,IAAiB,EAC9B,UAAU,GAAE,MAAW,GACtB,gBAAgB,GAAG,SAAS,CAY9B"}
1
+ {"version":3,"file":"discount.d.ts","sourceRoot":"","sources":["../../../src/lib/models/discount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB,kFAAgF,CAAC;AACvH,eAAO,MAAM,0BAA0B,oLAGrC,CAAC;AACH,eAAO,MAAM,oBAAoB,2DAAyD,CAAC;AAC3F,eAAO,MAAM,oBAAoB,0FAAwF,CAAC;AAC1H,eAAO,MAAM,2BAA2B,sEAAoE,CAAC;AAE7G,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAIhC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBnC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BjC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBrC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5F,MAAM,EAAE,QAAQ,GAAG,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IACrE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,MAAM,GAAE,cAAuB,GAAG,gBAAgB,CAoB7F"}
@@ -1,106 +1,128 @@
1
1
  import { z } from "zod";
2
+ export const DiscountFeatureTypeSchema = z.enum(["stay", "rental", "adventure", "event", "package", "guide", "store"]);
3
+ export const DiscountStrategyTypeSchema = z.enum([
4
+ "duration", "early_booking", "last_minute", "scheduled", "recurring", "group", "quantity",
5
+ "coupon", "first_booking", "checkout_recovery", "payment_offer", "partner",
6
+ ]);
7
+ export const DiscountOriginSchema = z.enum(["host", "staff_suggestion", "staff_campaign"]);
8
+ export const DiscountStatusSchema = z.enum(["draft", "suggested", "active", "paused", "rejected", "expired", "archived"]);
9
+ export const DiscountStackingGroupSchema = z.enum(["automatic", "coupon", "payment", "partner", "recovery"]);
10
+ export const DiscountFundingSchema = z.object({
11
+ hostPercentagePoints: z.number().min(0).default(0),
12
+ platformPercentagePoints: z.number().min(0).default(0),
13
+ partnerPercentagePoints: z.number().min(0).default(0),
14
+ });
15
+ export const DiscountConditionsSchema = z.object({
16
+ minUnits: z.number().min(0).nullable().optional(),
17
+ maxUnits: z.number().min(0).nullable().optional(),
18
+ minQuantity: z.number().min(0).nullable().optional(),
19
+ minParticipants: z.number().min(0).nullable().optional(),
20
+ minSubtotal: z.number().min(0).nullable().optional(),
21
+ bookingLeadMinMinutes: z.number().min(0).nullable().optional(),
22
+ bookingLeadMaxMinutes: z.number().min(0).nullable().optional(),
23
+ bookingStartsAt: z.string().nullable().optional(),
24
+ bookingEndsAt: z.string().nullable().optional(),
25
+ serviceStartsAt: z.string().nullable().optional(),
26
+ serviceEndsAt: z.string().nullable().optional(),
27
+ recurringDays: z.array(z.number().min(0).max(6)).default([]),
28
+ recurringStartTime: z.string().optional(),
29
+ recurringEndTime: z.string().optional(),
30
+ timezone: z.string().default("Asia/Kolkata"),
31
+ firstBookingOnly: z.boolean().default(false),
32
+ checkoutDelayMinutes: z.number().min(0).nullable().optional(),
33
+ paymentMethods: z.array(z.string()).default([]),
34
+ cardTypes: z.array(z.string()).default([]),
35
+ issuers: z.array(z.string()).default([]),
36
+ networks: z.array(z.string()).default([]),
37
+ partnerProgramIds: z.array(z.string()).default([]),
38
+ });
2
39
  export const DiscountStrategySchema = z.object({
3
- type: z.enum(["duration", "last-minute", "temporary-promotion", "coupon"]).default("duration"),
40
+ _id: z.string().optional(),
41
+ name: z.string().min(1),
42
+ description: z.string().default(""),
43
+ strategyType: DiscountStrategyTypeSchema,
44
+ origin: DiscountOriginSchema,
45
+ status: DiscountStatusSchema.default("draft"),
46
+ sourceStrategyId: z.string().nullable().optional(),
47
+ hostId: z.union([z.string(), z.object({ _id: z.string() })]).nullable().optional(),
48
+ targetScope: z.enum(["platform", "host", "listing", "subtarget"]).default("platform"),
49
+ featureTypes: z.array(DiscountFeatureTypeSchema).default([]),
50
+ targetId: z.string().nullable().optional(),
51
+ targetIds: z.array(z.string()).default([]),
52
+ subTargetId: z.string().nullable().optional(),
53
+ pricingStrategyIds: z.array(z.string()).default([]),
54
+ percentage: z.number().positive().max(100),
55
+ funding: DiscountFundingSchema,
56
+ conditions: DiscountConditionsSchema.default({}),
57
+ stacking: z.object({
58
+ group: DiscountStackingGroupSchema.default("automatic"),
59
+ priority: z.number().default(0),
60
+ compatibleGroups: z.array(DiscountStackingGroupSchema).default([]),
61
+ }).default({}),
62
+ usageLimits: z.object({ total: z.number().positive().nullable().optional(), perUser: z.number().positive().nullable().optional() }).default({}),
63
+ redemptionCount: z.number().min(0).default(0),
4
64
  couponCode: z.string().optional(),
5
- couponScope: z.enum(["listing", "host", "platform"]).optional(),
6
- discountAppliesTo: z.enum(["booking-total", "platform-fees"]).optional(),
7
- createdBy: z.enum(["admin", "host"]).optional(),
8
- maxRedemptions: z.number().min(0).optional(),
9
- maxRedemptionsPerUser: z.number().min(0).optional(),
10
- minimumOrderValue: z.number().min(0).optional(),
11
- durationType: z.enum(["weekly", "fifteen-days", "monthly", "custom", ""]).default(""),
12
- minDays: z.number().min(0).default(0),
13
- discountType: z.enum(["percentage", "flat"]).default("percentage"),
14
- discountValue: z.number().min(0).default(0),
65
+ couponPreview: z.string().optional(),
66
+ razorpayOfferId: z.string().optional(),
67
+ createdAt: z.string().optional(),
68
+ updatedAt: z.string().optional(),
69
+ });
70
+ export const DiscountQuoteRequestSchema = z.object({
71
+ featureType: DiscountFeatureTypeSchema,
72
+ targetId: z.string(),
73
+ subTargetId: z.string().optional(),
74
+ pricingStrategyId: z.string().optional(),
75
+ selectedPricingIndex: z.number().optional(),
76
+ quantity: z.number().positive().optional(),
77
+ participants: z.number().positive().optional(),
15
78
  startDate: z.string().optional(),
16
79
  endDate: z.string().optional(),
17
- description: z.string().default(""),
18
- suggestedByPlatform: z.boolean().default(false),
19
- active: z.boolean().default(true),
80
+ startTime: z.string().optional(),
81
+ pickupTime: z.string().optional(),
82
+ orderType: z.enum(["purchase", "rental"]).optional(),
83
+ activityTotal: z.number().min(0).optional(),
84
+ couponCode: z.string().optional(),
85
+ checkoutStartedAt: z.string().optional(),
20
86
  });
21
- export const DiscountSchema = z.object({
22
- discountStrategies: z.array(DiscountStrategySchema).default([]),
87
+ export const DiscountQuoteSchema = z.object({
88
+ quoteId: z.string(),
89
+ currency: z.string(),
90
+ combinedPercentage: z.number(),
91
+ totalDiscount: z.number(),
92
+ funding: z.object({ host: z.number(), platform: z.number(), partner: z.number() }),
93
+ totalBeforeDiscount: z.number(),
94
+ totalAfterDiscount: z.number(),
95
+ grantId: z.string().nullable().optional(),
96
+ selected: z.array(z.object({
97
+ strategyId: z.string(), name: z.string(), description: z.string().optional(), strategyType: DiscountStrategyTypeSchema,
98
+ percentage: z.number(), amount: z.number(), funding: z.object({ host: z.number(), platform: z.number(), partner: z.number() }),
99
+ stackingGroup: DiscountStackingGroupSchema, razorpayOfferId: z.string().optional(),
100
+ paymentEligibility: z.object({
101
+ paymentMethods: z.array(z.string()).default([]), cardTypes: z.array(z.string()).default([]),
102
+ issuers: z.array(z.string()).default([]), networks: z.array(z.string()).default([]),
103
+ }).optional(),
104
+ })),
105
+ rejected: z.array(z.object({ strategyId: z.string().optional(), name: z.string(), reason: z.string() })),
106
+ createdAt: z.string().or(z.date()),
23
107
  });
24
- export function createDefaultRentalDiscount() {
108
+ export function createEmptyDiscountStrategy(origin = "host") {
25
109
  return {
26
- discountStrategies: [
27
- {
28
- type: "duration",
29
- couponCode: "",
30
- couponScope: "listing",
31
- discountAppliesTo: "booking-total",
32
- createdBy: "host",
33
- minimumOrderValue: 0,
34
- durationType: "weekly",
35
- minDays: 7,
36
- discountType: "percentage",
37
- discountValue: 0,
38
- description: "Weekly discount",
39
- suggestedByPlatform: false,
40
- active: true,
41
- },
42
- {
43
- type: "duration",
44
- couponCode: "",
45
- couponScope: "listing",
46
- discountAppliesTo: "booking-total",
47
- createdBy: "host",
48
- minimumOrderValue: 0,
49
- durationType: "fifteen-days",
50
- minDays: 15,
51
- discountType: "percentage",
52
- discountValue: 0,
53
- description: "15 day discount",
54
- suggestedByPlatform: false,
55
- active: true,
56
- },
57
- {
58
- type: "duration",
59
- couponCode: "",
60
- couponScope: "listing",
61
- discountAppliesTo: "booking-total",
62
- createdBy: "host",
63
- minimumOrderValue: 0,
64
- durationType: "monthly",
65
- minDays: 30,
66
- discountType: "percentage",
67
- discountValue: 0,
68
- description: "Monthly discount",
69
- suggestedByPlatform: false,
70
- active: true,
71
- },
72
- ],
110
+ name: "",
111
+ description: "",
112
+ strategyType: "scheduled",
113
+ origin,
114
+ status: "draft",
115
+ targetScope: "listing",
116
+ featureTypes: [],
117
+ targetIds: [],
118
+ pricingStrategyIds: [],
119
+ percentage: 10,
120
+ funding: origin === "staff_campaign"
121
+ ? { hostPercentagePoints: 0, platformPercentagePoints: 10, partnerPercentagePoints: 0 }
122
+ : { hostPercentagePoints: 10, platformPercentagePoints: 0, partnerPercentagePoints: 0 },
123
+ conditions: { recurringDays: [], timezone: "Asia/Kolkata", firstBookingOnly: false, paymentMethods: [], cardTypes: [], issuers: [], networks: [], partnerProgramIds: [] },
124
+ stacking: { group: "automatic", priority: 0, compatibleGroups: [] },
125
+ usageLimits: {},
126
+ redemptionCount: 0,
73
127
  };
74
128
  }
75
- export function normalizeDiscount(discount) {
76
- return {
77
- discountStrategies: discount?.discountStrategies || [],
78
- };
79
- }
80
- export function calculateDiscountAmount(total, strategy) {
81
- if (!strategy)
82
- return 0;
83
- const discountValue = Math.max(Number(strategy.discountValue) || 0, 0);
84
- if (strategy.discountType === "flat") {
85
- return Math.min(discountValue, total);
86
- }
87
- return Math.min(Math.round((total * discountValue) / 100), total);
88
- }
89
- export function getApplicableDiscountStrategy(discount, days, bookingDate = new Date(), couponCode = "") {
90
- const normalizedCoupon = couponCode.trim().toUpperCase();
91
- return (discount?.discountStrategies || [])
92
- .filter((strategy) => {
93
- if (!strategy.active)
94
- return false;
95
- if (Number(strategy.minDays || 0) > days)
96
- return false;
97
- if (strategy.startDate && bookingDate < new Date(strategy.startDate))
98
- return false;
99
- if (strategy.endDate && bookingDate > new Date(strategy.endDate))
100
- return false;
101
- if (strategy.type === "coupon" && (strategy.couponCode || "").trim().toUpperCase() !== normalizedCoupon)
102
- return false;
103
- return Number(strategy.discountValue || 0) > 0;
104
- })
105
- .sort((a, b) => Number(b.minDays || 0) - Number(a.minDays || 0))[0];
106
- }
@@ -1,5 +1,4 @@
1
1
  import { Pricing } from "./pricing";
2
- import { Discount } from "./discount";
3
2
  export type GuideStatus = "draft" | "pending" | "open" | "closed" | "denied" | "archived";
4
3
  export interface Guide {
5
4
  _id: string;
@@ -14,7 +13,6 @@ export interface Guide {
14
13
  specialties: string[];
15
14
  experienceYears?: number;
16
15
  pricing?: Pricing;
17
- discount?: Discount;
18
16
  operatingHours?: {
19
17
  start: string;
20
18
  end: string;
@@ -1 +1 @@
1
- {"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../../src/lib/models/guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE1F,MAAM,WAAW,KAAK;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IAGpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAGpB,cAAc,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;IAGF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,IAAI,CAAC;IAGlB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;CACpB"}
1
+ {"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../../src/lib/models/guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE1F,MAAM,WAAW,KAAK;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IAGpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,cAAc,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;IAGF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,IAAI,CAAC;IAGlB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;CACpB"}
@@ -0,0 +1,88 @@
1
+ export type RewardWallet = {
2
+ account: {
3
+ pendingCoins: number;
4
+ availableCoins: number;
5
+ reservedCoins: number;
6
+ lifetimeEarnedCoins: number;
7
+ lifetimeSpentCoins: number;
8
+ } | null;
9
+ ledger: Array<{
10
+ _id: string;
11
+ entryType: string;
12
+ status: string;
13
+ coins: number;
14
+ reason?: string;
15
+ availableAt?: string;
16
+ expiresAt?: string;
17
+ createdAt: string;
18
+ }>;
19
+ settings: Record<string, unknown>;
20
+ };
21
+ export type ApplicationPassBalance = {
22
+ limit: number;
23
+ used: number;
24
+ };
25
+ export type UserMembershipProgress = {
26
+ membership: {
27
+ tier: "plus" | "premium";
28
+ startsAt: string;
29
+ endsAt: string;
30
+ } | null;
31
+ eligibility: {
32
+ eligible: boolean;
33
+ qualifyingBookingCount: number;
34
+ requiredBookings: number;
35
+ bookingsRemaining: number;
36
+ availableCoins: number;
37
+ requiredCoins: number;
38
+ coinsRemaining: number;
39
+ };
40
+ applicationPasses: {
41
+ normalToPlus: {
42
+ volunteer: ApplicationPassBalance;
43
+ paid: ApplicationPassBalance;
44
+ };
45
+ plusToPremium: {
46
+ volunteer: ApplicationPassBalance;
47
+ paid: ApplicationPassBalance;
48
+ };
49
+ };
50
+ plan: Record<string, unknown>;
51
+ };
52
+ export type HostPremiumQuote = {
53
+ eligible: boolean;
54
+ score: number;
55
+ minimumScore: number;
56
+ cash: {
57
+ basePrice: number;
58
+ discountPercent: number;
59
+ payablePrice: number;
60
+ currency: string;
61
+ };
62
+ commission: {
63
+ enabled: boolean;
64
+ baseUpliftPercentagePoints: number;
65
+ reductionPercentagePoints: number;
66
+ upliftPercentagePoints: number;
67
+ };
68
+ durationDays: number;
69
+ };
70
+ export type PartnerCouponReveal = {
71
+ campaign: {
72
+ id: string;
73
+ name: string;
74
+ distributionPlatform: string;
75
+ termsUrl?: string;
76
+ };
77
+ coupon: {
78
+ code: string;
79
+ preview: string;
80
+ percentage: number;
81
+ featureTypes: string[];
82
+ expiresAt?: string;
83
+ name: string;
84
+ description?: string;
85
+ };
86
+ accountBinding: "none";
87
+ };
88
+ //# sourceMappingURL=loyalty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loyalty.d.ts","sourceRoot":"","sources":["../../../src/lib/models/loyalty.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -24,6 +24,7 @@ export declare const NotifSchema: z.ZodObject<{
24
24
  }, "strip", z.ZodTypeAny, {
25
25
  status?: string | undefined;
26
26
  rating?: number | undefined;
27
+ title?: string | undefined;
27
28
  conversationId?: string | undefined;
28
29
  messageId?: string | undefined;
29
30
  senderId?: string | undefined;
@@ -33,10 +34,10 @@ export declare const NotifSchema: z.ZodObject<{
33
34
  expenseId?: string | undefined;
34
35
  referenceId?: string | undefined;
35
36
  referenceType?: string | undefined;
36
- title?: string | undefined;
37
37
  }, {
38
38
  status?: string | undefined;
39
39
  rating?: number | undefined;
40
+ title?: string | undefined;
40
41
  conversationId?: string | undefined;
41
42
  messageId?: string | undefined;
42
43
  senderId?: string | undefined;
@@ -46,11 +47,10 @@ export declare const NotifSchema: z.ZodObject<{
46
47
  expenseId?: string | undefined;
47
48
  referenceId?: string | undefined;
48
49
  referenceType?: string | undefined;
49
- title?: string | undefined;
50
50
  }>>;
51
51
  }, "strip", z.ZodTypeAny, {
52
- message: string;
53
52
  _id: string;
53
+ message: string;
54
54
  read: boolean;
55
55
  type?: "new_message" | "milestone_completed" | "expense_added" | "group_invite" | "mention" | "application_received" | "application_status" | "application_shortlisted" | "id_verification_request" | "id_verified" | "id_rejected" | "package_enquiry" | "package_approval" | "package_denial" | "package_rating" | "package_review" | "opportunity_assigned" | "opportunity_approval" | "opportunity_denial" | "opportunity_rating" | "opportunity_review" | "blog_like" | "blog_comment" | "blog_posted" | "blog_approval" | "blog_denial" | "booking_confirmed" | "system" | "general" | undefined;
56
56
  userId?: string | undefined;
@@ -60,6 +60,7 @@ export declare const NotifSchema: z.ZodObject<{
60
60
  metadata?: {
61
61
  status?: string | undefined;
62
62
  rating?: number | undefined;
63
+ title?: string | undefined;
63
64
  conversationId?: string | undefined;
64
65
  messageId?: string | undefined;
65
66
  senderId?: string | undefined;
@@ -69,11 +70,10 @@ export declare const NotifSchema: z.ZodObject<{
69
70
  expenseId?: string | undefined;
70
71
  referenceId?: string | undefined;
71
72
  referenceType?: string | undefined;
72
- title?: string | undefined;
73
73
  } | undefined;
74
74
  }, {
75
- message: string;
76
75
  _id: string;
76
+ message: string;
77
77
  read: boolean;
78
78
  type?: "new_message" | "milestone_completed" | "expense_added" | "group_invite" | "mention" | "application_received" | "application_status" | "application_shortlisted" | "id_verification_request" | "id_verified" | "id_rejected" | "package_enquiry" | "package_approval" | "package_denial" | "package_rating" | "package_review" | "opportunity_assigned" | "opportunity_approval" | "opportunity_denial" | "opportunity_rating" | "opportunity_review" | "blog_like" | "blog_comment" | "blog_posted" | "blog_approval" | "blog_denial" | "booking_confirmed" | "system" | "general" | undefined;
79
79
  userId?: string | undefined;
@@ -83,6 +83,7 @@ export declare const NotifSchema: z.ZodObject<{
83
83
  metadata?: {
84
84
  status?: string | undefined;
85
85
  rating?: number | undefined;
86
+ title?: string | undefined;
86
87
  conversationId?: string | undefined;
87
88
  messageId?: string | undefined;
88
89
  senderId?: string | undefined;
@@ -92,7 +93,6 @@ export declare const NotifSchema: z.ZodObject<{
92
93
  expenseId?: string | undefined;
93
94
  referenceId?: string | undefined;
94
95
  referenceType?: string | undefined;
95
- title?: string | undefined;
96
96
  } | undefined;
97
97
  }>;
98
98
  export type Notif = z.infer<typeof NotifSchema>;