@mohasinac/appkit 4.62.1 → 4.63.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 (261) hide show
  1. package/dist/.build-stamp.json +3 -3
  2. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +8 -29
  3. package/dist/_internal/client/features/layout/filterNavItems.d.ts +28 -0
  4. package/dist/_internal/client/features/layout/filterNavItems.js +35 -0
  5. package/dist/_internal/server/features/ads/booking.d.ts +118 -0
  6. package/dist/_internal/server/features/ads/booking.js +326 -0
  7. package/dist/_internal/server/features/checkout/actions.d.ts +51 -11
  8. package/dist/_internal/server/features/checkout/actions.js +335 -80
  9. package/dist/_internal/server/features/checkout/expand-order-items.d.ts +1 -2
  10. package/dist/_internal/server/features/checkout/expand-order-items.js +32 -0
  11. package/dist/_internal/server/features/checkout/freeze-parts.d.ts +50 -0
  12. package/dist/_internal/server/features/checkout/freeze-parts.js +94 -0
  13. package/dist/_internal/server/features/checkout/value-otp-gate.d.ts +55 -0
  14. package/dist/_internal/server/features/checkout/value-otp-gate.js +60 -0
  15. package/dist/_internal/server/features/dashboard/attention.d.ts +128 -0
  16. package/dist/_internal/server/features/dashboard/attention.js +183 -0
  17. package/dist/_internal/server/features/dashboard/data.d.ts +47 -0
  18. package/dist/_internal/server/features/dashboard/data.js +82 -0
  19. package/dist/_internal/server/features/inventory/reservations.d.ts +99 -0
  20. package/dist/_internal/server/features/inventory/reservations.js +273 -0
  21. package/dist/_internal/server/features/offers/destinations.d.ts +40 -0
  22. package/dist/_internal/server/features/offers/destinations.js +65 -0
  23. package/dist/_internal/server/features/orders/adapters.js +21 -0
  24. package/dist/_internal/server/features/orders/amend-delivery.d.ts +56 -0
  25. package/dist/_internal/server/features/orders/amend-delivery.js +124 -0
  26. package/dist/_internal/server/features/orders/balance.d.ts +89 -0
  27. package/dist/_internal/server/features/orders/balance.js +256 -0
  28. package/dist/_internal/server/features/pricing/actions.d.ts +58 -0
  29. package/dist/_internal/server/features/pricing/actions.js +144 -0
  30. package/dist/_internal/server/features/shipping/book-split.d.ts +86 -0
  31. package/dist/_internal/server/features/shipping/book-split.js +130 -0
  32. package/dist/_internal/server/features/shipping/book.d.ts +61 -0
  33. package/dist/_internal/server/features/shipping/book.js +176 -0
  34. package/dist/_internal/server/features/shipping/courier-block.js +26 -1
  35. package/dist/_internal/server/features/site-settings/adapters.d.ts +1 -1
  36. package/dist/_internal/server/features/site-settings/adapters.js +14 -0
  37. package/dist/_internal/server/features/stores/adapters.d.ts +1 -1
  38. package/dist/_internal/server/features/stores/adapters.js +14 -0
  39. package/dist/_internal/server/functions/scheduled.d.ts +2 -1
  40. package/dist/_internal/server/functions/scheduled.js +57 -1
  41. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +2 -0
  42. package/dist/_internal/server/jobs/core/jobRunners.js +45 -0
  43. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +4 -1
  44. package/dist/_internal/server/jobs/core/reservationExpiry.d.ts +17 -0
  45. package/dist/_internal/server/jobs/core/reservationExpiry.js +40 -0
  46. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +15 -0
  47. package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
  48. package/dist/_internal/server/jobs/handlers/index.js +1 -0
  49. package/dist/_internal/server/jobs/handlers/reservationExpiry.d.ts +2 -0
  50. package/dist/_internal/server/jobs/handlers/reservationExpiry.js +2 -0
  51. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  52. package/dist/_internal/shared/actions/action-registry.js +268 -0
  53. package/dist/_internal/shared/checkout/order-math.d.ts +31 -2
  54. package/dist/_internal/shared/checkout/order-math.js +22 -36
  55. package/dist/_internal/shared/checkout/rules/index.d.ts +1 -1
  56. package/dist/_internal/shared/checkout/rules/index.js +1 -1
  57. package/dist/_internal/shared/checkout/rules/payment-gate.d.ts +18 -0
  58. package/dist/_internal/shared/checkout/rules/payment-gate.js +25 -0
  59. package/dist/_internal/shared/checkout/split.d.ts +0 -12
  60. package/dist/_internal/shared/checkout/split.js +22 -2
  61. package/dist/_internal/shared/content/disclaimers.js +7 -7
  62. package/dist/_internal/shared/content/published-values.d.ts +6 -1
  63. package/dist/_internal/shared/content/published-values.js +8 -0
  64. package/dist/_internal/shared/features/admin/integrations.d.ts +32 -2
  65. package/dist/_internal/shared/features/admin/integrations.js +19 -9
  66. package/dist/_internal/shared/features/dashboard/hub-sections.d.ts +72 -0
  67. package/dist/_internal/shared/features/dashboard/hub-sections.js +75 -0
  68. package/dist/_internal/shared/features/emi/choice.d.ts +98 -0
  69. package/dist/_internal/shared/features/emi/choice.js +69 -0
  70. package/dist/_internal/shared/features/emi/group.d.ts +84 -0
  71. package/dist/_internal/shared/features/emi/group.js +126 -0
  72. package/dist/_internal/shared/features/ledger/posting.d.ts +107 -0
  73. package/dist/_internal/shared/features/ledger/posting.js +165 -0
  74. package/dist/_internal/shared/features/ledger/reports.d.ts +76 -0
  75. package/dist/_internal/shared/features/ledger/reports.js +127 -0
  76. package/dist/_internal/shared/features/ledger/rules.d.ts +170 -0
  77. package/dist/_internal/shared/features/ledger/rules.js +221 -0
  78. package/dist/_internal/shared/features/offers/coordination.d.ts +122 -0
  79. package/dist/_internal/shared/features/offers/coordination.js +80 -0
  80. package/dist/_internal/shared/features/orders/delivery-snapshot.d.ts +114 -0
  81. package/dist/_internal/shared/features/orders/delivery-snapshot.js +116 -0
  82. package/dist/_internal/shared/features/payouts/pay-period.d.ts +91 -0
  83. package/dist/_internal/shared/features/payouts/pay-period.js +104 -0
  84. package/dist/_internal/shared/features/points/accepts.d.ts +1 -8
  85. package/dist/_internal/shared/features/points/accepts.js +12 -6
  86. package/dist/_internal/shared/features/pricing/rate-registry.d.ts +150 -0
  87. package/dist/_internal/shared/features/pricing/rate-registry.js +246 -0
  88. package/dist/_internal/shared/features/shipping/parcel.d.ts +123 -0
  89. package/dist/_internal/shared/features/shipping/parcel.js +139 -0
  90. package/dist/_internal/shared/features/site-settings/fees.d.ts +16 -8
  91. package/dist/_internal/shared/features/site-settings/fees.js +12 -8
  92. package/dist/_internal/shared/fees/explain.d.ts +81 -0
  93. package/dist/_internal/shared/fees/explain.js +101 -0
  94. package/dist/_internal/shared/history/index.d.ts +1 -1
  95. package/dist/_internal/shared/history/index.js +1 -1
  96. package/dist/_internal/shared/history/types.d.ts +7 -1
  97. package/dist/_internal/shared/history/types.js +25 -0
  98. package/dist/client.d.ts +11 -1
  99. package/dist/client.js +13 -0
  100. package/dist/constants/api-endpoints.d.ts +72 -0
  101. package/dist/constants/api-endpoints.js +41 -0
  102. package/dist/constants/field-names.d.ts +41 -0
  103. package/dist/constants/field-names.js +47 -0
  104. package/dist/features/account/components/UserOrdersView.js +28 -2
  105. package/dist/features/admin/components/AdminIntegrationsView.d.ts +55 -0
  106. package/dist/features/admin/components/AdminIntegrationsView.js +74 -0
  107. package/dist/features/admin/components/AdminOrderEditorView.d.ts +16 -1
  108. package/dist/features/admin/components/AdminOrderEditorView.js +72 -3
  109. package/dist/features/admin/components/AdminOrdersView.js +20 -1
  110. package/dist/features/admin/schemas/firestore.d.ts +32 -0
  111. package/dist/features/ads/schemas/booking-write.d.ts +120 -0
  112. package/dist/features/ads/schemas/booking-write.js +75 -0
  113. package/dist/features/ads/schemas/creative-form.d.ts +18 -0
  114. package/dist/features/ads/schemas/creative-form.js +51 -0
  115. package/dist/features/ads/schemas/firestore.d.ts +140 -0
  116. package/dist/features/ads/schemas/firestore.js +109 -0
  117. package/dist/features/auctions/repository/bid.repository.js +3 -1
  118. package/dist/features/audit-log/schemas/firestore.d.ts +110 -0
  119. package/dist/features/audit-log/schemas/firestore.js +74 -0
  120. package/dist/features/auth/actions/profile-actions.d.ts +69 -1
  121. package/dist/features/auth/actions/profile-actions.js +62 -1
  122. package/dist/features/auth/schemas/firestore.d.ts +16 -2
  123. package/dist/features/auth/schemas/firestore.js +2 -1
  124. package/dist/features/blog/actions/blog-actions.d.ts +6 -0
  125. package/dist/features/blog/actions/blog-actions.js +17 -2
  126. package/dist/features/blog/api/route.js +4 -1
  127. package/dist/features/blog/columns/index.js +5 -0
  128. package/dist/features/blog/components/BlogIndexPageView.js +2 -1
  129. package/dist/features/blog/repository/blog.repository.d.ts +4 -0
  130. package/dist/features/blog/repository/blog.repository.js +5 -0
  131. package/dist/features/blog/schemas/blog-form.d.ts +3 -0
  132. package/dist/features/blog/schemas/blog-form.js +1 -0
  133. package/dist/features/blog/schemas/firestore.d.ts +38 -1
  134. package/dist/features/blog/schemas/firestore.js +23 -0
  135. package/dist/features/blog/schemas/index.d.ts +6 -0
  136. package/dist/features/blog/schemas/index.js +2 -0
  137. package/dist/features/blog/types/index.d.ts +2 -0
  138. package/dist/features/cart/components/CartPriceBreakdown.d.ts +12 -1
  139. package/dist/features/cart/components/CartPriceBreakdown.js +24 -5
  140. package/dist/features/cart/repository/cart.repository.d.ts +14 -0
  141. package/dist/features/cart/repository/cart.repository.js +20 -0
  142. package/dist/features/cart/schemas/firestore.d.ts +24 -0
  143. package/dist/features/dashboard/components/DashboardHubView.d.ts +83 -0
  144. package/dist/features/dashboard/components/DashboardHubView.js +56 -0
  145. package/dist/features/dashboard/components/DashboardSectionsClient.d.ts +23 -0
  146. package/dist/features/dashboard/components/DashboardSectionsClient.js +66 -0
  147. package/dist/features/dispute-reasons/components/AdminDisputeReasonsView.d.ts +55 -0
  148. package/dist/features/dispute-reasons/components/AdminDisputeReasonsView.js +175 -0
  149. package/dist/features/dispute-reasons/repository/dispute-reasons.repository.d.ts +24 -0
  150. package/dist/features/dispute-reasons/repository/dispute-reasons.repository.js +28 -0
  151. package/dist/features/dispute-reasons/schemas/firestore.d.ts +3 -5
  152. package/dist/features/events/components/EventSaleBanner.js +1 -1
  153. package/dist/features/faq/components/FAQPageContent.js +2 -2
  154. package/dist/features/gateway-events/schemas/index.d.ts +2 -2
  155. package/dist/features/homepage/schemas/index.d.ts +8 -8
  156. package/dist/features/inventory/schemas/stock-reservation.d.ts +114 -0
  157. package/dist/features/inventory/schemas/stock-reservation.js +103 -0
  158. package/dist/features/layout/AppLayoutShell.d.ts +9 -1
  159. package/dist/features/layout/AppLayoutShell.js +12 -4
  160. package/dist/features/layout/BottomActions.js +2 -1
  161. package/dist/features/layout/BottomNavbar.d.ts +10 -2
  162. package/dist/features/layout/SideActionDock.js +52 -2
  163. package/dist/features/layout/TitleBarLayout.js +13 -4
  164. package/dist/features/layout/TitleBarLayout.style.css +59 -0
  165. package/dist/features/layout/useCtaReveal.d.ts +16 -1
  166. package/dist/features/layout/useCtaReveal.js +17 -26
  167. package/dist/features/ledger/repository/journal.repository.d.ts +110 -0
  168. package/dist/features/ledger/repository/journal.repository.js +312 -0
  169. package/dist/features/ledger/schemas/expenses.d.ts +87 -0
  170. package/dist/features/ledger/schemas/expenses.js +27 -0
  171. package/dist/features/ledger/schemas/firestore.d.ts +183 -0
  172. package/dist/features/ledger/schemas/firestore.js +69 -0
  173. package/dist/features/orders/components/BalancePaymentPanel.d.ts +12 -0
  174. package/dist/features/orders/components/BalancePaymentPanel.js +94 -0
  175. package/dist/features/orders/components/RaiseDisputeForm.js +19 -11
  176. package/dist/features/orders/repository/orders.repository.d.ts +28 -1
  177. package/dist/features/orders/repository/orders.repository.js +60 -6
  178. package/dist/features/orders/schemas/balance.d.ts +40 -0
  179. package/dist/features/orders/schemas/balance.js +47 -0
  180. package/dist/features/orders/schemas/firestore.d.ts +202 -0
  181. package/dist/features/orders/schemas/firestore.js +43 -0
  182. package/dist/features/orders/schemas/index.d.ts +2 -2
  183. package/dist/features/orders/types/index.d.ts +21 -0
  184. package/dist/features/payments/repository/payout.repository.js +3 -2
  185. package/dist/features/payments/schemas/firestore.d.ts +92 -1
  186. package/dist/features/payments/schemas/firestore.js +23 -0
  187. package/dist/features/pricing/components/AdminPricingView.d.ts +13 -0
  188. package/dist/features/pricing/components/AdminPricingView.js +157 -0
  189. package/dist/features/products/schemas/firestore.d.ts +26 -1
  190. package/dist/features/products/schemas/firestore.js +2 -0
  191. package/dist/features/products/schemas/index.d.ts +2 -2
  192. package/dist/features/reviews/repository/reviews.repository.d.ts +14 -0
  193. package/dist/features/reviews/repository/reviews.repository.js +16 -0
  194. package/dist/features/scams/repository/scammer.repository.js +2 -1
  195. package/dist/features/scams/schemas/firestore.d.ts +2 -1
  196. package/dist/features/scams/schemas/firestore.js +2 -1
  197. package/dist/features/seller/actions/offer-actions.js +56 -0
  198. package/dist/features/seller/actions/seller-actions.d.ts +1 -1
  199. package/dist/features/seller/actions/seller-actions.js +4 -0
  200. package/dist/features/seller/components/DispatchForm.d.ts +11 -0
  201. package/dist/features/seller/components/DispatchForm.js +190 -0
  202. package/dist/features/seller/components/SellerOrdersView.js +94 -2
  203. package/dist/features/seller/components/index.d.ts +1 -0
  204. package/dist/features/seller/components/index.js +1 -0
  205. package/dist/features/seller/repository/offer.repository.js +4 -3
  206. package/dist/features/seller/schemas/firestore.d.ts +23 -2
  207. package/dist/features/seller/schemas/firestore.js +3 -2
  208. package/dist/features/seller/schemas/index.d.ts +4 -4
  209. package/dist/features/seller/schemas/order-forms.d.ts +61 -4
  210. package/dist/features/seller/schemas/order-forms.js +41 -8
  211. package/dist/features/shipments/schemas/firestore.d.ts +25 -0
  212. package/dist/features/shipping-boxes/repository/shipping-boxes.repository.d.ts +39 -0
  213. package/dist/features/shipping-boxes/repository/shipping-boxes.repository.js +55 -0
  214. package/dist/features/shipping-boxes/schemas/firestore.d.ts +2 -4
  215. package/dist/features/stores/repository/store.repository.d.ts +18 -0
  216. package/dist/features/stores/repository/store.repository.js +27 -1
  217. package/dist/features/stores/schemas/firestore.d.ts +41 -0
  218. package/dist/features/stores/schemas/firestore.js +20 -0
  219. package/dist/features/stores/schemas/index.d.ts +6 -6
  220. package/dist/features/support/repository/support.repository.js +72 -6
  221. package/dist/features/support/schemas/firestore.d.ts +17 -0
  222. package/dist/features/support/schemas/index.d.ts +2 -2
  223. package/dist/index.d.ts +5 -0
  224. package/dist/index.js +19 -0
  225. package/dist/next/routing/route-map.d.ts +92 -0
  226. package/dist/next/routing/route-map.js +53 -0
  227. package/dist/react/contexts/SessionContext.d.ts +17 -1
  228. package/dist/schemas/registry.d.ts +22 -16
  229. package/dist/security/pii-schemas.d.ts +1 -1
  230. package/dist/security/pii-schemas.js +45 -0
  231. package/dist/server.d.ts +27 -1
  232. package/dist/server.js +144 -0
  233. package/dist/styles.css +349 -1
  234. package/dist/tailwind-utilities.css +1 -1
  235. package/dist/ui/components/Button.d.ts +10 -1
  236. package/dist/ui/components/Button.js +25 -3
  237. package/dist/ui/components/Chart.d.ts +63 -0
  238. package/dist/ui/components/Chart.js +169 -0
  239. package/dist/ui/components/Chart.style.css +214 -0
  240. package/dist/ui/components/Disclaimer.js +10 -1
  241. package/dist/ui/components/OverflowRow.js +54 -2
  242. package/dist/ui/components/OverflowRow.style.css +38 -0
  243. package/dist/ui/components/RichTextEditor.js +99 -8
  244. package/dist/ui/components/chart-spec.d.ts +68 -0
  245. package/dist/ui/components/chart-spec.js +140 -0
  246. package/dist/ui/components/index.style.css +1 -0
  247. package/dist/ui/components/surface-tokens.d.ts +1 -1
  248. package/dist/ui/components/surface-tokens.js +9 -0
  249. package/dist/ui/components/toolbar-collapse.d.ts +13 -0
  250. package/dist/ui/components/toolbar-collapse.js +10 -1
  251. package/dist/ui/index.d.ts +6 -0
  252. package/dist/ui/index.js +3 -0
  253. package/dist/ui/rich-text/RichText.d.ts +10 -1
  254. package/dist/ui/rich-text/RichText.js +33 -2
  255. package/dist/ui/rich-text/RichText.style.css +35 -0
  256. package/dist/ui/rich-text/RichTextRenderer.d.ts +30 -1
  257. package/dist/ui/rich-text/RichTextRenderer.js +34 -2
  258. package/dist/ui/rich-text/chart-blocks.d.ts +62 -0
  259. package/dist/ui/rich-text/chart-blocks.js +87 -0
  260. package/package.json +1 -1
  261. package/scripts/seed-cli.mjs +3 -0
@@ -157,7 +157,7 @@ export declare const supportTicketFirestoreSchema: z.ZodObject<{
157
157
  updatedAt: string | Date | z.objectOutputType<{
158
158
  toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
159
159
  }, z.ZodTypeAny, "passthrough">;
160
- category: "general" | "order_issue" | "billing_payment" | "account" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
160
+ category: "general" | "account" | "order_issue" | "billing_payment" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
161
161
  priority: "normal" | "high" | "low" | "urgent";
162
162
  description: string;
163
163
  userId: string;
@@ -200,7 +200,7 @@ export declare const supportTicketFirestoreSchema: z.ZodObject<{
200
200
  updatedAt: string | Date | z.objectInputType<{
201
201
  toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
202
202
  }, z.ZodTypeAny, "passthrough">;
203
- category: "general" | "order_issue" | "billing_payment" | "account" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
203
+ category: "general" | "account" | "order_issue" | "billing_payment" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
204
204
  priority: "normal" | "high" | "low" | "urgent";
205
205
  description: string;
206
206
  userId: string;
package/dist/index.d.ts CHANGED
@@ -550,6 +550,8 @@ export { scammerRepository } from "./repositories/index";
550
550
  export { supportRepository, SupportRepository } from "./repositories/index";
551
551
  export type { SupportTicketDocument, SupportTicketCreateInput, SupportTicketUpdateInput, TicketMessage, TicketCategory, TicketStatus, TicketPriority, } from "./repositories/index";
552
552
  export { ELIGIBLE_ORDER_STATUSES_FOR_TICKET, SUPPORT_TICKET_COLLECTION, ACTIVE_TICKET_STATUSES, SUPPORT_TICKET_FIELDS, TicketCategoryValues, TicketStatusValues, TicketPriorityValues, } from "./features/support/schemas/firestore";
553
+ export { AdminIntegrationsView } from "./features/admin/components/AdminIntegrationsView";
554
+ export type { AdminIntegrationsViewProps } from "./features/admin/components/AdminIntegrationsView";
553
555
  export { AdminTaxCodesView } from "./features/admin/components/AdminTaxCodesView";
554
556
  export type { AdminTaxCodesViewProps } from "./features/admin/components/AdminTaxCodesView";
555
557
  export { AdminTaxCodeEditorView } from "./features/admin/components/AdminTaxCodeEditorView";
@@ -2201,6 +2203,9 @@ export type { ProtectionKind, ProtectionAvailability, ProtectionTierInput, Prote
2201
2203
  export type { FeeCommissionRates, CheckoutFees, PayoutDeduction, CodHandlingFeeRates, GiftWrapFeeRates, ShipmentProtectionFeeRates, SaleProtectionFeeRates, GstBreakdown, } from "./_internal/shared/fees/calculator";
2202
2204
  export { checkEmiEligibility, computeEmiSchedule, computeBuyerEmiQuote } from "./_internal/shared/features/emi/schedule";
2203
2205
  export type { BuyerEmiQuote } from "./_internal/shared/features/emi/schedule";
2206
+ export { amountDueNow, groupEmiGate, groupEmiQuote, groupEmiSchedule, emiOrderFields } from "./_internal/shared/features/emi/group";
2207
+ export { emiTenderFor, resolveEmiChoice, emiTenderBlockReason, isTenderCompatibleWithEmi } from "./_internal/shared/features/emi/choice";
2208
+ export type { EmiChoice, EmiTender } from "./_internal/shared/features/emi/choice";
2204
2209
  export { toBuyerFacingFees, toBuyerEmiSettings, } from "./_internal/shared/features/site-settings/fees";
2205
2210
  export type { BuyerFacingFees, BuyerEmiSettings, } from "./_internal/shared/features/site-settings/fees";
2206
2211
  export { GSTIN_PATTERN, gstinCheckCharacter, isValidGstin, validateGstEnablement, canEnableGst, } from "./_internal/shared/features/site-settings/gst-registration";
package/dist/index.js CHANGED
@@ -1090,6 +1090,15 @@ export { ELIGIBLE_ORDER_STATUSES_FOR_TICKET, SUPPORT_TICKET_COLLECTION, ACTIVE_T
1090
1090
  // SB-UNI-B â€" sublistingCategoriesRepository + SublistingCategoryDocument deleted.
1091
1091
  // Use categoriesRepository.findBySlugAndType(slug, "sublisting") and CategoryDocument with categoryType:"sublisting".
1092
1092
  // [DB]-Database layer â€" uses firebase-admin; server-only.
1093
+ /*
1094
+ * AdminIntegrationsView (12b) — /admin/integrations.
1095
+ *
1096
+ * The caller `INTEGRATIONS` / `integrationPatch` / `allIntegrationsPatch` were
1097
+ * missing: the model landed with every route guard resolving through it and
1098
+ * nothing in the UI reading it, which made those three exports speculative
1099
+ * infra. This is what reads them.
1100
+ */
1101
+ export { AdminIntegrationsView } from "./features/admin/components/AdminIntegrationsView.js";
1093
1102
  // AdminTaxCodesView / AdminTaxCodeEditorView (B3) — /admin/tax-codes.
1094
1103
  export { AdminTaxCodesView } from "./features/admin/components/AdminTaxCodesView.js";
1095
1104
  export { AdminTaxCodeEditorView } from "./features/admin/components/AdminTaxCodeEditorView.js";
@@ -4097,6 +4106,16 @@ export { searchPriceIndex, PRICE_INDEX_SEARCH_LIMIT, PRICE_INDEX_MIN_QUERY_LENGT
4097
4106
  export { protectionAvailability, computeProtectionFees, adjudicateClaim, badgesFor, showsRiskNotice, showsSafetyBadge, returnDestination, rtoDestination, PROTECTION_KINDS, } from "./_internal/shared/features/shipping/protections.js";
4098
4107
  // EMI eligibility + schedule computation (pure, client-safe — used for checkout quotes).
4099
4108
  export { checkEmiEligibility, computeEmiSchedule, computeBuyerEmiQuote } from "./_internal/shared/features/emi/schedule.js";
4109
+ /*
4110
+ * 0f — the per-group instalment helpers. Exported because the CAPTURE amount
4111
+ * is computed in a consumer route (`/api/payment/create-order`), and that
4112
+ * route is one of the four money paths that must agree about an EMI order.
4113
+ * There is no `./_internal/*` subpath, deliberately, so the barrel is how a
4114
+ * consumer reaches shared checkout maths — exactly as `lineTotalFor` and
4115
+ * `resolveShippingCost` already are.
4116
+ */
4117
+ export { amountDueNow, groupEmiGate, groupEmiQuote, groupEmiSchedule, emiOrderFields } from "./_internal/shared/features/emi/group.js";
4118
+ export { emiTenderFor, resolveEmiChoice, emiTenderBlockReason, isTenderCompatibleWithEmi } from "./_internal/shared/features/emi/choice.js";
4100
4119
  // Buyer-facing projections of siteSettings.commissions / .emi — the single
4101
4120
  // definition of "safe to send to a browser" for fee data. See fees.ts header.
4102
4121
  export { toBuyerFacingFees, toBuyerEmiSettings, } from "./_internal/shared/features/site-settings/fees.js";
@@ -21,6 +21,8 @@ export declare const DEFAULT_ROUTE_MAP: {
21
21
  readonly AUCTIONS: "/auctions";
22
22
  readonly AUCTION_DETAIL: (id: string) => string;
23
23
  readonly PRE_ORDERS: "/pre-orders";
24
+ /** D56 — the public rate card + self-serve booking form. */
25
+ readonly ADVERTISE: "/advertise";
24
26
  readonly PRE_ORDER_DETAIL: (id: string) => string;
25
27
  readonly BUNDLES: "/bundles";
26
28
  readonly BUNDLE_DETAIL: (slug: string) => string;
@@ -157,6 +159,16 @@ export declare const DEFAULT_ROUTE_MAP: {
157
159
  };
158
160
  readonly USER: {
159
161
  readonly DASHBOARD: "/user";
162
+ /**
163
+ * A dashboard SECTION hub — the screens of one sidebar group, each with a
164
+ * sentence on what it is for.
165
+ *
166
+ * One parametric route serves every section of the portal; the slug is
167
+ * `hubSectionSlug(group.title)` and is DERIVED, so there is no list of
168
+ * section keys here to drift from the nav. `audit-dashboard-hub-coverage`
169
+ * cross-checks the two.
170
+ */
171
+ readonly SECTION: (slug: string) => string;
160
172
  readonly PROFILE: "/user/profile";
161
173
  readonly SETTINGS: "/user/settings";
162
174
  readonly ORDERS: "/user/orders";
@@ -177,6 +189,17 @@ export declare const DEFAULT_ROUTE_MAP: {
177
189
  readonly ORDER_CLAIM: (id: string) => string;
178
190
  readonly ORDER_INVOICE: (id: string) => string;
179
191
  readonly ORDER_PAYMENT: (id: string) => string;
192
+ /**
193
+ * Raise a dispute on one order.
194
+ *
195
+ * Deep-linkable on purpose: a notification `actionUrl` points here, and
196
+ * `/user/orders/view/{id}` carries a "Report a problem" button to the same
197
+ * place. One surface, two ways in — an email link that works only while
198
+ * the buyer still has the email is the shape Root Cause #57 records,
199
+ * where `ORDER_PAYMENT` had exactly ONE caller and a buyer who navigated
200
+ * away could not get back.
201
+ */
202
+ readonly ORDER_DISPUTE: (id: string) => string;
180
203
  readonly NOTIFICATIONS: "/user/notifications";
181
204
  /** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
182
205
  readonly CLAIMED_COUPONS: "/user/coupons";
@@ -198,6 +221,8 @@ export declare const DEFAULT_ROUTE_MAP: {
198
221
  readonly SUPPORT_NEW: "/user/support/new";
199
222
  readonly SUPPORT_TICKET: (id: string) => string;
200
223
  readonly PRE_ORDERS: "/user/pre-orders";
224
+ /** D56 — the advertiser's own bookings and their moderation state. */
225
+ readonly AD_BOOKINGS: "/user/ad-bookings";
201
226
  readonly DIGITAL_CODES: "/user/digital-codes";
202
227
  readonly PRIZE_DRAWS: "/user/prize-draws";
203
228
  readonly EVENTS: "/user/events";
@@ -210,6 +235,8 @@ export declare const DEFAULT_ROUTE_MAP: {
210
235
  };
211
236
  readonly STORE: {
212
237
  readonly DASHBOARD: "/store";
238
+ /** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
239
+ readonly SECTION: (slug: string) => string;
213
240
  readonly PRODUCTS: "/store/products";
214
241
  readonly PRODUCTS_NEW: "/store/products/new";
215
242
  readonly PRODUCTS_EDIT: (id: string) => string;
@@ -300,6 +327,18 @@ export declare const DEFAULT_ROUTE_MAP: {
300
327
  };
301
328
  readonly ADMIN: {
302
329
  readonly DASHBOARD: "/admin/dashboard";
330
+ /**
331
+ * The sectioned landing at `/admin` — what used to `redirect()` to
332
+ * `DASHBOARD`.
333
+ *
334
+ * 🛑 `DASHBOARD` is `/admin/dashboard` and stays a separate page: it is the
335
+ * metrics screen, and the sidebar's "Dashboard" entry points at it. This
336
+ * key is the index that lists the twelve sections. Collapsing the two would
337
+ * either bury the metrics or make the index unreachable.
338
+ */
339
+ readonly HOME: "/admin";
340
+ /** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
341
+ readonly SECTION: (slug: string) => string;
303
342
  readonly SHIPMENTS: "/admin/shipments";
304
343
  readonly INVENTORY_BOXES: "/admin/inventory/boxes";
305
344
  readonly INVENTORY_BOX_DETAIL: (id: string) => string;
@@ -315,6 +354,7 @@ export declare const DEFAULT_ROUTE_MAP: {
315
354
  readonly USER_DETAIL: (id: string) => string;
316
355
  readonly USER_EDIT: (id: string) => string;
317
356
  readonly SITE: "/admin/site";
357
+ readonly INTEGRATIONS: "/admin/integrations";
318
358
  readonly CAROUSEL: "/admin/carousel";
319
359
  readonly CAROUSEL_NEW: "/admin/carousel/new";
320
360
  readonly CAROUSEL_EDIT: (id: string) => string;
@@ -374,6 +414,7 @@ export declare const DEFAULT_ROUTE_MAP: {
374
414
  readonly ANALYTICS: "/admin/analytics";
375
415
  readonly PAYOUTS: "/admin/payouts";
376
416
  readonly PAYOUT_DETAIL: (id: string) => string;
417
+ readonly PRICING: "/admin/pricing";
377
418
  readonly AUDIT_LOG: "/admin/audit-log";
378
419
  readonly MONEY_CASES: "/admin/money-cases";
379
420
  readonly MONEY_CASE_DETAIL: (id: string) => string;
@@ -399,6 +440,8 @@ export declare const DEFAULT_ROUTE_MAP: {
399
440
  readonly ADS: "/admin/ads";
400
441
  readonly ADS_NEW: "/admin/ads/new";
401
442
  readonly ADS_EDIT: (id: string) => string;
443
+ /** D56 — the self-serve creative moderation queue. */
444
+ readonly AD_BOOKINGS: "/admin/ads/bookings";
402
445
  readonly NEWSLETTER: "/admin/newsletter";
403
446
  readonly CONTACT: "/admin/contact";
404
447
  readonly SESSIONS: "/admin/sessions";
@@ -433,6 +476,8 @@ export declare const DEFAULT_ROUTE_MAP: {
433
476
  readonly TEAM_NEW: "/admin/team/new";
434
477
  readonly TEAM_EDIT: (id: string) => string;
435
478
  readonly SUPPORT_TICKETS: "/admin/support-tickets";
479
+ /** Staff curation of the reasons a buyer can pick when disputing. */
480
+ readonly DISPUTE_REASONS: "/admin/dispute-reasons";
436
481
  readonly SUPPORT_TICKET_BY_ID: (id: string) => string;
437
482
  readonly SCAMMERS: "/admin/scammers";
438
483
  readonly SCAMMER_BY_ID: (id: string) => string;
@@ -485,6 +530,8 @@ export declare const ROUTES: {
485
530
  readonly AUCTIONS: "/auctions";
486
531
  readonly AUCTION_DETAIL: (id: string) => string;
487
532
  readonly PRE_ORDERS: "/pre-orders";
533
+ /** D56 — the public rate card + self-serve booking form. */
534
+ readonly ADVERTISE: "/advertise";
488
535
  readonly PRE_ORDER_DETAIL: (id: string) => string;
489
536
  readonly BUNDLES: "/bundles";
490
537
  readonly BUNDLE_DETAIL: (slug: string) => string;
@@ -621,6 +668,16 @@ export declare const ROUTES: {
621
668
  };
622
669
  readonly USER: {
623
670
  readonly DASHBOARD: "/user";
671
+ /**
672
+ * A dashboard SECTION hub — the screens of one sidebar group, each with a
673
+ * sentence on what it is for.
674
+ *
675
+ * One parametric route serves every section of the portal; the slug is
676
+ * `hubSectionSlug(group.title)` and is DERIVED, so there is no list of
677
+ * section keys here to drift from the nav. `audit-dashboard-hub-coverage`
678
+ * cross-checks the two.
679
+ */
680
+ readonly SECTION: (slug: string) => string;
624
681
  readonly PROFILE: "/user/profile";
625
682
  readonly SETTINGS: "/user/settings";
626
683
  readonly ORDERS: "/user/orders";
@@ -641,6 +698,17 @@ export declare const ROUTES: {
641
698
  readonly ORDER_CLAIM: (id: string) => string;
642
699
  readonly ORDER_INVOICE: (id: string) => string;
643
700
  readonly ORDER_PAYMENT: (id: string) => string;
701
+ /**
702
+ * Raise a dispute on one order.
703
+ *
704
+ * Deep-linkable on purpose: a notification `actionUrl` points here, and
705
+ * `/user/orders/view/{id}` carries a "Report a problem" button to the same
706
+ * place. One surface, two ways in — an email link that works only while
707
+ * the buyer still has the email is the shape Root Cause #57 records,
708
+ * where `ORDER_PAYMENT` had exactly ONE caller and a buyer who navigated
709
+ * away could not get back.
710
+ */
711
+ readonly ORDER_DISPUTE: (id: string) => string;
644
712
  readonly NOTIFICATIONS: "/user/notifications";
645
713
  /** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
646
714
  readonly CLAIMED_COUPONS: "/user/coupons";
@@ -662,6 +730,8 @@ export declare const ROUTES: {
662
730
  readonly SUPPORT_NEW: "/user/support/new";
663
731
  readonly SUPPORT_TICKET: (id: string) => string;
664
732
  readonly PRE_ORDERS: "/user/pre-orders";
733
+ /** D56 — the advertiser's own bookings and their moderation state. */
734
+ readonly AD_BOOKINGS: "/user/ad-bookings";
665
735
  readonly DIGITAL_CODES: "/user/digital-codes";
666
736
  readonly PRIZE_DRAWS: "/user/prize-draws";
667
737
  readonly EVENTS: "/user/events";
@@ -674,6 +744,8 @@ export declare const ROUTES: {
674
744
  };
675
745
  readonly STORE: {
676
746
  readonly DASHBOARD: "/store";
747
+ /** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
748
+ readonly SECTION: (slug: string) => string;
677
749
  readonly PRODUCTS: "/store/products";
678
750
  readonly PRODUCTS_NEW: "/store/products/new";
679
751
  readonly PRODUCTS_EDIT: (id: string) => string;
@@ -764,6 +836,18 @@ export declare const ROUTES: {
764
836
  };
765
837
  readonly ADMIN: {
766
838
  readonly DASHBOARD: "/admin/dashboard";
839
+ /**
840
+ * The sectioned landing at `/admin` — what used to `redirect()` to
841
+ * `DASHBOARD`.
842
+ *
843
+ * 🛑 `DASHBOARD` is `/admin/dashboard` and stays a separate page: it is the
844
+ * metrics screen, and the sidebar's "Dashboard" entry points at it. This
845
+ * key is the index that lists the twelve sections. Collapsing the two would
846
+ * either bury the metrics or make the index unreachable.
847
+ */
848
+ readonly HOME: "/admin";
849
+ /** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
850
+ readonly SECTION: (slug: string) => string;
767
851
  readonly SHIPMENTS: "/admin/shipments";
768
852
  readonly INVENTORY_BOXES: "/admin/inventory/boxes";
769
853
  readonly INVENTORY_BOX_DETAIL: (id: string) => string;
@@ -779,6 +863,7 @@ export declare const ROUTES: {
779
863
  readonly USER_DETAIL: (id: string) => string;
780
864
  readonly USER_EDIT: (id: string) => string;
781
865
  readonly SITE: "/admin/site";
866
+ readonly INTEGRATIONS: "/admin/integrations";
782
867
  readonly CAROUSEL: "/admin/carousel";
783
868
  readonly CAROUSEL_NEW: "/admin/carousel/new";
784
869
  readonly CAROUSEL_EDIT: (id: string) => string;
@@ -838,6 +923,7 @@ export declare const ROUTES: {
838
923
  readonly ANALYTICS: "/admin/analytics";
839
924
  readonly PAYOUTS: "/admin/payouts";
840
925
  readonly PAYOUT_DETAIL: (id: string) => string;
926
+ readonly PRICING: "/admin/pricing";
841
927
  readonly AUDIT_LOG: "/admin/audit-log";
842
928
  readonly MONEY_CASES: "/admin/money-cases";
843
929
  readonly MONEY_CASE_DETAIL: (id: string) => string;
@@ -863,6 +949,8 @@ export declare const ROUTES: {
863
949
  readonly ADS: "/admin/ads";
864
950
  readonly ADS_NEW: "/admin/ads/new";
865
951
  readonly ADS_EDIT: (id: string) => string;
952
+ /** D56 — the self-serve creative moderation queue. */
953
+ readonly AD_BOOKINGS: "/admin/ads/bookings";
866
954
  readonly NEWSLETTER: "/admin/newsletter";
867
955
  readonly CONTACT: "/admin/contact";
868
956
  readonly SESSIONS: "/admin/sessions";
@@ -897,6 +985,8 @@ export declare const ROUTES: {
897
985
  readonly TEAM_NEW: "/admin/team/new";
898
986
  readonly TEAM_EDIT: (id: string) => string;
899
987
  readonly SUPPORT_TICKETS: "/admin/support-tickets";
988
+ /** Staff curation of the reasons a buyer can pick when disputing. */
989
+ readonly DISPUTE_REASONS: "/admin/dispute-reasons";
900
990
  readonly SUPPORT_TICKET_BY_ID: (id: string) => string;
901
991
  readonly SCAMMERS: "/admin/scammers";
902
992
  readonly SCAMMER_BY_ID: (id: string) => string;
@@ -940,6 +1030,8 @@ export declare const ROUTES: {
940
1030
  /** @deprecated Use ROUTES.STORE instead */
941
1031
  export declare const SELLER_ROUTES: {
942
1032
  readonly DASHBOARD: "/store";
1033
+ /** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
1034
+ readonly SECTION: (slug: string) => string;
943
1035
  readonly PRODUCTS: "/store/products";
944
1036
  readonly PRODUCTS_NEW: "/store/products/new";
945
1037
  readonly PRODUCTS_EDIT: (id: string) => string;
@@ -9,6 +9,8 @@ export const DEFAULT_ROUTE_MAP = {
9
9
  AUCTIONS: "/auctions",
10
10
  AUCTION_DETAIL: (id) => `/auctions/${id}`,
11
11
  PRE_ORDERS: "/pre-orders",
12
+ /** D56 — the public rate card + self-serve booking form. */
13
+ ADVERTISE: "/advertise",
12
14
  PRE_ORDER_DETAIL: (id) => `/pre-orders/${id}`,
13
15
  // SB1-J — bundles + prize draws (additive, pages not yet built)
14
16
  BUNDLES: "/bundles",
@@ -261,6 +263,16 @@ export const DEFAULT_ROUTE_MAP = {
261
263
  },
262
264
  USER: {
263
265
  DASHBOARD: "/user",
266
+ /**
267
+ * A dashboard SECTION hub — the screens of one sidebar group, each with a
268
+ * sentence on what it is for.
269
+ *
270
+ * One parametric route serves every section of the portal; the slug is
271
+ * `hubSectionSlug(group.title)` and is DERIVED, so there is no list of
272
+ * section keys here to drift from the nav. `audit-dashboard-hub-coverage`
273
+ * cross-checks the two.
274
+ */
275
+ SECTION: (slug) => `/user/sections/${slug}`,
264
276
  PROFILE: "/user/profile",
265
277
  SETTINGS: "/user/settings",
266
278
  ORDERS: "/user/orders",
@@ -297,6 +309,17 @@ export const DEFAULT_ROUTE_MAP = {
297
309
  ORDER_CLAIM: (id) => `/user/orders/${id}/claim`,
298
310
  ORDER_INVOICE: (id) => `/user/orders/${id}/invoice`,
299
311
  ORDER_PAYMENT: (id) => `/user/orders/${id}/payment`,
312
+ /**
313
+ * Raise a dispute on one order.
314
+ *
315
+ * Deep-linkable on purpose: a notification `actionUrl` points here, and
316
+ * `/user/orders/view/{id}` carries a "Report a problem" button to the same
317
+ * place. One surface, two ways in — an email link that works only while
318
+ * the buyer still has the email is the shape Root Cause #57 records,
319
+ * where `ORDER_PAYMENT` had exactly ONE caller and a buyer who navigated
320
+ * away could not get back.
321
+ */
322
+ ORDER_DISPUTE: (id) => `/user/orders/${id}/dispute`,
300
323
  NOTIFICATIONS: "/user/notifications",
301
324
  /** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
302
325
  CLAIMED_COUPONS: "/user/coupons",
@@ -333,6 +356,8 @@ export const DEFAULT_ROUTE_MAP = {
333
356
  SUPPORT_NEW: "/user/support/new",
334
357
  SUPPORT_TICKET: (id) => `/user/support/${id}`,
335
358
  PRE_ORDERS: "/user/pre-orders",
359
+ /** D56 — the advertiser's own bookings and their moderation state. */
360
+ AD_BOOKINGS: "/user/ad-bookings",
336
361
  DIGITAL_CODES: "/user/digital-codes",
337
362
  PRIZE_DRAWS: "/user/prize-draws",
338
363
  EVENTS: "/user/events",
@@ -345,6 +370,8 @@ export const DEFAULT_ROUTE_MAP = {
345
370
  },
346
371
  STORE: {
347
372
  DASHBOARD: "/store",
373
+ /** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
374
+ SECTION: (slug) => `/store/sections/${slug}`,
348
375
  PRODUCTS: "/store/products",
349
376
  PRODUCTS_NEW: "/store/products/new",
350
377
  PRODUCTS_EDIT: (id) => `/store/products/${id}/edit`,
@@ -441,6 +468,18 @@ export const DEFAULT_ROUTE_MAP = {
441
468
  },
442
469
  ADMIN: {
443
470
  DASHBOARD: "/admin/dashboard",
471
+ /**
472
+ * The sectioned landing at `/admin` — what used to `redirect()` to
473
+ * `DASHBOARD`.
474
+ *
475
+ * 🛑 `DASHBOARD` is `/admin/dashboard` and stays a separate page: it is the
476
+ * metrics screen, and the sidebar's "Dashboard" entry points at it. This
477
+ * key is the index that lists the twelve sections. Collapsing the two would
478
+ * either bury the metrics or make the index unreachable.
479
+ */
480
+ HOME: "/admin",
481
+ /** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
482
+ SECTION: (slug) => `/admin/sections/${slug}`,
444
483
  SHIPMENTS: "/admin/shipments",
445
484
  /*
446
485
  * 🛑 There is deliberately NO `INVENTORY: "/admin/inventory"` key.
@@ -476,6 +515,15 @@ export const DEFAULT_ROUTE_MAP = {
476
515
  USER_DETAIL: (id) => `/admin/users/${id}`,
477
516
  USER_EDIT: (id) => `/admin/users/${id}/edit`,
478
517
  SITE: "/admin/site",
518
+ /*
519
+ * The integration kill switches — its OWN page, not a Site Settings tab.
520
+ *
521
+ * A switch that stops money has to be findable without hunting a tab
522
+ * strip, and this is the one surface where all four are visible together
523
+ * (which matters, because their off-states are not comparable: three stop
524
+ * something and one selects a working alternative).
525
+ */
526
+ INTEGRATIONS: "/admin/integrations",
479
527
  CAROUSEL: "/admin/carousel",
480
528
  CAROUSEL_NEW: "/admin/carousel/new",
481
529
  CAROUSEL_EDIT: (id) => `/admin/carousel/${id}/edit`,
@@ -563,6 +611,7 @@ export const DEFAULT_ROUTE_MAP = {
563
611
  ANALYTICS: "/admin/analytics",
564
612
  PAYOUTS: "/admin/payouts",
565
613
  PAYOUT_DETAIL: (id) => `/admin/payouts/${id}/view`,
614
+ PRICING: "/admin/pricing",
566
615
  AUDIT_LOG: "/admin/audit-log",
567
616
  /*
568
617
  * 🛑 MONEY_CASES is deliberately NOT under `/admin/maintenance/`.
@@ -601,6 +650,8 @@ export const DEFAULT_ROUTE_MAP = {
601
650
  ADS: "/admin/ads",
602
651
  ADS_NEW: "/admin/ads/new",
603
652
  ADS_EDIT: (id) => `/admin/ads/${id}/edit`,
653
+ /** D56 — the self-serve creative moderation queue. */
654
+ AD_BOOKINGS: "/admin/ads/bookings",
604
655
  NEWSLETTER: "/admin/newsletter",
605
656
  CONTACT: "/admin/contact",
606
657
  SESSIONS: "/admin/sessions",
@@ -644,6 +695,8 @@ export const DEFAULT_ROUTE_MAP = {
644
695
  TEAM_NEW: "/admin/team/new",
645
696
  TEAM_EDIT: (id) => `/admin/team/${id}/edit`,
646
697
  SUPPORT_TICKETS: "/admin/support-tickets",
698
+ /** Staff curation of the reasons a buyer can pick when disputing. */
699
+ DISPUTE_REASONS: "/admin/dispute-reasons",
647
700
  SUPPORT_TICKET_BY_ID: (id) => `/admin/support-tickets/${id}`,
648
701
  SCAMMERS: "/admin/scammers",
649
702
  SCAMMER_BY_ID: (id) => `/admin/scammers/${id}`,
@@ -40,7 +40,23 @@ export interface SessionUser {
40
40
  /** Orthogonal to isTester — unlocks admin-only checklist items and real /admin/** RBAC access. */
41
41
  canTestAdmin?: boolean;
42
42
  publicProfile?: FirestoreDocument;
43
- stats?: FirestoreDocument;
43
+ /**
44
+ * Buyer activity counts, DERIVED by `/api/user/profile` — orders placed,
45
+ * auctions won, reviews written. Each is optional and `undefined` means the
46
+ * count could not be taken, which is NOT the same as zero: render nothing.
47
+ *
48
+ * 🛑 Not the `users/{uid}.stats` document field, which has no writer at all
49
+ * and holds seed literals. Do not "restore" it by reading the profile
50
+ * document here; see `getBuyerActivityStats`.
51
+ *
52
+ * Seller numbers are deliberately absent. This is the account holder's own
53
+ * record; what their store has sold belongs to the store.
54
+ */
55
+ stats?: {
56
+ totalOrders?: number;
57
+ auctionsWon?: number;
58
+ reviewsCount?: number;
59
+ };
44
60
  metadata?: FirestoreDocument;
45
61
  scamAwarenessAcknowledgedAt?: Date | null;
46
62
  /** RBAC permission keys granted to this user (from their role's permission set). */
@@ -170,6 +170,7 @@ export declare const SCHEMAS: {
170
170
  category: import("zod").ZodString;
171
171
  tags: import("zod").ZodArray<import("zod").ZodString, "many">;
172
172
  isFeatured: import("zod").ZodBoolean;
173
+ isPinned: import("zod").ZodBoolean;
173
174
  status: import("zod").ZodEnum<["draft", "published", "archived"]>;
174
175
  publishedAt: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodDate, import("zod").ZodString, import("zod").ZodObject<{
175
176
  toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
@@ -205,6 +206,7 @@ export declare const SCHEMAS: {
205
206
  authorId: string;
206
207
  authorName: string;
207
208
  readTimeMinutes: number;
209
+ isPinned: boolean;
208
210
  publishedAt?: string | Date | import("zod").objectOutputType<{
209
211
  toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
210
212
  }, import("zod").ZodTypeAny, "passthrough"> | undefined;
@@ -258,6 +260,7 @@ export declare const SCHEMAS: {
258
260
  authorId: string;
259
261
  authorName: string;
260
262
  readTimeMinutes: number;
263
+ isPinned: boolean;
261
264
  publishedAt?: string | Date | import("zod").objectInputType<{
262
265
  toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
263
266
  }, import("zod").ZodTypeAny, "passthrough"> | undefined;
@@ -816,16 +819,16 @@ export declare const SCHEMAS: {
816
819
  opacity?: number | undefined;
817
820
  subtitle?: string | undefined;
818
821
  } | undefined;
822
+ settings?: {
823
+ height?: "medium" | "viewport" | "tall" | undefined;
824
+ autoplayDelayMs?: number | undefined;
825
+ } | undefined;
819
826
  analytics?: {
820
827
  views: number;
821
828
  lastViewed?: string | Date | import("zod").objectOutputType<{
822
829
  toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
823
830
  }, import("zod").ZodTypeAny, "passthrough"> | undefined;
824
831
  } | undefined;
825
- settings?: {
826
- height?: "medium" | "viewport" | "tall" | undefined;
827
- autoplayDelayMs?: number | undefined;
828
- } | undefined;
829
832
  carouselId?: string | null | undefined;
830
833
  }, {
831
834
  id: string;
@@ -925,16 +928,16 @@ export declare const SCHEMAS: {
925
928
  opacity?: number | undefined;
926
929
  subtitle?: string | undefined;
927
930
  } | undefined;
931
+ settings?: {
932
+ height?: "medium" | "viewport" | "tall" | undefined;
933
+ autoplayDelayMs?: number | undefined;
934
+ } | undefined;
928
935
  analytics?: {
929
936
  views: number;
930
937
  lastViewed?: string | Date | import("zod").objectInputType<{
931
938
  toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
932
939
  }, import("zod").ZodTypeAny, "passthrough"> | undefined;
933
940
  } | undefined;
934
- settings?: {
935
- height?: "medium" | "viewport" | "tall" | undefined;
936
- autoplayDelayMs?: number | undefined;
937
- } | undefined;
938
941
  carouselId?: string | null | undefined;
939
942
  }>;
940
943
  readonly categories: import("zod").ZodObject<{
@@ -3061,6 +3064,7 @@ export declare const SCHEMAS: {
3061
3064
  prizeRevealStatus?: "closed" | "open" | "pending" | "revealed" | undefined;
3062
3065
  }[] | undefined;
3063
3066
  bundleId?: string | undefined;
3067
+ orderType?: string | undefined;
3064
3068
  prizeWon?: {
3065
3069
  title: string;
3066
3070
  images: string[];
@@ -3077,7 +3081,6 @@ export declare const SCHEMAS: {
3077
3081
  bin: string;
3078
3082
  } | undefined;
3079
3083
  offerId?: string | undefined;
3080
- orderType?: string | undefined;
3081
3084
  isNonRefundable?: boolean | undefined;
3082
3085
  imageUrls?: string[] | undefined;
3083
3086
  refundFeeDeducted?: number | undefined;
@@ -3220,6 +3223,7 @@ export declare const SCHEMAS: {
3220
3223
  prizeRevealStatus?: "closed" | "open" | "pending" | "revealed" | undefined;
3221
3224
  }[] | undefined;
3222
3225
  bundleId?: string | undefined;
3226
+ orderType?: string | undefined;
3223
3227
  prizeWon?: {
3224
3228
  title: string;
3225
3229
  images: string[];
@@ -3236,7 +3240,6 @@ export declare const SCHEMAS: {
3236
3240
  bin: string;
3237
3241
  } | undefined;
3238
3242
  offerId?: string | undefined;
3239
- orderType?: string | undefined;
3240
3243
  isNonRefundable?: boolean | undefined;
3241
3244
  imageUrls?: string[] | undefined;
3242
3245
  refundFeeDeducted?: number | undefined;
@@ -4151,13 +4154,13 @@ export declare const SCHEMAS: {
4151
4154
  totalReviews: import("zod").ZodNumber;
4152
4155
  averageRating: import("zod").ZodOptional<import("zod").ZodNumber>;
4153
4156
  }, "strip", import("zod").ZodTypeAny, {
4154
- itemsSold: number;
4155
4157
  totalProducts: number;
4158
+ itemsSold: number;
4156
4159
  totalReviews: number;
4157
4160
  averageRating?: number | undefined;
4158
4161
  }, {
4159
- itemsSold: number;
4160
4162
  totalProducts: number;
4163
+ itemsSold: number;
4161
4164
  totalReviews: number;
4162
4165
  averageRating?: number | undefined;
4163
4166
  }>>;
@@ -4296,8 +4299,8 @@ export declare const SCHEMAS: {
4296
4299
  location?: string | undefined;
4297
4300
  returnPolicy?: string | undefined;
4298
4301
  stats?: {
4299
- itemsSold: number;
4300
4302
  totalProducts: number;
4303
+ itemsSold: number;
4301
4304
  totalReviews: number;
4302
4305
  averageRating?: number | undefined;
4303
4306
  } | undefined;
@@ -4365,8 +4368,8 @@ export declare const SCHEMAS: {
4365
4368
  location?: string | undefined;
4366
4369
  returnPolicy?: string | undefined;
4367
4370
  stats?: {
4368
- itemsSold: number;
4369
4371
  totalProducts: number;
4372
+ itemsSold: number;
4370
4373
  totalReviews: number;
4371
4374
  averageRating?: number | undefined;
4372
4375
  } | undefined;
@@ -4521,7 +4524,7 @@ export declare const SCHEMAS: {
4521
4524
  updatedAt: string | Date | import("zod").objectOutputType<{
4522
4525
  toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
4523
4526
  }, import("zod").ZodTypeAny, "passthrough">;
4524
- category: "general" | "order_issue" | "billing_payment" | "account" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
4527
+ category: "general" | "account" | "order_issue" | "billing_payment" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
4525
4528
  priority: "normal" | "high" | "low" | "urgent";
4526
4529
  description: string;
4527
4530
  userId: string;
@@ -4564,7 +4567,7 @@ export declare const SCHEMAS: {
4564
4567
  updatedAt: string | Date | import("zod").objectInputType<{
4565
4568
  toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
4566
4569
  }, import("zod").ZodTypeAny, "passthrough">;
4567
- category: "general" | "order_issue" | "billing_payment" | "account" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
4570
+ category: "general" | "account" | "order_issue" | "billing_payment" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
4568
4571
  priority: "normal" | "high" | "low" | "urgent";
4569
4572
  description: string;
4570
4573
  userId: string;
@@ -4891,6 +4894,7 @@ export declare const SCHEMAS: {
4891
4894
  publishedAt: import("zod").ZodString;
4892
4895
  authorName: import("zod").ZodString;
4893
4896
  isFeatured: import("zod").ZodBoolean;
4897
+ isPinned: import("zod").ZodBoolean;
4894
4898
  }, "strip", import("zod").ZodTypeAny, {
4895
4899
  status: "published" | "draft" | "archived";
4896
4900
  title: string;
@@ -4904,6 +4908,7 @@ export declare const SCHEMAS: {
4904
4908
  excerpt: string;
4905
4909
  coverImage: string;
4906
4910
  authorName: string;
4911
+ isPinned: boolean;
4907
4912
  metaTitle: string;
4908
4913
  metaDescription: string;
4909
4914
  }, {
@@ -4919,6 +4924,7 @@ export declare const SCHEMAS: {
4919
4924
  excerpt: string;
4920
4925
  coverImage: string;
4921
4926
  authorName: string;
4927
+ isPinned: boolean;
4922
4928
  metaTitle: string;
4923
4929
  metaDescription: string;
4924
4930
  }>;
@@ -29,7 +29,7 @@ export declare const USER_PII_INDEX_MAP: Record<string, string>;
29
29
  /** PII fields in the addresses subcollection */
30
30
  export declare const ADDRESS_PII_FIELDS: readonly ["fullName", "phone", "addressLine1", "addressLine2"];
31
31
  /** PII fields in orders (denormalized buyer/seller data) */
32
- export declare const ORDER_PII_FIELDS: readonly ["userName", "userEmail", "sellerEmail"];
32
+ export declare const ORDER_PII_FIELDS: readonly ["userName", "userEmail", "sellerEmail", "deliveryFullName", "deliveryPhone", "deliveryAddressLine1", "deliveryAddressLine2", "deliveryLandmark", "deliveryAmendments[].fullName", "deliveryAmendments[].phone", "deliveryAmendments[].addressLine1", "deliveryAmendments[].addressLine2", "deliveryAmendments[].landmark"];
33
33
  /** PII fields in payouts */
34
34
  export declare const PAYOUT_PII_FIELDS: readonly ["sellerEmail", "upiId"];
35
35
  /** Blind-index mapping for queryable payout PII */