@mohasinac/appkit 4.1.3 → 4.3.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 (276) hide show
  1. package/dist/_internal/server/features/auth/actions.d.ts +0 -1
  2. package/dist/_internal/server/features/auth/actions.js +0 -1
  3. package/dist/_internal/server/features/bundles/data.d.ts +22 -4
  4. package/dist/_internal/server/features/bundles/data.js +41 -4
  5. package/dist/_internal/server/features/bundles/index.d.ts +1 -1
  6. package/dist/_internal/server/features/bundles/index.js +1 -1
  7. package/dist/_internal/server/features/checkout/actions.d.ts +15 -0
  8. package/dist/_internal/server/features/checkout/actions.js +249 -257
  9. package/dist/_internal/server/features/checkout/prize-bundle-gates.d.ts +5 -16
  10. package/dist/_internal/server/features/checkout/prize-bundle-gates.js +5 -30
  11. package/dist/_internal/server/features/orders/adapters.js +1 -14
  12. package/dist/_internal/server/features/products/actions.js +8 -3
  13. package/dist/_internal/server/features/products/service.d.ts +15 -0
  14. package/dist/_internal/server/features/products/service.js +41 -0
  15. package/dist/_internal/server/functions/firestore.d.ts +3 -1
  16. package/dist/_internal/server/functions/firestore.js +17 -1
  17. package/dist/_internal/server/functions/scheduled.d.ts +3 -5
  18. package/dist/_internal/server/functions/scheduled.js +14 -30
  19. package/dist/_internal/server/jobs/core/bundleStockSync.js +25 -7
  20. package/dist/_internal/server/jobs/core/countersReconcile.js +7 -1
  21. package/dist/_internal/server/jobs/core/index.d.ts +4 -4
  22. package/dist/_internal/server/jobs/core/index.js +4 -4
  23. package/dist/_internal/server/jobs/core/jobRunners.js +10 -0
  24. package/dist/_internal/server/jobs/core/newsletterExport.d.ts +15 -0
  25. package/dist/_internal/server/jobs/core/newsletterExport.js +43 -0
  26. package/dist/_internal/server/jobs/core/onOrderStatusChange.d.ts +2 -0
  27. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +1 -0
  28. package/dist/_internal/server/jobs/core/onPrizeDrawPaymentConfirmed.d.ts +19 -0
  29. package/dist/_internal/server/jobs/core/onPrizeDrawPaymentConfirmed.js +30 -0
  30. package/dist/_internal/server/jobs/core/paymentWindowTimeout.d.ts +2 -2
  31. package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +3 -2
  32. package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +1 -0
  33. package/dist/_internal/server/jobs/core/prizeDrawAssignWinner.d.ts +20 -0
  34. package/dist/_internal/server/jobs/core/prizeDrawAssignWinner.js +113 -0
  35. package/dist/_internal/server/jobs/core/prizeDrawExpiryReveal.d.ts +14 -0
  36. package/dist/_internal/server/jobs/core/prizeDrawExpiryReveal.js +74 -0
  37. package/dist/_internal/server/jobs/core/prizeDrawSoldOutReveal.d.ts +22 -0
  38. package/dist/_internal/server/jobs/core/prizeDrawSoldOutReveal.js +68 -0
  39. package/dist/_internal/server/jobs/core/revenueRollup.d.ts +13 -0
  40. package/dist/_internal/server/jobs/core/revenueRollup.js +22 -0
  41. package/dist/_internal/server/jobs/core/whatsappNotify.d.ts +35 -0
  42. package/dist/_internal/server/jobs/core/whatsappNotify.js +82 -0
  43. package/dist/_internal/server/jobs/handlers/index.d.ts +4 -4
  44. package/dist/_internal/server/jobs/handlers/index.js +9 -6
  45. package/dist/_internal/server/jobs/handlers/onPrizeDrawPaymentConfirmed.d.ts +3 -0
  46. package/dist/_internal/server/jobs/handlers/onPrizeDrawPaymentConfirmed.js +11 -0
  47. package/dist/_internal/server/jobs/handlers/prizeDrawExpiryReveal.d.ts +2 -0
  48. package/dist/_internal/server/jobs/handlers/prizeDrawExpiryReveal.js +2 -0
  49. package/dist/_internal/server/jobs/handlers/prizeDrawSoldOutReveal.d.ts +3 -0
  50. package/dist/_internal/server/jobs/handlers/prizeDrawSoldOutReveal.js +4 -0
  51. package/dist/_internal/server/jobs/handlers/revenueRollup.d.ts +2 -0
  52. package/dist/_internal/server/jobs/handlers/revenueRollup.js +2 -0
  53. package/dist/_internal/shared/actions/action-registry.js +40 -10
  54. package/dist/_internal/shared/checkout/rules/_defaults.js +1 -2
  55. package/dist/_internal/shared/checkout/rules/_limits.d.ts +3 -0
  56. package/dist/_internal/shared/checkout/rules/_limits.js +3 -0
  57. package/dist/_internal/shared/checkout/rules/_registry.d.ts +2 -1
  58. package/dist/_internal/shared/checkout/rules/_registry.js +2 -2
  59. package/dist/_internal/shared/checkout/rules/classified.rule.js +0 -1
  60. package/dist/_internal/shared/checkout/rules/index.d.ts +1 -1
  61. package/dist/_internal/shared/checkout/rules/index.js +1 -1
  62. package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +20 -1
  63. package/dist/_internal/shared/checkout/rules/types.d.ts +17 -7
  64. package/dist/_internal/shared/features/categories/bundle-copy.d.ts +2 -0
  65. package/dist/_internal/shared/features/categories/bundle-copy.js +2 -0
  66. package/dist/_internal/shared/features/categories/bundle-pricing.d.ts +23 -0
  67. package/dist/_internal/shared/features/categories/bundle-pricing.js +25 -0
  68. package/dist/_internal/shared/features/checkout/config.d.ts +7 -0
  69. package/dist/_internal/shared/features/checkout/config.js +7 -0
  70. package/dist/_internal/shared/fees/calculator.d.ts +26 -0
  71. package/dist/_internal/shared/fees/calculator.js +25 -0
  72. package/dist/_internal/shared/listing-types/prize-draw/config.js +1 -1
  73. package/dist/constants/api-endpoints.d.ts +6 -9
  74. package/dist/constants/api-endpoints.js +5 -5
  75. package/dist/constants/field-names.d.ts +17 -1
  76. package/dist/constants/field-names.js +17 -1
  77. package/dist/features/about/components/FeesView.js +18 -0
  78. package/dist/features/account/hooks/useNotifications.js +5 -0
  79. package/dist/features/admin/actions/admin-actions.js +6 -0
  80. package/dist/features/admin/actions/notification-actions.d.ts +4 -1
  81. package/dist/features/admin/actions/notification-actions.js +57 -12
  82. package/dist/features/admin/components/AdminAdsView.js +1 -1
  83. package/dist/features/admin/components/AdminBlogEditorView.js +1 -1
  84. package/dist/features/admin/components/AdminNewsletterView.js +42 -11
  85. package/dist/features/admin/components/AdminPrizeDrawsView.js +3 -3
  86. package/dist/features/admin/components/AdminSiteSettingsView.js +115 -11
  87. package/dist/features/admin/components/AdminTesterChecklistView.js +74 -22
  88. package/dist/features/admin/hooks/useAdminListing.d.ts +4 -0
  89. package/dist/features/admin/hooks/useAdminListing.js +4 -2
  90. package/dist/features/admin/repository/analytics-rollup.repository.d.ts +25 -0
  91. package/dist/features/admin/repository/analytics-rollup.repository.js +31 -0
  92. package/dist/features/admin/repository/site-settings.repository.js +8 -1
  93. package/dist/features/admin/schemas/firestore.d.ts +54 -5
  94. package/dist/features/admin/schemas/firestore.js +63 -26
  95. package/dist/features/auctions/actions/bid-actions.js +3 -1
  96. package/dist/features/auctions/components/AuctionBidsTable.d.ts +6 -1
  97. package/dist/features/auctions/components/AuctionBidsTable.js +8 -4
  98. package/dist/features/auctions/components/AuctionDetailPageView.js +10 -13
  99. package/dist/features/auctions/components/CollapsibleBidHistory.d.ts +23 -2
  100. package/dist/features/auctions/components/CollapsibleBidHistory.js +21 -3
  101. package/dist/features/auctions/components/LiveBidPrice.d.ts +19 -0
  102. package/dist/features/auctions/components/LiveBidPrice.js +17 -0
  103. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +1 -1
  104. package/dist/features/auctions/components/PlaceBidFormClient.js +16 -1
  105. package/dist/features/auctions/hooks/useBids.d.ts +33 -0
  106. package/dist/features/auctions/hooks/useBids.js +32 -0
  107. package/dist/features/auctions/hooks/useLiveAuctionBid.d.ts +20 -0
  108. package/dist/features/auctions/hooks/useLiveAuctionBid.js +23 -0
  109. package/dist/features/auth/checkout-value-otp.d.ts +7 -10
  110. package/dist/features/auth/checkout-value-otp.js +14 -10
  111. package/dist/features/auth/server.d.ts +0 -1
  112. package/dist/features/auth/server.js +0 -1
  113. package/dist/features/blog/api/[slug]/route.d.ts +5 -0
  114. package/dist/features/blog/api/[slug]/route.js +12 -3
  115. package/dist/features/blog/components/BlogPostView.d.ts +2 -0
  116. package/dist/features/blog/components/BlogPostView.js +5 -4
  117. package/dist/features/blog/hooks/useBlog.d.ts +2 -0
  118. package/dist/features/blog/hooks/useBlog.js +2 -0
  119. package/dist/features/blog/repository/blog.repository.d.ts +7 -0
  120. package/dist/features/blog/repository/blog.repository.js +44 -0
  121. package/dist/features/blog/schemas/firestore.d.ts +3 -0
  122. package/dist/features/blog/schemas/firestore.js +1 -0
  123. package/dist/features/blog/types/index.d.ts +2 -0
  124. package/dist/features/cart/components/index.d.ts +0 -2
  125. package/dist/features/cart/components/index.js +0 -1
  126. package/dist/features/cart/hooks/useCartCount.js +22 -5
  127. package/dist/features/cart/hooks/useGuestCart.js +11 -1
  128. package/dist/features/cart/utils/guest-cart.d.ts +4 -0
  129. package/dist/features/cart/utils/guest-cart.js +10 -0
  130. package/dist/features/cart/utils/pending-ops.d.ts +17 -0
  131. package/dist/features/cart/utils/pending-ops.js +46 -5
  132. package/dist/features/categories/components/BrandDetailPageView.js +6 -2
  133. package/dist/features/categories/components/BundleDetailView.js +4 -2
  134. package/dist/features/categories/components/CategoryDetailPageView.js +10 -2
  135. package/dist/features/categories/schemas/firestore.d.ts +7 -0
  136. package/dist/features/checkout/actions/index.d.ts +0 -1
  137. package/dist/features/checkout/actions/index.js +0 -1
  138. package/dist/features/checkout/schemas/firestore.d.ts +2 -2
  139. package/dist/features/events/actions/event-actions.d.ts +2 -0
  140. package/dist/features/events/actions/event-actions.js +5 -0
  141. package/dist/features/events/components/EventCard.js +1 -2
  142. package/dist/features/events/components/RelatedEventsCarousel.d.ts +15 -0
  143. package/dist/features/events/components/RelatedEventsCarousel.js +13 -0
  144. package/dist/features/events/components/index.d.ts +2 -0
  145. package/dist/features/events/components/index.js +1 -0
  146. package/dist/features/events/repository/events.repository.d.ts +6 -0
  147. package/dist/features/events/repository/events.repository.js +21 -0
  148. package/dist/features/history/repository/user-history.repository.d.ts +1 -1
  149. package/dist/features/history/utils/guest-history.d.ts +1 -1
  150. package/dist/features/homepage/components/FeaturedBundlesSection.js +4 -2
  151. package/dist/features/homepage/components/FeaturedProductsSection.js +2 -2
  152. package/dist/features/homepage/components/SectionCarousel.js +1 -1
  153. package/dist/features/homepage/components/WelcomeSection.js +1 -1
  154. package/dist/features/layout/AppLayoutShell.js +1 -1
  155. package/dist/features/layout/BackToTop.d.ts +9 -5
  156. package/dist/features/layout/BackToTop.js +17 -21
  157. package/dist/features/layout/NavbarLayout.js +1 -1
  158. package/dist/features/layout/TitleBarLayout.js +2 -2
  159. package/dist/features/media/MediaVideo.d.ts +7 -0
  160. package/dist/features/media/MediaVideo.js +36 -5
  161. package/dist/features/orders/actions/refund-actions.js +1 -0
  162. package/dist/features/orders/components/OrdersList.js +1 -5
  163. package/dist/features/orders/schemas/firestore.d.ts +16 -8
  164. package/dist/features/orders/schemas/index.d.ts +3 -32
  165. package/dist/features/orders/schemas/index.js +1 -4
  166. package/dist/features/orders/types/index.d.ts +6 -9
  167. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +1 -1
  168. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +2 -1
  169. package/dist/features/products/actions/product-actions.js +13 -10
  170. package/dist/features/products/components/MarketplaceBundleCard.d.ts +1 -1
  171. package/dist/features/products/components/MarketplaceBundleCard.js +7 -4
  172. package/dist/features/products/components/PrizeDrawDetailPageView.js +1 -1
  173. package/dist/features/products/components/PrizeDrawItemsEditor.js +2 -2
  174. package/dist/features/products/components/PrizeDrawWinnerMappingView.d.ts +14 -0
  175. package/dist/features/products/components/PrizeDrawWinnerMappingView.js +37 -0
  176. package/dist/features/products/components/PrizeRevealModal.d.ts +10 -23
  177. package/dist/features/products/components/PrizeRevealModal.js +18 -147
  178. package/dist/features/products/components/ProductDetailPageView.js +72 -30
  179. package/dist/features/products/components/ProductForm.js +7 -14
  180. package/dist/features/products/components/ProductGalleryClient.d.ts +10 -1
  181. package/dist/features/products/components/ProductGalleryClient.js +29 -10
  182. package/dist/features/products/components/ProductsIndexListing.js +2 -1
  183. package/dist/features/products/components/RelatedProductsCarousel.js +2 -2
  184. package/dist/features/products/components/ShowGroupSection.js +2 -2
  185. package/dist/features/products/components/SublistingCarouselSection.js +1 -1
  186. package/dist/features/products/components/index.d.ts +4 -2
  187. package/dist/features/products/components/index.js +1 -0
  188. package/dist/features/products/constants/action-defs.d.ts +28 -4
  189. package/dist/features/products/constants/action-defs.js +76 -3
  190. package/dist/features/products/repository/products.repository.d.ts +6 -0
  191. package/dist/features/products/repository/products.repository.js +20 -1
  192. package/dist/features/products/schemas/firestore.d.ts +26 -2
  193. package/dist/features/products/schemas/index.d.ts +11 -3
  194. package/dist/features/products/schemas/index.js +10 -2
  195. package/dist/features/products/types/index.d.ts +2 -1
  196. package/dist/features/reviews/actions/review-actions.js +1 -0
  197. package/dist/features/reviews/components/ReviewDetailPageView.js +8 -1
  198. package/dist/features/reviews/components/ReviewDetailShell.js +2 -1
  199. package/dist/features/reviews/components/ReviewsList.js +2 -1
  200. package/dist/features/reviews/schemas/firestore.d.ts +3 -0
  201. package/dist/features/reviews/schemas/index.d.ts +6 -0
  202. package/dist/features/reviews/schemas/index.js +2 -0
  203. package/dist/features/reviews/types/index.d.ts +3 -0
  204. package/dist/features/scams/actions/scam-actions.d.ts +3 -0
  205. package/dist/features/scams/actions/scam-actions.js +3 -2
  206. package/dist/features/scams/components/ScamProfileView.d.ts +2 -1
  207. package/dist/features/scams/components/ScamProfileView.js +2 -2
  208. package/dist/features/scams/repository/scammer.repository.d.ts +6 -0
  209. package/dist/features/scams/repository/scammer.repository.js +24 -0
  210. package/dist/features/seller/actions/seller-actions.js +8 -0
  211. package/dist/features/seller/components/SellerOrdersView.js +1 -1
  212. package/dist/features/seller/components/SellerPrizeDrawsView.js +4 -0
  213. package/dist/features/stores/components/StoreDetailLayoutView.js +6 -6
  214. package/dist/features/stores/components/StoreNavTabs.d.ts +10 -1
  215. package/dist/features/stores/components/StoreNavTabs.js +21 -9
  216. package/dist/features/tester/actions/index.d.ts +1 -0
  217. package/dist/features/tester/actions/index.js +1 -0
  218. package/dist/features/tester/actions/leaderboard-actions.d.ts +3 -0
  219. package/dist/features/tester/actions/leaderboard-actions.js +5 -0
  220. package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +26 -4
  221. package/dist/features/tester/components/AdminTesterFeedbackListView.js +13 -0
  222. package/dist/features/tester/components/BugHunterLeaderboardView.d.ts +23 -0
  223. package/dist/features/tester/components/BugHunterLeaderboardView.js +18 -0
  224. package/dist/features/tester/components/index.d.ts +2 -0
  225. package/dist/features/tester/components/index.js +1 -0
  226. package/dist/features/tester/repository/tester-checklist-item.repository.d.ts +12 -1
  227. package/dist/features/tester/repository/tester-checklist-item.repository.js +80 -0
  228. package/dist/features/tester/repository/tester-checklist-response.repository.d.ts +4 -0
  229. package/dist/features/tester/repository/tester-checklist-response.repository.js +4 -0
  230. package/dist/features/tester/schemas/firestore.d.ts +22 -1
  231. package/dist/features/tester/schemas/firestore.js +8 -0
  232. package/dist/features/tester/seed-data/categories-tester-seed-data.js +42 -7
  233. package/dist/features/tester/seed-data/events-tester-seed-data.js +23 -0
  234. package/dist/features/tester/seed-data/orders-tester-seed-data.js +69 -31
  235. package/dist/features/tester/seed-data/products-tester-seed-data.js +152 -8
  236. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +249 -14
  237. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +10 -1
  238. package/dist/features/whatsapp-bot/helpers/whatsapp.js +47 -0
  239. package/dist/features/whatsapp-bot/types/index.d.ts +19 -0
  240. package/dist/features/wishlist/hooks/useGuestWishlist.js +11 -1
  241. package/dist/features/wishlist/hooks/useWishlistCount.js +16 -2
  242. package/dist/features/wishlist/utils/guest-wishlist.d.ts +5 -0
  243. package/dist/features/wishlist/utils/guest-wishlist.js +11 -0
  244. package/dist/index.d.ts +23 -24
  245. package/dist/index.js +29 -60
  246. package/dist/jobs.d.ts +1 -1
  247. package/dist/jobs.js +2 -2
  248. package/dist/next/routing/route-map.d.ts +4 -0
  249. package/dist/next/routing/route-map.js +2 -0
  250. package/dist/repositories/index.d.ts +2 -0
  251. package/dist/repositories/index.js +1 -0
  252. package/dist/schemas/registry.d.ts +6 -26
  253. package/dist/seed/bids-seed-data.js +14 -2
  254. package/dist/seed/blog-posts-seed-data.js +2 -1
  255. package/dist/seed/categories-seed-data.js +11 -2
  256. package/dist/seed/events-seed-data.js +11 -11
  257. package/dist/seed/faq-seed-data.js +5 -1
  258. package/dist/seed/products-auctions-seed-data.js +2 -2
  259. package/dist/seed/products-preorders-seed-data.d.ts +2 -1
  260. package/dist/seed/products-prize-draws-seed-data.js +56 -10
  261. package/dist/seed/products-standard-seed-data.js +82 -3
  262. package/dist/seed/scammers-seed-data.js +75 -2
  263. package/dist/seed/site-settings-seed-data.js +12 -2
  264. package/dist/server-entry.d.ts +0 -1
  265. package/dist/server-entry.js +0 -1
  266. package/dist/server.d.ts +6 -22
  267. package/dist/server.js +12 -59
  268. package/dist/styles.css +1 -1
  269. package/dist/tailwind-utilities.css +1 -1
  270. package/dist/ui/components/BaseListingCard.js +1 -1
  271. package/dist/ui/components/ImageLightbox.d.ts +9 -0
  272. package/dist/ui/components/ImageLightbox.js +6 -3
  273. package/dist/ui/components/ListingToolbar.d.ts +18 -1
  274. package/dist/ui/components/ListingToolbar.js +5 -2
  275. package/dist/ui/components/StickyToolbar.js +13 -8
  276. package/package.json +1 -1
@@ -2,6 +2,16 @@ import { normalizeError } from "../../../errors/normalize";
2
2
  const DEFAULT_GUEST_WISHLIST_KEY = process.env.NEXT_PUBLIC_APP_ID
3
3
  ? `${process.env.NEXT_PUBLIC_APP_ID}_guest_wishlist`
4
4
  : "guest_wishlist";
5
+ /** Fired whenever guest wishlist storage is written, so every
6
+ * `useGuestWishlist()` instance in the tab (header badge, listing heart
7
+ * toggle, wishlist page) can re-read storage and stay in sync without
8
+ * waiting for a remount. */
9
+ export const GUEST_WISHLIST_CHANGE_EVENT = "appkit/wishlist/guest-changed";
10
+ function dispatchGuestWishlistChange() {
11
+ if (typeof window === "undefined")
12
+ return;
13
+ window.dispatchEvent(new Event(GUEST_WISHLIST_CHANGE_EVENT));
14
+ }
5
15
  function getDefaultStorage() {
6
16
  if (typeof window === "undefined")
7
17
  return null;
@@ -26,6 +36,7 @@ function writeItems(storage, key, items) {
26
36
  if (!storage)
27
37
  return;
28
38
  storage.setItem(key, JSON.stringify(items));
39
+ dispatchGuestWishlistChange();
29
40
  }
30
41
  export function getGuestWishlistItems(storage = getDefaultStorage(), key = DEFAULT_GUEST_WISHLIST_KEY) {
31
42
  return readItems(storage, key);
package/dist/index.d.ts CHANGED
@@ -549,6 +549,8 @@ export type { PageViewDocument, PageViewEntityType } from "./repositories/index"
549
549
  export { reviewRepository } from "./repositories/index";
550
550
  export { sessionRepository } from "./repositories/index";
551
551
  export { siteSettingsRepository } from "./repositories/index";
552
+ export { analyticsRollupRepository } from "./repositories/index";
553
+ export type { AnalyticsRollupDocument } from "./repositories/index";
552
554
  export { ADMIN_CHECKOUT_BYPASS_FLAG_KEY } from "./features/admin/schemas/firestore";
553
555
  export { smsCounterRepository } from "./repositories/index";
554
556
  export { storeRepository } from "./repositories/index";
@@ -607,6 +609,9 @@ export { categoriesTesterSeedData } from "./seed/index";
607
609
  export { productsTesterSeedData } from "./seed/index";
608
610
  export { blogTesterSeedData } from "./seed/index";
609
611
  export { eventsTesterSeedData } from "./seed/index";
612
+ export { couponsTesterSeedData } from "./seed/index";
613
+ export { bidsTesterSeedData } from "./seed/index";
614
+ export { ordersTesterSeedData } from "./seed/index";
610
615
  export { formatSeedPrice } from "./seed/index";
611
616
  export { getSeedLocale } from "./seed/index";
612
617
  export { homepageSectionsSeedData } from "./seed/index";
@@ -1098,6 +1103,8 @@ export type { AdminTesterChecklistItemEditorViewProps } from "./features/admin/i
1098
1103
  export { TesterHubView } from "./features/tester/index";
1099
1104
  export type { TesterHubViewProps } from "./features/tester/index";
1100
1105
  export { AdminTesterFeedbackView } from "./features/tester/index";
1106
+ export { BugHunterLeaderboardView } from "./features/tester/index";
1107
+ export type { BugHunterLeaderboardViewProps } from "./features/tester/index";
1101
1108
  export { AdminNavEditorView } from "./features/admin/index";
1102
1109
  export type { AdminNavEditorViewProps, NavItemData } from "./features/admin/index";
1103
1110
  export { AdminFeatureFlagsView } from "./features/admin/index";
@@ -1385,38 +1392,22 @@ export { listBidsByProduct } from "./features/auctions/server";
1385
1392
  export { placeBid, buyNowAuction } from "./features/auctions/server";
1386
1393
  export type { PlaceBidInput, BuyNowAuctionInput, BuyNowAuctionResult } from "./features/auctions/server";
1387
1394
  export type { PlaceBidResult } from "./features/auctions/server";
1388
- export { CONSENT_OTP_COOLDOWN_MS } from "./features/auth/server";
1389
- export { CONSENT_OTP_EXPIRY_MINUTES } from "./features/auth/server";
1390
- export { CONSENT_OTP_EXPIRY_MS } from "./features/auth/server";
1391
- export { CONSENT_OTP_MAX_ATTEMPTS } from "./features/auth/server";
1392
- export { CONSENT_OTP_MAX_BYPASS_CREDITS } from "./features/auth/server";
1393
- export { CONSENT_OTP_VERIFY_RATE_LIMIT } from "./features/auth/server";
1395
+ export { CHECKOUT_VALUE_OTP_VERIFY_RATE_LIMIT } from "./features/auth/checkout-value-otp";
1394
1396
  export { authMeGET } from "./features/auth/server";
1395
- export { buildConsentOtpEmail } from "./features/auth/server";
1396
- export { buildConsentOtpWhatsApp } from "./features/auth/server";
1397
- export { consentOtpRateLimitRef } from "./features/auth/server";
1398
- export { consentOtpRef } from "./features/auth/server";
1399
1397
  export { createPasswordResetToken } from "./features/auth/server";
1400
1398
  export { createVerificationToken } from "./features/auth/server";
1401
1399
  export { deleteToken } from "./features/auth/server";
1402
- export { enforceConsentOtpRateLimit } from "./features/auth/server";
1403
- export { generateOtpCode } from "./features/auth/server";
1404
1400
  export { generateToken } from "./features/auth/server";
1405
1401
  export { getPublicUserProfile } from "./features/auth/server";
1406
1402
  export { getProfileStoreProducts } from "./features/auth/server";
1407
1403
  export { getSellerReviews } from "./features/auth/server";
1408
1404
  export { getUserProfile } from "./features/auth/server";
1409
1405
  export { getUserSessions } from "./features/auth/server";
1410
- export { hashOtp } from "./features/auth/server";
1411
1406
  export { issueRealtimeToken } from "./features/auth/server";
1412
1407
  export { markPasswordResetTokenAsUsed } from "./features/auth/server";
1413
- export { patchConsentOtp } from "./features/auth/server";
1414
- export { readConsentOtp } from "./features/auth/server";
1415
- export { saveConsentOtp } from "./features/auth/server";
1416
1408
  export { updateUserProfile } from "./features/auth/server";
1417
1409
  export { verifyEmailToken } from "./features/auth/server";
1418
1410
  export { verifyPasswordResetToken } from "./features/auth/server";
1419
- export type { ConsentOtpDoc } from "./features/auth/server";
1420
1411
  export type { PasswordResetTokenData } from "./features/auth/server";
1421
1412
  export type { RealtimeTokenResult } from "./features/auth/server";
1422
1413
  export type { TokenData } from "./features/auth/server";
@@ -1670,9 +1661,6 @@ export { listTopLevelCategories } from "./features/categories/server";
1670
1661
  export { updateCategory } from "./features/categories/server";
1671
1662
  export { FailedCheckoutRepository } from "./features/checkout/server";
1672
1663
  export { failedCheckoutRepository } from "./features/checkout/server";
1673
- export { grantCheckoutConsentViaSms } from "./features/checkout/server";
1674
- export { sendCheckoutConsentOtp } from "./features/checkout/server";
1675
- export { verifyCheckoutConsentOtp } from "./features/checkout/server";
1676
1664
  export { sendCheckoutValueOtp, verifyCheckoutValueOtp, isCheckoutValueOtpVerified, } from "./features/checkout/server";
1677
1665
  export type { FailedCheckoutMeta } from "./features/checkout/server";
1678
1666
  export type { FailedPaymentMeta } from "./features/checkout/server";
@@ -1779,6 +1767,8 @@ export { EVENT_SELLER_SORT_OPTIONS } from "./features/events/index";
1779
1767
  export { EVENT_SORT_OPTIONS } from "./features/events/index";
1780
1768
  export { EventBanner } from "./features/events/index";
1781
1769
  export { EventCard } from "./features/events/index";
1770
+ export { RelatedEventsCarousel } from "./features/events/index";
1771
+ export type { RelatedEventItem } from "./features/events/index";
1782
1772
  export { EventDetailView } from "./features/events/index";
1783
1773
  export { EventFilters } from "./features/events/index";
1784
1774
  export { EventFormDrawer } from "./features/events/index";
@@ -1790,6 +1780,10 @@ export { EventRaffleWinnerView } from "./features/events/index";
1790
1780
  export type { EventRaffleWinnerViewProps } from "./features/events/index";
1791
1781
  export { SpinWheelView } from "./features/events/index";
1792
1782
  export type { SpinWheelViewProps } from "./features/events/index";
1783
+ export { EventRaffleEntryForm } from "./features/events/index";
1784
+ export type { EventRaffleEntryFormProps } from "./features/events/index";
1785
+ export { EventOfferCard } from "./features/events/index";
1786
+ export type { EventOfferCardProps } from "./features/events/index";
1793
1787
  export { LotterySlotGrid } from "./_internal/client/features/lottery/LotterySlotGrid";
1794
1788
  export { LotteryPullForm } from "./_internal/client/features/lottery/LotteryPullForm";
1795
1789
  export { LotteryListView } from "./_internal/client/features/lottery/LotteryListView";
@@ -1869,8 +1863,10 @@ export { enterEvent } from "./features/events/server";
1869
1863
  export { eventIdGET } from "./features/events/server";
1870
1864
  export { eventsGET } from "./features/events/server";
1871
1865
  export { getEventLeaderboard } from "./features/events/server";
1866
+ export { getBugHunterLeaderboard } from "./features/tester/server";
1872
1867
  export { getPublicEventById } from "./features/events/server";
1873
1868
  export { listPublicEvents } from "./features/events/server";
1869
+ export { getRelatedEvents } from "./features/events/server";
1874
1870
  export { updateEvent } from "./features/events/server";
1875
1871
  export type { CreateEventInput } from "./features/events/server";
1876
1872
  export type { EnterEventInput } from "./features/events/server";
@@ -1892,6 +1888,7 @@ export type { TesterChecklistItemDocument } from "./features/tester/index";
1892
1888
  export type { TesterChecklistResponseDocument } from "./features/tester/index";
1893
1889
  export type { TesterAnswer } from "./features/tester/index";
1894
1890
  export type { TesterFeedbackStatus } from "./features/tester/index";
1891
+ export type { BugHunterLeaderboardEntry } from "./features/tester/index";
1895
1892
  export { FAQS_PUBLIC_FIELDS } from "./features/faq/index";
1896
1893
  export { FAQSortDropdown } from "./features/faq/index";
1897
1894
  export { FAQ_CATEGORY_LABELS } from "./features/faq/index";
@@ -2420,7 +2417,9 @@ export type { PrizeDrawDetailPageViewProps } from "./features/products/component
2420
2417
  export { PrizeDrawEntryActions } from "./features/products/index";
2421
2418
  export type { PrizeDrawEntryActionsProps } from "./features/products/index";
2422
2419
  export { PrizeRevealModal } from "./features/products/components/PrizeRevealModal";
2423
- export type { PrizeRevealModalProps, PrizeRevealResponse } from "./features/products/components/PrizeRevealModal";
2420
+ export type { PrizeRevealModalProps, PrizeRevealResult } from "./features/products/components/PrizeRevealModal";
2421
+ export { PrizeDrawWinnerMappingView } from "./features/products/components/PrizeDrawWinnerMappingView";
2422
+ export type { PrizeDrawWinnerMappingViewProps, PrizeDrawWinnerMappingRow, } from "./features/products/components/PrizeDrawWinnerMappingView";
2424
2423
  export { ProductCard } from "./features/products/index";
2425
2424
  export { ProductDetailView } from "./features/products/index";
2426
2425
  export type { ProductDetailPageViewProps } from "./features/products/components/ProductDetailPageView";
@@ -2453,8 +2452,8 @@ export { actionTracker, setActionTrackerSink, resetActionTrackerSink, type Actio
2453
2452
  export { cartRequiresShipping, cartIsDigitalOnly, cartIsChatOnly, } from "./_internal/shared/listing-types/cart-shipping";
2454
2453
  export { ACTIONS, action, act, canPerformAction, actionsForListingType, actionLabel, type ActionDef, type ActionKind, type ActionResource, type ActionTree, type ActionConfirmation, } from "./_internal/shared/actions/action-registry";
2455
2454
  export { buildBulkAction } from "./_internal/shared/actions/bulk-helpers";
2456
- export { computeCheckoutFees, computePayoutDeduction, computeCodHandlingFee, calculateGst, } from "./_internal/shared/fees/calculator";
2457
- export type { FeeCommissionRates, CheckoutFees, PayoutDeduction, CodHandlingFeeRates, GstBreakdown, } from "./_internal/shared/fees/calculator";
2455
+ export { computeCheckoutFees, computePayoutDeduction, computeCodHandlingFee, computeWhatsAppNotifyFee, computeGiftWrapFee, computeShipmentProtectionFee, calculateGst, } from "./_internal/shared/fees/calculator";
2456
+ export type { FeeCommissionRates, CheckoutFees, PayoutDeduction, CodHandlingFeeRates, WhatsAppNotifyFeeRates, GiftWrapFeeRates, ShipmentProtectionFeeRates, GstBreakdown, } from "./_internal/shared/fees/calculator";
2458
2457
  export { checkEmiEligibility, computeEmiSchedule } from "./_internal/shared/features/emi/schedule";
2459
2458
  export type { EmiSettings, EmiIneligibleReason, EmiEligibility, EmiInstallmentPlan, EmiScheduleResult, } from "./_internal/shared/features/emi/schedule";
2460
2459
  export { isAdminUser, isSellerUser, isModeratorUser, isEmployeeUser, isBuyerUser, isEffectiveAdminUser, } from "./features/auth/role-predicates";
@@ -3079,7 +3078,7 @@ export { RoleGate, ProtectedRoute, SocialAuthButtons, AuthStatusPanel, LoginForm
3079
3078
  export type { RoleGateProps, ProtectedRouteProps, AuthGuardUser, AuthRouteConfig, LoginFormProps, LoginFormValues, RegisterFormProps, RegisterFormValues, ForgotPasswordViewProps, ResetPasswordViewProps, VerifyEmailViewProps, } from "./features/auth/index";
3080
3079
  export { CartItemRow, CartDrawer, CartView, CartSummary, ShippingPicker } from "./features/cart/index";
3081
3080
  export type { ShippingPickerProps } from "./features/cart/index";
3082
- export { CheckoutView, CheckoutAddressStep, CheckoutOtpModal, CheckoutSuccessView } from "./features/cart/index";
3081
+ export { CheckoutView, CheckoutAddressStep, CheckoutSuccessView } from "./features/cart/index";
3083
3082
  export { CheckoutStepper, useCheckout } from "./features/checkout/index";
3084
3083
  export { useProfile as useCurrentProfile, useUpdateProfile as useUpdateCurrentProfile } from "./features/account/index";
3085
3084
  export { useLogout } from "./features/auth/index";
package/dist/index.js CHANGED
@@ -1070,6 +1070,8 @@ export { sessionRepository } from "./repositories/index";
1070
1070
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
1071
1071
  // siteSettingsRepository - Shared export for site settings repository.
1072
1072
  export { siteSettingsRepository } from "./repositories/index";
1073
+ // analyticsRollupRepository - reads the pre-computed admin-dashboard revenue rollup.
1074
+ export { analyticsRollupRepository } from "./repositories/index";
1073
1075
  // ADMIN_CHECKOUT_BYPASS_FLAG_KEY - field name for the admin checkout bypass flag.
1074
1076
  export { ADMIN_CHECKOUT_BYPASS_FLAG_KEY } from "./features/admin/schemas/firestore";
1075
1077
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
@@ -1217,6 +1219,12 @@ export { blogTesterSeedData } from "./seed/index";
1217
1219
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
1218
1220
  // eventsTesterSeedData - Model for the shared tester sandbox event seed data.
1219
1221
  export { eventsTesterSeedData } from "./seed/index";
1222
+ // couponsTesterSeedData - Model for the shared tester sandbox coupon seed data.
1223
+ export { couponsTesterSeedData } from "./seed/index";
1224
+ // bidsTesterSeedData - Model for the shared tester sandbox bid seed data.
1225
+ export { bidsTesterSeedData } from "./seed/index";
1226
+ // ordersTesterSeedData - Model for the shared tester sandbox order seed data.
1227
+ export { ordersTesterSeedData } from "./seed/index";
1220
1228
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
1221
1229
  // formatSeedPrice - Helper for format seed price.
1222
1230
  export { formatSeedPrice } from "./seed/index";
@@ -2115,6 +2123,8 @@ export { AdminTesterChecklistItemEditorView } from "./features/admin/index";
2115
2123
  export { TesterHubView } from "./features/tester/index";
2116
2124
  // AdminTesterFeedbackView - Component for the admin Tester Feedback report/issues/submissions page.
2117
2125
  export { AdminTesterFeedbackView } from "./features/tester/index";
2126
+ // BugHunterLeaderboardView - Public component ranking testers by confirmed-bug count.
2127
+ export { BugHunterLeaderboardView } from "./features/tester/index";
2118
2128
  // AdminNavEditorView - SideDrawer form for nav item create/edit.
2119
2129
  export { AdminNavEditorView } from "./features/admin/index";
2120
2130
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
@@ -2575,39 +2585,12 @@ export { listBidsByProduct } from "./features/auctions/server";
2575
2585
  export { placeBid, buyNowAuction } from "./features/auctions/server";
2576
2586
  // ./features/auth/server
2577
2587
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2578
- // CONSENT_OTP_COOLDOWN_MS - Constant used across modules.
2579
- export { CONSENT_OTP_COOLDOWN_MS } from "./features/auth/server";
2580
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2581
- // CONSENT_OTP_EXPIRY_MINUTES - Constant used across modules.
2582
- export { CONSENT_OTP_EXPIRY_MINUTES } from "./features/auth/server";
2583
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2584
- // CONSENT_OTP_EXPIRY_MS - Constant used across modules.
2585
- export { CONSENT_OTP_EXPIRY_MS } from "./features/auth/server";
2586
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2587
- // CONSENT_OTP_MAX_ATTEMPTS - Constant used across modules.
2588
- export { CONSENT_OTP_MAX_ATTEMPTS } from "./features/auth/server";
2589
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2590
- // CONSENT_OTP_MAX_BYPASS_CREDITS - Constant used across modules.
2591
- export { CONSENT_OTP_MAX_BYPASS_CREDITS } from "./features/auth/server";
2592
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2593
- // CONSENT_OTP_VERIFY_RATE_LIMIT - Constant used across modules.
2594
- export { CONSENT_OTP_VERIFY_RATE_LIMIT } from "./features/auth/server";
2588
+ // CHECKOUT_VALUE_OTP_VERIFY_RATE_LIMIT - Constant used across modules.
2589
+ export { CHECKOUT_VALUE_OTP_VERIFY_RATE_LIMIT } from "./features/auth/checkout-value-otp";
2595
2590
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2596
2591
  // authMeGET - Shared export for auth me get.
2597
2592
  export { authMeGET } from "./features/auth/server";
2598
2593
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2599
- // buildConsentOtpEmail - Helper for build consent otp email.
2600
- export { buildConsentOtpEmail } from "./features/auth/server";
2601
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2602
- // buildConsentOtpWhatsApp - Helper for build consent otp whatsapp message body.
2603
- export { buildConsentOtpWhatsApp } from "./features/auth/server";
2604
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2605
- // consentOtpRateLimitRef - Shared export for consent otp rate limit ref.
2606
- export { consentOtpRateLimitRef } from "./features/auth/server";
2607
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2608
- // consentOtpRef - Shared export for consent otp ref.
2609
- export { consentOtpRef } from "./features/auth/server";
2610
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2611
2594
  // createPasswordResetToken - Helper for create password reset token.
2612
2595
  export { createPasswordResetToken } from "./features/auth/server";
2613
2596
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
@@ -2617,12 +2600,6 @@ export { createVerificationToken } from "./features/auth/server";
2617
2600
  // deleteToken - Helper for delete token.
2618
2601
  export { deleteToken } from "./features/auth/server";
2619
2602
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2620
- // enforceConsentOtpRateLimit - Shared export for enforce consent otp rate limit.
2621
- export { enforceConsentOtpRateLimit } from "./features/auth/server";
2622
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2623
- // generateOtpCode - Helper for generate otp code.
2624
- export { generateOtpCode } from "./features/auth/server";
2625
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2626
2603
  // generateToken - Helper for generate token.
2627
2604
  export { generateToken } from "./features/auth/server";
2628
2605
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
@@ -2641,24 +2618,12 @@ export { getUserProfile } from "./features/auth/server";
2641
2618
  // getUserSessions - Helper for get user sessions.
2642
2619
  export { getUserSessions } from "./features/auth/server";
2643
2620
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2644
- // hashOtp - Shared export for hash otp.
2645
- export { hashOtp } from "./features/auth/server";
2646
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2647
2621
  // issueRealtimeToken - Shared export for issue realtime token.
2648
2622
  export { issueRealtimeToken } from "./features/auth/server";
2649
2623
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2650
2624
  // markPasswordResetTokenAsUsed - Shared export for mark password reset token as used.
2651
2625
  export { markPasswordResetTokenAsUsed } from "./features/auth/server";
2652
2626
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2653
- // patchConsentOtp - Shared export for patch consent otp.
2654
- export { patchConsentOtp } from "./features/auth/server";
2655
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2656
- // readConsentOtp - Shared export for read consent otp.
2657
- export { readConsentOtp } from "./features/auth/server";
2658
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2659
- // saveConsentOtp - Shared export for save consent otp.
2660
- export { saveConsentOtp } from "./features/auth/server";
2661
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2662
2627
  // updateUserProfile - Helper for update user profile.
2663
2628
  export { updateUserProfile } from "./features/auth/server";
2664
2629
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
@@ -3164,16 +3129,7 @@ export { FailedCheckoutRepository } from "./features/checkout/server";
3164
3129
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
3165
3130
  // failedCheckoutRepository - Shared export for failed checkout repository.
3166
3131
  export { failedCheckoutRepository } from "./features/checkout/server";
3167
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
3168
- // grantCheckoutConsentViaSms - Shared export for grant checkout consent via sms.
3169
- export { grantCheckoutConsentViaSms } from "./features/checkout/server";
3170
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
3171
- // sendCheckoutConsentOtp - Shared export for send checkout consent otp.
3172
- export { sendCheckoutConsentOtp } from "./features/checkout/server";
3173
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
3174
- // verifyCheckoutConsentOtp - Shared export for verify checkout consent otp.
3175
- export { verifyCheckoutConsentOtp } from "./features/checkout/server";
3176
- // [SERVER-ONLY] Tier PP — high-value checkout OTP gate (distinct from the shipping-consent OTP above).
3132
+ // [SERVER-ONLY] Tier PP high-value checkout OTP gate.
3177
3133
  export { sendCheckoutValueOtp, verifyCheckoutValueOtp, isCheckoutValueOtpVerified, } from "./features/checkout/server";
3178
3134
  // ./features/checkout/schemas/index
3179
3135
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
@@ -3394,6 +3350,8 @@ export { EventBanner } from "./features/events/index";
3394
3350
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
3395
3351
  // EventCard - Component for event card.
3396
3352
  export { EventCard } from "./features/events/index";
3353
+ // RelatedEventsCarousel - Component for related events carousel (tag overlap).
3354
+ export { RelatedEventsCarousel } from "./features/events/index";
3397
3355
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
3398
3356
  // EventDetailView - Component for event detail view.
3399
3357
  export { EventDetailView } from "./features/events/index";
@@ -3418,6 +3376,10 @@ export { EventStatusBadge } from "./features/events/index";
3418
3376
  export { EventRaffleWinnerView } from "./features/events/index";
3419
3377
  // SpinWheelView - Spin-the-wheel client component for spin-wheel events.
3420
3378
  export { SpinWheelView } from "./features/events/index";
3379
+ // EventRaffleEntryForm - Raffle entry form (prize hero + eligibility + optional message).
3380
+ export { EventRaffleEntryForm } from "./features/events/index";
3381
+ // EventOfferCard - Coupon code display + copy-to-clipboard for offer events.
3382
+ export { EventOfferCard } from "./features/events/index";
3421
3383
  // Lottery feature — client components
3422
3384
  export { LotterySlotGrid } from "./_internal/client/features/lottery/LotterySlotGrid";
3423
3385
  export { LotteryPullForm } from "./_internal/client/features/lottery/LotteryPullForm";
@@ -3523,12 +3485,18 @@ export { eventsGET } from "./features/events/server";
3523
3485
  // getEventLeaderboard - Helper for get event leaderboard.
3524
3486
  export { getEventLeaderboard } from "./features/events/server";
3525
3487
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
3488
+ // getBugHunterLeaderboard - Ranks testers by confirmed-bug count.
3489
+ export { getBugHunterLeaderboard } from "./features/tester/server";
3490
+ // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
3526
3491
  // getPublicEventById - Helper for get public event by id.
3527
3492
  export { getPublicEventById } from "./features/events/server";
3528
3493
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
3529
3494
  // listPublicEvents - Helper for list public events.
3530
3495
  export { listPublicEvents } from "./features/events/server";
3531
3496
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
3497
+ // getRelatedEvents - Helper for get related events (tag overlap).
3498
+ export { getRelatedEvents } from "./features/events/server";
3499
+ // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
3532
3500
  // updateEvent - Helper for update event.
3533
3501
  export { updateEvent } from "./features/events/server";
3534
3502
  // ./features/faq/index
@@ -4421,6 +4389,7 @@ export { MarketplacePrizeDrawCard } from "./features/products/index";
4421
4389
  export { PrizeDrawEntryActions } from "./features/products/index";
4422
4390
  // [CLIENT]-Theatrical reveal-mode prize-draw modal (SB4-I) — call POST /api/prize-draws/[id]/reveal and animate to the winning slot.
4423
4391
  export { PrizeRevealModal } from "./features/products/components/PrizeRevealModal";
4392
+ export { PrizeDrawWinnerMappingView } from "./features/products/components/PrizeDrawWinnerMappingView";
4424
4393
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4425
4394
  // ProductCard - Component for product card.
4426
4395
  export { ProductCard } from "./features/products/index";
@@ -4498,8 +4467,8 @@ export { cartRequiresShipping, cartIsDigitalOnly, cartIsChatOnly, } from "./_int
4498
4467
  // SB-UNI-W-1 2026-05-13 â€" CTA action registry shell.
4499
4468
  export { ACTIONS, action, act, canPerformAction, actionsForListingType, actionLabel, } from "./_internal/shared/actions/action-registry";
4500
4469
  export { buildBulkAction } from "./_internal/shared/actions/bulk-helpers";
4501
- // Shared fee calculator — platform/gateway/GST/COD handling fee math (pure, client-safe).
4502
- export { computeCheckoutFees, computePayoutDeduction, computeCodHandlingFee, calculateGst, } from "./_internal/shared/fees/calculator";
4470
+ // Shared fee calculator — platform/gateway/GST/COD handling/WhatsApp-addon fee math (pure, client-safe).
4471
+ export { computeCheckoutFees, computePayoutDeduction, computeCodHandlingFee, computeWhatsAppNotifyFee, computeGiftWrapFee, computeShipmentProtectionFee, calculateGst, } from "./_internal/shared/fees/calculator";
4503
4472
  // EMI eligibility + schedule computation (pure, client-safe — used for checkout quotes).
4504
4473
  export { checkEmiEligibility, computeEmiSchedule } from "./_internal/shared/features/emi/schedule";
4505
4474
  // User-role predicates â€" SB-UNI-E 2026-05-13.
@@ -5501,7 +5470,7 @@ export { useMediaQuery, useBreakpoint, useClickOutside, useKeyPress, useLongPres
5501
5470
  export { RoleGate, ProtectedRoute, SocialAuthButtons, AuthStatusPanel, LoginForm, RegisterForm, ForgotPasswordView, ResetPasswordView, VerifyEmailView, OAuthLoadingView, } from "./features/auth/index";
5502
5471
  // Missing cart and checkout feature components
5503
5472
  export { CartItemRow, CartDrawer, CartView, CartSummary, ShippingPicker } from "./features/cart/index";
5504
- export { CheckoutView, CheckoutAddressStep, CheckoutOtpModal, CheckoutSuccessView } from "./features/cart/index";
5473
+ export { CheckoutView, CheckoutAddressStep, CheckoutSuccessView } from "./features/cart/index";
5505
5474
  export { CheckoutStepper, useCheckout } from "./features/checkout/index";
5506
5475
  // PaymentGateway already exported from checkout types above
5507
5476
  // Missing account hooks
package/dist/jobs.d.ts CHANGED
@@ -20,7 +20,7 @@
20
20
  * listingProcessorHandler,
21
21
  * } from "@mohasinac/appkit/jobs";
22
22
  */
23
- export { couponExpiryHandler, offerExpiryHandler, cartPruneHandler, notificationPruneHandler, dailyDataCleanupHandler, cleanupRtdbEventsHandler, auctionSettlementHandler, autoPayoutEligibilityHandler, countersReconcileHandler, onOrderCreateHandler, onOrderStatusChangeHandler, onBidPlacedHandler, onReviewWriteHandler, promotionsHandler, mediaTmpCleanupHandler, pendingOrderTimeoutHandler, productStatsSyncHandler, positionsReconcileHandler, payoutBatchHandler, weeklyPayoutEligibilityHandler, onCategoryWriteHandler, onProductWriteHandler, onStoreWriteHandler, adminAnalyticsHandler, storeAnalyticsHandler, listingProcessorHandler, supportedListingCollections, prizeRevealOpenHandler, prizeRevealCloseHandler, prizeRevealExpiryHandler, prizeRevealReminderHandler, bundleStockSyncHandler, onProductStockChangeHandler, triggerEventRaffleHandler, assignSpinPrizeHandler, draftPruneHandler, onSupportTicketCreateHandler, onSupportTicketUpdateHandler, onUserBanChangeHandler, onScamReportCreateHandler, onScamReportUpdateHandler, bindSchedule, bindDocumentWritten, bindDocumentCreated, bindDocumentUpdated, bindCallable, bindHttps, bindToFirebase, } from "./_internal/server/jobs/index.js";
23
+ export { couponExpiryHandler, offerExpiryHandler, cartPruneHandler, notificationPruneHandler, dailyDataCleanupHandler, cleanupRtdbEventsHandler, auctionSettlementHandler, autoPayoutEligibilityHandler, countersReconcileHandler, onOrderCreateHandler, onOrderStatusChangeHandler, onBidPlacedHandler, onReviewWriteHandler, promotionsHandler, mediaTmpCleanupHandler, pendingOrderTimeoutHandler, productStatsSyncHandler, positionsReconcileHandler, payoutBatchHandler, weeklyPayoutEligibilityHandler, onCategoryWriteHandler, onProductWriteHandler, onStoreWriteHandler, adminAnalyticsHandler, storeAnalyticsHandler, listingProcessorHandler, supportedListingCollections, onPrizeDrawPaymentConfirmedHandler, prizeDrawSoldOutRevealHandler, prizeDrawExpiryRevealHandler, bundleStockSyncHandler, onProductStockChangeHandler, triggerEventRaffleHandler, assignSpinPrizeHandler, draftPruneHandler, onSupportTicketCreateHandler, onSupportTicketUpdateHandler, onUserBanChangeHandler, onScamReportCreateHandler, onScamReportUpdateHandler, bindSchedule, bindDocumentWritten, bindDocumentCreated, bindDocumentUpdated, bindCallable, bindHttps, bindToFirebase, } from "./_internal/server/jobs/index.js";
24
24
  export { defineFunction, mergeFunctionRegistries, bindAllFromRegistry, APPKIT_FUNCTIONS, APPKIT_FUNCTIONS_BY_NAME, } from "./_internal/server/functions/index.js";
25
25
  export { orderRepository, siteSettingsRepository } from "./repositories/index.js";
26
26
  export type { OrderDocument, OrderDocumentItem } from "./features/orders/index.js";
package/dist/jobs.js CHANGED
@@ -23,8 +23,8 @@
23
23
  export {
24
24
  // S4–S5: Job handlers (pure, framework-agnostic)
25
25
  couponExpiryHandler, offerExpiryHandler, cartPruneHandler, notificationPruneHandler, dailyDataCleanupHandler, cleanupRtdbEventsHandler, auctionSettlementHandler, autoPayoutEligibilityHandler, countersReconcileHandler, onOrderCreateHandler, onOrderStatusChangeHandler, onBidPlacedHandler, onReviewWriteHandler, promotionsHandler, mediaTmpCleanupHandler, pendingOrderTimeoutHandler, productStatsSyncHandler, positionsReconcileHandler, payoutBatchHandler, weeklyPayoutEligibilityHandler, onCategoryWriteHandler, onProductWriteHandler, onStoreWriteHandler, adminAnalyticsHandler, storeAnalyticsHandler, listingProcessorHandler, supportedListingCollections,
26
- // SB1-L (S7-PrizeDraws)
27
- prizeRevealOpenHandler, prizeRevealCloseHandler, prizeRevealExpiryHandler, prizeRevealReminderHandler, bundleStockSyncHandler,
26
+ // SB1-L (S7-PrizeDraws) — prize-draw reveal redesigned to a fully-automatic model.
27
+ onPrizeDrawPaymentConfirmedHandler, prizeDrawSoldOutRevealHandler, prizeDrawExpiryRevealHandler, bundleStockSyncHandler,
28
28
  // SB-UNI-V — Firestore onWrite trigger for product stock changes.
29
29
  onProductStockChangeHandler, triggerEventRaffleHandler, assignSpinPrizeHandler,
30
30
  // SB-UNI-Y-1 — daily draft prune for store form drafts
@@ -15,6 +15,7 @@ export declare const DEFAULT_ROUTE_MAP: {
15
15
  readonly PUBLIC: {
16
16
  readonly FAQS: "/faqs";
17
17
  readonly FAQ_CATEGORY: (category: string) => string;
18
+ readonly BUG_HUNTERS: "/bug-hunters";
18
19
  readonly PROFILE: (userId: string) => string;
19
20
  readonly PRODUCTS: "/products";
20
21
  readonly PRODUCT_DETAIL: (slugOrId: string) => string;
@@ -248,6 +249,7 @@ export declare const DEFAULT_ROUTE_MAP: {
248
249
  readonly CATALOGUE_APPROVALS: "/admin/catalogue-approvals";
249
250
  readonly USERS: "/admin/users";
250
251
  readonly SITE: "/admin/site";
252
+ readonly INTEGRATION_GUIDES: "/admin/integration-guides";
251
253
  readonly CAROUSEL: "/admin/carousel";
252
254
  readonly CAROUSEL_NEW: "/admin/carousel/new";
253
255
  readonly CAROUSEL_EDIT: (id: string) => string;
@@ -374,6 +376,7 @@ export declare const ROUTES: {
374
376
  readonly PUBLIC: {
375
377
  readonly FAQS: "/faqs";
376
378
  readonly FAQ_CATEGORY: (category: string) => string;
379
+ readonly BUG_HUNTERS: "/bug-hunters";
377
380
  readonly PROFILE: (userId: string) => string;
378
381
  readonly PRODUCTS: "/products";
379
382
  readonly PRODUCT_DETAIL: (slugOrId: string) => string;
@@ -607,6 +610,7 @@ export declare const ROUTES: {
607
610
  readonly CATALOGUE_APPROVALS: "/admin/catalogue-approvals";
608
611
  readonly USERS: "/admin/users";
609
612
  readonly SITE: "/admin/site";
613
+ readonly INTEGRATION_GUIDES: "/admin/integration-guides";
610
614
  readonly CAROUSEL: "/admin/carousel";
611
615
  readonly CAROUSEL_NEW: "/admin/carousel/new";
612
616
  readonly CAROUSEL_EDIT: (id: string) => string;
@@ -3,6 +3,7 @@ export const DEFAULT_ROUTE_MAP = {
3
3
  PUBLIC: {
4
4
  FAQS: "/faqs",
5
5
  FAQ_CATEGORY: (category) => `/faqs/${category}`,
6
+ BUG_HUNTERS: "/bug-hunters",
6
7
  PROFILE: (userId) => `/profile/${userId}`,
7
8
  PRODUCTS: "/products",
8
9
  PRODUCT_DETAIL: (slugOrId) => `/products/${slugOrId}`,
@@ -247,6 +248,7 @@ export const DEFAULT_ROUTE_MAP = {
247
248
  CATALOGUE_APPROVALS: "/admin/catalogue-approvals",
248
249
  USERS: "/admin/users",
249
250
  SITE: "/admin/site",
251
+ INTEGRATION_GUIDES: "/admin/integration-guides",
250
252
  CAROUSEL: "/admin/carousel",
251
253
  CAROUSEL_NEW: "/admin/carousel/new",
252
254
  CAROUSEL_EDIT: (id) => `/admin/carousel/${id}/edit`,
@@ -17,6 +17,8 @@ export { bidRepository } from "../features/auctions/repository/bid.repository";
17
17
  export { CartRepository, cartRepository, } from "../features/cart/repository/cart.repository";
18
18
  export { StoreRepository, storeRepository, } from "../features/stores/repository/store.repository";
19
19
  export { siteSettingsRepository } from "../features/admin/repository/site-settings.repository";
20
+ export { analyticsRollupRepository } from "../features/admin/repository/analytics-rollup.repository";
21
+ export type { AnalyticsRollupDocument } from "../features/admin/repository/analytics-rollup.repository";
20
22
  export { notificationRepository } from "../features/admin/repository/notification.repository";
21
23
  export { chatRepository } from "../features/admin/repository/chat.repository";
22
24
  export { carouselRepository } from "../features/homepage/repository/carousel.repository";
@@ -24,6 +24,7 @@ export { StoreRepository, storeRepository, } from "../features/stores/repository
24
24
  // SB-UNI-A 2026-05-13 — storeAddressRepository deleted. Use addressesRepository
25
25
  // with ownerType:"store" instead.
26
26
  export { siteSettingsRepository } from "../features/admin/repository/site-settings.repository";
27
+ export { analyticsRollupRepository } from "../features/admin/repository/analytics-rollup.repository";
27
28
  export { notificationRepository } from "../features/admin/repository/notification.repository";
28
29
  export { chatRepository } from "../features/admin/repository/chat.repository";
29
30
  export { carouselRepository } from "../features/homepage/repository/carousel.repository";
@@ -2271,8 +2271,6 @@ export declare const SCHEMAS: {
2271
2271
  totalPrice: import("zod").ZodEffects<import("zod").ZodNumber, number, number>;
2272
2272
  listingType: import("zod").ZodOptional<import("zod").ZodEnum<["standard", "auction", "pre-order", "prize-draw", "classified", "digital-code", "live"]>>;
2273
2273
  prizeRevealStatus: import("zod").ZodOptional<import("zod").ZodEnum<["pending", "open", "closed", "revealed"]>>;
2274
- prizeRevealDeadline: import("zod").ZodOptional<import("zod").ZodString>;
2275
- revealedItemNumber: import("zod").ZodOptional<import("zod").ZodNumber>;
2276
2274
  }, "strip", import("zod").ZodTypeAny, {
2277
2275
  productId: string;
2278
2276
  quantity: number;
@@ -2281,8 +2279,6 @@ export declare const SCHEMAS: {
2281
2279
  totalPrice: number;
2282
2280
  listingType?: "standard" | "auction" | "pre-order" | "prize-draw" | "classified" | "digital-code" | "live" | undefined;
2283
2281
  prizeRevealStatus?: "closed" | "open" | "pending" | "revealed" | undefined;
2284
- prizeRevealDeadline?: string | undefined;
2285
- revealedItemNumber?: number | undefined;
2286
2282
  }, {
2287
2283
  productId: string;
2288
2284
  quantity: number;
@@ -2291,8 +2287,6 @@ export declare const SCHEMAS: {
2291
2287
  totalPrice: number;
2292
2288
  listingType?: "standard" | "auction" | "pre-order" | "prize-draw" | "classified" | "digital-code" | "live" | undefined;
2293
2289
  prizeRevealStatus?: "closed" | "open" | "pending" | "revealed" | undefined;
2294
- prizeRevealDeadline?: string | undefined;
2295
- revealedItemNumber?: number | undefined;
2296
2290
  }>, "many">>;
2297
2291
  orderType: import("zod").ZodOptional<import("zod").ZodString>;
2298
2292
  imageUrls: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
@@ -2466,15 +2460,8 @@ export declare const SCHEMAS: {
2466
2460
  toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
2467
2461
  }, import("zod").ZodTypeAny, "passthrough">;
2468
2462
  }>>;
2469
- prizeRevealDeadline: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodDate, import("zod").ZodString, import("zod").ZodObject<{
2470
- toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
2471
- }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
2472
- toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
2473
- }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
2474
- toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
2475
- }, import("zod").ZodTypeAny, "passthrough">>]>>;
2476
- prizeRevealExpired: import("zod").ZodOptional<import("zod").ZodBoolean>;
2477
2463
  prizeDrawProductId: import("zod").ZodOptional<import("zod").ZodString>;
2464
+ prizeRevealMode: import("zod").ZodOptional<import("zod").ZodEnum<["instant", "scheduled"]>>;
2478
2465
  isNonRefundable: import("zod").ZodOptional<import("zod").ZodBoolean>;
2479
2466
  bundleId: import("zod").ZodOptional<import("zod").ZodString>;
2480
2467
  paymentBatchId: import("zod").ZodOptional<import("zod").ZodString>;
@@ -2598,6 +2585,7 @@ export declare const SCHEMAS: {
2598
2585
  paymentMethod?: string | undefined;
2599
2586
  notes?: string | undefined;
2600
2587
  storeName?: string | undefined;
2588
+ prizeRevealMode?: "instant" | "scheduled" | undefined;
2601
2589
  physicalLocation?: {
2602
2590
  zone: string;
2603
2591
  shelf: string;
@@ -2611,8 +2599,6 @@ export declare const SCHEMAS: {
2611
2599
  totalPrice: number;
2612
2600
  listingType?: "standard" | "auction" | "pre-order" | "prize-draw" | "classified" | "digital-code" | "live" | undefined;
2613
2601
  prizeRevealStatus?: "closed" | "open" | "pending" | "revealed" | undefined;
2614
- prizeRevealDeadline?: string | undefined;
2615
- revealedItemNumber?: number | undefined;
2616
2602
  }[] | undefined;
2617
2603
  payoutStatus?: "paid" | "eligible" | "requested" | undefined;
2618
2604
  couponCode?: string | undefined;
@@ -2684,10 +2670,6 @@ export declare const SCHEMAS: {
2684
2670
  toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
2685
2671
  }, import("zod").ZodTypeAny, "passthrough">;
2686
2672
  } | undefined;
2687
- prizeRevealDeadline?: string | Date | import("zod").objectOutputType<{
2688
- toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
2689
- }, import("zod").ZodTypeAny, "passthrough"> | undefined;
2690
- prizeRevealExpired?: boolean | undefined;
2691
2673
  prizeDrawProductId?: string | undefined;
2692
2674
  isNonRefundable?: boolean | undefined;
2693
2675
  bundleId?: string | undefined;
@@ -2751,6 +2733,7 @@ export declare const SCHEMAS: {
2751
2733
  paymentMethod?: string | undefined;
2752
2734
  notes?: string | undefined;
2753
2735
  storeName?: string | undefined;
2736
+ prizeRevealMode?: "instant" | "scheduled" | undefined;
2754
2737
  physicalLocation?: {
2755
2738
  zone: string;
2756
2739
  shelf: string;
@@ -2764,8 +2747,6 @@ export declare const SCHEMAS: {
2764
2747
  totalPrice: number;
2765
2748
  listingType?: "standard" | "auction" | "pre-order" | "prize-draw" | "classified" | "digital-code" | "live" | undefined;
2766
2749
  prizeRevealStatus?: "closed" | "open" | "pending" | "revealed" | undefined;
2767
- prizeRevealDeadline?: string | undefined;
2768
- revealedItemNumber?: number | undefined;
2769
2750
  }[] | undefined;
2770
2751
  payoutStatus?: "paid" | "eligible" | "requested" | undefined;
2771
2752
  couponCode?: string | undefined;
@@ -2837,10 +2818,6 @@ export declare const SCHEMAS: {
2837
2818
  toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
2838
2819
  }, import("zod").ZodTypeAny, "passthrough">;
2839
2820
  } | undefined;
2840
- prizeRevealDeadline?: string | Date | import("zod").objectInputType<{
2841
- toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
2842
- }, import("zod").ZodTypeAny, "passthrough"> | undefined;
2843
- prizeRevealExpired?: boolean | undefined;
2844
2821
  prizeDrawProductId?: string | undefined;
2845
2822
  isNonRefundable?: boolean | undefined;
2846
2823
  bundleId?: string | undefined;
@@ -3095,6 +3072,7 @@ export declare const SCHEMAS: {
3095
3072
  id: import("zod").ZodString;
3096
3073
  productId: import("zod").ZodString;
3097
3074
  productTitle: import("zod").ZodString;
3075
+ listingType: import("zod").ZodOptional<import("zod").ZodString>;
3098
3076
  storeId: import("zod").ZodOptional<import("zod").ZodString>;
3099
3077
  storeName: import("zod").ZodOptional<import("zod").ZodString>;
3100
3078
  userId: import("zod").ZodString;
@@ -3184,6 +3162,7 @@ export declare const SCHEMAS: {
3184
3162
  } | undefined;
3185
3163
  storeId?: string | undefined;
3186
3164
  featured?: boolean | undefined;
3165
+ listingType?: string | undefined;
3187
3166
  images?: string[] | undefined;
3188
3167
  storeName?: string | undefined;
3189
3168
  userAvatar?: string | undefined;
@@ -3231,6 +3210,7 @@ export declare const SCHEMAS: {
3231
3210
  } | undefined;
3232
3211
  storeId?: string | undefined;
3233
3212
  featured?: boolean | undefined;
3213
+ listingType?: string | undefined;
3234
3214
  images?: string[] | undefined;
3235
3215
  storeName?: string | undefined;
3236
3216
  userAvatar?: string | undefined;