@mohasinac/appkit 2.6.2 → 2.6.4

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 (607) hide show
  1. package/dist/_internal/server/features/account/data.js +2 -2
  2. package/dist/_internal/server/features/bundles/data.d.ts +26 -6
  3. package/dist/_internal/server/features/bundles/data.js +41 -6
  4. package/dist/_internal/server/features/bundles/index.d.ts +3 -2
  5. package/dist/_internal/server/features/bundles/index.js +4 -2
  6. package/dist/_internal/server/features/bundles/metadata.d.ts +20 -0
  7. package/dist/_internal/server/features/bundles/metadata.js +46 -0
  8. package/dist/_internal/server/features/bundles/og.d.ts +38 -0
  9. package/dist/_internal/server/features/bundles/og.js +122 -0
  10. package/dist/_internal/server/features/checkout/actions.js +192 -133
  11. package/dist/_internal/server/features/checkout/bundle-expansion.d.ts +57 -0
  12. package/dist/_internal/server/features/checkout/bundle-expansion.js +70 -0
  13. package/dist/_internal/server/features/checkout/prize-bundle-gates.d.ts +5 -15
  14. package/dist/_internal/server/features/checkout/prize-bundle-gates.js +5 -21
  15. package/dist/_internal/server/features/media/contextGuards.js +15 -1
  16. package/dist/_internal/server/features/payouts/actions.d.ts +19 -0
  17. package/dist/_internal/server/features/payouts/actions.js +38 -0
  18. package/dist/_internal/server/features/products/data.js +1 -2
  19. package/dist/_internal/server/features/raffle/actions.d.ts +11 -0
  20. package/dist/_internal/server/features/raffle/actions.js +31 -0
  21. package/dist/_internal/server/features/refunds/actions.d.ts +31 -0
  22. package/dist/_internal/server/features/refunds/actions.js +77 -0
  23. package/dist/_internal/server/jobs/core/adminAnalytics.d.ts +28 -0
  24. package/dist/_internal/server/jobs/core/adminAnalytics.js +98 -0
  25. package/dist/_internal/server/jobs/core/assignSpinPrize.d.ts +19 -0
  26. package/dist/_internal/server/jobs/core/assignSpinPrize.js +81 -0
  27. package/dist/_internal/server/jobs/core/auctionSettlement.d.ts +2 -0
  28. package/dist/_internal/server/jobs/core/auctionSettlement.js +70 -0
  29. package/dist/_internal/server/jobs/core/autoPayoutEligibility.d.ts +2 -0
  30. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +109 -0
  31. package/dist/_internal/server/jobs/core/bundleStockSync.d.ts +10 -0
  32. package/dist/_internal/server/jobs/core/bundleStockSync.js +71 -0
  33. package/dist/_internal/server/jobs/core/cartPrune.d.ts +2 -0
  34. package/dist/_internal/server/jobs/core/cartPrune.js +13 -0
  35. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.d.ts +2 -0
  36. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +45 -0
  37. package/dist/_internal/server/jobs/core/countersReconcile.d.ts +2 -0
  38. package/dist/_internal/server/jobs/core/countersReconcile.js +107 -0
  39. package/dist/_internal/server/jobs/core/couponExpiry.d.ts +2 -0
  40. package/dist/_internal/server/jobs/core/couponExpiry.js +13 -0
  41. package/dist/_internal/server/jobs/core/dailyDataCleanup.d.ts +2 -0
  42. package/dist/_internal/server/jobs/core/dailyDataCleanup.js +20 -0
  43. package/dist/_internal/server/jobs/core/index.d.ts +44 -0
  44. package/dist/_internal/server/jobs/core/index.js +47 -0
  45. package/dist/_internal/server/jobs/core/listingProcessor.d.ts +30 -0
  46. package/dist/_internal/server/jobs/core/listingProcessor.js +138 -0
  47. package/dist/_internal/server/jobs/core/mediaTmpCleanup.d.ts +14 -0
  48. package/dist/_internal/server/jobs/core/mediaTmpCleanup.js +68 -0
  49. package/dist/_internal/server/jobs/core/notificationPrune.d.ts +2 -0
  50. package/dist/_internal/server/jobs/core/notificationPrune.js +13 -0
  51. package/dist/_internal/server/jobs/core/offerExpiry.d.ts +2 -0
  52. package/dist/_internal/server/jobs/core/offerExpiry.js +50 -0
  53. package/dist/_internal/server/jobs/core/onBidPlaced.d.ts +15 -0
  54. package/dist/_internal/server/jobs/core/onBidPlaced.js +59 -0
  55. package/dist/_internal/server/jobs/core/onCategoryWrite.d.ts +14 -0
  56. package/dist/_internal/server/jobs/core/onCategoryWrite.js +134 -0
  57. package/dist/_internal/server/jobs/core/onOrderCreate.d.ts +18 -0
  58. package/dist/_internal/server/jobs/core/onOrderCreate.js +78 -0
  59. package/dist/_internal/server/jobs/core/onOrderStatusChange.d.ts +19 -0
  60. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +139 -0
  61. package/dist/_internal/server/jobs/core/onProductStockChange.d.ts +23 -0
  62. package/dist/_internal/server/jobs/core/onProductStockChange.js +130 -0
  63. package/dist/_internal/server/jobs/core/onProductWrite.d.ts +12 -0
  64. package/dist/_internal/server/jobs/core/onProductWrite.js +94 -0
  65. package/dist/_internal/server/jobs/core/onReviewWrite.d.ts +7 -0
  66. package/dist/_internal/server/jobs/core/onReviewWrite.js +49 -0
  67. package/dist/_internal/server/jobs/core/onStoreWrite.d.ts +12 -0
  68. package/dist/_internal/server/jobs/core/onStoreWrite.js +7 -0
  69. package/dist/_internal/server/jobs/core/payoutBatch.d.ts +8 -0
  70. package/dist/_internal/server/jobs/core/payoutBatch.js +102 -0
  71. package/dist/_internal/server/jobs/core/pendingOrderTimeout.d.ts +2 -0
  72. package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +27 -0
  73. package/dist/_internal/server/jobs/core/positionsReconcile.d.ts +7 -0
  74. package/dist/_internal/server/jobs/core/positionsReconcile.js +87 -0
  75. package/dist/_internal/server/jobs/core/prizeRevealClose.d.ts +2 -0
  76. package/dist/_internal/server/jobs/core/prizeRevealClose.js +22 -0
  77. package/dist/_internal/server/jobs/core/prizeRevealExpiry.d.ts +2 -0
  78. package/dist/_internal/server/jobs/core/prizeRevealExpiry.js +50 -0
  79. package/dist/_internal/server/jobs/core/prizeRevealOpen.d.ts +2 -0
  80. package/dist/_internal/server/jobs/core/prizeRevealOpen.js +56 -0
  81. package/dist/_internal/server/jobs/core/prizeRevealReminder.d.ts +2 -0
  82. package/dist/_internal/server/jobs/core/prizeRevealReminder.js +38 -0
  83. package/dist/_internal/server/jobs/core/productStatsSync.d.ts +8 -0
  84. package/dist/_internal/server/jobs/core/productStatsSync.js +36 -0
  85. package/dist/_internal/server/jobs/core/promotions.d.ts +12 -0
  86. package/dist/_internal/server/jobs/core/promotions.js +43 -0
  87. package/dist/_internal/server/jobs/core/storeAnalytics.d.ts +30 -0
  88. package/dist/_internal/server/jobs/core/storeAnalytics.js +109 -0
  89. package/dist/_internal/server/jobs/core/triggerEventRaffle.d.ts +19 -0
  90. package/dist/_internal/server/jobs/core/triggerEventRaffle.js +86 -0
  91. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.d.ts +6 -0
  92. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +85 -0
  93. package/dist/_internal/server/jobs/handlers/adminAnalytics.d.ts +2 -26
  94. package/dist/_internal/server/jobs/handlers/adminAnalytics.js +2 -98
  95. package/dist/_internal/server/jobs/handlers/assignSpinPrize.d.ts +1 -22
  96. package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +2 -86
  97. package/dist/_internal/server/jobs/handlers/auctionSettlement.js +2 -70
  98. package/dist/_internal/server/jobs/handlers/autoPayoutEligibility.js +2 -110
  99. package/dist/_internal/server/jobs/handlers/bundleStockSync.d.ts +0 -16
  100. package/dist/_internal/server/jobs/handlers/bundleStockSync.js +2 -80
  101. package/dist/_internal/server/jobs/handlers/cartPrune.js +2 -13
  102. package/dist/_internal/server/jobs/handlers/cleanupRtdbEvents.js +2 -45
  103. package/dist/_internal/server/jobs/handlers/countersReconcile.js +2 -109
  104. package/dist/_internal/server/jobs/handlers/couponExpiry.js +2 -13
  105. package/dist/_internal/server/jobs/handlers/dailyDataCleanup.js +2 -20
  106. package/dist/_internal/server/jobs/handlers/listingProcessor.d.ts +3 -28
  107. package/dist/_internal/server/jobs/handlers/listingProcessor.js +3 -138
  108. package/dist/_internal/server/jobs/handlers/mediaTmpCleanup.d.ts +0 -12
  109. package/dist/_internal/server/jobs/handlers/mediaTmpCleanup.js +2 -69
  110. package/dist/_internal/server/jobs/handlers/notificationPrune.js +2 -13
  111. package/dist/_internal/server/jobs/handlers/offerExpiry.js +2 -50
  112. package/dist/_internal/server/jobs/handlers/onBidPlaced.d.ts +1 -10
  113. package/dist/_internal/server/jobs/handlers/onBidPlaced.js +2 -56
  114. package/dist/_internal/server/jobs/handlers/onCategoryWrite.d.ts +1 -8
  115. package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +6 -134
  116. package/dist/_internal/server/jobs/handlers/onOrderCreate.d.ts +1 -12
  117. package/dist/_internal/server/jobs/handlers/onOrderCreate.js +2 -76
  118. package/dist/_internal/server/jobs/handlers/onOrderStatusChange.d.ts +1 -12
  119. package/dist/_internal/server/jobs/handlers/onOrderStatusChange.js +2 -139
  120. package/dist/_internal/server/jobs/handlers/onProductStockChange.d.ts +0 -13
  121. package/dist/_internal/server/jobs/handlers/onProductStockChange.js +7 -134
  122. package/dist/_internal/server/jobs/handlers/onProductWrite.d.ts +1 -6
  123. package/dist/_internal/server/jobs/handlers/onProductWrite.js +6 -106
  124. package/dist/_internal/server/jobs/handlers/onReviewWrite.js +2 -49
  125. package/dist/_internal/server/jobs/handlers/onStoreWrite.d.ts +1 -8
  126. package/dist/_internal/server/jobs/handlers/onStoreWrite.js +7 -8
  127. package/dist/_internal/server/jobs/handlers/payoutBatch.d.ts +0 -9
  128. package/dist/_internal/server/jobs/handlers/payoutBatch.js +2 -104
  129. package/dist/_internal/server/jobs/handlers/pendingOrderTimeout.d.ts +0 -6
  130. package/dist/_internal/server/jobs/handlers/pendingOrderTimeout.js +2 -33
  131. package/dist/_internal/server/jobs/handlers/positionsReconcile.d.ts +0 -5
  132. package/dist/_internal/server/jobs/handlers/positionsReconcile.js +2 -87
  133. package/dist/_internal/server/jobs/handlers/prizeRevealClose.d.ts +0 -7
  134. package/dist/_internal/server/jobs/handlers/prizeRevealClose.js +2 -29
  135. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.d.ts +0 -8
  136. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.js +2 -58
  137. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.d.ts +0 -8
  138. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.js +2 -65
  139. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.d.ts +0 -7
  140. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.js +2 -45
  141. package/dist/_internal/server/jobs/handlers/productStatsSync.d.ts +0 -6
  142. package/dist/_internal/server/jobs/handlers/productStatsSync.js +2 -36
  143. package/dist/_internal/server/jobs/handlers/promotions.d.ts +2 -10
  144. package/dist/_internal/server/jobs/handlers/promotions.js +2 -43
  145. package/dist/_internal/server/jobs/handlers/storeAnalytics.d.ts +2 -28
  146. package/dist/_internal/server/jobs/handlers/storeAnalytics.js +2 -109
  147. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.d.ts +1 -28
  148. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +2 -94
  149. package/dist/_internal/server/jobs/handlers/weeklyPayoutEligibility.d.ts +0 -6
  150. package/dist/_internal/server/jobs/handlers/weeklyPayoutEligibility.js +2 -87
  151. package/dist/_internal/server/jobs/index.d.ts +1 -0
  152. package/dist/_internal/server/jobs/index.js +1 -0
  153. package/dist/_internal/server/jobs/runtime/adapters/firebase.js +21 -0
  154. package/dist/_internal/shared/actions/action-registry.d.ts +84 -0
  155. package/dist/_internal/shared/actions/action-registry.js +160 -0
  156. package/dist/_internal/shared/checkout/rules/_defaults.d.ts +3 -0
  157. package/dist/_internal/shared/checkout/rules/_defaults.js +22 -0
  158. package/dist/_internal/shared/checkout/rules/_limits.d.ts +19 -0
  159. package/dist/_internal/shared/checkout/rules/_limits.js +19 -0
  160. package/dist/_internal/shared/checkout/rules/_registry.d.ts +44 -0
  161. package/dist/_internal/shared/checkout/rules/_registry.js +87 -0
  162. package/dist/_internal/shared/checkout/rules/auction.rule.d.ts +2 -0
  163. package/dist/_internal/shared/checkout/rules/auction.rule.js +10 -0
  164. package/dist/_internal/shared/checkout/rules/bundle.rule.d.ts +11 -0
  165. package/dist/_internal/shared/checkout/rules/bundle.rule.js +6 -0
  166. package/dist/_internal/shared/checkout/rules/classified.rule.d.ts +9 -0
  167. package/dist/_internal/shared/checkout/rules/classified.rule.js +9 -0
  168. package/dist/_internal/shared/checkout/rules/digital-code.rule.d.ts +8 -0
  169. package/dist/_internal/shared/checkout/rules/digital-code.rule.js +6 -0
  170. package/dist/_internal/shared/checkout/rules/index.d.ts +12 -0
  171. package/dist/_internal/shared/checkout/rules/index.js +12 -0
  172. package/dist/_internal/shared/checkout/rules/live.rule.d.ts +10 -0
  173. package/dist/_internal/shared/checkout/rules/live.rule.js +6 -0
  174. package/dist/_internal/shared/checkout/rules/offer.rule.d.ts +2 -0
  175. package/dist/_internal/shared/checkout/rules/offer.rule.js +9 -0
  176. package/dist/_internal/shared/checkout/rules/preorder.rule.d.ts +2 -0
  177. package/dist/_internal/shared/checkout/rules/preorder.rule.js +28 -0
  178. package/dist/_internal/shared/checkout/rules/prize-draw.rule.d.ts +2 -0
  179. package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +65 -0
  180. package/dist/_internal/shared/checkout/rules/standard.rule.d.ts +2 -0
  181. package/dist/_internal/shared/checkout/rules/standard.rule.js +5 -0
  182. package/dist/_internal/shared/checkout/rules/types.d.ts +125 -0
  183. package/dist/_internal/shared/checkout/rules/types.js +13 -0
  184. package/dist/_internal/shared/features/cart/schema.d.ts +6 -6
  185. package/dist/_internal/shared/features/categories/bundle-copy.d.ts +123 -0
  186. package/dist/_internal/shared/features/categories/bundle-copy.js +134 -0
  187. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +318 -0
  188. package/dist/_internal/shared/features/categories/bundle-schemas.js +55 -0
  189. package/dist/_internal/shared/features/orders/refund-copy.d.ts +36 -0
  190. package/dist/_internal/shared/features/orders/refund-copy.js +40 -0
  191. package/dist/_internal/shared/features/orders/schema.d.ts +4 -4
  192. package/dist/_internal/shared/features/products/schema.d.ts +8 -8
  193. package/dist/_internal/shared/listing-types/_registry.d.ts +27 -0
  194. package/dist/_internal/shared/listing-types/_registry.js +8 -0
  195. package/dist/_internal/shared/listing-types/action-tracker.d.ts +41 -0
  196. package/dist/_internal/shared/listing-types/action-tracker.js +70 -0
  197. package/dist/_internal/shared/listing-types/capabilities.js +25 -0
  198. package/dist/_internal/shared/listing-types/cart-shipping.d.ts +37 -0
  199. package/dist/_internal/shared/listing-types/cart-shipping.js +46 -0
  200. package/dist/_internal/shared/listing-types/classified/config.d.ts +7 -0
  201. package/dist/_internal/shared/listing-types/classified/config.js +8 -0
  202. package/dist/_internal/shared/listing-types/classified/ctas.d.ts +1 -0
  203. package/dist/_internal/shared/listing-types/classified/ctas.js +3 -0
  204. package/dist/_internal/shared/listing-types/classified/og.d.ts +1 -0
  205. package/dist/_internal/shared/listing-types/classified/og.js +1 -0
  206. package/dist/_internal/shared/listing-types/classified/schema.d.ts +1 -0
  207. package/dist/_internal/shared/listing-types/classified/schema.js +1 -0
  208. package/dist/_internal/shared/listing-types/classified/seed-factory.d.ts +1 -0
  209. package/dist/_internal/shared/listing-types/classified/seed-factory.js +1 -0
  210. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +7 -0
  211. package/dist/_internal/shared/listing-types/digital-code/config.js +8 -0
  212. package/dist/_internal/shared/listing-types/digital-code/ctas.d.ts +1 -0
  213. package/dist/_internal/shared/listing-types/digital-code/ctas.js +3 -0
  214. package/dist/_internal/shared/listing-types/digital-code/og.d.ts +1 -0
  215. package/dist/_internal/shared/listing-types/digital-code/og.js +1 -0
  216. package/dist/_internal/shared/listing-types/digital-code/schema.d.ts +1 -0
  217. package/dist/_internal/shared/listing-types/digital-code/schema.js +1 -0
  218. package/dist/_internal/shared/listing-types/digital-code/seed-factory.d.ts +1 -0
  219. package/dist/_internal/shared/listing-types/digital-code/seed-factory.js +1 -0
  220. package/dist/_internal/shared/listing-types/feature-flags.d.ts +34 -0
  221. package/dist/_internal/shared/listing-types/feature-flags.js +45 -0
  222. package/dist/_internal/shared/listing-types/live/config.d.ts +7 -0
  223. package/dist/_internal/shared/listing-types/live/config.js +8 -0
  224. package/dist/_internal/shared/listing-types/live/ctas.d.ts +1 -0
  225. package/dist/_internal/shared/listing-types/live/ctas.js +3 -0
  226. package/dist/_internal/shared/listing-types/live/og.d.ts +1 -0
  227. package/dist/_internal/shared/listing-types/live/og.js +1 -0
  228. package/dist/_internal/shared/listing-types/live/schema.d.ts +1 -0
  229. package/dist/_internal/shared/listing-types/live/schema.js +1 -0
  230. package/dist/_internal/shared/listing-types/live/seed-factory.d.ts +1 -0
  231. package/dist/_internal/shared/listing-types/live/seed-factory.js +1 -0
  232. package/dist/_internal/shared/media/limits.js +8 -0
  233. package/dist/client.d.ts +6 -1
  234. package/dist/client.js +14 -1
  235. package/dist/configs/next.js +7 -0
  236. package/dist/constants/api-endpoints.d.ts +6 -0
  237. package/dist/constants/api-endpoints.js +4 -0
  238. package/dist/core/hooks/useSyncManager.js +13 -1
  239. package/dist/core/unit-of-work.d.ts +1 -1
  240. package/dist/core/unit-of-work.js +2 -2
  241. package/dist/features/account/actions/address-actions.d.ts +1 -1
  242. package/dist/features/account/actions/address-actions.js +15 -7
  243. package/dist/features/account/schemas/firestore.d.ts +8 -43
  244. package/dist/features/account/schemas/firestore.js +8 -54
  245. package/dist/features/account/schemas/index.d.ts +6 -6
  246. package/dist/features/account/server.d.ts +1 -1
  247. package/dist/features/account/server.js +3 -1
  248. package/dist/features/addresses/index.d.ts +2 -0
  249. package/dist/features/addresses/index.js +2 -0
  250. package/dist/features/addresses/repository/addresses.repository.d.ts +29 -0
  251. package/dist/features/addresses/repository/addresses.repository.js +157 -0
  252. package/dist/features/addresses/schemas/firestore.d.ts +53 -0
  253. package/dist/features/addresses/schemas/firestore.js +68 -0
  254. package/dist/features/{bundles → addresses}/schemas/index.d.ts +0 -1
  255. package/dist/features/{bundles → addresses}/schemas/index.js +0 -1
  256. package/dist/features/addresses/server.d.ts +2 -0
  257. package/dist/features/addresses/server.js +2 -0
  258. package/dist/features/admin/components/AdminAllEventEntriesView.js +4 -3
  259. package/dist/features/admin/components/AdminBidsView.js +4 -3
  260. package/dist/features/admin/components/AdminBlogView.js +8 -3
  261. package/dist/features/admin/components/AdminBundleEditorView.d.ts +9 -0
  262. package/dist/features/admin/components/AdminBundleEditorView.js +209 -0
  263. package/dist/features/admin/components/AdminBundlesView.d.ts +9 -0
  264. package/dist/features/admin/components/AdminBundlesView.js +59 -0
  265. package/dist/features/admin/components/AdminCartsView.js +13 -3
  266. package/dist/features/admin/components/AdminContactView.js +4 -3
  267. package/dist/features/admin/components/AdminCouponsView.js +32 -13
  268. package/dist/features/admin/components/AdminNewsletterView.js +4 -3
  269. package/dist/features/admin/components/AdminOrdersView.js +15 -7
  270. package/dist/features/admin/components/AdminPayoutsView.js +4 -3
  271. package/dist/features/admin/components/AdminProductsView.js +6 -5
  272. package/dist/features/admin/components/AdminReviewsView.js +5 -4
  273. package/dist/features/admin/components/AdminStoresView.js +4 -3
  274. package/dist/features/admin/components/AdminUsersView.js +15 -5
  275. package/dist/features/admin/components/AdminWishlistsView.js +10 -1
  276. package/dist/features/admin/components/DataTable.d.ts +5 -1
  277. package/dist/features/admin/components/DataTable.js +24 -20
  278. package/dist/features/admin/components/index.d.ts +4 -0
  279. package/dist/features/admin/components/index.js +3 -0
  280. package/dist/features/admin/constants/filter-tabs.d.ts +401 -0
  281. package/dist/features/admin/constants/filter-tabs.js +200 -0
  282. package/dist/features/admin/hooks/useAdminListingData.d.ts +1 -0
  283. package/dist/features/admin/hooks/useAdminListingData.js +1 -0
  284. package/dist/features/admin/schemas/firestore.d.ts +15 -0
  285. package/dist/features/admin/schemas/firestore.js +18 -0
  286. package/dist/features/admin/types/product.types.d.ts +2 -2
  287. package/dist/features/auctions/components/AuctionCard.d.ts +4 -1
  288. package/dist/features/auctions/components/AuctionCard.js +5 -3
  289. package/dist/features/auctions/components/AuctionDetailPageView.js +1 -1
  290. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +2 -2
  291. package/dist/features/auctions/components/PlaceBidFormClient.js +12 -2
  292. package/dist/features/auctions/schemas/index.d.ts +2 -2
  293. package/dist/features/auth/index.d.ts +1 -0
  294. package/dist/features/auth/index.js +1 -0
  295. package/dist/features/auth/role-predicates.d.ts +16 -0
  296. package/dist/features/auth/role-predicates.js +15 -0
  297. package/dist/features/blog/components/BlogFeaturedCard.d.ts +4 -1
  298. package/dist/features/blog/components/BlogFeaturedCard.js +5 -3
  299. package/dist/features/cart/actions/cart-actions.d.ts +1 -0
  300. package/dist/features/cart/actions/cart-actions.js +16 -0
  301. package/dist/features/cart/components/CartView.d.ts +19 -1
  302. package/dist/features/cart/components/CartView.js +2 -2
  303. package/dist/features/cart/components/ShippingPicker.d.ts +13 -0
  304. package/dist/features/cart/components/ShippingPicker.js +48 -0
  305. package/dist/features/cart/components/index.d.ts +3 -1
  306. package/dist/features/cart/components/index.js +1 -0
  307. package/dist/features/cart/hooks/useCartCount.js +7 -1
  308. package/dist/features/cart/repository/cart.repository.d.ts +1 -0
  309. package/dist/features/cart/repository/cart.repository.js +35 -0
  310. package/dist/features/cart/schemas/firestore.d.ts +27 -2
  311. package/dist/features/categories/components/BundleAddToCartCta.d.ts +16 -0
  312. package/dist/features/categories/components/BundleAddToCartCta.js +54 -0
  313. package/dist/features/categories/components/BundleBuyNowCta.d.ts +8 -0
  314. package/dist/features/categories/components/BundleBuyNowCta.js +37 -0
  315. package/dist/features/categories/components/BundleDetailView.d.ts +22 -0
  316. package/dist/features/categories/components/BundleDetailView.js +31 -0
  317. package/dist/features/categories/components/BundleDynamicRuleEditor.d.ts +18 -0
  318. package/dist/features/categories/components/BundleDynamicRuleEditor.js +60 -0
  319. package/dist/features/categories/components/BundleItemsPicker.d.ts +26 -0
  320. package/dist/features/categories/components/BundleItemsPicker.js +135 -0
  321. package/dist/features/categories/components/BundlesListView.d.ts +13 -0
  322. package/dist/features/categories/components/BundlesListView.js +27 -0
  323. package/dist/features/categories/components/index.d.ts +12 -0
  324. package/dist/features/categories/components/index.js +9 -0
  325. package/dist/features/checkout/actions/checkout-actions.js +10 -3
  326. package/dist/features/events/components/AdminEventEditorView.js +108 -2
  327. package/dist/features/events/components/AdminEventsView.js +16 -4
  328. package/dist/features/events/components/EventCard.d.ts +4 -1
  329. package/dist/features/events/components/EventCard.js +7 -3
  330. package/dist/features/events/components/EventRaffleWinnerView.d.ts +21 -0
  331. package/dist/features/events/components/EventRaffleWinnerView.js +18 -0
  332. package/dist/features/events/components/SpinWheelView.d.ts +27 -0
  333. package/dist/features/events/components/SpinWheelView.js +64 -0
  334. package/dist/features/events/components/index.d.ts +4 -0
  335. package/dist/features/events/components/index.js +2 -0
  336. package/dist/features/events/schemas/firestore.d.ts +27 -1
  337. package/dist/features/events/schemas/firestore.js +7 -0
  338. package/dist/features/events/types/index.d.ts +27 -1
  339. package/dist/features/homepage/components/FeaturedBundlesSection.d.ts +16 -0
  340. package/dist/features/homepage/components/FeaturedBundlesSection.js +24 -0
  341. package/dist/features/homepage/components/MarketplaceHomepageView.js +4 -1
  342. package/dist/features/homepage/components/WhatsAppCommunitySection.js +2 -2
  343. package/dist/features/homepage/lib/section-renderer.d.ts +2 -0
  344. package/dist/features/homepage/lib/section-renderer.js +5 -5
  345. package/dist/features/layout/NavbarLayout.d.ts +3 -1
  346. package/dist/features/layout/NavbarLayout.js +32 -3
  347. package/dist/features/layout/TitleBarLayout.d.ts +6 -3
  348. package/dist/features/layout/TitleBarLayout.js +22 -7
  349. package/dist/features/media/upload/MediaUploadField.d.ts +15 -1
  350. package/dist/features/media/upload/MediaUploadField.js +22 -1
  351. package/dist/features/orders/components/MarketplaceOrderCard.js +4 -2
  352. package/dist/features/orders/components/OrderSiblingPayments.d.ts +8 -0
  353. package/dist/features/orders/components/OrderSiblingPayments.js +16 -0
  354. package/dist/features/orders/components/RefundHistoryTable.d.ts +6 -0
  355. package/dist/features/orders/components/RefundHistoryTable.js +23 -0
  356. package/dist/features/orders/components/RefundRequestView.d.ts +8 -0
  357. package/dist/features/orders/components/RefundRequestView.js +42 -0
  358. package/dist/features/orders/components/index.d.ts +6 -0
  359. package/dist/features/orders/components/index.js +3 -0
  360. package/dist/features/orders/index.d.ts +1 -0
  361. package/dist/features/orders/index.js +2 -0
  362. package/dist/features/orders/repository/orders.repository.d.ts +20 -1
  363. package/dist/features/orders/repository/orders.repository.js +30 -1
  364. package/dist/features/orders/schemas/firestore.d.ts +63 -13
  365. package/dist/features/orders/schemas/firestore.js +5 -5
  366. package/dist/features/orders/schemas/index.d.ts +4 -4
  367. package/dist/features/orders/types/index.d.ts +12 -2
  368. package/dist/features/orders/utils/bundle-grouping.d.ts +48 -0
  369. package/dist/features/orders/utils/bundle-grouping.js +54 -0
  370. package/dist/features/orders/utils/order-splitter.d.ts +9 -10
  371. package/dist/features/orders/utils/order-splitter.js +24 -30
  372. package/dist/features/payments/repository/payout.repository.d.ts +17 -1
  373. package/dist/features/payments/repository/payout.repository.js +47 -0
  374. package/dist/features/payments/schemas/firestore.d.ts +26 -0
  375. package/dist/features/pre-orders/components/PreorderCard.d.ts +4 -1
  376. package/dist/features/pre-orders/components/PreorderCard.js +8 -6
  377. package/dist/features/products/actions/product-actions.d.ts +1 -1
  378. package/dist/features/products/actions/product-actions.js +1 -1
  379. package/dist/features/products/components/CompareOverlay.d.ts +2 -2
  380. package/dist/features/products/components/CompareOverlay.js +4 -4
  381. package/dist/features/products/components/InteractiveProductCard.js +7 -12
  382. package/dist/features/products/components/NonRefundableConsentModal.d.ts +1 -1
  383. package/dist/features/products/components/NonRefundableConsentModal.js +0 -10
  384. package/dist/features/products/components/ProductGrid.js +28 -12
  385. package/dist/features/products/components/ShowGroupSection.js +3 -3
  386. package/dist/features/products/components/SublistingCarouselSection.js +2 -2
  387. package/dist/features/products/components/index.d.ts +0 -4
  388. package/dist/features/products/components/index.js +5 -2
  389. package/dist/features/products/index.d.ts +1 -1
  390. package/dist/features/products/index.js +3 -1
  391. package/dist/features/products/repository/products.repository.js +4 -0
  392. package/dist/features/products/schemas/catalog-product.d.ts +70 -0
  393. package/dist/features/products/schemas/catalog-product.js +50 -0
  394. package/dist/features/products/schemas/firestore.d.ts +110 -2
  395. package/dist/features/products/schemas/firestore.js +30 -0
  396. package/dist/features/products/schemas/index.d.ts +8 -8
  397. package/dist/features/products/types/index.d.ts +1 -1
  398. package/dist/features/products/utils/listing-type.d.ts +9 -0
  399. package/dist/features/products/utils/listing-type.js +4 -0
  400. package/dist/features/promotions/actions/coupon-actions.d.ts +2 -2
  401. package/dist/features/promotions/actions/coupon-actions.js +1 -1
  402. package/dist/features/promotions/components/CouponCard.d.ts +28 -10
  403. package/dist/features/promotions/components/CouponCard.js +116 -14
  404. package/dist/features/promotions/hooks/useCouponValidate.d.ts +1 -1
  405. package/dist/features/promotions/repository/coupons.repository.d.ts +1 -1
  406. package/dist/features/reviews/schemas/index.d.ts +2 -2
  407. package/dist/features/search/schemas/index.d.ts +2 -2
  408. package/dist/features/search/types/index.d.ts +2 -2
  409. package/dist/features/seller/components/SellerAuctionsView.js +4 -5
  410. package/dist/features/seller/components/SellerBidsView.js +5 -13
  411. package/dist/features/seller/components/SellerCouponsView.js +31 -67
  412. package/dist/features/seller/components/SellerOffersView.js +4 -5
  413. package/dist/features/seller/components/SellerOrdersView.js +4 -5
  414. package/dist/features/seller/components/SellerPayoutsView.js +4 -5
  415. package/dist/features/seller/components/SellerProductsView.js +4 -8
  416. package/dist/features/seller/schemas/index.d.ts +2 -2
  417. package/dist/features/stores/actions/store-address-actions.d.ts +10 -6
  418. package/dist/features/stores/actions/store-address-actions.js +8 -7
  419. package/dist/features/stores/components/InteractiveStoreCard.js +3 -10
  420. package/dist/features/stores/components/StoreDetailLayoutView.js +20 -5
  421. package/dist/features/stores/schemas/firestore.d.ts +45 -38
  422. package/dist/features/stores/schemas/firestore.js +2 -49
  423. package/dist/features/stores/server.d.ts +0 -1
  424. package/dist/features/stores/server.js +2 -1
  425. package/dist/features/wishlist/hooks/useWishlistCount.d.ts +7 -9
  426. package/dist/features/wishlist/hooks/useWishlistCount.js +67 -86
  427. package/dist/features/wishlist/types/index.d.ts +1 -1
  428. package/dist/index.d.ts +50 -9
  429. package/dist/index.js +57 -11
  430. package/dist/next/routing/route-map.d.ts +6 -0
  431. package/dist/next/routing/route-map.js +4 -0
  432. package/dist/providers/db-firebase/admin-app-lite.js +21 -0
  433. package/dist/providers/db-firebase/admin.d.ts +6 -2
  434. package/dist/providers/db-firebase/admin.js +23 -0
  435. package/dist/repositories/index.d.ts +1 -2
  436. package/dist/repositories/index.js +5 -2
  437. package/dist/security/authorization.d.ts +2 -1
  438. package/dist/security/authorization.js +3 -2
  439. package/dist/seed/actions/demo-seed-actions.d.ts +1 -1
  440. package/dist/seed/bids-seed-data.d.ts +2 -2
  441. package/dist/seed/bids-seed-data.js +77 -2
  442. package/dist/seed/cart-seed-data.d.ts +10 -10
  443. package/dist/seed/cart-seed-data.js +15 -15
  444. package/dist/seed/events-seed-data.js +77 -0
  445. package/dist/seed/manifest.js +16 -8
  446. package/dist/seed/orders-seed-data.js +41 -2
  447. package/dist/seed/payouts-seed-data.js +18 -2
  448. package/dist/seed/stores-seed-data.js +55 -0
  449. package/dist/server-entry.d.ts +1 -0
  450. package/dist/server-entry.js +2 -0
  451. package/dist/server.d.ts +4 -0
  452. package/dist/server.js +8 -0
  453. package/dist/tailwind-utilities.css +1 -1
  454. package/dist/ui/components/FilterChipGroup.d.ts +39 -0
  455. package/dist/ui/components/FilterChipGroup.js +15 -0
  456. package/dist/ui/components/HorizontalScroller.js +32 -7
  457. package/dist/ui/components/HorizontalScroller.style.css +6 -0
  458. package/dist/ui/components/SiteLogo.js +1 -1
  459. package/dist/ui/index.d.ts +2 -0
  460. package/dist/ui/index.js +2 -0
  461. package/dist/utils/id-generators.d.ts +11 -0
  462. package/dist/utils/id-generators.js +16 -0
  463. package/package.json +1 -1
  464. package/dist/_internal/shared/features/bundles/config.d.ts +0 -6
  465. package/dist/_internal/shared/features/bundles/config.js +0 -6
  466. package/dist/_internal/shared/schema-versions.d.ts +0 -76
  467. package/dist/_internal/shared/schema-versions.js +0 -82
  468. package/dist/features/account/migrations.d.ts +0 -2
  469. package/dist/features/account/migrations.js +0 -10
  470. package/dist/features/admin/migrations.d.ts +0 -2
  471. package/dist/features/admin/migrations.js +0 -10
  472. package/dist/features/auctions/migrations.d.ts +0 -2
  473. package/dist/features/auctions/migrations.js +0 -10
  474. package/dist/features/auth/migrations.d.ts +0 -2
  475. package/dist/features/auth/migrations.js +0 -10
  476. package/dist/features/blog/migrations.d.ts +0 -2
  477. package/dist/features/blog/migrations.js +0 -10
  478. package/dist/features/brands/actions/brand-actions.d.ts +0 -2
  479. package/dist/features/brands/actions/brand-actions.js +0 -5
  480. package/dist/features/brands/index.d.ts +0 -3
  481. package/dist/features/brands/index.js +0 -3
  482. package/dist/features/brands/migrations.d.ts +0 -2
  483. package/dist/features/brands/migrations.js +0 -10
  484. package/dist/features/brands/repository/brands.repository.d.ts +0 -13
  485. package/dist/features/brands/repository/brands.repository.js +0 -60
  486. package/dist/features/brands/schemas/index.d.ts +0 -33
  487. package/dist/features/brands/schemas/index.js +0 -15
  488. package/dist/features/brands/server.d.ts +0 -7
  489. package/dist/features/brands/server.js +0 -7
  490. package/dist/features/bundles/components/AdminBundleEditorView.d.ts +0 -8
  491. package/dist/features/bundles/components/AdminBundleEditorView.js +0 -7
  492. package/dist/features/bundles/components/BundleDetailPageView.d.ts +0 -9
  493. package/dist/features/bundles/components/BundleDetailPageView.js +0 -45
  494. package/dist/features/bundles/components/BundleForm.d.ts +0 -12
  495. package/dist/features/bundles/components/BundleForm.js +0 -126
  496. package/dist/features/bundles/components/BundleItemsPicker.d.ts +0 -9
  497. package/dist/features/bundles/components/BundleItemsPicker.js +0 -77
  498. package/dist/features/bundles/components/BundlesByCategoryListing.d.ts +0 -6
  499. package/dist/features/bundles/components/BundlesByCategoryListing.js +0 -50
  500. package/dist/features/bundles/components/BundlesListingView.d.ts +0 -17
  501. package/dist/features/bundles/components/BundlesListingView.js +0 -50
  502. package/dist/features/bundles/components/FeaturedBundlesSection.d.ts +0 -5
  503. package/dist/features/bundles/components/FeaturedBundlesSection.js +0 -55
  504. package/dist/features/bundles/components/SellerBundleCreateView.d.ts +0 -8
  505. package/dist/features/bundles/components/SellerBundleCreateView.js +0 -7
  506. package/dist/features/bundles/components/SellerBundleEditView.d.ts +0 -9
  507. package/dist/features/bundles/components/SellerBundleEditView.js +0 -7
  508. package/dist/features/bundles/components/index.d.ts +0 -18
  509. package/dist/features/bundles/components/index.js +0 -9
  510. package/dist/features/bundles/constants/index.d.ts +0 -32
  511. package/dist/features/bundles/constants/index.js +0 -35
  512. package/dist/features/bundles/index.d.ts +0 -2
  513. package/dist/features/bundles/index.js +0 -2
  514. package/dist/features/bundles/migrations.d.ts +0 -2
  515. package/dist/features/bundles/migrations.js +0 -10
  516. package/dist/features/bundles/repository/bundles.repository.d.ts +0 -36
  517. package/dist/features/bundles/repository/bundles.repository.js +0 -148
  518. package/dist/features/bundles/repository/index.d.ts +0 -1
  519. package/dist/features/bundles/repository/index.js +0 -1
  520. package/dist/features/bundles/schemas/firestore.d.ts +0 -88
  521. package/dist/features/bundles/schemas/firestore.js +0 -29
  522. package/dist/features/bundles/schemas/zod.d.ts +0 -377
  523. package/dist/features/bundles/schemas/zod.js +0 -71
  524. package/dist/features/cart/migrations.d.ts +0 -2
  525. package/dist/features/cart/migrations.js +0 -10
  526. package/dist/features/categories/migrations.d.ts +0 -2
  527. package/dist/features/categories/migrations.js +0 -10
  528. package/dist/features/events/migrations.d.ts +0 -2
  529. package/dist/features/events/migrations.js +0 -10
  530. package/dist/features/faq/migrations.d.ts +0 -2
  531. package/dist/features/faq/migrations.js +0 -10
  532. package/dist/features/grouped/migrations.d.ts +0 -2
  533. package/dist/features/grouped/migrations.js +0 -10
  534. package/dist/features/history/migrations.d.ts +0 -2
  535. package/dist/features/history/migrations.js +0 -10
  536. package/dist/features/messages/migrations.d.ts +0 -2
  537. package/dist/features/messages/migrations.js +0 -10
  538. package/dist/features/orders/migrations.d.ts +0 -2
  539. package/dist/features/orders/migrations.js +0 -10
  540. package/dist/features/payments/migrations.d.ts +0 -2
  541. package/dist/features/payments/migrations.js +0 -10
  542. package/dist/features/products/migrations.d.ts +0 -2
  543. package/dist/features/products/migrations.js +0 -10
  544. package/dist/features/products/repository/sublisting-categories.repository.d.ts +0 -16
  545. package/dist/features/products/repository/sublisting-categories.repository.js +0 -126
  546. package/dist/features/products/schemas/sublisting-categories.d.ts +0 -45
  547. package/dist/features/products/schemas/sublisting-categories.js +0 -16
  548. package/dist/features/promotions/migrations.d.ts +0 -2
  549. package/dist/features/promotions/migrations.js +0 -10
  550. package/dist/features/reviews/migrations.d.ts +0 -2
  551. package/dist/features/reviews/migrations.js +0 -10
  552. package/dist/features/scams/migrations.d.ts +0 -2
  553. package/dist/features/scams/migrations.js +0 -10
  554. package/dist/features/seller/migrations.d.ts +0 -2
  555. package/dist/features/seller/migrations.js +0 -10
  556. package/dist/features/stores/migrations.d.ts +0 -2
  557. package/dist/features/stores/migrations.js +0 -10
  558. package/dist/features/sublisting/migrations.d.ts +0 -2
  559. package/dist/features/sublisting/migrations.js +0 -10
  560. package/dist/features/sublisting/schemas/firestore.d.ts +0 -32
  561. package/dist/features/sublisting/schemas/firestore.js +0 -19
  562. package/dist/features/support/migrations.d.ts +0 -2
  563. package/dist/features/support/migrations.js +0 -10
  564. package/dist/features/wishlist/migrations.d.ts +0 -2
  565. package/dist/features/wishlist/migrations.js +0 -10
  566. package/dist/seed/_bundle-constants.d.ts +0 -14
  567. package/dist/seed/_bundle-constants.js +0 -14
  568. package/dist/seed/anime-figures-seed-data.d.ts +0 -8
  569. package/dist/seed/anime-figures-seed-data.js +0 -1033
  570. package/dist/seed/beyblade-seed-data.d.ts +0 -7
  571. package/dist/seed/beyblade-seed-data.js +0 -1129
  572. package/dist/seed/brands-seed-data.d.ts +0 -7
  573. package/dist/seed/brands-seed-data.js +0 -410
  574. package/dist/seed/bundles-seed-data.d.ts +0 -13
  575. package/dist/seed/bundles-seed-data.js +0 -229
  576. package/dist/seed/cosplay-accessories-seed-data.d.ts +0 -8
  577. package/dist/seed/cosplay-accessories-seed-data.js +0 -647
  578. package/dist/seed/hot-wheels-seed-data.d.ts +0 -7
  579. package/dist/seed/hot-wheels-seed-data.js +0 -1612
  580. package/dist/seed/letitrip-official-seed-data.d.ts +0 -8
  581. package/dist/seed/letitrip-official-seed-data.js +0 -399
  582. package/dist/seed/pokemon-carousel-slides-seed-data.d.ts +0 -8
  583. package/dist/seed/pokemon-carousel-slides-seed-data.js +0 -322
  584. package/dist/seed/pokemon-categories-seed-data.d.ts +0 -24
  585. package/dist/seed/pokemon-categories-seed-data.js +0 -547
  586. package/dist/seed/pokemon-coupons-seed-data.d.ts +0 -6
  587. package/dist/seed/pokemon-coupons-seed-data.js +0 -465
  588. package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +0 -7
  589. package/dist/seed/pokemon-homepage-sections-seed-data.js +0 -241
  590. package/dist/seed/pokemon-products-seed-data.d.ts +0 -9
  591. package/dist/seed/pokemon-products-seed-data.js +0 -1791
  592. package/dist/seed/pokemon-seed-bundle.d.ts +0 -47
  593. package/dist/seed/pokemon-seed-bundle.js +0 -71
  594. package/dist/seed/pokemon-stores-seed-data.d.ts +0 -6
  595. package/dist/seed/pokemon-stores-seed-data.js +0 -179
  596. package/dist/seed/pokemon-users-seed-data.d.ts +0 -6
  597. package/dist/seed/pokemon-users-seed-data.js +0 -521
  598. package/dist/seed/products-seed-data.d.ts +0 -6
  599. package/dist/seed/products-seed-data.js +0 -2530
  600. package/dist/seed/retro-gaming-seed-data.d.ts +0 -8
  601. package/dist/seed/retro-gaming-seed-data.js +0 -801
  602. package/dist/seed/server.d.ts +0 -2
  603. package/dist/seed/server.js +0 -7
  604. package/dist/seed/sublisting-categories-seed-data.d.ts +0 -7
  605. package/dist/seed/sublisting-categories-seed-data.js +0 -159
  606. package/dist/seed/transformers-seed-data.d.ts +0 -7
  607. package/dist/seed/transformers-seed-data.js +0 -530
@@ -4,14 +4,15 @@
4
4
  import type { OrderStatus, PaymentStatus } from "../types";
5
5
  import type { OrderType } from "../utils/order-splitter";
6
6
  export type ShippingMethod = "custom" | "shiprocket";
7
+ export type RefundType = "full" | "partial";
7
8
  export type OrderPayoutStatus = "eligible" | "requested" | "paid";
8
9
  export type RefundStatus = "pending" | "processing" | "completed" | "rejected";
9
- /** Runtime-accessible shipping method values use instead of bare string literals. */
10
+ /** Runtime-accessible shipping method values — use instead of bare string literals. */
10
11
  export declare const ShippingMethodValues: {
11
12
  readonly CUSTOM: "custom";
12
13
  readonly SHIPROCKET: "shiprocket";
13
14
  };
14
- /** Runtime-accessible order status values use instead of bare string literals. */
15
+ /** Runtime-accessible order status values — use instead of bare string literals. */
15
16
  export declare const OrderStatusValues: {
16
17
  readonly PENDING: "pending";
17
18
  readonly CONFIRMED: "confirmed";
@@ -23,7 +24,7 @@ export declare const OrderStatusValues: {
23
24
  readonly RETURN_REQUESTED: "return_requested";
24
25
  readonly RETURNED: "returned";
25
26
  };
26
- /** Runtime-accessible payment status values use instead of bare string literals. */
27
+ /** Runtime-accessible payment status values — use instead of bare string literals. */
27
28
  export declare const PaymentStatusValues: {
28
29
  readonly PENDING: "pending";
29
30
  readonly PROCESSING: "processing";
@@ -32,36 +33,62 @@ export declare const PaymentStatusValues: {
32
33
  readonly REFUNDED: "refunded";
33
34
  readonly PARTIAL_REFUND: "partial_refund";
34
35
  };
35
- /** Runtime-accessible payment method values use instead of bare string literals. */
36
+ /** Runtime-accessible payment method values — use instead of bare string literals. */
36
37
  export declare const PaymentMethodValues: {
37
38
  readonly COD: "cod";
38
39
  readonly ONLINE: "online";
39
40
  readonly UPI_MANUAL: "upi_manual";
40
41
  readonly RAZORPAY: "razorpay";
41
42
  };
42
- /** Runtime-accessible refund status values use instead of bare string literals. */
43
+ /** Runtime-accessible refund status values — use instead of bare string literals. */
43
44
  export declare const RefundStatusValues: {
44
45
  readonly PENDING: "pending";
45
46
  readonly PROCESSING: "processing";
46
47
  readonly COMPLETED: "completed";
47
48
  readonly REJECTED: "rejected";
48
49
  };
49
- /** Firestore storage shape for an order line item distinct from the API display model OrderItem */
50
+ /** Firestore storage shape for an order line item — distinct from the API display model OrderItem */
50
51
  export interface OrderDocumentItem {
51
52
  productId: string;
52
53
  productTitle: string;
53
54
  quantity: number;
54
55
  unitPrice: number;
55
56
  totalPrice: number;
56
- /** SB8-F set when the item is a prize-draw entry; drives the reveals badge. */
57
- listingType?: "standard" | "auction" | "pre-order" | "prize-draw";
58
- /** SB8-F per-item reveal status; flips through pending open revealed/closed. */
57
+ /** SB8-F — set when the item is a prize-draw entry; drives the reveals badge. */
58
+ listingType?: "standard" | "auction" | "pre-order" | "prize-draw" | "classified" | "digital-code" | "live";
59
+ /** SB8-F — per-item reveal status; flips through pending → open → revealed/closed. */
59
60
  prizeRevealStatus?: "pending" | "open" | "closed" | "revealed";
60
- /** SB8-F ISO timestamp; deadline by which the buyer must claim the prize. */
61
+ /** SB8-F — ISO timestamp; deadline by which the buyer must claim the prize. */
61
62
  prizeRevealDeadline?: string;
62
- /** SB8-F set after the reveal API picks a winner. */
63
+ /** SB8-F — set after the reveal API picks a winner. */
63
64
  revealedItemNumber?: number;
64
65
  }
66
+ /**
67
+ * One refund event on an order. Multiple partial refund events are allowed
68
+ * until the cumulative amount equals the order total, at which point the order
69
+ * transitions to full-refund terminal state. Once any refund is posted the
70
+ * order's `contestable` flag becomes false permanently.
71
+ */
72
+ export interface OrderRefundEvent {
73
+ refundId: string;
74
+ type: RefundType;
75
+ /** Amount in paise. */
76
+ amount: number;
77
+ /** ProductIds / itemIds that were refunded (for partial refunds). */
78
+ itemIds?: string[];
79
+ reason: string;
80
+ refundedAt: Date;
81
+ refundedBy: string;
82
+ /** Set when Razorpay processed the refund. */
83
+ razorpayRefundId?: string;
84
+ /** Set when refund was processed manually (offline). */
85
+ manualTransactionId?: string;
86
+ /** Proof document URL (via /api/media signed-URL flow). */
87
+ proofDocumentUrl?: string;
88
+ proofDocumentMimeType?: string;
89
+ /** Required for Razorpay-override path ("failed auto-refund, settled manually"). */
90
+ overrideReason?: string;
91
+ }
65
92
  /** One applied discount/coupon saved on the order for accounting and display */
66
93
  export interface AppliedOrderDiscount {
67
94
  code: string;
@@ -136,14 +163,37 @@ export interface OrderDocument {
136
163
  };
137
164
  /** Deadline for the buyer to claim the won prize (typically 7 days). */
138
165
  prizeRevealDeadline?: Date;
139
- /** True once `prizeRevealDeadline` passes without a claim auto-forfeit. */
166
+ /** True once `prizeRevealDeadline` passes without a claim — auto-forfeit. */
140
167
  prizeRevealExpired?: boolean;
141
168
  /** Source product id when the order came from a prize-draw entry. */
142
169
  prizeDrawProductId?: string;
143
170
  /** True for prize-draw entries and bundle purchases that bypass refund. */
144
171
  isNonRefundable?: boolean;
145
- /** Set when the order came from a bundle points back to `bundles/{id}`. */
172
+ /** Set when the order came from a bundle — points back to `bundles/{id}`. */
146
173
  bundleId?: string;
174
+ /**
175
+ * Internal reference linking sibling orders created from the same checkout
176
+ * transaction (one Razorpay payment, N orders). Not a contractual record —
177
+ * orders are the source of truth for invoicing, refunds, and disputes.
178
+ */
179
+ paymentBatchId?: string;
180
+ /**
181
+ * Append-only log of refund events on this order. Multiple partial refund
182
+ * events are allowed until the cumulative amount equals `totalPrice`.
183
+ */
184
+ refunds?: OrderRefundEvent[];
185
+ /**
186
+ * False once ANY refund (full or partial) has been posted. Once false it
187
+ * stays false — no dispute, RMA request, or “Item Not Received” claim may
188
+ * be filed. Both buyer and seller must acknowledge this in the refund UI
189
+ * via `confirmIrrevocable: true` before the refund is posted.
190
+ */
191
+ contestable?: boolean;
192
+ /** Signed-URL media slug for a shipping-proof document (label, AWB scan). */
193
+ shippingProofUrl?: string;
194
+ shippingProofMimeType?: string;
195
+ shippingProofUploadedAt?: Date;
196
+ shippingProofUploadedBy?: string;
147
197
  createdAt: Date;
148
198
  updatedAt: Date;
149
199
  }
@@ -2,12 +2,12 @@
2
2
  * Orders Firestore Document Types & Constants
3
3
  */
4
4
  import { generateOrderId } from "../../../utils/id-generators";
5
- /** Runtime-accessible shipping method values use instead of bare string literals. */
5
+ /** Runtime-accessible shipping method values — use instead of bare string literals. */
6
6
  export const ShippingMethodValues = {
7
7
  CUSTOM: "custom",
8
8
  SHIPROCKET: "shiprocket",
9
9
  };
10
- /** Runtime-accessible order status values use instead of bare string literals. */
10
+ /** Runtime-accessible order status values — use instead of bare string literals. */
11
11
  export const OrderStatusValues = {
12
12
  PENDING: "pending",
13
13
  CONFIRMED: "confirmed",
@@ -19,7 +19,7 @@ export const OrderStatusValues = {
19
19
  RETURN_REQUESTED: "return_requested",
20
20
  RETURNED: "returned",
21
21
  };
22
- /** Runtime-accessible payment status values use instead of bare string literals. */
22
+ /** Runtime-accessible payment status values — use instead of bare string literals. */
23
23
  export const PaymentStatusValues = {
24
24
  PENDING: "pending",
25
25
  PROCESSING: "processing",
@@ -28,14 +28,14 @@ export const PaymentStatusValues = {
28
28
  REFUNDED: "refunded",
29
29
  PARTIAL_REFUND: "partial_refund",
30
30
  };
31
- /** Runtime-accessible payment method values use instead of bare string literals. */
31
+ /** Runtime-accessible payment method values — use instead of bare string literals. */
32
32
  export const PaymentMethodValues = {
33
33
  COD: "cod",
34
34
  ONLINE: "online",
35
35
  UPI_MANUAL: "upi_manual",
36
36
  RAZORPAY: "razorpay",
37
37
  };
38
- /** Runtime-accessible refund status values use instead of bare string literals. */
38
+ /** Runtime-accessible refund status values — use instead of bare string literals. */
39
39
  export const RefundStatusValues = {
40
40
  PENDING: "pending",
41
41
  PROCESSING: "processing",
@@ -137,16 +137,16 @@ export declare const orderSchema: z.ZodObject<{
137
137
  }[];
138
138
  total: number;
139
139
  userId: string;
140
- subtotal: number;
141
140
  paymentStatus: string;
141
+ subtotal: number;
142
142
  orderStatus: "pending" | "processing" | "refunded" | "confirmed" | "shipped" | "delivered" | "cancelled" | "return_requested" | "returned";
143
143
  createdAt?: string | undefined;
144
144
  updatedAt?: string | undefined;
145
145
  notes?: string | undefined;
146
- tax?: number | undefined;
147
146
  trackingNumber?: string | undefined;
148
147
  couponCode?: string | undefined;
149
148
  shippingCarrier?: string | undefined;
149
+ tax?: number | undefined;
150
150
  paymentGateway?: string | undefined;
151
151
  shippingCost?: number | undefined;
152
152
  discount?: number | undefined;
@@ -172,16 +172,16 @@ export declare const orderSchema: z.ZodObject<{
172
172
  }[];
173
173
  total: number;
174
174
  userId: string;
175
- subtotal: number;
176
175
  paymentStatus: string;
176
+ subtotal: number;
177
177
  orderStatus: "pending" | "processing" | "refunded" | "confirmed" | "shipped" | "delivered" | "cancelled" | "return_requested" | "returned";
178
178
  createdAt?: string | undefined;
179
179
  updatedAt?: string | undefined;
180
180
  notes?: string | undefined;
181
- tax?: number | undefined;
182
181
  trackingNumber?: string | undefined;
183
182
  couponCode?: string | undefined;
184
183
  shippingCarrier?: string | undefined;
184
+ tax?: number | undefined;
185
185
  paymentGateway?: string | undefined;
186
186
  shippingCost?: number | undefined;
187
187
  discount?: number | undefined;
@@ -23,8 +23,9 @@ export interface OrderItem {
23
23
  currency?: string;
24
24
  storeId?: string;
25
25
  attributes?: Record<string, string>;
26
- /** Listing kind at the time of order — needed for prize-draw UI hints (SB8-F). */
27
- listingType?: "standard" | "auction" | "pre-order" | "prize-draw";
26
+ /** Listing kind at the time of order — needed for prize-draw UI hints (SB8-F).
27
+ * SB-UNI-F 2026-05-13 Phase 2 union extension. */
28
+ listingType?: "standard" | "auction" | "pre-order" | "prize-draw" | "classified" | "digital-code" | "live";
28
29
  /**
29
30
  * Per-item prize-draw reveal status (SB8-F). Populated by the checkout
30
31
  * actions when listingType === "prize-draw". Used to render the
@@ -35,6 +36,15 @@ export interface OrderItem {
35
36
  prizeRevealDeadline?: string;
36
37
  /** Set after the reveal endpoint picks a winner — the prize item index. */
37
38
  revealedItemNumber?: number;
39
+ /**
40
+ * SB-UNI-4 2026-05-13 — bundle identifier when this order line represents a
41
+ * bundle purchase. `productId` then points at the bundle category id and
42
+ * `bundleProductIds` snapshots the included member product ids. Per-member
43
+ * stock decrement + order fan-out lands in S-SBUNI-5.
44
+ */
45
+ bundleCategorySlug?: string;
46
+ /** Snapshot of bundle.bundleProductIds at order-creation time. */
47
+ bundleProductIds?: string[];
38
48
  }
39
49
  export interface OrderTimeline {
40
50
  status: OrderStatus;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Order-item bundle grouping — S-SBUNI-5 2026-05-13.
3
+ *
4
+ * Orders carry bundle members as individual `OrderItem` rows (per S-SBUNI-4
5
+ * schema) when the buyer's cart line was a bundle. The order-detail UI
6
+ * collapses those rows back under a single "Bundle: <name>" header so the
7
+ * checkout receipt mirrors the buyer's intent. This helper is the pure
8
+ * grouping logic — the UI primitive lives next to the consumer view.
9
+ *
10
+ * Two flavours of "bundle row" can appear on an order:
11
+ * 1. ONE order row whose `bundleCategorySlug` + `bundleProductIds[]` set
12
+ * describe the bundle (this is what S-SBUNI-4's checkout writes — the
13
+ * bundle stays a single row in the order with the locked
14
+ * bundlePriceInPaise as its line total).
15
+ * 2. (Future) Expanded N rows, each tagged with the same
16
+ * `bundleCategorySlug`. The grouping handles this too in case a future
17
+ * session pivots to row expansion.
18
+ *
19
+ * Either way, `groupOrderItemsByBundle` returns a stable, ordered list of
20
+ * "groups" so the renderer can iterate once.
21
+ */
22
+ /** Minimal shape consumed from an order item (Firestore wire format). */
23
+ export interface OrderItemForBundleGrouping {
24
+ /** Bundle discriminator — set when this row is part of a bundle. */
25
+ bundleCategorySlug?: string;
26
+ /** Snapshot of bundle members at order-creation time. */
27
+ bundleProductIds?: string[];
28
+ }
29
+ export type BundleOrderGroup<T extends OrderItemForBundleGrouping> = {
30
+ kind: "single";
31
+ item: T;
32
+ index: number;
33
+ } | {
34
+ kind: "bundle";
35
+ bundleCategorySlug: string;
36
+ items: Array<{
37
+ item: T;
38
+ index: number;
39
+ }>;
40
+ /** Pulled from the first row in the group; reflects what checkout snapshotted. */
41
+ memberCount: number;
42
+ };
43
+ /**
44
+ * Walk the items array preserving original order; collapse contiguous (or
45
+ * non-contiguous) bundle rows sharing the same `bundleCategorySlug` into a
46
+ * single group. Single rows pass through unchanged.
47
+ */
48
+ export declare function groupOrderItemsByBundle<T extends OrderItemForBundleGrouping>(items: T[]): Array<BundleOrderGroup<T>>;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Order-item bundle grouping — S-SBUNI-5 2026-05-13.
3
+ *
4
+ * Orders carry bundle members as individual `OrderItem` rows (per S-SBUNI-4
5
+ * schema) when the buyer's cart line was a bundle. The order-detail UI
6
+ * collapses those rows back under a single "Bundle: <name>" header so the
7
+ * checkout receipt mirrors the buyer's intent. This helper is the pure
8
+ * grouping logic — the UI primitive lives next to the consumer view.
9
+ *
10
+ * Two flavours of "bundle row" can appear on an order:
11
+ * 1. ONE order row whose `bundleCategorySlug` + `bundleProductIds[]` set
12
+ * describe the bundle (this is what S-SBUNI-4's checkout writes — the
13
+ * bundle stays a single row in the order with the locked
14
+ * bundlePriceInPaise as its line total).
15
+ * 2. (Future) Expanded N rows, each tagged with the same
16
+ * `bundleCategorySlug`. The grouping handles this too in case a future
17
+ * session pivots to row expansion.
18
+ *
19
+ * Either way, `groupOrderItemsByBundle` returns a stable, ordered list of
20
+ * "groups" so the renderer can iterate once.
21
+ */
22
+ /**
23
+ * Walk the items array preserving original order; collapse contiguous (or
24
+ * non-contiguous) bundle rows sharing the same `bundleCategorySlug` into a
25
+ * single group. Single rows pass through unchanged.
26
+ */
27
+ export function groupOrderItemsByBundle(items) {
28
+ const groups = [];
29
+ const bundleIndexBySlug = new Map();
30
+ items.forEach((item, index) => {
31
+ const slug = item.bundleCategorySlug;
32
+ if (!slug) {
33
+ groups.push({ kind: "single", item, index });
34
+ return;
35
+ }
36
+ const existingIdx = bundleIndexBySlug.get(slug);
37
+ if (existingIdx === undefined) {
38
+ const memberCount = item.bundleProductIds?.length ?? 1;
39
+ groups.push({
40
+ kind: "bundle",
41
+ bundleCategorySlug: slug,
42
+ items: [{ item, index }],
43
+ memberCount,
44
+ });
45
+ bundleIndexBySlug.set(slug, groups.length - 1);
46
+ return;
47
+ }
48
+ const existing = groups[existingIdx];
49
+ if (existing.kind === "bundle") {
50
+ existing.items.push({ item, index });
51
+ }
52
+ });
53
+ return groups;
54
+ }
@@ -3,22 +3,21 @@ export interface OrderGroup<T> {
3
3
  items: T[];
4
4
  orderType: OrderType;
5
5
  }
6
+ import type { CartItemDocument } from "../../cart/schemas/firestore";
6
7
  /**
7
8
  * Split a sequence of cart-items into order groups by `OrderType`.
8
9
  *
9
- * Auctions and offers each settle as their own single-item order (the auction
10
- * win is one transaction; an accepted offer is locked to one item). Pre-orders
11
- * and standard items are grouped per-store so each store gets a single
12
- * shipment.
10
+ * The split key and order type are both derived from the checkout rule
11
+ * registry so new listing types need no changes here.
12
+ *
13
+ * Prize-draw items with qty > PRIZE_DRAW_MAX_REVEALS_PER_ORDER are first
14
+ * expanded into virtual single-batch items (via `rule.splitMultipleOrders`),
15
+ * then each batch lands in its own order group.
13
16
  *
14
17
  * SB1-G Phase 4 — keys off the canonical `CartItem.listingType` discriminator
15
18
  * instead of the legacy `isAuction` / `isPreOrder` booleans.
19
+ * S-SBUNI-RULES 2026-05-13 — rule-registry dispatch replaces if/else chain.
16
20
  */
17
21
  export declare function splitCartIntoOrderGroups<T extends {
18
- item: {
19
- itemId: string;
20
- storeId?: string;
21
- listingType?: "standard" | "auction" | "pre-order" | "prize-draw";
22
- isOffer?: boolean;
23
- };
22
+ item: CartItemDocument;
24
23
  }>(checks: T[]): OrderGroup<T>[];
@@ -1,45 +1,39 @@
1
+ import { getListingRule, offerRule, } from "../../../_internal/shared/checkout/rules";
1
2
  /**
2
3
  * Split a sequence of cart-items into order groups by `OrderType`.
3
4
  *
4
- * Auctions and offers each settle as their own single-item order (the auction
5
- * win is one transaction; an accepted offer is locked to one item). Pre-orders
6
- * and standard items are grouped per-store so each store gets a single
7
- * shipment.
5
+ * The split key and order type are both derived from the checkout rule
6
+ * registry so new listing types need no changes here.
7
+ *
8
+ * Prize-draw items with qty > PRIZE_DRAW_MAX_REVEALS_PER_ORDER are first
9
+ * expanded into virtual single-batch items (via `rule.splitMultipleOrders`),
10
+ * then each batch lands in its own order group.
8
11
  *
9
12
  * SB1-G Phase 4 — keys off the canonical `CartItem.listingType` discriminator
10
13
  * instead of the legacy `isAuction` / `isPreOrder` booleans.
14
+ * S-SBUNI-RULES 2026-05-13 — rule-registry dispatch replaces if/else chain.
11
15
  */
12
16
  export function splitCartIntoOrderGroups(checks) {
13
17
  const groups = new Map();
14
18
  for (const check of checks) {
15
19
  const { item } = check;
16
- let key;
17
- let orderType;
18
- if (item.listingType === "auction") {
19
- key = `auction:${item.itemId}`;
20
- orderType = "auction";
21
- }
22
- else if (item.isOffer) {
23
- key = `offer:${item.itemId}`;
24
- orderType = "offer";
25
- }
26
- else if (item.listingType === "prize-draw") {
27
- // Each prize-draw entry is its own order (single reveal per order).
28
- key = `prize-draw:${item.itemId}`;
29
- orderType = "prize-draw";
30
- }
31
- else if (item.listingType === "pre-order") {
32
- key = `preorder:${item.storeId ?? "unknown"}`;
33
- orderType = "preorder";
34
- }
35
- else {
36
- key = `standard:${item.storeId ?? "unknown"}`;
37
- orderType = "standard";
38
- }
39
- if (!groups.has(key)) {
40
- groups.set(key, { items: [], orderType });
20
+ const lt = (item.listingType ?? "standard");
21
+ const rule = item.isOffer ? offerRule : (getListingRule(lt) ?? getListingRule("standard"));
22
+ // Prize-draw (and future types with maxLinesPerOrder < Infinity) may split
23
+ // one cart item into N virtual batch items.
24
+ const virtualItems = rule.splitMultipleOrders(item);
25
+ for (let batchIdx = 0; batchIdx < virtualItems.length; batchIdx++) {
26
+ const virtualItem = virtualItems[batchIdx];
27
+ const virtualCheck = { ...check, item: virtualItem };
28
+ const baseKey = rule.splitKey(virtualItem);
29
+ // Append a batch suffix only when there are multiple batches so the key
30
+ // stays stable for single-order types.
31
+ const key = virtualItems.length > 1 ? `${baseKey}:batch-${batchIdx}` : baseKey;
32
+ if (!groups.has(key)) {
33
+ groups.set(key, { items: [], orderType: rule.orderType });
34
+ }
35
+ groups.get(key).items.push(virtualCheck);
41
36
  }
42
- groups.get(key).items.push(check);
43
37
  }
44
38
  return Array.from(groups.values());
45
39
  }
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { BaseRepository, type SieveModel, type FirebaseSieveResult } from "../../../providers/db-firebase";
8
8
  import type { DocumentReference, WriteResult } from "firebase-admin/firestore";
9
- import type { PayoutDocument, PayoutCreateInput, PayoutStatus, PayoutUpdateInput } from "../schemas";
9
+ import type { PayoutDocument, PayoutCreateInput, PayoutRefundDeduction, PayoutStatus, PayoutUpdateInput } from "../schemas";
10
10
  export declare class PayoutRepository extends BaseRepository<PayoutDocument> {
11
11
  constructor();
12
12
  /** Decrypt PII fields on a payout document after Firestore read */
@@ -57,6 +57,18 @@ export declare class PayoutRepository extends BaseRepository<PayoutDocument> {
57
57
  * Used to avoid double-paying the same orders.
58
58
  */
59
59
  getPaidOutOrderIds(storeId: string): Promise<Set<string>>;
60
+ /**
61
+ * Find the most recent pending payout for a store.
62
+ * Used to locate the deduction target when a refund is issued.
63
+ */
64
+ findPendingByStore(storeId: string): Promise<PayoutDocument | null>;
65
+ /**
66
+ * Atomically append a refund deduction and recalculate netAmount.
67
+ *
68
+ * Only valid while status = "pending". Throws if the payout is not found
69
+ * or is no longer pending. netAmount is floored at 0.
70
+ */
71
+ applyRefundDeduction(payoutId: string, deduction: Omit<PayoutRefundDeduction, "appliedAt">): Promise<PayoutDocument>;
60
72
  static readonly SIEVE_FIELDS: {
61
73
  id: {
62
74
  canFilter: boolean;
@@ -90,6 +102,10 @@ export declare class PayoutRepository extends BaseRepository<PayoutDocument> {
90
102
  canFilter: boolean;
91
103
  canSort: boolean;
92
104
  };
105
+ netAmount: {
106
+ canFilter: boolean;
107
+ canSort: boolean;
108
+ };
93
109
  requestedAt: {
94
110
  canFilter: boolean;
95
111
  canSort: boolean;
@@ -172,6 +172,52 @@ export class PayoutRepository extends BaseRepository {
172
172
  });
173
173
  return ids;
174
174
  }
175
+ /**
176
+ * Find the most recent pending payout for a store.
177
+ * Used to locate the deduction target when a refund is issued.
178
+ */
179
+ async findPendingByStore(storeId) {
180
+ const snapshot = await this.db
181
+ .collection(this.collection)
182
+ .where(PAYOUT_FIELDS.STORE_ID, "==", storeId)
183
+ .where(PAYOUT_FIELDS.STATUS, "==", "pending")
184
+ .orderBy(PAYOUT_FIELDS.CREATED_AT, "desc")
185
+ .limit(1)
186
+ .get();
187
+ if (snapshot.empty)
188
+ return null;
189
+ return this.decryptPayout({ id: snapshot.docs[0].id, ...snapshot.docs[0].data() });
190
+ }
191
+ /**
192
+ * Atomically append a refund deduction and recalculate netAmount.
193
+ *
194
+ * Only valid while status = "pending". Throws if the payout is not found
195
+ * or is no longer pending. netAmount is floored at 0.
196
+ */
197
+ async applyRefundDeduction(payoutId, deduction) {
198
+ const ref = this.db.collection(this.collection).doc(payoutId);
199
+ const entry = { ...deduction, appliedAt: new Date() };
200
+ const updated = await this.db.runTransaction(async (tx) => {
201
+ const snap = await tx.get(ref);
202
+ if (!snap.exists)
203
+ throw new Error(`Payout ${payoutId} not found`);
204
+ const doc = { id: snap.id, ...snap.data() };
205
+ if (doc.status !== "pending") {
206
+ throw new Error(`Cannot deduct from payout ${payoutId} in status "${doc.status}"`);
207
+ }
208
+ const existing = doc.refundDeductions ?? [];
209
+ const newDeductions = [...existing, entry];
210
+ const totalDeducted = newDeductions.reduce((s, d) => s + d.deductedAmount, 0);
211
+ const netAmount = Math.max(0, doc.amount - totalDeducted);
212
+ tx.update(ref, {
213
+ refundDeductions: newDeductions.map((d) => prepareForFirestore(d)),
214
+ netAmount,
215
+ updatedAt: new Date(),
216
+ });
217
+ return { ...doc, refundDeductions: newDeductions, netAmount, updatedAt: new Date() };
218
+ });
219
+ return this.decryptPayout(updated);
220
+ }
175
221
  /**
176
222
  * Paginated, Firestore-native payout list (admin use).
177
223
  */
@@ -194,6 +240,7 @@ PayoutRepository.SIEVE_FIELDS = {
194
240
  status: { canFilter: true, canSort: true },
195
241
  paymentMethod: { canFilter: true, canSort: false },
196
242
  amount: { canFilter: true, canSort: true },
243
+ netAmount: { canFilter: true, canSort: true },
197
244
  requestedAt: { canFilter: true, canSort: true },
198
245
  createdAt: { canFilter: true, canSort: true },
199
246
  processedAt: { canFilter: true, canSort: true },
@@ -9,6 +9,22 @@ export interface PayoutBankAccount {
9
9
  bankName: string;
10
10
  }
11
11
  export type PayoutStatus = "pending" | "processing" | "completed" | "failed";
12
+ /**
13
+ * A single refund deduction applied against a payout before dispatch.
14
+ *
15
+ * deductedAmount = refundedAmount − (refundedAmount × platformFeeRate)
16
+ * The platform keeps its fee share; only the net seller portion is deducted.
17
+ */
18
+ export interface PayoutRefundDeduction {
19
+ orderId: string;
20
+ refundId: string;
21
+ /** Gross refund amount in paise (for audit trail). */
22
+ refundedAmount: number;
23
+ /** Net amount deducted from the seller payout in paise. */
24
+ deductedAmount: number;
25
+ reason: string;
26
+ appliedAt: Date;
27
+ }
12
28
  export declare const PayoutStatusValues: {
13
29
  readonly PENDING: "pending";
14
30
  readonly PROCESSING: "processing";
@@ -38,6 +54,16 @@ export interface PayoutDocument {
38
54
  gstAmount?: number;
39
55
  gstRate?: number;
40
56
  isAutomatic?: boolean;
57
+ /**
58
+ * Refund deductions applied before dispatch (while status = "pending").
59
+ * Each entry reduces the seller's net payout by deductedAmount.
60
+ */
61
+ refundDeductions?: PayoutRefundDeduction[];
62
+ /**
63
+ * amount − sum(refundDeductions.deductedAmount). Undefined when no
64
+ * deductions have been applied; dispatch code must use `netAmount ?? amount`.
65
+ */
66
+ netAmount?: number;
41
67
  requestedAt: Date;
42
68
  processedAt?: Date;
43
69
  createdAt: Date;
@@ -7,6 +7,9 @@ export declare function PreorderBadge({ shipDate, className }: PreorderBadgeProp
7
7
  interface PreorderCardProps {
8
8
  item: PreorderItem;
9
9
  href: string;
10
+ selectable?: boolean;
11
+ isSelected?: boolean;
12
+ onSelect?: (id: string, selected: boolean) => void;
10
13
  }
11
- export declare function PreorderCard({ item, href }: PreorderCardProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function PreorderCard({ item, href, selectable, isSelected, onSelect }: PreorderCardProps): import("react/jsx-runtime").JSX.Element;
12
15
  export {};
@@ -1,9 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import Link from "next/link";
3
- import { Div, Heading, Span, Text } from "../../../ui";
3
+ import { BaseListingCard, Div, Heading, Span, Text } from "../../../ui";
4
4
  import { getPreorderStatus } from "../types";
5
5
  import { formatCurrency } from "../../../utils/number.formatter";
6
6
  import { getDefaultLocale } from "../../../core/baseline-resolver";
7
+ import { useLongPress } from "../../../react/hooks/useLongPress";
7
8
  const STATUS_LABELS = {
8
9
  available: "Pre-order now",
9
10
  shipping_soon: "Shipping soon",
@@ -18,9 +19,10 @@ export function PreorderBadge({ shipDate, className }) {
18
19
  const status = getPreorderStatus(shipDate);
19
20
  return (_jsx(Span, { className: `inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ${STATUS_COLORS[status]} ${className ?? ""}`, children: STATUS_LABELS[status] }));
20
21
  }
21
- export function PreorderCard({ item, href }) {
22
- return (_jsxs(Link, { href: href, className: "group relative block overflow-hidden rounded-xl border border-gray-200 dark:border-slate-700 bg-white dark:bg-slate-900 transition-shadow hover:shadow-md", children: [item.images[0] ? (_jsx(Div, { role: "img", "aria-label": item.name, className: "aspect-square w-full bg-center bg-cover transition-transform duration-300 group-hover:scale-105", style: { backgroundImage: `url(${item.images[0]})` } })) : (_jsx(Div, { className: "aspect-square w-full bg-gray-100" })), _jsxs(Div, { className: "p-4", children: [_jsx(PreorderBadge, { shipDate: item.preorderShipDate }), _jsx(Heading, { level: 3, className: "mt-2 font-semibold text-gray-900 dark:text-zinc-100 text-base", children: item.name }), _jsx(Text, { className: "mt-1 text-sm text-gray-500 dark:text-zinc-400", children: item.brand }), _jsxs(Div, { className: "mt-3 flex items-baseline gap-2", children: [_jsx(Span, { className: "text-lg font-bold text-gray-900 dark:text-zinc-100", children: formatCurrency(item.salePrice) }), item.regularPrice > item.salePrice && (_jsx(Span, { className: "text-sm text-gray-400 dark:text-zinc-500 line-through", children: formatCurrency(item.regularPrice) }))] }), item.preorderShipDate && (_jsxs(Text, { className: "mt-1 text-xs text-gray-400 dark:text-zinc-500", children: ["Ships:", " ", new Date(item.preorderShipDate).toLocaleDateString(getDefaultLocale(), {
23
- month: "short",
24
- year: "numeric",
25
- })] }))] })] }));
22
+ export function PreorderCard({ item, href, selectable = false, isSelected = false, onSelect }) {
23
+ const longPress = useLongPress(() => onSelect?.(item.id, !isSelected));
24
+ return (_jsxs(Div, { className: `group relative block overflow-hidden rounded-xl border bg-white dark:bg-slate-900 transition-shadow hover:shadow-md ${isSelected ? "border-primary outline outline-2 outline-primary" : "border-gray-200 dark:border-slate-700"}`, onMouseDown: onSelect && !isSelected ? longPress.onMouseDown : undefined, onMouseUp: onSelect && !isSelected ? longPress.onMouseUp : undefined, onMouseLeave: onSelect && !isSelected ? longPress.onMouseLeave : undefined, onTouchStart: onSelect && !isSelected ? longPress.onTouchStart : undefined, onTouchEnd: onSelect && !isSelected ? longPress.onTouchEnd : undefined, children: [onSelect && (_jsx(BaseListingCard.Checkbox, { selected: isSelected, onSelect: (e) => { e.preventDefault(); onSelect(item.id, !isSelected); }, label: isSelected ? "Deselect pre-order" : "Select pre-order", position: "top-2 left-2", className: selectable || isSelected ? "opacity-100" : "opacity-0 group-hover:opacity-100 transition-opacity" })), _jsxs(Link, { href: href, className: "block", children: [item.images[0] ? (_jsx(Div, { role: "img", "aria-label": item.name, className: "aspect-square w-full bg-center bg-cover transition-transform duration-300 group-hover:scale-105", style: { backgroundImage: `url(${item.images[0]})` } })) : (_jsx(Div, { className: "aspect-square w-full bg-gray-100" })), _jsxs(Div, { className: "p-4", children: [_jsx(PreorderBadge, { shipDate: item.preorderShipDate }), _jsx(Heading, { level: 3, className: "mt-2 font-semibold text-gray-900 dark:text-zinc-100 text-base", children: item.name }), _jsx(Text, { className: "mt-1 text-sm text-gray-500 dark:text-zinc-400", children: item.brand }), _jsxs(Div, { className: "mt-3 flex items-baseline gap-2", children: [_jsx(Span, { className: "text-lg font-bold text-gray-900 dark:text-zinc-100", children: formatCurrency(item.salePrice) }), item.regularPrice > item.salePrice && (_jsx(Span, { className: "text-sm text-gray-400 dark:text-zinc-500 line-through", children: formatCurrency(item.regularPrice) }))] }), item.preorderShipDate && (_jsxs(Text, { className: "mt-1 text-xs text-gray-400 dark:text-zinc-500", children: ["Ships:", " ", new Date(item.preorderShipDate).toLocaleDateString(getDefaultLocale(), {
25
+ month: "short",
26
+ year: "numeric",
27
+ })] }))] })] })] }));
26
28
  }
@@ -6,7 +6,7 @@ export interface ProductListActionParams {
6
6
  page?: number;
7
7
  pageSize?: number;
8
8
  /** Canonical listing-kind discriminator (SB1-G Phase 4). */
9
- listingType?: "standard" | "auction" | "pre-order" | "prize-draw";
9
+ listingType?: "standard" | "auction" | "pre-order" | "prize-draw" | "classified" | "digital-code" | "live";
10
10
  featured?: boolean;
11
11
  storeId?: string;
12
12
  categoriesIn?: string[];