@mohasinac/appkit 4.1.1 → 4.2.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 (225) hide show
  1. package/dist/_internal/client/features/maintenance/index.d.ts +2 -0
  2. package/dist/_internal/client/features/maintenance/index.js +1 -0
  3. package/dist/_internal/client/features/maintenance/views/CloudLogsListView.d.ts +9 -0
  4. package/dist/_internal/client/features/maintenance/views/CloudLogsListView.js +55 -0
  5. package/dist/_internal/server/features/auctions/index.d.ts +1 -1
  6. package/dist/_internal/server/features/auctions/index.js +1 -1
  7. package/dist/_internal/server/features/auctions/service.js +2 -2
  8. package/dist/_internal/server/features/checkout/actions.d.ts +15 -0
  9. package/dist/_internal/server/features/checkout/actions.js +245 -182
  10. package/dist/_internal/server/features/maintenance/cloud-logs-data.d.ts +50 -0
  11. package/dist/_internal/server/features/maintenance/cloud-logs-data.js +152 -0
  12. package/dist/_internal/server/functions/scheduled.d.ts +2 -1
  13. package/dist/_internal/server/functions/scheduled.js +9 -1
  14. package/dist/_internal/server/jobs/core/jobRunners.js +10 -0
  15. package/dist/_internal/server/jobs/core/newsletterExport.d.ts +15 -0
  16. package/dist/_internal/server/jobs/core/newsletterExport.js +43 -0
  17. package/dist/_internal/server/jobs/core/onOrderCreate.d.ts +4 -12
  18. package/dist/_internal/server/jobs/core/onOrderCreate.js +3 -3
  19. package/dist/_internal/server/jobs/core/onOrderStatusChange.d.ts +2 -0
  20. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +1 -0
  21. package/dist/_internal/server/jobs/core/onProductWrite.js +14 -2
  22. package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +1 -0
  23. package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +1 -0
  24. package/dist/_internal/server/jobs/core/revenueRollup.d.ts +13 -0
  25. package/dist/_internal/server/jobs/core/revenueRollup.js +22 -0
  26. package/dist/_internal/server/jobs/core/whatsappNotify.d.ts +35 -0
  27. package/dist/_internal/server/jobs/core/whatsappNotify.js +82 -0
  28. package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
  29. package/dist/_internal/server/jobs/handlers/index.js +1 -0
  30. package/dist/_internal/server/jobs/handlers/revenueRollup.d.ts +2 -0
  31. package/dist/_internal/server/jobs/handlers/revenueRollup.js +2 -0
  32. package/dist/_internal/shared/features/auctions/config.d.ts +1 -1
  33. package/dist/_internal/shared/features/auctions/config.js +1 -1
  34. package/dist/_internal/shared/features/auctions/schema.js +1 -1
  35. package/dist/_internal/shared/features/cart/schema.js +2 -2
  36. package/dist/_internal/shared/features/checkout/config.d.ts +7 -0
  37. package/dist/_internal/shared/features/checkout/config.js +7 -0
  38. package/dist/_internal/shared/features/events/schema.js +1 -1
  39. package/dist/_internal/shared/features/orders/schema.js +1 -1
  40. package/dist/_internal/shared/features/products/schema.js +3 -3
  41. package/dist/_internal/shared/features/promotions/schema.js +3 -3
  42. package/dist/_internal/shared/fees/calculator.d.ts +32 -7
  43. package/dist/_internal/shared/fees/calculator.js +25 -0
  44. package/dist/client.d.ts +4 -4
  45. package/dist/client.js +4 -2
  46. package/dist/constants/api-endpoints.d.ts +9 -6
  47. package/dist/constants/api-endpoints.js +3 -2
  48. package/dist/contracts/client-payment-gateway.d.ts +1 -2
  49. package/dist/features/about/components/AboutView.d.ts +6 -16
  50. package/dist/features/about/components/AboutView.js +3 -3
  51. package/dist/features/about/components/FeesView.js +18 -0
  52. package/dist/features/about/index.d.ts +2 -1
  53. package/dist/features/about/schemas/firestore.d.ts +47 -0
  54. package/dist/features/about/schemas/firestore.js +6 -0
  55. package/dist/features/about/schemas/index.d.ts +210 -0
  56. package/dist/features/about/schemas/index.js +45 -0
  57. package/dist/features/account/hooks/useProfile.js +3 -0
  58. package/dist/features/admin/actions/notification-actions.d.ts +4 -1
  59. package/dist/features/admin/actions/notification-actions.js +56 -10
  60. package/dist/features/admin/components/AdminAdsView.js +1 -1
  61. package/dist/features/admin/components/AdminCarouselGroupEditorView.d.ts +6 -0
  62. package/dist/features/admin/components/AdminCarouselGroupEditorView.js +50 -0
  63. package/dist/features/admin/components/AdminCartsView.js +16 -3
  64. package/dist/features/admin/components/AdminCouponEditorView.js +2 -2
  65. package/dist/features/admin/components/AdminCouponsView.js +14 -4
  66. package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -42
  67. package/dist/features/admin/components/AdminMediaView.js +1 -1
  68. package/dist/features/admin/components/AdminNewsletterView.js +42 -11
  69. package/dist/features/admin/components/AdminNotificationsView.js +31 -19
  70. package/dist/features/admin/components/AdminOrdersView.js +7 -0
  71. package/dist/features/admin/components/AdminPayoutsView.js +18 -3
  72. package/dist/features/admin/components/AdminProductsView.js +17 -2
  73. package/dist/features/admin/components/AdminReviewsView.js +16 -2
  74. package/dist/features/admin/components/AdminScammersView.js +7 -0
  75. package/dist/features/admin/components/AdminSectionsView.js +4 -0
  76. package/dist/features/admin/components/AdminSiteConfigGuideView.js +1 -1
  77. package/dist/features/admin/components/AdminSiteSettingsView.js +127 -8
  78. package/dist/features/admin/components/AdminStoreEditorView.d.ts +2 -1
  79. package/dist/features/admin/components/AdminStoreEditorView.js +4 -4
  80. package/dist/features/admin/components/AdminStoresView.js +1 -1
  81. package/dist/features/admin/components/AdminSupportTicketDetailView.js +23 -5
  82. package/dist/features/admin/components/AdminSupportTicketsView.js +20 -2
  83. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +4 -1
  84. package/dist/features/admin/components/AdminTesterChecklistView.js +8 -0
  85. package/dist/features/admin/components/index.d.ts +2 -0
  86. package/dist/features/admin/components/index.js +1 -0
  87. package/dist/features/admin/constants/filter-tabs.d.ts +55 -41
  88. package/dist/features/admin/constants/filter-tabs.js +55 -27
  89. package/dist/features/admin/repository/analytics-rollup.repository.d.ts +25 -0
  90. package/dist/features/admin/repository/analytics-rollup.repository.js +31 -0
  91. package/dist/features/admin/repository/site-settings.repository.js +8 -1
  92. package/dist/features/admin/schemas/firestore.d.ts +46 -0
  93. package/dist/features/admin/schemas/firestore.js +62 -24
  94. package/dist/features/auctions/actions/bid-actions.js +1 -1
  95. package/dist/features/auctions/components/AuctionDetailPageView.js +2 -2
  96. package/dist/features/auctions/components/AuctionsListView.js +8 -1
  97. package/dist/features/auth/components/LoginForm.js +2 -2
  98. package/dist/features/auth/components/RegisterForm.js +2 -2
  99. package/dist/features/auth/permissions/constants.d.ts +16 -0
  100. package/dist/features/auth/permissions/constants.js +53 -0
  101. package/dist/features/auth/schemas/firestore.js +1 -0
  102. package/dist/features/blog/components/BlogFilters.js +1 -1
  103. package/dist/features/cart/schemas/firestore.d.ts +1 -1
  104. package/dist/features/categories/schemas/firestore.d.ts +1 -1
  105. package/dist/features/consultation/components/ConsultationForm.js +1 -1
  106. package/dist/features/events/components/EventFilters.js +2 -0
  107. package/dist/features/homepage/components/WelcomeSection.js +2 -2
  108. package/dist/features/layout/BackToTop.d.ts +9 -5
  109. package/dist/features/layout/BackToTop.js +17 -21
  110. package/dist/features/layout/TitleBarLayout.d.ts +2 -2
  111. package/dist/features/layout/TitleBarLayout.js +4 -4
  112. package/dist/features/media/AvatarUpload.js +7 -3
  113. package/dist/features/media/MediaVideo.js +1 -1
  114. package/dist/features/media/finalize.d.ts +9 -13
  115. package/dist/features/media/finalize.js +23 -74
  116. package/dist/features/media/server.d.ts +1 -1
  117. package/dist/features/media/server.js +1 -1
  118. package/dist/features/orders/actions/refund-actions.js +1 -0
  119. package/dist/features/orders/hooks/useOrders.js +16 -4
  120. package/dist/features/orders/schemas/firestore.d.ts +19 -5
  121. package/dist/features/payments/schemas/firestore.d.ts +2 -2
  122. package/dist/features/pre-orders/components/PreOrdersListView.js +7 -0
  123. package/dist/features/products/components/ArtStickersListView.js +5 -0
  124. package/dist/features/products/components/ProductDetailPageView.d.ts +7 -1
  125. package/dist/features/products/components/ProductForm.js +14 -1
  126. package/dist/features/products/components/ProductsIndexPageView.js +7 -0
  127. package/dist/features/products/constants/action-defs.d.ts +29 -3
  128. package/dist/features/products/constants/action-defs.js +77 -1
  129. package/dist/features/products/schemas/firestore.d.ts +1 -1
  130. package/dist/features/products/schemas/product-templates.d.ts +1 -1
  131. package/dist/features/products/types/index.d.ts +4 -0
  132. package/dist/features/scams/schemas/index.js +2 -2
  133. package/dist/features/search/components/Search.js +3 -3
  134. package/dist/features/seller/components/SellerAuctionsView.js +27 -2
  135. package/dist/features/seller/components/SellerOrdersView.js +2 -2
  136. package/dist/features/seller/components/SellerPayoutsView.js +24 -10
  137. package/dist/features/seller/components/SellerPreOrdersView.js +12 -4
  138. package/dist/features/seller/components/SellerPrizeDrawsView.js +23 -5
  139. package/dist/features/seller/components/SellerProductShell.d.ts +2 -0
  140. package/dist/features/seller/components/SellerProductShell.js +1 -1
  141. package/dist/features/seller/components/SellerProductsView.js +8 -6
  142. package/dist/features/seller/components/SellerReviewsView.js +27 -6
  143. package/dist/features/seller/components/index.d.ts +0 -2
  144. package/dist/features/seller/components/index.js +0 -1
  145. package/dist/features/stores/components/StoreListingsGuideView.js +2 -1
  146. package/dist/features/stores/components/StoreProductsView.js +1 -1
  147. package/dist/features/stores/schemas/firestore.d.ts +11 -0
  148. package/dist/features/stores/schemas/firestore.js +5 -0
  149. package/dist/features/stores/schemas/index.d.ts +2 -2
  150. package/dist/features/tester/actions/checklist-item-actions.d.ts +6 -0
  151. package/dist/features/tester/actions/checklist-item-actions.js +2 -0
  152. package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +13 -2
  153. package/dist/features/tester/components/AdminTesterFeedbackListView.js +2 -1
  154. package/dist/features/tester/components/AdminTesterFeedbackReportView.js +9 -5
  155. package/dist/features/tester/components/TesterHubView.js +34 -21
  156. package/dist/features/tester/repository/tester-checklist-item.repository.js +1 -0
  157. package/dist/features/tester/repository/tester-checklist-response.repository.d.ts +18 -4
  158. package/dist/features/tester/repository/tester-checklist-response.repository.js +43 -8
  159. package/dist/features/tester/schemas/firestore.d.ts +8 -3
  160. package/dist/features/tester/schemas/firestore.js +6 -0
  161. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +21 -9
  162. package/dist/features/tester/utils/phases.d.ts +31 -0
  163. package/dist/features/tester/utils/phases.js +46 -0
  164. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +1 -1
  165. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +10 -1
  166. package/dist/features/whatsapp-bot/helpers/whatsapp.js +47 -0
  167. package/dist/features/whatsapp-bot/types/index.d.ts +20 -1
  168. package/dist/features/wishlist/types/index.d.ts +3 -0
  169. package/dist/index.d.ts +15 -6
  170. package/dist/index.js +19 -9
  171. package/dist/next/components/NotFoundView.js +2 -1
  172. package/dist/next/routing/route-map.d.ts +6 -12
  173. package/dist/next/routing/route-map.js +3 -4
  174. package/dist/providers/db-firebase/admin.d.ts +1 -0
  175. package/dist/providers/db-firebase/admin.js +1 -1
  176. package/dist/repositories/index.d.ts +2 -0
  177. package/dist/repositories/index.js +1 -0
  178. package/dist/schemas/registry.d.ts +2 -2
  179. package/dist/seed/addresses-seed-data.js +18 -18
  180. package/dist/seed/bids-seed-data.js +4 -4
  181. package/dist/seed/blog-posts-seed-data.js +82 -82
  182. package/dist/seed/carousel-slides-seed-data.js +14 -10
  183. package/dist/seed/carousels-seed-data.js +3 -3
  184. package/dist/seed/cart-seed-data.js +92 -92
  185. package/dist/seed/claimed-coupons-seed-data.js +10 -10
  186. package/dist/seed/conversations-seed-data.js +75 -75
  187. package/dist/seed/coupon-usage-seed-data.js +12 -12
  188. package/dist/seed/coupons-seed-data.js +41 -41
  189. package/dist/seed/events-seed-data.js +105 -105
  190. package/dist/seed/grouped-listings-seed-data.d.ts +2 -137
  191. package/dist/seed/grouped-listings-seed-data.js +79 -143
  192. package/dist/seed/history-seed-data.js +38 -38
  193. package/dist/seed/homepage-sections-seed-data.js +9 -9
  194. package/dist/seed/notifications-seed-data.js +56 -56
  195. package/dist/seed/offers-seed-data.js +91 -91
  196. package/dist/seed/orders-seed-data.js +121 -106
  197. package/dist/seed/payouts-seed-data.js +42 -42
  198. package/dist/seed/products-auctions-seed-data.js +10 -2
  199. package/dist/seed/products-standard-seed-data.js +40 -8
  200. package/dist/seed/reviews-seed-data.js +42 -23
  201. package/dist/seed/scammers-seed-data.js +22 -22
  202. package/dist/seed/sessions-seed-data.js +7 -7
  203. package/dist/seed/shipments-seed-data.js +10 -10
  204. package/dist/seed/site-settings-seed-data.js +89 -0
  205. package/dist/seed/store-addresses-seed-data.js +2 -2
  206. package/dist/seed/store-extensions-seed-data.js +93 -93
  207. package/dist/seed/stores-seed-data.js +2 -0
  208. package/dist/seed/support-tickets-seed-data.js +47 -47
  209. package/dist/seed/users-seed-data.js +55 -89
  210. package/dist/seed/wishlists-seed-data.js +22 -22
  211. package/dist/server.d.ts +4 -3
  212. package/dist/server.js +7 -7
  213. package/dist/styles.css +1 -1
  214. package/dist/tailwind-utilities.css +1 -1
  215. package/dist/ui/components/PageLoader.js +8 -3
  216. package/dist/ui/components/Select.d.ts +8 -1
  217. package/dist/ui/components/Select.js +2 -2
  218. package/dist/ui/components/SiteMark.d.ts +23 -0
  219. package/dist/ui/components/SiteMark.js +76 -0
  220. package/dist/ui/index.d.ts +2 -0
  221. package/dist/ui/index.js +1 -0
  222. package/dist/validation/schemas.d.ts +0 -2
  223. package/dist/validation/schemas.js +0 -2
  224. package/package.json +1 -1
  225. package/scripts/seed-cli.mjs +17 -15
@@ -1,5 +1,5 @@
1
1
  /*
2
- * WHY: Seeds 10 YGO-themed events covering all event types (poll, survey, sale, raffle, spin_wheel, feedback, offer, lottery).
2
+ * WHY: Seeds 10 Beyblade-themed events covering all event types (poll, survey, sale, raffle, spin_wheel, feedback, offer, lottery).
3
3
  * WHAT: 2 upcoming + 4 active + 2 ended + 2 lottery (1 active, 1 draft). Includes raffle (open + drawn), spin wheel, poll, survey, feedback, sale, offer.
4
4
  *
5
5
  * EXPORTS:
@@ -19,25 +19,25 @@ const NOW = new Date();
19
19
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
20
20
  const daysAhead = (n) => new Date(NOW.getTime() + n * 86400000);
21
21
  export const eventsSeedData = [
22
- // ── 1. ACTIVE — Poll: Favourite Duelist Season 1 ──────────────────────────
22
+ // ── 1. ACTIVE — Poll: Favourite Blader Original Series ────────────────────
23
23
  {
24
- id: "event-favourite-duelist-poll",
25
- slug: "favourite-duelist-poll",
24
+ id: "event-favourite-blader-poll",
25
+ slug: "favourite-blader-poll",
26
26
  type: EVENT_FIELDS.TYPE_VALUES.POLL,
27
- title: "Vote: Best Duelist of Duel Monsters Season 1",
28
- description: "Who is the greatest duelist of the original Duel Monsters season? Cast your vote and see real-time results!",
27
+ title: "Vote: Best Blader of the Original Beyblade Series",
28
+ description: `<p>Who is the greatest blader of the original 1999 series? Cast your vote and see real-time results!</p><img src="${seedExtMedia("https://picsum.photos/seed/event-content-favourite-blader-lineup-20260101/900/500")}" alt="Original series blader lineup" />`,
29
29
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
30
30
  startsAt: daysAgo(5),
31
31
  endsAt: daysAhead(10),
32
- coverImage: { type: "image", url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"), alt: "Dark Magician Yugi's ace" },
33
- tags: ["poll", "duel-monsters", "season-1"],
32
+ coverImage: { type: "image", url: seedExtMedia("https://picsum.photos/seed/event-cover-favourite-blader-poll-20260101/1200/600"), alt: "Original series Beyblade lineup" },
33
+ tags: ["poll", "original-series", "season-1"],
34
34
  pollConfig: {
35
35
  options: [
36
- { id: "yugi", label: "Yugi Muto" },
37
- { id: "kaiba", label: "Seto Kaiba" },
38
- { id: "joey", label: "Joey Wheeler" },
39
- { id: "pegasus", label: "Maximillion Pegasus" },
40
- { id: "bakura", label: "Yami Bakura" },
36
+ { id: "tyson", label: "Mock User 6" },
37
+ { id: "kai", label: "Kai Hiwatari" },
38
+ { id: "max", label: "Max Tate" },
39
+ { id: "rei", label: "Rei Kon" },
40
+ { id: "kenny", label: "Kenny (Chief)" },
41
41
  ],
42
42
  allowMultiSelect: false,
43
43
  allowComment: false,
@@ -48,18 +48,18 @@ export const eventsSeedData = [
48
48
  createdAt: daysAgo(7),
49
49
  updatedAt: daysAgo(1),
50
50
  },
51
- // ── 2. ACTIVE — Survey: Card Condition ───────────────────────────────────
51
+ // ── 2. ACTIVE — Survey: Beyblade Storage ─────────────────────────────────
52
52
  {
53
- id: "event-card-condition-survey",
54
- slug: "card-condition-survey",
53
+ id: "event-beyblade-storage-survey",
54
+ slug: "beyblade-storage-survey",
55
55
  type: EVENT_FIELDS.TYPE_VALUES.SURVEY,
56
- title: "How Do You Store Your Cards?",
57
- description: "Help us understand how Indian YGO collectors protect their cards. Your responses help us recommend better storage solutions.",
56
+ title: "How Do You Store Your Beyblades?",
57
+ description: "Help us understand how Indian bladers protect their collections. Your responses help us recommend better storage solutions.",
58
58
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
59
59
  startsAt: daysAgo(3),
60
60
  endsAt: daysAhead(14),
61
- coverImage: { type: "image", url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"), alt: "Blue-Eyes White Dragon" },
62
- tags: ["survey", "card-storage", "community"],
61
+ coverImage: { type: "image", url: seedExtMedia("https://picsum.photos/seed/event-cover-storage-survey-20260101/1200/600"), alt: "Beyblade storage case" },
62
+ tags: ["survey", "beyblade-storage", "community"],
63
63
  surveyConfig: {
64
64
  requireLogin: true,
65
65
  maxEntriesPerUser: 1,
@@ -67,9 +67,9 @@ export const eventsSeedData = [
67
67
  hasPointSystem: false,
68
68
  entryReviewRequired: false,
69
69
  formFields: [
70
- { id: "q1", label: "What sleeve type do you use?", type: "radio", options: ["Penny sleeves", "Perfect fit", "Character art", "No sleeves"], required: true },
71
- { id: "q2", label: "How do you store your collection?", type: "radio", options: ["Binder", "Deck box", "Top loaders", "Shoebox"], required: true },
72
- { id: "q3", label: "Do you use humidity control?", type: "radio", options: ["Yes — silica gel", "Yes — climate control", "No"], required: true },
70
+ { id: "q1", label: "What storage case do you use?", type: "radio", options: ["Hard case", "Soft pouch", "Original box", "No case"], required: true },
71
+ { id: "q2", label: "How do you store your launchers?", type: "radio", options: ["Wall rack", "Drawer organizer", "Original box", "Loose"], required: true },
72
+ { id: "q3", label: "Do you keep tips separately?", type: "radio", options: ["Yes — labeled bags", "Yes — compartment box", "No"], required: true },
73
73
  ],
74
74
  },
75
75
  stats: { totalEntries: 89, approvedEntries: 89, flaggedEntries: 0 },
@@ -77,21 +77,21 @@ export const eventsSeedData = [
77
77
  createdAt: daysAgo(5),
78
78
  updatedAt: daysAgo(1),
79
79
  },
80
- // ── 3. ACTIVE — Sale: Duelist Kingdom Clearance ───────────────────────────
80
+ // ── 3. ACTIVE — Sale: Original Series Clearance ──────────────────────────
81
81
  {
82
- id: "event-duelist-kingdom-clearance",
83
- slug: "duelist-kingdom-clearance",
82
+ id: "event-original-series-clearance",
83
+ slug: "original-series-clearance",
84
84
  type: EVENT_FIELDS.TYPE_VALUES.SALE,
85
- title: "Duelist Kingdom Clearance Sale — 20% Off",
86
- description: "20% off all singles from the Duel Monsters era! Use code TOURNAMENT2026 at checkout. Limited time only.",
85
+ title: "Original Series Clearance Sale — 20% Off",
86
+ description: "20% off all beyblades from the original 1999-2003 series! Use code TOURNAMENT2026 at checkout. Limited time only.",
87
87
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
88
88
  startsAt: daysAgo(2),
89
89
  endsAt: daysAhead(7),
90
- coverImage: { type: "image", url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/55144522.jpg"), alt: "Pot of Greed" },
91
- tags: ["sale", "clearance", "duel-monsters", "singles"],
90
+ coverImage: { type: "image", url: seedExtMedia("https://picsum.photos/seed/event-cover-original-clearance-20260101/1200/600"), alt: "Original series Beyblade clearance sale" },
91
+ tags: ["sale", "clearance", "original-series", "singles"],
92
92
  saleConfig: {
93
93
  discountPercent: 20,
94
- applicableCategories: ["category-monster-cards", "category-spell-cards", "category-trap-cards", "category-extra-deck-cards"],
94
+ applicableCategories: ["category-beyblade-original"],
95
95
  couponCode: "TOURNAMENT2026",
96
96
  },
97
97
  stats: { totalEntries: 0, approvedEntries: 0, flaggedEntries: 0 },
@@ -99,43 +99,43 @@ export const eventsSeedData = [
99
99
  createdAt: daysAgo(4),
100
100
  updatedAt: daysAgo(2),
101
101
  },
102
- // ── 4. ACTIVE — Raffle: Win PSA 10 Dark Magician Girl ────────────────────
102
+ // ── 4. ACTIVE — Raffle: Win Beyblade Burst Regalia Genesis ───────────────
103
103
  {
104
- id: "event-win-psa10-dark-magician-girl",
105
- slug: "win-psa10-dark-magician-girl",
104
+ id: "event-win-burst-regalia-genesis",
105
+ slug: "win-burst-regalia-genesis",
106
106
  type: EVENT_FIELDS.TYPE_VALUES.RAFFLE,
107
- title: "Win PSA 10 Dark Magician Girl",
108
- description: "Enter for a chance to win a PSA 10 Dark Magician Girl (MFC 1st Edition)! One lucky duelist takes home the ultimate card.",
107
+ title: "Win a Sealed Beyblade Burst Regalia Genesis",
108
+ description: `<p>Enter for a chance to win a sealed Beyblade Burst Regalia Genesis! One lucky blader takes home the ultimate spinner.</p><img src="${seedExtMedia("https://picsum.photos/seed/event-content-regalia-genesis-prize-20260101/900/500")}" alt="Sealed Beyblade Burst Regalia Genesis prize box" />`,
109
109
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
110
110
  startsAt: daysAgo(3),
111
111
  endsAt: daysAhead(14),
112
- coverImage: { type: "image", url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/38033121.jpg"), alt: "Dark Magician Girl" },
113
- tags: ["raffle", "psa-10", "dark-magician-girl", "giveaway"],
112
+ coverImage: { type: "image", url: seedExtMedia("https://picsum.photos/seed/event-cover-regalia-genesis-raffle-20260101/1200/600"), alt: "Beyblade Burst Regalia Genesis" },
113
+ tags: ["raffle", "burst", "regalia-genesis", "giveaway"],
114
114
  hasRaffle: true,
115
115
  raffleType: "open_raffle",
116
- rafflePrize: "PSA 10 Dark Magician Girl MFC 1st Edition (Cert: PSA-YGO-998877)",
116
+ rafflePrize: "Sealed Beyblade Burst Regalia Genesis (authenticity cert: LIR-BEY-998877)",
117
117
  raffleEntryCount: 247,
118
118
  stats: { totalEntries: 247, approvedEntries: 247, flaggedEntries: 0 },
119
119
  createdBy: "user-admin-letitrip",
120
120
  createdAt: daysAgo(5),
121
121
  updatedAt: daysAgo(1),
122
122
  },
123
- // ── 5. ACTIVE — Spin Wheel: Daily Card Pull ──────────────────────────────
123
+ // ── 5. ACTIVE — Spin Wheel: Daily Beyblade Pull ──────────────────────────
124
124
  {
125
- id: "event-daily-card-pull-wheel",
126
- slug: "daily-card-pull-wheel",
125
+ id: "event-daily-beyblade-pull-wheel",
126
+ slug: "daily-beyblade-pull-wheel",
127
127
  type: EVENT_FIELDS.TYPE_VALUES.SPIN_WHEEL,
128
- title: "Daily Card Pull! Spin for a Prize",
129
- description: "Spin the wheel once per day for a chance to win discount coupons and free card sleeves!",
128
+ title: "Daily Beyblade Pull! Spin for a Prize",
129
+ description: "Spin the wheel once per day for a chance to win discount coupons and free launcher grips!",
130
130
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
131
131
  startsAt: daysAgo(7),
132
132
  endsAt: daysAhead(23),
133
- coverImage: { type: "image", url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/40640057.jpg"), alt: "Kuriboh" },
133
+ coverImage: { type: "image", url: seedExtMedia("https://picsum.photos/seed/event-cover-daily-pull-wheel-20260101/1200/600"), alt: "Spin wheel prize wheel" },
134
134
  tags: ["spin-wheel", "daily", "prizes", "coupons"],
135
135
  spinPrizes: [
136
- { id: "spin-10pct", label: "10% Off Coupon", couponId: "coupon-yugi10", weight: 15, isActive: true },
136
+ { id: "spin-10pct", label: "10% Off Coupon", couponId: "coupon-rehan10", weight: 15, isActive: true },
137
137
  { id: "spin-5pct", label: "5% Off Coupon", weight: 25, isActive: true },
138
- { id: "spin-sleeve", label: "Free Card Sleeve Pack", weight: 10, isActive: true },
138
+ { id: "spin-grip", label: "Free Launcher Grip Tape", weight: 10, isActive: true },
139
139
  { id: "spin-try-again", label: "Try Again Tomorrow!", weight: 50, isActive: true },
140
140
  ],
141
141
  spinMaxPerUser: 1,
@@ -146,21 +146,21 @@ export const eventsSeedData = [
146
146
  createdAt: daysAgo(8),
147
147
  updatedAt: daysAgo(1),
148
148
  },
149
- // ── 6. ACTIVE — Feedback: GX Era ─────────────────────────────────────────
149
+ // ── 6. ACTIVE — Feedback: Metal Fight Era ────────────────────────────────
150
150
  {
151
- id: "event-gx-era-feedback",
152
- slug: "gx-era-feedback",
151
+ id: "event-metal-fight-era-feedback",
152
+ slug: "metal-fight-era-feedback",
153
153
  type: EVENT_FIELDS.TYPE_VALUES.FEEDBACK,
154
- title: "Tell Us About GX Era Cards on LetItRip",
155
- description: "Rate your experience buying GX era cards on LetItRip. Your feedback helps us improve the marketplace.",
154
+ title: "Tell Us About Metal Fight Era Beyblades on LetItRip",
155
+ description: "Rate your experience buying Metal Fight era beyblades on LetItRip. Your feedback helps us improve the marketplace.",
156
156
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
157
157
  startsAt: daysAgo(10),
158
158
  endsAt: daysAhead(20),
159
- coverImage: { type: "image", url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89943723.jpg"), alt: "Elemental HERO Neos" },
160
- tags: ["feedback", "gx-era", "community"],
159
+ coverImage: { type: "image", url: seedExtMedia("https://picsum.photos/seed/event-cover-metal-fight-feedback-20260101/1200/600"), alt: "Metal Fight era Beyblade lineup" },
160
+ tags: ["feedback", "metal-fight", "community"],
161
161
  feedbackConfig: {
162
162
  formFields: [
163
- { id: "rating", label: "How would you rate the GX era selection?", type: "rating", required: true },
163
+ { id: "rating", label: "How would you rate the Metal Fight era selection?", type: "rating", required: true },
164
164
  { id: "comment", label: "Any additional feedback?", type: "textarea", required: false },
165
165
  ],
166
166
  anonymous: false,
@@ -170,46 +170,46 @@ export const eventsSeedData = [
170
170
  createdAt: daysAgo(12),
171
171
  updatedAt: daysAgo(2),
172
172
  },
173
- // ── 7. UPCOMING — Offer: Buy 3 Get 1 Free Singles ────────────────────────
173
+ // ── 7. UPCOMING — Offer: Buy 3 Get 1 Free Beyblades ──────────────────────
174
174
  {
175
- id: "event-buy-3-get-1-singles",
176
- slug: "buy-3-get-1-singles",
175
+ id: "event-buy-3-get-1-beyblades",
176
+ slug: "buy-3-get-1-beyblades",
177
177
  type: EVENT_FIELDS.TYPE_VALUES.OFFER,
178
- title: "Buy 3 Singles, Get 1 Free",
179
- description: "Coming soon! Buy any 3 single cards and get the cheapest one free. Applies to all stores on LetItRip.",
178
+ title: "Buy 3 Beyblades, Get 1 Free",
179
+ description: "Coming soon! Buy any 3 beyblades and get the cheapest one free. Applies to all stores on LetItRip.",
180
180
  status: EVENT_FIELDS.STATUS_VALUES.DRAFT,
181
181
  startsAt: daysAhead(5),
182
182
  endsAt: daysAhead(20),
183
- coverImage: { type: "image", url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/83764718.jpg"), alt: "Monster Reborn" },
183
+ coverImage: { type: "image", url: seedExtMedia("https://picsum.photos/seed/event-cover-buy3get1-20260101/1200/600"), alt: "Buy 3 get 1 free Beyblade offer" },
184
184
  tags: ["offer", "buy-3-get-1", "singles", "upcoming"],
185
185
  offerConfig: {
186
186
  couponId: "coupon-buy3get1",
187
187
  displayCode: "BUY3GET1",
188
- bannerText: "Buy any 3 single cards and get the cheapest one free!",
188
+ bannerText: "Buy any 3 beyblades and get the cheapest one free!",
189
189
  },
190
190
  stats: { totalEntries: 0, approvedEntries: 0, flaggedEntries: 0 },
191
191
  createdBy: "user-admin-letitrip",
192
192
  createdAt: daysAgo(2),
193
193
  updatedAt: daysAgo(1),
194
194
  },
195
- // ── 8. ENDED — Raffle: Won Complete LOB 1st Ed Set (drawn) ───────────────
195
+ // ── 8. ENDED — Raffle: Won Complete Original Series Set (drawn) ─────────
196
196
  {
197
- id: "event-won-complete-lob-raffle",
198
- slug: "won-complete-lob-raffle",
197
+ id: "event-won-original-set-raffle",
198
+ slug: "won-original-set-raffle",
199
199
  type: EVENT_FIELDS.TYPE_VALUES.RAFFLE,
200
- title: "Win Complete LOB 1st Edition Set",
201
- description: "The grand raffle has concluded! One lucky duelist won a complete Legend of Blue Eyes 1st Edition set.",
200
+ title: "Win Complete Original Series Collectors Set",
201
+ description: `<p>The grand raffle has concluded! One lucky blader won a complete original-series collectors set.</p><img src="${seedExtMedia("https://picsum.photos/seed/event-content-original-set-winner-20260101/900/500")}" alt="Winner unboxing the complete original-series collectors set" />`,
202
202
  status: EVENT_FIELDS.STATUS_VALUES.ENDED,
203
203
  startsAt: daysAgo(30),
204
204
  endsAt: daysAgo(5),
205
- coverImage: { type: "image", url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"), alt: "Blue-Eyes White Dragon" },
206
- tags: ["raffle", "lob", "1st-edition", "ended", "winner"],
205
+ coverImage: { type: "image", url: seedExtMedia("https://picsum.photos/seed/event-cover-original-set-raffle-20260101/1200/600"), alt: "Complete original-series collectors set" },
206
+ tags: ["raffle", "original-series", "ended", "winner"],
207
207
  hasRaffle: true,
208
208
  raffleType: "open_raffle",
209
- rafflePrize: "Complete LOB 1st Edition Set — 126 cards, all NM or better",
209
+ rafflePrize: "Complete Original Series Collectors Set — 5 beyblades + stadium, all sealed or NM",
210
210
  raffleWinnerUserId: "user-yugi-muto",
211
- raffleWinnerDisplayName: "Yugi Muto",
212
- raffleWinnerEntryId: "entry-lob-raffle-yugi-001",
211
+ raffleWinnerDisplayName: "Mock User 3",
212
+ raffleWinnerEntryId: "entry-original-raffle-yugi-001",
213
213
  raffleTriggeredAt: daysAgo(5),
214
214
  raffleEntryCount: 1892,
215
215
  stats: { totalEntries: 1892, approvedEntries: 1892, flaggedEntries: 0 },
@@ -227,7 +227,7 @@ export const eventsSeedData = [
227
227
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
228
228
  startsAt: daysAgo(2),
229
229
  endsAt: daysAhead(5),
230
- coverImage: { type: "image", url: seedExtMedia("https://upload.wikimedia.org/wikipedia/commons/9/98/International_Pok%C3%A9mon_logo.svg"), alt: "Pok\u00e9mon Number Draw" },
230
+ coverImage: { type: "image", url: seedExtMedia("https://upload.wikimedia.org/wikipedia/commons/9/98/International_Pok%C3%A9mon_logo.svg"), alt: "Pokémon Number Draw" },
231
231
  tags: ["lottery", "pokemon", "prizes"],
232
232
  lotteryConfig: {
233
233
  totalSlots: 25,
@@ -268,18 +268,18 @@ export const eventsSeedData = [
268
268
  createdAt: daysAgo(3),
269
269
  updatedAt: daysAgo(0),
270
270
  },
271
- // ── 10. DRAFT — Lottery: Yu-Gi-Oh! Slot Raffle ───────────────────────────
271
+ // ── 10. DRAFT — Lottery: Beyblade Slot Raffle ────────────────────────────
272
272
  {
273
- id: "event-yugioh-slot-raffle-draft",
274
- slug: "yugioh-slot-raffle-draft",
273
+ id: "event-beyblade-slot-raffle-draft",
274
+ slug: "beyblade-slot-raffle-draft",
275
275
  type: "lottery",
276
- title: "Yu-Gi-Oh! Slot Raffle — Coming Soon",
277
- description: "<p>10 rare YGO slots up for grabs. Details coming soon!</p>",
276
+ title: "Beyblade Slot Raffle — Coming Soon",
277
+ description: "<p>10 rare beyblade slots up for grabs. Details coming soon!</p>",
278
278
  status: EVENT_FIELDS.STATUS_VALUES.DRAFT,
279
279
  startsAt: daysAhead(7),
280
280
  endsAt: daysAhead(14),
281
- coverImage: { type: "image", url: seedExtMedia("https://upload.wikimedia.org/wikipedia/en/3/3d/Yu-Gi-Oh%21_Logo.png"), alt: "Yu-Gi-Oh! Slot Raffle" },
282
- tags: ["lottery", "yugioh", "prizes"],
281
+ coverImage: { type: "image", url: seedExtMedia("https://picsum.photos/seed/event-cover-beyblade-slot-raffle-20260101/1200/600"), alt: "Beyblade Slot Raffle" },
282
+ tags: ["lottery", "beyblade", "prizes"],
283
283
  lotteryConfig: {
284
284
  totalSlots: 10,
285
285
  pricingMode: "uniform",
@@ -303,64 +303,64 @@ export const eventsSeedData = [
303
303
  ];
304
304
  // ── Event Entries ────────────────────────────────────────────────────────────
305
305
  export const eventEntriesSeedData = [
306
- // Yugi entered the poll
306
+ // Rehan entered the poll
307
307
  {
308
308
  id: "entry-poll-yugi-001",
309
- eventId: "event-favourite-duelist-poll",
309
+ eventId: "event-favourite-blader-poll",
310
310
  userId: "user-yugi-muto",
311
- userDisplayName: "Yugi Muto",
312
- userEmail: "yugi@duelkingdom.in",
313
- pollVotes: ["yugi"],
311
+ userDisplayName: "Mock User 3",
312
+ userEmail: "rehan.sheikh@gmail.com",
313
+ pollVotes: ["tyson"],
314
314
  reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
315
315
  submittedAt: daysAgo(4),
316
316
  createdAt: daysAgo(4),
317
317
  },
318
- // Kaiba entered the poll
318
+ // Vivaan entered the poll
319
319
  {
320
320
  id: "entry-poll-kaiba-001",
321
- eventId: "event-favourite-duelist-poll",
321
+ eventId: "event-favourite-blader-poll",
322
322
  userId: "user-seto-kaiba",
323
- userDisplayName: "Seto Kaiba",
324
- userEmail: "kaiba@kaibalandmark.in",
325
- pollVotes: ["kaiba"],
323
+ userDisplayName: "Mock User 2",
324
+ userEmail: "vivaan.kapoor@gmail.com",
325
+ pollVotes: ["kai"],
326
326
  reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
327
327
  submittedAt: daysAgo(3),
328
328
  createdAt: daysAgo(3),
329
329
  },
330
- // Yugi entered the raffle (and won the LOB raffle)
330
+ // Rehan entered the raffle (and won the original-series raffle)
331
331
  {
332
- id: "entry-lob-raffle-yugi-001",
333
- eventId: "event-won-complete-lob-raffle",
332
+ id: "entry-original-raffle-yugi-001",
333
+ eventId: "event-won-original-set-raffle",
334
334
  userId: "user-yugi-muto",
335
- userDisplayName: "Yugi Muto",
336
- userEmail: "yugi@duelkingdom.in",
335
+ userDisplayName: "Mock User 3",
336
+ userEmail: "rehan.sheikh@gmail.com",
337
337
  raffleEligible: true,
338
338
  reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
339
339
  submittedAt: daysAgo(25),
340
340
  createdAt: daysAgo(25),
341
341
  },
342
- // Yugi entered the active raffle
342
+ // Rehan entered the active raffle
343
343
  {
344
- id: "entry-dmg-raffle-yugi-001",
345
- eventId: "event-win-psa10-dark-magician-girl",
344
+ id: "entry-regalia-raffle-yugi-001",
345
+ eventId: "event-win-burst-regalia-genesis",
346
346
  userId: "user-yugi-muto",
347
- userDisplayName: "Yugi Muto",
348
- userEmail: "yugi@duelkingdom.in",
347
+ userDisplayName: "Mock User 3",
348
+ userEmail: "rehan.sheikh@gmail.com",
349
349
  raffleEligible: true,
350
350
  reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
351
351
  submittedAt: daysAgo(2),
352
352
  createdAt: daysAgo(2),
353
353
  },
354
- // Kaiba spun the wheel
354
+ // Vivaan spun the wheel
355
355
  {
356
356
  id: "entry-spin-kaiba-001",
357
- eventId: "event-daily-card-pull-wheel",
357
+ eventId: "event-daily-beyblade-pull-wheel",
358
358
  userId: "user-seto-kaiba",
359
- userDisplayName: "Seto Kaiba",
360
- userEmail: "kaiba@kaibalandmark.in",
359
+ userDisplayName: "Mock User 2",
360
+ userEmail: "vivaan.kapoor@gmail.com",
361
361
  spinUsed: true,
362
362
  spinPrizeId: "spin-10pct",
363
- spinPrizeCouponCode: "YUGI10",
363
+ spinPrizeCouponCode: "REHAN10",
364
364
  spinWonAt: daysAgo(1),
365
365
  reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
366
366
  submittedAt: daysAgo(1),
@@ -1,137 +1,2 @@
1
- export declare const groupedListingsSeedData: {
2
- listingType: "standard";
3
- title?: string | undefined;
4
- description?: string | undefined;
5
- slug?: string | undefined;
6
- isTestData?: boolean | undefined;
7
- testDataExpiresAt?: Date | undefined;
8
- seoTitle?: string | undefined;
9
- seoDescription?: string | undefined;
10
- seoKeywords?: string[] | undefined;
11
- categorySlugs?: string[] | undefined;
12
- categoryNames?: string[] | undefined;
13
- category?: string | undefined;
14
- categoryName?: string | undefined;
15
- subcategory?: string | undefined;
16
- brand?: string | undefined;
17
- brandSlug?: string | undefined;
18
- price?: number | undefined;
19
- currency?: string | undefined;
20
- stockQuantity?: number | undefined;
21
- availableQuantity?: number | undefined;
22
- mainImage?: string | undefined;
23
- images?: string[] | undefined;
24
- video?: import("..").ProductVideoField | undefined;
25
- status?: import("..").ProductStatus | undefined;
26
- storeId?: string | undefined;
27
- storeName?: string | undefined;
28
- storeRating?: number | undefined;
29
- storeReviewCount?: number | undefined;
30
- featured?: boolean | undefined;
31
- tags?: string[] | undefined;
32
- specifications?: import("..").ProductSpecification[] | undefined;
33
- features?: string[] | undefined;
34
- shippingInfo?: string | undefined;
35
- returnPolicy?: string | undefined;
36
- condition?: "new" | "like_new" | "good" | "fair" | "poor" | "used" | "refurbished" | "broken" | "graded" | undefined;
37
- insurance?: boolean | undefined;
38
- insuranceCost?: number | undefined;
39
- shippingPaidBy?: "seller" | "buyer" | undefined;
40
- auctionEndDate?: Date | undefined;
41
- startingBid?: number | undefined;
42
- currentBid?: number | undefined;
43
- bidCount?: number | undefined;
44
- leadingBidderId?: string | undefined;
45
- reservePrice?: number | undefined;
46
- buyNowPrice?: number | undefined;
47
- minBidIncrement?: number | undefined;
48
- autoExtendable?: boolean | undefined;
49
- auctionExtensionMinutes?: number | undefined;
50
- auctionOriginalEndDate?: Date | undefined;
51
- auctionShippingPaidBy?: "seller" | "winner" | undefined;
52
- buyItNowPrice?: number | undefined;
53
- bidsHaveStarted?: boolean | undefined;
54
- grading?: import("../features/products").ProductGrading | undefined;
55
- card?: import("../features/products").ProductCardMetadata | undefined;
56
- classified?: import("../features/products").ProductClassifiedMeta | undefined;
57
- digitalCode?: import("../features/products").ProductDigitalCodeMeta | undefined;
58
- liveItem?: import("../features/products").ProductLiveItemMeta | undefined;
59
- catalogProductId?: string | undefined;
60
- preOrderDeliveryDate?: Date | undefined;
61
- preOrderDepositPercent?: number | undefined;
62
- preOrderDepositAmount?: number | undefined;
63
- preOrderMaxQuantity?: number | undefined;
64
- preOrderCurrentCount?: number | undefined;
65
- preOrderProductionStatus?: "upcoming" | "in_production" | "ready_to_ship" | undefined;
66
- preOrderCancellable?: boolean | undefined;
67
- preOrderClosed?: boolean | undefined;
68
- isPromoted?: boolean | undefined;
69
- isOnSale?: boolean | undefined;
70
- isSold?: boolean | undefined;
71
- allowShipBeforeEmiComplete?: boolean | undefined;
72
- gstRate?: 0 | 5 | 12 | 18 | 28 | undefined;
73
- hsnCode?: string | undefined;
74
- printMeta?: import("../features/products").ProductPrintMeta | undefined;
75
- promotionEndDate?: Date | undefined;
76
- pickupAddressId?: string | undefined;
77
- viewCount?: number | undefined;
78
- avgRating?: number | undefined;
79
- reviewCount?: number | undefined;
80
- bulkDiscounts?: {
81
- quantity: number;
82
- discountPercent: number;
83
- }[] | undefined;
84
- ingredients?: string[] | undefined;
85
- howToUse?: string[] | undefined;
86
- allowOffers?: boolean | undefined;
87
- minOfferPercent?: number | undefined;
88
- customFields?: import("../features/products").CustomField[] | undefined;
89
- customSections?: import("../features/products").CustomSection[] | undefined;
90
- sublistingCategoryId?: string | undefined;
91
- groupId?: string | undefined;
92
- isGroupParent?: boolean | undefined;
93
- groupParentSlug?: string | undefined;
94
- groupChildSlugs?: string[] | undefined;
95
- groupTitle?: string | undefined;
96
- groupIcon?: string | undefined;
97
- sublistingIcon?: string | undefined;
98
- maxPerUser?: number | undefined;
99
- partOfBundleIds?: string[] | undefined;
100
- partOfBundleTitles?: string[] | undefined;
101
- isPartOfBundle?: boolean | undefined;
102
- sourceShipmentId?: string | undefined;
103
- sourceShipmentLotId?: string | undefined;
104
- sourceShipmentItemId?: string | undefined;
105
- sourceCatalogueItemId?: string | undefined;
106
- sourceCatalogueOwnerId?: string | undefined;
107
- prizeDrawItems?: import("../features/products").PrizeDrawItem[] | undefined;
108
- pricePerEntry?: number | undefined;
109
- prizeMaxEntries?: number | undefined;
110
- prizeCurrentEntries?: number | undefined;
111
- prizeRevealWindowStart?: Date | undefined;
112
- prizeRevealWindowEnd?: Date | undefined;
113
- prizeRevealStatus?: "pending" | "open" | "closed" | undefined;
114
- prizeRevealDeadlineDays?: number | undefined;
115
- prizeGithubFileUrl?: string | undefined;
116
- prizeDrawMode?: "reveal" | "lottery" | undefined;
117
- lotteryConfig?: import("..").LotteryConfig | undefined;
118
- shipping?: {
119
- allowedProviderIds?: string[];
120
- overrides?: Array<{
121
- providerId: string;
122
- fee?: number;
123
- etaDaysMin?: number;
124
- etaDaysMax?: number;
125
- }>;
126
- } | undefined;
127
- physicalLocation?: {
128
- zone: string;
129
- shelf: string;
130
- bin: string;
131
- } | undefined;
132
- barcodeId?: string | undefined;
133
- searchTokens?: string[] | undefined;
134
- id?: string | undefined;
135
- createdAt?: Date | undefined;
136
- updatedAt?: Date | undefined;
137
- }[];
1
+ import type { GroupedListingDocument } from "../features/grouped/schemas/firestore";
2
+ export declare const groupedListingsSeedData: Partial<GroupedListingDocument>[];