@wix/himalaya-cli 0.1323.0 → 0.1325.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 (193) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/checkout/src/index.d.ts +6 -10
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/order-refs.d.ts +1 -0
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/purchase-fields.d.ts +1 -0
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/index.d.ts +9 -35
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/comments-v1/src/extensions.d.ts +79 -0
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/groups/src/extensions.d.ts +221 -14
  7. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/groups/src/index.d.ts +0 -2
  8. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/social-feed/src/index.d.ts +38 -21
  9. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/stores-v1/src/display.d.ts +1 -0
  10. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/checkout.mjs +30 -13
  11. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/iap-checkout.mjs +20 -2
  12. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +2890 -54
  13. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-comments.mjs +80 -0
  14. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-groups.mjs +45 -17
  15. package/dist/cli.mjs +5 -4
  16. package/fixtures/wix-canned.json +61 -6
  17. package/guides/iap-pricing.md +9 -0
  18. package/guides/iap-screen-adoption.md +77 -0
  19. package/guides/importable-sdks.md +2 -0
  20. package/guides/index.json +6 -0
  21. package/guides/release-notes.md +25 -0
  22. package/guides/sdk-reference.json +539 -32
  23. package/guides/wix-api-usage.md +5 -0
  24. package/package.json +2 -2
  25. package/templates/beauty-salon/config.ts +1 -1
  26. package/templates/beauty-salon/dev/index.ts +46 -18
  27. package/templates/beauty-salon/tier5-src/_shared/collection-contract.ts +1 -1
  28. package/templates/beauty-salon/tier5-src/_shared/collection-service.ts +3 -2
  29. package/templates/beauty-salon/tier5-src/_shared/himi-store-collection.ts +1 -1
  30. package/templates/beauty-salon/tier5-src/_shared/home-service.ts +2 -1
  31. package/templates/beauty-salon/tier5-src/_shared/iap-presentation.ts +53 -0
  32. package/templates/beauty-salon/tier5-src/_shared/iap-worker.ts +42 -0
  33. package/templates/beauty-salon/tier5-src/himi-branded-lite-cart/index.ts +48 -1
  34. package/templates/beauty-salon/tier5-src/himi-branded-lite-home/index.ts +16 -2
  35. package/templates/beauty-salon/tier5-src/himi-branded-lite-order/index.ts +24 -3
  36. package/templates/beauty-salon/tier5-src/himi-branded-lite-plans/index.ts +153 -64
  37. package/templates/beauty-salon/tier5-src/himi-store-product/index.ts +24 -3
  38. package/templates/beauty-salon/tier5-src/himi-store-saved/index.ts +8 -3
  39. package/templates/beauty-salon/tier5-src/himi-store-shop/index.ts +10 -0
  40. package/templates/beauty-salon/tier5-src/wix-spaces-plan-detail/index.ts +8 -3
  41. package/templates/beauty-salon-owner/tier5-src/_shared/collection-contract.ts +1 -1
  42. package/templates/beauty-salon-owner/tier5-src/_shared/collection-service.ts +3 -2
  43. package/templates/beauty-salon-owner/tier5-src/_shared/home-service.ts +2 -1
  44. package/templates/branded-lite/config.ts +1 -8
  45. package/templates/branded-lite/dev/index.ts +46 -134
  46. package/templates/branded-lite/himalaya.content.json +0 -3
  47. package/templates/branded-lite/tier5-src/_shared/collection-contract.ts +1 -1
  48. package/templates/branded-lite/tier5-src/_shared/collection-service.ts +3 -2
  49. package/templates/branded-lite/tier5-src/_shared/himi-store-collection.ts +1 -1
  50. package/templates/branded-lite/tier5-src/_shared/home-service.ts +2 -1
  51. package/templates/branded-lite/tier5-src/_shared/iap-presentation.ts +53 -0
  52. package/templates/branded-lite/tier5-src/himi-branded-lite-cart/index.ts +48 -1
  53. package/templates/branded-lite/tier5-src/himi-branded-lite-home/index.ts +16 -2
  54. package/templates/branded-lite/tier5-src/himi-branded-lite-order/index.ts +24 -3
  55. package/templates/branded-lite/tier5-src/himi-branded-lite-plans/index.ts +153 -64
  56. package/templates/branded-lite/tier5-src/himi-store-product/index.ts +24 -3
  57. package/templates/branded-lite/tier5-src/himi-store-saved/index.ts +8 -3
  58. package/templates/branded-lite/tier5-src/himi-store-shop/index.ts +10 -0
  59. package/templates/branded-lite/tier5-src/wix-spaces-plan-detail/index.ts +8 -3
  60. package/templates/community-club/config.ts +1 -8
  61. package/templates/community-club/dev/index.ts +3 -117
  62. package/templates/community-club/himalaya.content.json +0 -3
  63. package/templates/community-club/tier5-src/_shared/collection-contract.ts +1 -1
  64. package/templates/community-club/tier5-src/_shared/collection-service.ts +3 -2
  65. package/templates/community-club/tier5-src/_shared/home-service.ts +2 -1
  66. package/templates/community-club/tier5-src/_shared/iap-presentation.ts +53 -0
  67. package/templates/community-club/tier5-src/_shared/iap-worker.ts +42 -0
  68. package/templates/community-club/tier5-src/himi-branded-lite-home/index.ts +16 -2
  69. package/templates/community-club-owner/tier5-src/_shared/collection-contract.ts +1 -1
  70. package/templates/community-club-owner/tier5-src/_shared/collection-service.ts +3 -2
  71. package/templates/community-club-owner/tier5-src/_shared/home-service.ts +2 -1
  72. package/templates/events-meetups/config.ts +1 -8
  73. package/templates/events-meetups/dev/index.ts +3 -117
  74. package/templates/events-meetups/himalaya.content.json +0 -3
  75. package/templates/events-meetups/tier5-src/_shared/collection-contract.ts +1 -1
  76. package/templates/events-meetups/tier5-src/_shared/collection-service.ts +3 -2
  77. package/templates/events-meetups/tier5-src/_shared/home-service.ts +2 -1
  78. package/templates/events-meetups/tier5-src/_shared/iap-presentation.ts +53 -0
  79. package/templates/events-meetups/tier5-src/_shared/iap-worker.ts +42 -0
  80. package/templates/events-meetups/tier5-src/himi-branded-lite-home/index.ts +16 -2
  81. package/templates/events-meetups-owner/tier5-src/_shared/collection-contract.ts +1 -1
  82. package/templates/events-meetups-owner/tier5-src/_shared/collection-service.ts +3 -2
  83. package/templates/events-meetups-owner/tier5-src/_shared/home-service.ts +2 -1
  84. package/templates/gym-fitness/config.ts +1 -1
  85. package/templates/gym-fitness/dev/index.ts +46 -18
  86. package/templates/gym-fitness/tier5-src/_shared/collection-contract.ts +1 -1
  87. package/templates/gym-fitness/tier5-src/_shared/collection-service.ts +3 -2
  88. package/templates/gym-fitness/tier5-src/_shared/himi-store-collection.ts +1 -1
  89. package/templates/gym-fitness/tier5-src/_shared/home-service.ts +2 -1
  90. package/templates/gym-fitness/tier5-src/_shared/iap-presentation.ts +53 -0
  91. package/templates/gym-fitness/tier5-src/_shared/iap-worker.ts +42 -0
  92. package/templates/gym-fitness/tier5-src/himi-branded-lite-cart/index.ts +48 -1
  93. package/templates/gym-fitness/tier5-src/himi-branded-lite-home/index.ts +16 -2
  94. package/templates/gym-fitness/tier5-src/himi-branded-lite-order/index.ts +24 -3
  95. package/templates/gym-fitness/tier5-src/himi-branded-lite-plans/index.ts +153 -64
  96. package/templates/gym-fitness/tier5-src/himi-store-product/index.ts +24 -3
  97. package/templates/gym-fitness/tier5-src/himi-store-saved/index.ts +8 -3
  98. package/templates/gym-fitness/tier5-src/himi-store-shop/index.ts +10 -0
  99. package/templates/gym-fitness/tier5-src/wix-spaces-plan-detail/index.ts +8 -3
  100. package/templates/gym-fitness-owner/tier5-src/_shared/collection-contract.ts +1 -1
  101. package/templates/gym-fitness-owner/tier5-src/_shared/collection-service.ts +3 -2
  102. package/templates/gym-fitness-owner/tier5-src/_shared/home-service.ts +2 -1
  103. package/templates/nonprofit-cause/config.ts +1 -8
  104. package/templates/nonprofit-cause/dev/index.ts +29 -129
  105. package/templates/nonprofit-cause/himalaya.content.json +0 -3
  106. package/templates/nonprofit-cause/tier5-src/_shared/collection-contract.ts +1 -1
  107. package/templates/nonprofit-cause/tier5-src/_shared/collection-service.ts +3 -2
  108. package/templates/nonprofit-cause/tier5-src/_shared/home-service.ts +2 -1
  109. package/templates/nonprofit-cause/tier5-src/_shared/iap-presentation.ts +53 -0
  110. package/templates/nonprofit-cause/tier5-src/_shared/iap-worker.ts +42 -0
  111. package/templates/nonprofit-cause/tier5-src/himi-branded-lite-home/index.ts +16 -2
  112. package/templates/nonprofit-cause/tier5-src/himi-branded-lite-plans/index.ts +153 -64
  113. package/templates/nonprofit-cause/tier5-src/wix-spaces-plan-detail/index.ts +8 -3
  114. package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-contract.ts +1 -1
  115. package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-service.ts +3 -2
  116. package/templates/nonprofit-cause-owner/tier5-src/_shared/home-service.ts +2 -1
  117. package/templates/owner-lite/tier5-src/_shared/collection-contract.ts +1 -1
  118. package/templates/owner-lite/tier5-src/_shared/collection-service.ts +3 -2
  119. package/templates/owner-lite/tier5-src/_shared/home-service.ts +2 -1
  120. package/templates/podcast-creator/config.ts +1 -1
  121. package/templates/podcast-creator/dev/index.ts +29 -13
  122. package/templates/podcast-creator/tier5-src/_shared/collection-contract.ts +1 -1
  123. package/templates/podcast-creator/tier5-src/_shared/collection-service.ts +3 -2
  124. package/templates/podcast-creator/tier5-src/_shared/home-service.ts +2 -1
  125. package/templates/podcast-creator/tier5-src/_shared/iap-presentation.ts +53 -0
  126. package/templates/podcast-creator/tier5-src/_shared/iap-worker.ts +42 -0
  127. package/templates/podcast-creator/tier5-src/himi-branded-lite-home/index.ts +16 -2
  128. package/templates/podcast-creator/tier5-src/himi-branded-lite-plans/index.ts +153 -64
  129. package/templates/podcast-creator/tier5-src/wix-spaces-plan-detail/index.ts +8 -3
  130. package/templates/podcast-creator-owner/tier5-src/_shared/collection-contract.ts +1 -1
  131. package/templates/podcast-creator-owner/tier5-src/_shared/collection-service.ts +3 -2
  132. package/templates/podcast-creator-owner/tier5-src/_shared/home-service.ts +2 -1
  133. package/templates/portfolio-creative/config.ts +1 -1
  134. package/templates/portfolio-creative/dev/index.ts +20 -6
  135. package/templates/portfolio-creative/tier5-src/_shared/collection-contract.ts +1 -1
  136. package/templates/portfolio-creative/tier5-src/_shared/collection-service.ts +3 -2
  137. package/templates/portfolio-creative/tier5-src/_shared/himi-store-collection.ts +1 -1
  138. package/templates/portfolio-creative/tier5-src/_shared/home-service.ts +2 -1
  139. package/templates/portfolio-creative/tier5-src/_shared/iap-presentation.ts +53 -0
  140. package/templates/portfolio-creative/tier5-src/_shared/iap-worker.ts +42 -0
  141. package/templates/portfolio-creative/tier5-src/himi-branded-lite-cart/index.ts +48 -1
  142. package/templates/portfolio-creative/tier5-src/himi-branded-lite-home/index.ts +16 -2
  143. package/templates/portfolio-creative/tier5-src/himi-branded-lite-order/index.ts +24 -3
  144. package/templates/portfolio-creative/tier5-src/himi-store-product/index.ts +24 -3
  145. package/templates/portfolio-creative/tier5-src/himi-store-saved/index.ts +8 -3
  146. package/templates/portfolio-creative/tier5-src/himi-store-shop/index.ts +10 -0
  147. package/templates/portfolio-creative-owner/tier5-src/_shared/collection-contract.ts +1 -1
  148. package/templates/portfolio-creative-owner/tier5-src/_shared/collection-service.ts +3 -2
  149. package/templates/portfolio-creative-owner/tier5-src/_shared/home-service.ts +2 -1
  150. package/templates/restaurant/config.ts +1 -1
  151. package/templates/restaurant/dev/index.ts +3 -1
  152. package/templates/restaurant/tier5-src/_shared/collection-contract.ts +1 -1
  153. package/templates/restaurant/tier5-src/_shared/collection-service.ts +3 -2
  154. package/templates/restaurant/tier5-src/_shared/home-service.ts +2 -1
  155. package/templates/restaurant/tier5-src/_shared/iap-presentation.ts +53 -0
  156. package/templates/restaurant/tier5-src/_shared/iap-worker.ts +42 -0
  157. package/templates/restaurant/tier5-src/himi-branded-lite-home/index.ts +16 -2
  158. package/templates/restaurant-owner/tier5-src/_shared/collection-contract.ts +1 -1
  159. package/templates/restaurant-owner/tier5-src/_shared/collection-service.ts +3 -2
  160. package/templates/restaurant-owner/tier5-src/_shared/home-service.ts +2 -1
  161. package/templates/retail-store/config.ts +1 -1
  162. package/templates/retail-store/dev/index.ts +20 -6
  163. package/templates/retail-store/tier5-src/_shared/collection-contract.ts +1 -1
  164. package/templates/retail-store/tier5-src/_shared/collection-service.ts +3 -2
  165. package/templates/retail-store/tier5-src/_shared/himi-store-collection.ts +1 -1
  166. package/templates/retail-store/tier5-src/_shared/home-service.ts +2 -1
  167. package/templates/retail-store/tier5-src/_shared/iap-presentation.ts +53 -0
  168. package/templates/retail-store/tier5-src/_shared/iap-worker.ts +42 -0
  169. package/templates/retail-store/tier5-src/himi-branded-lite-cart/index.ts +48 -1
  170. package/templates/retail-store/tier5-src/himi-branded-lite-home/index.ts +16 -2
  171. package/templates/retail-store/tier5-src/himi-branded-lite-order/index.ts +24 -3
  172. package/templates/retail-store/tier5-src/himi-store-product/index.ts +24 -3
  173. package/templates/retail-store/tier5-src/himi-store-saved/index.ts +8 -3
  174. package/templates/retail-store/tier5-src/himi-store-shop/index.ts +10 -0
  175. package/templates/retail-store-owner/tier5-src/_shared/collection-contract.ts +1 -1
  176. package/templates/retail-store-owner/tier5-src/_shared/collection-service.ts +3 -2
  177. package/templates/retail-store-owner/tier5-src/_shared/home-service.ts +2 -1
  178. package/templates/yoga-studio/config.ts +1 -1
  179. package/templates/yoga-studio/dev/index.ts +29 -13
  180. package/templates/yoga-studio/tier5-src/_shared/collection-contract.ts +1 -1
  181. package/templates/yoga-studio/tier5-src/_shared/collection-service.ts +3 -2
  182. package/templates/yoga-studio/tier5-src/_shared/home-service.ts +2 -1
  183. package/templates/yoga-studio/tier5-src/_shared/iap-presentation.ts +53 -0
  184. package/templates/yoga-studio/tier5-src/himi-branded-lite-home/index.ts +16 -2
  185. package/templates/yoga-studio/tier5-src/himi-branded-lite-plans/index.ts +153 -64
  186. package/templates/yoga-studio/tier5-src/wix-spaces-plan-detail/index.ts +8 -3
  187. package/templates/yoga-studio-owner/tier5-src/_shared/collection-contract.ts +1 -1
  188. package/templates/yoga-studio-owner/tier5-src/_shared/collection-service.ts +3 -2
  189. package/templates/yoga-studio-owner/tier5-src/_shared/home-service.ts +2 -1
  190. package/templates/branded-lite/tier5-src/wix-spaces-create-group/index.ts +0 -29
  191. package/templates/community-club/tier5-src/wix-spaces-create-group/index.ts +0 -29
  192. package/templates/events-meetups/tier5-src/wix-spaces-create-group/index.ts +0 -29
  193. package/templates/nonprofit-cause/tier5-src/wix-spaces-create-group/index.ts +0 -29
@@ -2263,6 +2263,259 @@
2263
2263
  }
2264
2264
  ]
2265
2265
  },
2266
+ {
2267
+ "name": "@himalaya/iap-checkout",
2268
+ "source": "stdlib/flows/iap-checkout/src/index.ts",
2269
+ "description": "@wix/himalaya/iap-checkout — the ONE shared flow that sells a digital Wix item through the App Store, for any screen: a vertical order, its `appleIAP` cashier charge, mobile-apps-wix-iap's payment, the managed StoreKit purchase and the vertical's own access read.",
2270
+ "api": [
2271
+ {
2272
+ "name": "\"./commerce.js\"",
2273
+ "kind": "reexport",
2274
+ "jsdoc": "",
2275
+ "decl": "export { createIapCommerce } from \"./commerce.js\";"
2276
+ },
2277
+ {
2278
+ "name": "\"./purchase-fields.js\"",
2279
+ "kind": "reexport",
2280
+ "jsdoc": "",
2281
+ "decl": "export { iapPurchaseFields } from \"./purchase-fields.js\";"
2282
+ },
2283
+ {
2284
+ "name": "\"./apple-iap.js\"",
2285
+ "kind": "reexport",
2286
+ "jsdoc": "",
2287
+ "decl": "export { createAppleIapCheckout } from \"./apple-iap.js\";"
2288
+ },
2289
+ {
2290
+ "name": "\"./iap-verticals/index.js\"",
2291
+ "kind": "reexport",
2292
+ "jsdoc": "",
2293
+ "decl": "export { onlineProgramOrders, pricingPlanOrders, storesProductOrders, classifyCart } from \"./iap-verticals/index.js\";"
2294
+ },
2295
+ {
2296
+ "name": "\"./order-refs.js\"",
2297
+ "kind": "reexport",
2298
+ "jsdoc": "",
2299
+ "decl": "export { createWorkerOrderRefStore } from \"./order-refs.js\";"
2300
+ },
2301
+ {
2302
+ "name": "\"./apple-iap-contract.js\"",
2303
+ "kind": "reexport",
2304
+ "jsdoc": "",
2305
+ "decl": "export type {\n AccessRead, AppleIapCheckout, AppleIapCheckoutDependencies, AppleIapCheckoutPhase, AppleIapCheckoutState, BridgeOutcome,\n BridgeRefusal, CashierRoute, IapEligibility, IapOrderAdapter, IapOrderItem, OrderAttempt, OrderFailureCode,\n OrderPartitionKey, OrderRef, OrderRefPartition, OrderRefStage, OrderRefStore, PaymentAccess, PaymentProgress,\n SessionBoundBridge, VerticalRef, WixBridge,\n} from \"./apple-iap-contract.js\";"
2306
+ },
2307
+ {
2308
+ "name": "\"./commerce-contract.js\"",
2309
+ "kind": "reexport",
2310
+ "jsdoc": "",
2311
+ "decl": "export type {\n AppleIapCheckoutRoutes, IapCommerce, IapCommerceOptions, IapPurchaseCopy, IapPurchaseFields, IapPurchaseGap, IapPurchaseReadiness,\n} from \"./commerce-contract.js\";"
2312
+ },
2313
+ {
2314
+ "name": "createIapCommerce",
2315
+ "kind": "function",
2316
+ "jsdoc": "/**\n * Creates this worker's App Store commerce: catalog pricing for the items the screen shows, and the\n * shared Apple-IAP checkout for the verticals it sells. Create it once at module scope, call\n * `start()` when the screen boots, `reconcile()` when it resumes, and `tick()` from a `_poll` at\n * `state().nextWakeAt`. Bind the action with `iapPurchaseFields`.\n */",
2317
+ "decl": "export function createIapCommerce(options: IapCommerceOptions = {}): IapCommerce;"
2318
+ },
2319
+ {
2320
+ "name": "iapPurchaseFields",
2321
+ "kind": "function",
2322
+ "jsdoc": "/** Projects a shared checkout into customer-facing action fields; a price alone never grants access. */",
2323
+ "decl": "export function iapPurchaseFields(view: IapItemView, state: AppleIapCheckoutState, readiness: IapPurchaseReadiness, copy: IapPurchaseCopy): IapPurchaseFields;"
2324
+ },
2325
+ {
2326
+ "name": "createAppleIapCheckout",
2327
+ "kind": "function",
2328
+ "jsdoc": "/**\n * Creates the shared Apple-IAP checkout for one worker: vertical order → `appleIAP` cashier\n * charge → wix-iap StartPayment → managed StoreKit purchase → CompletePayment → GetPayment →\n * the vertical's own access read. It reuses `createPurchaseCoordinator` for StoreKit, proof\n * delivery and finishing, and opens content only when the vertical confirms access.\n *\n * NOT ENABLED: it answers `notEnabled` and makes no call until the documented dependencies (a\n * wix-iap route, the cashier route, a real mapping source, a trusted binding, the native identity\n * fence and the finish-policy confirmation) are resolved.\n */",
2329
+ "decl": "export function createAppleIapCheckout(deps: AppleIapCheckoutDependencies): AppleIapCheckout;"
2330
+ },
2331
+ {
2332
+ "name": "createWorkerOrderRefStore",
2333
+ "kind": "function",
2334
+ "jsdoc": "/** Persists unfinished orders per app and member, using the host KV unless storage is supplied. */",
2335
+ "decl": "export function createWorkerOrderRefStore(storage?: KeyValueStorage): OrderRefStore;"
2336
+ },
2337
+ {
2338
+ "name": "WixBridge",
2339
+ "kind": "interface",
2340
+ "jsdoc": "/** The host's Wix REST bridge (`himalaya.wixApi`). Resolves a 2xx body; rejects with\n * `HTTP <status> [<code>]: <message>` otherwise. Credentials are attached natively.\n * Same positional shape as the runtime's `wixApiCall`: `expectation` is bridge metadata for a\n * protected call, after `headers`, and never an HTTP header. */",
2341
+ "decl": "export interface WixBridge {\n call(\n method: \"GET\" | \"POST\",\n path: string,\n body?: unknown,\n headers?: Record<string, string>,\n expectation?: HostCallExpectation,\n ): Promise<unknown>;\n}"
2342
+ },
2343
+ {
2344
+ "name": "BridgeRefusal",
2345
+ "kind": "type",
2346
+ "jsdoc": "/** Why a bridge call gave no body. `sessionChanged`: the captured session is no longer current,\n * before the send or after the answer; nothing from it may be used or stored. */",
2347
+ "decl": "export type BridgeRefusal =\n | { status: \"sessionChanged\" }\n | { status: \"notEnabled\" }\n | { status: \"unavailable\" }\n | { status: \"http\"; httpStatus: number; code: string };"
2348
+ },
2349
+ {
2350
+ "name": "BridgeOutcome",
2351
+ "kind": "type",
2352
+ "jsdoc": "",
2353
+ "decl": "export type BridgeOutcome = { status: \"ok\"; body: unknown } | BridgeRefusal;"
2354
+ },
2355
+ {
2356
+ "name": "SessionBoundBridge",
2357
+ "kind": "interface",
2358
+ "jsdoc": "/** A bridge bound to one captured member session: it refuses to send, and drops the answer,\n * once that session is no longer current. */",
2359
+ "decl": "export interface SessionBoundBridge {\n call(method: \"GET\" | \"POST\", path: string, body?: unknown): Promise<BridgeOutcome>;\n isCurrent(): boolean;\n}"
2360
+ },
2361
+ {
2362
+ "name": "CashierRoute",
2363
+ "kind": "interface",
2364
+ "jsdoc": "/** Cashier pay v2 (`wix.payment.api.pay.v2.PaymentService`). The member-accepted gateway path\n * is unverified, so there is deliberately no default. */",
2365
+ "decl": "export interface CashierRoute {\n /** The gateway path that maps to `/api/payments/v2`, without a trailing slash. */\n prefix: string;\n}"
2366
+ },
2367
+ {
2368
+ "name": "IapOrderItem",
2369
+ "kind": "interface",
2370
+ "jsdoc": "/** One item a screen sells. `reference` is the same catalog reference its price came from. */",
2371
+ "decl": "export interface IapOrderItem {\n reference: CatalogReference;\n /** eCom catalog reference, required for a Wix Stores item. */\n catalogReference?: { appId: string; catalogItemId: string; options?: Record<string, unknown> };\n /** Only 1 is supported. */\n quantity?: number;\n}"
2372
+ },
2373
+ {
2374
+ "name": "VerticalRef",
2375
+ "kind": "type",
2376
+ "jsdoc": "/** Ids an adapter needs to find its order and the member's access again. No member data. */",
2377
+ "decl": "export type VerticalRef = Record<string, string>;"
2378
+ },
2379
+ {
2380
+ "name": "IapEligibility",
2381
+ "kind": "type",
2382
+ "jsdoc": "",
2383
+ "decl": "export type IapEligibility = { eligible: true } | { eligible: false; reason: OrderFailureCode };"
2384
+ },
2385
+ {
2386
+ "name": "OrderAttempt",
2387
+ "kind": "type",
2388
+ "jsdoc": "/** `open`: a pending order the cashier can charge. `granted`: the vertical already gives the\n * member access, so nothing is sold. */",
2389
+ "decl": "export type OrderAttempt =\n | { status: \"open\"; cashierOrderId: string; verticalRef: VerticalRef }\n | { status: \"granted\" }\n | { status: \"refused\"; reason: OrderFailureCode }\n | { status: \"unavailable\" }\n | { status: \"sessionChanged\" };"
2390
+ },
2391
+ {
2392
+ "name": "AccessRead",
2393
+ "kind": "type",
2394
+ "jsdoc": "",
2395
+ "decl": "export type AccessRead = \"granted\" | \"pending\" | \"none\" | \"unavailable\" | \"sessionChanged\";"
2396
+ },
2397
+ {
2398
+ "name": "IapOrderAdapter",
2399
+ "kind": "interface",
2400
+ "jsdoc": "/** The only per-vertical code. Every call goes through the session-bound bridge it is given. */",
2401
+ "decl": "export interface IapOrderAdapter {\n /** The catalog kind it sells (`onlineProgram`, `pricingPlan`, `storesProduct`, or a custom one). */\n readonly kind: string;\n /** Structural check before any call: one item, quantity 1, a supported shape. */\n eligibility(item: IapOrderItem): IapEligibility;\n /** Opens, or reuses the vertical's own open, order for the signed-in member. */\n openOrder(item: IapOrderItem, bridge: SessionBoundBridge): Promise<OrderAttempt>;\n /** Re-reads an order opened earlier; `open` only while it can still be paid. */\n reopenOrder(order: { cashierOrderId: string; verticalRef: VerticalRef }, bridge: SessionBoundBridge): Promise<OrderAttempt>;\n /** The vertical's authoritative answer for the order's item and the signed-in member. */\n readAccess(verticalRef: VerticalRef, bridge: SessionBoundBridge): Promise<AccessRead>;\n /** The member's access to an item before any order exists (bought through Wix, say). Read-only:\n * never opens or prepares an order. An adapter without it shows Get access until a sale says otherwise. */\n currentAccess?(item: IapOrderItem, bridge: SessionBoundBridge): Promise<AccessRead>;\n}"
2402
+ },
2403
+ {
2404
+ "name": "OrderPartitionKey",
2405
+ "kind": "interface",
2406
+ "jsdoc": "/** Durable, member-partitioned purchase references. Ids only: never a proof or a credential, and\n * the member id is stored only as a one-way hash in the key. */",
2407
+ "decl": "export interface OrderPartitionKey {\n purchasesAppId: string;\n siteId: string;\n /** The signed-in member's Wix id, from the host session (wix-iap records purchases against it). */\n memberId: string;\n}"
2408
+ },
2409
+ {
2410
+ "name": "OrderRefStage",
2411
+ "kind": "type",
2412
+ "jsdoc": "/** `held`: Apple charged, and CompletePayment refused the proof without recording it, so the\n * transaction stays unfinished and is retried. `needsSupport`: recorded and refused for good. */",
2413
+ "decl": "export type OrderRefStage = \"ordered\" | \"charged\" | \"started\" | \"submitted\" | \"held\" | \"needsSupport\";"
2414
+ },
2415
+ {
2416
+ "name": "OrderRef",
2417
+ "kind": "interface",
2418
+ "jsdoc": "",
2419
+ "decl": "export interface OrderRef {\n /** `<kind>:<id>` of the item, or `payment:<paymentId>` for a payment with no local order. */\n key: string;\n stage: OrderRefStage;\n kind?: string;\n verticalRef?: VerticalRef;\n cashierOrderId?: string;\n wixTransactionId?: string;\n paymentId?: string;\n storeProductId?: string;\n appProductId?: string;\n appleTransactionId?: string;\n /** The StoreKit token StartPayment minted for this payment (D61): recovery finds the order by it. */\n appAccountToken?: string;\n updatedAt: number;\n}"
2420
+ },
2421
+ {
2422
+ "name": "OrderRefPartition",
2423
+ "kind": "interface",
2424
+ "jsdoc": "",
2425
+ "decl": "export interface OrderRefPartition {\n refs(): readonly OrderRef[];\n /** False when the write could not be verified as durable; the caller must not proceed. */\n put(ref: OrderRef): boolean;\n remove(key: string): boolean;\n}"
2426
+ },
2427
+ {
2428
+ "name": "OrderRefStore",
2429
+ "kind": "interface",
2430
+ "jsdoc": "",
2431
+ "decl": "export interface OrderRefStore {\n /** Null when this partition cannot be stored durably: no storage bridge, unreadable or\n * unknown-version data. Never an empty stand-in. */\n open(key: OrderPartitionKey): OrderRefPartition | null;\n /** Whether any member holds references for this app and site; null when unreadable. Lets a\n * start-up skip reading the member and tracking when nothing was ever handed over. */\n hasRefs(app: { purchasesAppId: string; siteId: string }): boolean | null;\n}"
2432
+ },
2433
+ {
2434
+ "name": "OrderFailureCode",
2435
+ "kind": "type",
2436
+ "jsdoc": "",
2437
+ "decl": "export type OrderFailureCode =\n | \"notEnabled\" | \"notConfigured\" | \"signInRequired\" | \"unsupportedItem\" | \"notAppleRoute\"\n | \"storageUnavailable\" | \"approvalRequired\" | \"orderClosed\" | \"orderRefused\" | \"chargeFailed\"\n | \"paymentRefused\" | \"paymentHeld\" | \"alreadyOwned\" | \"paymentInProgress\" | \"productChanged\"\n | \"invalidAssociation\" | \"needsSupport\" | \"unavailable\" | \"sessionChanged\";"
2438
+ },
2439
+ {
2440
+ "name": "PaymentAccess",
2441
+ "kind": "type",
2442
+ "jsdoc": "/** Progress of a payment this device handed to wix-iap, tracked from its durable reference. */",
2443
+ "decl": "export type PaymentAccess = \"processing\" | \"granted\" | \"accessUnknown\" | \"needsSupport\";"
2444
+ },
2445
+ {
2446
+ "name": "PaymentProgress",
2447
+ "kind": "interface",
2448
+ "jsdoc": "",
2449
+ "decl": "export interface PaymentProgress {\n /** `<kind>:<id>` of the item, or `payment` when no local order is known. */\n item: string;\n access: PaymentAccess;\n nextAttemptAt: number | null;\n}"
2450
+ },
2451
+ {
2452
+ "name": "AppleIapCheckoutPhase",
2453
+ "kind": "type",
2454
+ "jsdoc": "",
2455
+ "decl": "export type AppleIapCheckoutPhase =\n | \"notEnabled\" | \"idle\" | \"preparing\" | \"purchasing\" | \"awaitingApproval\" | \"processing\"\n | \"accessReady\" | \"cancelled\" | \"signInRequired\" | \"unavailable\" | \"refused\";"
2456
+ },
2457
+ {
2458
+ "name": "AppleIapCheckoutState",
2459
+ "kind": "interface",
2460
+ "jsdoc": "/** Safe to render: no proof, account token, member, order or payment id. */",
2461
+ "decl": "export interface AppleIapCheckoutState {\n enabled: boolean;\n phase: AppleIapCheckoutPhase;\n /** The item the last `buy` was for, as `<kind>:<id>`. */\n item: string | null;\n failure: OrderFailureCode | null;\n purchase: DeliveryState;\n payments: PaymentProgress[];\n nextWakeAt: number | null;\n}"
2462
+ },
2463
+ {
2464
+ "name": "AppleIapCheckoutDependencies",
2465
+ "kind": "interface",
2466
+ "jsdoc": "",
2467
+ "decl": "export interface AppleIapCheckoutDependencies {\n wixIap: WixIapClient;\n /** The member signed in for a captured session, from the trusted host (`memberIdentityOf` over the\n * host session). It partitions the references and scopes acknowledgements: wix-iap has no\n * customer ids any more (D61). */\n identity: MemberIdentitySource;\n /** The same trusted binding the wix-iap client uses; it partitions the stored references. */\n binding: AppBindingSource;\n /** The same host provider the wix-iap client was given: every step compares generations. */\n session: SessionProvider;\n clock: Clock;\n cashier: CashierRoute;\n adapters: readonly IapOrderAdapter[];\n /** The screen's catalog pricing: the route and the App Store product a sale must match. */\n pricing: Pick<IapCatalogPricing, \"view\" | \"appleProduct\">;\n store?: TransactionStore;\n refs?: OrderRefStore;\n bridge?: WixBridge;\n jitter?: (baseDelayMs: number) => number;\n onState?: (state: AppleIapCheckoutState) => void;\n}"
2468
+ },
2469
+ {
2470
+ "name": "AppleIapCheckout",
2471
+ "kind": "interface",
2472
+ "jsdoc": "",
2473
+ "decl": "export interface AppleIapCheckout {\n /** Recovers held purchases and resumes tracking payments already handed over. */\n start(): Promise<AppleIapCheckoutState>;\n buy(item: IapOrderItem): Promise<AppleIapCheckoutState>;\n /** Marks the items the signed-in member already has access to, read from each vertical without an order. */\n checkAccess(items: readonly IapOrderItem[]): Promise<AppleIapCheckoutState>;\n reconcile(): Promise<AppleIapCheckoutState>;\n retry(): Promise<AppleIapCheckoutState>;\n tick(): Promise<AppleIapCheckoutState>;\n state(): AppleIapCheckoutState;\n dispose(): void;\n}"
2474
+ },
2475
+ {
2476
+ "name": "AppleIapCheckoutRoutes",
2477
+ "kind": "interface",
2478
+ "jsdoc": "/** Where the checkout reaches Wix: mobile-apps-wix-iap's Payments service and cashier pay v2, both\n * as gateway paths the member credential is accepted on. Platform configuration, never a screen's. */",
2479
+ "decl": "export interface AppleIapCheckoutRoutes {\n wixIap: WixIapRoute;\n cashier: CashierRoute;\n}"
2480
+ },
2481
+ {
2482
+ "name": "IapPurchaseGap",
2483
+ "kind": "type",
2484
+ "jsdoc": "/** A dependency purchasing needs that this app or host does not have yet. Internal diagnostics:\n * never customer copy.\n * - `routes`: no member-callable wix-iap or cashier route is configured.\n * - `mapping`: no Wix→Apple mapping source is connected.\n * - `binding`: the binary carries no purchases-app binding for this app.\n * - `nativeIdentity`: the host cannot bind a request to the signed-in member.\n * - `managedStore`: managed StoreKit is not enabled on this host (or not iOS).\n * - `storage`: purchase references cannot be stored durably. */",
2485
+ "decl": "export type IapPurchaseGap = \"routes\" | \"mapping\" | \"binding\" | \"nativeIdentity\" | \"managedStore\" | \"storage\";"
2486
+ },
2487
+ {
2488
+ "name": "IapPurchaseReadiness",
2489
+ "kind": "type",
2490
+ "jsdoc": "",
2491
+ "decl": "export type IapPurchaseReadiness =\n | { status: \"checking\" }\n | { status: \"ready\" }\n | { status: \"unavailable\"; gaps: readonly IapPurchaseGap[] };"
2492
+ },
2493
+ {
2494
+ "name": "IapCommerceOptions",
2495
+ "kind": "interface",
2496
+ "jsdoc": "",
2497
+ "decl": "export interface IapCommerceOptions {\n /** The verticals this screen sells. A screen that only shows prices passes none. */\n adapters?: readonly IapOrderAdapter[];\n /** After any price, readiness or checkout change; a worker republishes its state here. */\n onChange?(): void;\n}"
2498
+ },
2499
+ {
2500
+ "name": "IapCommerce",
2501
+ "kind": "interface",
2502
+ "jsdoc": "",
2503
+ "decl": "export interface IapCommerce {\n /** Routes, display prices, regular-checkout guards and the visible-refresh poll. */\n readonly pricing: IapCatalogPricing;\n /** Prices the items the screen shows, scoped to this app by the host. `scopeComplete` is false\n * when the host's own identity could not be read, so the screen offers Retry itself. */\n loadPrices(items: IapCatalogItem[]): Promise<{ scopeComplete: boolean }>;\n readiness(): IapPurchaseReadiness;\n /** Whether the latest price load (the screen's or the poll's) had the host's own identity; when\n * false the screen offers Retry itself. */\n scopeComplete(): boolean;\n state(): AppleIapCheckoutState;\n /** The item's App Store action, from its price route (the settled one while a refresh resolves),\n * purchase readiness and the checkout state. */\n purchaseFields(reference: CatalogReference, copy: IapPurchaseCopy): IapPurchaseFields;\n /** Checks readiness, then recovers held purchases and resumes payments already handed over. */\n start(): Promise<AppleIapCheckoutState>;\n buy(item: IapOrderItem): Promise<AppleIapCheckoutState>;\n /** On resume: re-reads Apple's unfinished queue and the payments being tracked. */\n reconcile(): Promise<AppleIapCheckoutState>;\n tick(): Promise<AppleIapCheckoutState>;\n /** The screen's one `_poll` for prices and purchase, or undefined when the cadence it already\n * armed still holds (or there is nothing to poll). Emit it from every publish. */\n pollDirective(action: string): IapPollDirective | undefined;\n /** The polled action's body: due purchase work — a full reconcile w\n/* … */"
2504
+ },
2505
+ {
2506
+ "name": "IapPurchaseCopy",
2507
+ "kind": "interface",
2508
+ "jsdoc": "/** Labels from the screen's copy pack; the shared layer only chooses between them. */",
2509
+ "decl": "export interface IapPurchaseCopy {\n buy: string;\n processing: string;\n awaitingApproval: string;\n unavailable: string;\n signInRequired: string;\n retry: string;\n priceChanged: string;\n support: string;\n}"
2510
+ },
2511
+ {
2512
+ "name": "IapPurchaseFields",
2513
+ "kind": "interface",
2514
+ "jsdoc": "/** What a screen binds for an item's App Store purchase action. */",
2515
+ "decl": "export interface IapPurchaseFields {\n /** The item sells through the App Store: show this action instead of the regular one. */\n appleRoute: boolean;\n /** The vertical confirmed the member's access: open the content instead of selling it. */\n accessReady: boolean;\n buyLabel: string;\n buyDisabled: boolean;\n buyBusy: boolean;\n buyNote: string;\n}"
2516
+ }
2517
+ ]
2518
+ },
2266
2519
  {
2267
2520
  "name": "@himalaya/keyboard",
2268
2521
  "source": "core/sdk/keyboard/src/index.ts",
@@ -3495,6 +3748,91 @@
3495
3748
  }
3496
3749
  ]
3497
3750
  },
3751
+ {
3752
+ "name": "@himalaya/screens",
3753
+ "source": "stdlib/flows/screens/src/index.ts",
3754
+ "description": "@wix/himalaya/screens — ready-made sign-in and paywall screens.",
3755
+ "api": [
3756
+ {
3757
+ "name": "ScreenEnvelope",
3758
+ "kind": "interface",
3759
+ "jsdoc": "",
3760
+ "decl": "export interface ScreenEnvelope {\n screenId: string;\n renderer: string;\n title: string;\n schemaVersion: number;\n cacheControl: { maxAge: number; staleWhileRevalidate: number };\n logicBundle?: { url: string; integrity: string; declaredCapabilities: string[] };\n payload: { id: string; body: unknown };\n}"
3761
+ },
3762
+ {
3763
+ "name": "AuthCopy",
3764
+ "kind": "interface",
3765
+ "jsdoc": "/** Every user-facing string on the auth screen. Override any subset. */",
3766
+ "decl": "export interface AuthCopy {\n signInTitle?: string;\n registerTitle?: string;\n subhead?: string;\n emailLabel?: string;\n passwordLabel?: string;\n signInCta?: string;\n registerCta?: string;\n toRegisterCta?: string;\n toSignInCta?: string;\n signOutCta?: string;\n signedInTitle?: string;\n}"
3767
+ },
3768
+ {
3769
+ "name": "AuthScreenOptions",
3770
+ "kind": "interface",
3771
+ "jsdoc": "",
3772
+ "decl": "export interface AuthScreenOptions {\n /** Where the built worker bundle is served from. */\n bundleUrl: string;\n screenId?: string;\n /** Service name — must match `createAuthService({ service })`. */\n service?: string;\n title?: string;\n /** Offer \"create an account\" alongside sign-in. Default true. */\n register?: boolean;\n copy?: AuthCopy;\n /** Buttons shown once signed in, as { label, screenId } — e.g. back to the library. */\n next?: Array<{ label: string; screenId: string }>;\n}"
3773
+ },
3774
+ {
3775
+ "name": "authScreen",
3776
+ "kind": "function",
3777
+ "jsdoc": "/**\n * The sign-in / create-account screen.\n *\n * Static descriptor, worker-driven layout: every conditional binds a negative\n * flag the service emits, so the descriptor never computes anything.\n */",
3778
+ "decl": "export function authScreen(opts: AuthScreenOptions): ScreenEnvelope;"
3779
+ },
3780
+ {
3781
+ "name": "AuthServiceOptions",
3782
+ "kind": "interface",
3783
+ "jsdoc": "",
3784
+ "decl": "export interface AuthServiceOptions {\n /** Must match `authScreen({ service })`. */\n service?: string;\n register?: boolean;\n copy?: AuthCopy;\n}"
3785
+ },
3786
+ {
3787
+ "name": "createAuthService",
3788
+ "kind": "function",
3789
+ "jsdoc": "/**\n * The worker behind `authScreen`. An app's whole worker file is:\n *\n * import { createAuthService } from \"@wix/himalaya/screens\";\n * const svc = createAuthService();\n * export default svc; export { svc };\n *\n * The first load is kicked here, at module scope, so the app cannot forget it.\n */",
3790
+ "decl": "export function createAuthService(opts: AuthServiceOptions = {});"
3791
+ },
3792
+ {
3793
+ "name": "PlanRow",
3794
+ "kind": "interface",
3795
+ "jsdoc": "/** One plan, flattened to the scalar fields an SDUI row template can bind.\n *\n * Flattened on purpose: a row template binds `$item.<field>` and cannot iterate\n * a nested list, so the perks arrive as three slots plus their `no…` flags\n * rather than an array. Three is a deliberate cap — it is what a plan card can\n * show without becoming a wall of text. */",
3796
+ "decl": "export interface PlanRow {\n id: string;\n name: string;\n description: string;\n priceLine: string;\n periodLine: string;\n perk1: string; perk2: string; perk3: string;\n noPerk1: boolean; noPerk2: boolean; noPerk3: boolean;\n badge: string;\n noBadge: boolean;\n hasBadge: boolean;\n /** True when this is the plan the signed-in member currently holds. */\n joined: boolean;\n notJoined: boolean;\n /** \"Current plan\" / \"\" — the label a joined row shows instead of a Join button. */\n joinedLabel: string;\n /** Per-row CTA, so the template needs no conditional of its own. */\n cta: string;\n appleSupported: boolean;\n joinDisabled: boolean;\n joinNote: string;\n}"
3797
+ },
3798
+ {
3799
+ "name": "CheckoutCopy",
3800
+ "kind": "interface",
3801
+ "jsdoc": "/** Every user-facing string on the paywall. Override any subset. */",
3802
+ "decl": "export interface CheckoutCopy {\n headline?: string;\n subhead?: string;\n joinCta?: string;\n joinedLabel?: string;\n badgeLabel?: string;\n /** Shown while the catalog is loading. */\n loadingText?: string;\n /** Shown when the site has no plans to sell. */\n emptyText?: string;\n loadError?: string;\n signInFirst?: string;\n joinedNotice?: string;\n pendingNotice?: string;\n handoffNotice?: string;\n cancelledNotice?: string;\n failedNotice?: string;\n goneNotice?: string;\n}"
3803
+ },
3804
+ {
3805
+ "name": "CheckoutServiceOptions",
3806
+ "kind": "interface",
3807
+ "jsdoc": "",
3808
+ "decl": "export interface CheckoutServiceOptions {\n /** Must match `checkoutScreen({ service })`. */\n service?: string;\n copy?: CheckoutCopy;\n /** Deep link the cashier returns to, e.g. \"myapp://screen/library\". Without it\n * the member completes payment and lands nowhere. */\n returnTo?: string;\n /** Plan id to mark with the badge (\"Most popular\"). */\n featuredPlanId?: string;\n /** Ask whether the member already holds a plan, so rows can say so. Default\n * true. Costs one extra call on load; turn it off only for a pure price list. */\n showJoined?: boolean;\n}"
3809
+ },
3810
+ {
3811
+ "name": "createCheckoutService",
3812
+ "kind": "function",
3813
+ "jsdoc": "/**\n * The worker behind `checkoutScreen`. An app's whole worker file is:\n *\n * import { createCheckoutService } from \"@wix/himalaya/screens\";\n * const svc = createCheckoutService({ returnTo: \"myapp://screen/library\" });\n * export default svc; export { svc };\n */",
3814
+ "decl": "export function createCheckoutService(opts: CheckoutServiceOptions = {});"
3815
+ },
3816
+ {
3817
+ "name": "CheckoutScreenOptions",
3818
+ "kind": "interface",
3819
+ "jsdoc": "",
3820
+ "decl": "export interface CheckoutScreenOptions {\n /** Where the built worker bundle is served from. */\n bundleUrl: string;\n screenId?: string;\n /** Service name — must match `createCheckoutService({ service })`. */\n service?: string;\n title?: string;\n copy?: CheckoutCopy;\n /** Screen the \"Sign in to continue\" button opens. Omit to drop the button —\n * but only if the app genuinely has no sign-in, because the notice it pairs\n * with is usually \"sign in to join a plan\" and would otherwise dead-end. */\n signInScreenId?: string;\n}"
3821
+ },
3822
+ {
3823
+ "name": "checkoutScreen",
3824
+ "kind": "function",
3825
+ "jsdoc": "/**\n * The paywall: browse plans, join one.\n *\n * Every conditional binds a NEGATIVE flag the service emits, so the descriptor\n * computes nothing — `hiddenPath` gates HIDING, and it sits on the\n * NODE as a sibling of `body`, never inside it.\n *\n * The row is a template: `$item.<field>` resolves per row against what\n * `createCheckoutService` puts in `rows`. Every binding used here is a field\n * that service emits — the two halves are pinned together by a test, because a\n * binding no service satisfies renders as nothing and the screen still LOOKS\n * structurally right.\n */",
3826
+ "decl": "export function checkoutScreen(opts: CheckoutScreenOptions): ScreenEnvelope;"
3827
+ },
3828
+ {
3829
+ "name": "(reexport)",
3830
+ "kind": "reexport",
3831
+ "jsdoc": "/** Re-exported so a gated screen can ask the entitlement question without also\n * importing @wix/himalaya/checkout directly. Same fail-closed door. */",
3832
+ "decl": "export { entitlement };"
3833
+ }
3834
+ ]
3835
+ },
3498
3836
  {
3499
3837
  "name": "@himalaya/sdk-types",
3500
3838
  "source": "core/sdk/sdk-types/src/index.ts",
@@ -11284,7 +11622,7 @@
11284
11622
  "name": "WixBlogCommentRow",
11285
11623
  "kind": "type",
11286
11624
  "jsdoc": "",
11287
- "decl": "export type WixBlogCommentRow = {\n id: string;\n authorName: string;\n /** The comment's plain text (every text run, space-joined). */\n text: string;\n createdDate: string;\n /** [rico] #3372 — the comment's Ricos document (`content.richContent`) as the API returned it, for a\n * RichContent row; undefined when the comment has none. */\n richContent?: unknown;\n};"
11625
+ "decl": "export type WixBlogCommentRow = {\n id: string;\n authorName: string;\n /** The comment's plain text (every text run, space-joined). */\n text: string;\n createdDate: string;\n /** [rico] #3372 — the comment's Ricos document (`content.richContent`) as the API returned it, for a\n * RichContent row; undefined when the comment has none. */\n richContent?: unknown;\n /** Set only on a reply row `listGroupPostComments` flattens in from `commentReplies` —\n * absent on a top-level comment. */\n parentCommentId?: string;\n /** Set only on a TOP-LEVEL comment row, true when its reply thread had more replies than\n * `repliesLimit` returned. There is no confirmed endpoint in this SDK to fetch the rest —\n * `WixRepliesListResponse`'s own `pagingMetadata` carries a cursor, but nothing in the\n * ingested spec calls it by itself — so this is a signal to show \"N more replies\" rather\n * than silently truncating, not something a caller can page past yet. */\n hasMoreReplies?: boolean;\n};"
11288
11626
  },
11289
11627
  {
11290
11628
  "name": "blogCommentRow",
@@ -11305,6 +11643,41 @@
11305
11643
  "decl": "export async function listBlogComments(postId: string): Promise<WixBlogCommentRow[]>;",
11306
11644
  "http": "GET /comments/v1/comments/list-by-resource?{…}"
11307
11645
  },
11646
+ {
11647
+ "name": "GROUPS_COMMENTS_APP_ID",
11648
+ "kind": "const",
11649
+ "jsdoc": "/** The appId Wix Groups registers as its comments provider. Same value as\n * GROUPS_APP_ID/GROUPS_APP_DEF_ID used elsewhere in this repo (social-feed's\n * reactions/create-post calls) — Groups is one of the apps where the comments\n * provider id and the app-def-id coincide. Source: comments-ng's own CONSUMERS.md. */",
11650
+ "decl": "export const GROUPS_COMMENTS_APP_ID = \"148c2287-c669-d849-d153-463c7486a694\";"
11651
+ },
11652
+ {
11653
+ "name": "createGroupPostComment",
11654
+ "kind": "function",
11655
+ "jsdoc": "/**\n * Posts a comment (or a reply, when `parentCommentId` is given) on a group feed post —\n * POST /comments/v1/comments, body { comment: { appId, contextId: groupId, resourceId:\n * feedItemId, content, parentComment? } }. Same underlying RPC as the generated\n * `createComment`, scoped to a group feed item by the appId/contextId/resourceId\n * convention in comments-ng's own CONSUMERS.md (source-verified; see the file header).\n *\n * verify-live: no round-trip against a real group post yet — the scoping comes from the\n * comments-ng consumer table, not a live create+list.\n *\n * @scope member — requires a signed-in site member.\n */",
11656
+ "decl": "export async function createGroupPostComment(\n groupId: string,\n feedItemId: string,\n text: string,\n parentCommentId?: string,\n): Promise<WixBlogCommentRow>;",
11657
+ "scope": "member",
11658
+ "verified": false
11659
+ },
11660
+ {
11661
+ "name": "WixListGroupPostCommentsResult",
11662
+ "kind": "interface",
11663
+ "jsdoc": "",
11664
+ "decl": "export interface WixListGroupPostCommentsResult {\n comments: WixBlogCommentRow[];\n /** `undefined` when the response carried none — a thread with more pages has one. */\n pagingMetadata?: { count?: number; hasNext?: boolean; cursors?: { next?: string; prev?: string } };\n}"
11665
+ },
11666
+ {
11667
+ "name": "WixListGroupPostCommentsOptions",
11668
+ "kind": "interface",
11669
+ "jsdoc": "",
11670
+ "decl": "export interface WixListGroupPostCommentsOptions {\n /** From a prior call's `pagingMetadata.cursors.next` — fetches the next page. */\n cursor?: string;\n /** Top-level comments per page. Defaults to the server's own default (unset). */\n limit?: number;\n /** Replies to include inline PER parent comment. Defaults to 20 — unset, the\n * server's documented default is to include none at all (see below). */\n repliesLimit?: number;\n}"
11671
+ },
11672
+ {
11673
+ "name": "listGroupPostComments",
11674
+ "kind": "function",
11675
+ "jsdoc": "/**\n * Lists a group feed post's comment thread — GET /comments/v1/comments/list-by-resource,\n * scoped by appId/contextId=groupId/resourceId=feedItemId (query string, never a GET\n * body — see the comment above). Same underlying RPC as the generated\n * `listCommentsByResource`.\n *\n * Replies ride the SAME response, under `commentReplies` — keyed by parent comment id —\n * but ONLY when the request's `cursorPaging.repliesLimit` asks for them; the field exists\n * precisely because the server does not include replies by default. This function sends\n * `cursorPaging.repliesLimit=20` unless `opts.repliesLimit` overrides it, and forwards\n * `opts.cursor`/`opts.limit` into `cursorPaging.cursor`/`cursorPaging.limit` so a caller\n * can actually page past `pagingMetadata.hasNext` instead of being stuck on page one. The\n * generator could not resolve a precise shape for the `commentReplies` map\n * (`Record<string, unknown>`), so its value is read as `{ replies?, pagingMetadata? }` here —\n * inferred from the already-typed, structurally identical `WixRepliesListResponse`, not\n * live-verified against a real multi-reply thread. Each reply is flattened into the SAME\n * row list, tagged with `parentCommentId`, directly after its parent, oldest reply first.\n * Top-level comments keep the SERVER's order: the request sends no sort (none is confirmed\n * for this provider), so re-sorting a page on the client would break chronology at a page\n * boundary whenever the server pages newest-first. Kept as-is, consecutive pages append\n * consistently, whatever order the server uses. A thread with more replies than `repliesLimit` sets its PARENT row's\n * `hasMoreReplies: true` instead of silently dropping them — there is no confirmed endpoint\n * in this SDK to page a single thread's replies, so this is a signal, not a cursor.\n *\n * verify-live: no round-trip against a real group post yet — the appId/contextId/resourceId\n * shape comes from the comments-ng consumer table, not a live call.\n *\n * @scope member — a signed-in site member reading a group they can see; whether an\n * anonymous visitor can read a PUBLIC group's comments is unconfirmed — needsLiveProbe.\n */",
11676
+ "decl": "export async function listGroupPostComments(\n groupId: string,\n feedItemId: string,\n opts: WixListGroupPostCommentsOptions = {},\n): Promise<WixListGroupPostCommentsResult>;",
11677
+ "http": "GET /comments/v1/comments/list-by-resource?{…}",
11678
+ "scope": "member",
11679
+ "verified": false
11680
+ },
11308
11681
  {
11309
11682
  "name": "categories.createCategory",
11310
11683
  "kind": "function",
@@ -20001,16 +20374,18 @@
20001
20374
  {
20002
20375
  "name": "queryGroups",
20003
20376
  "kind": "function",
20004
- "jsdoc": "",
20377
+ "jsdoc": "/**\n * List/search groups — POST /social-groups-proxy/groups/v2/groups/query.\n *\n * @scope visitor — browsing public groups needs no sign-in; this is an\n * already-working consumer-app feature (group discovery). Whether a\n * private/secret group's existence is visible to a non-member is unconfirmed\n * — needsLiveProbe.\n */",
20005
20378
  "decl": "export function queryGroups(\n req: WixGroupsQueryRequest = {} as WixGroupsQueryRequest,\n opts?: WixCallOptions,\n): Promise<WixQueryGroupsResponse>;",
20006
- "http": "POST /social-groups-proxy/groups/v2/groups/query"
20379
+ "http": "POST /social-groups-proxy/groups/v2/groups/query",
20380
+ "scope": "visitor"
20007
20381
  },
20008
20382
  {
20009
20383
  "name": "getGroup",
20010
20384
  "kind": "function",
20011
- "jsdoc": "",
20385
+ "jsdoc": "/**\n * Get a single group by id — GET /social-groups-proxy/groups/v2/groups/{id}.\n *\n * @scope visitor — same reasoning as `queryGroups`: reading a group's detail is\n * an already-working consumer-app feature with no sign-in required for a\n * public group.\n */",
20012
20386
  "decl": "export function getGroup(id: string, opts?: WixCallOptions): Promise<WixGroup>;",
20013
- "http": "GET /social-groups-proxy/groups/v2/groups/{…}"
20387
+ "http": "GET /social-groups-proxy/groups/v2/groups/{…}",
20388
+ "scope": "visitor"
20014
20389
  },
20015
20390
  {
20016
20391
  "name": "WixGroupCoverImage",
@@ -20025,16 +20400,22 @@
20025
20400
  "decl": "export interface WixGroupAccessRestriction {\n /** UNKNOWN | ADMIN_APPROVAL | PAID_PLANS | EVENTS */\n type?: string;\n}"
20026
20401
  },
20027
20402
  {
20028
- "name": "WixGroupWrite",
20403
+ "name": "WixGroupSettings",
20404
+ "kind": "interface",
20405
+ "jsdoc": "/** The real `GroupSettings` shape, ingested from `@wix/auto_sdk_groups_groups`\n * (codegen/wix/auto/specs/groups_groups/types.d.ts) at its latest published version as of\n * 2026-10-06 — re-ingestion confirmed no additional fields exist upstream. Do NOT add\n * fields beyond this list without re-ingesting or a live probe first. */",
20406
+ "decl": "export interface WixGroupSettings {\n membersCanInvite?: boolean;\n membersCanApprove?: boolean;\n welcomeMemberPostEnabled?: boolean;\n groupDetailsChangedPostEnabled?: boolean;\n showMemberList?: boolean;\n /** No enum is pinned anywhere in the ingested spec — needsLiveProbe. */\n allowedToInviteMembers?: string;\n /** No enum is pinned anywhere in the ingested spec — needsLiveProbe. */\n allowedToApproveJoinRequests?: string;\n aiSpamProtectionEnabled?: boolean;\n}"
20407
+ },
20408
+ {
20409
+ "name": "WixGroupWriteInput",
20029
20410
  "kind": "interface",
20030
20411
  "jsdoc": "/** Writable group fields for create/update. */",
20031
- "decl": "export interface WixGroupWrite {\n /** Required on create. */\n name?: string;\n /** UNKNOWN | PUBLIC | PRIVATE | SECRET */\n privacyStatus?: string;\n /** Plain-text group description. Social Groups v2 models this as a plain string\n * (public schema social-groups-v2-group-groups.schemas.ts → `description: z.string()`),\n * NOT a Ricos doc, so create/update accept it directly in `{ group }`. */\n description?: string;\n coverImage?: WixGroupCoverImage | null;\n accessRestriction?: WixGroupAccessRestriction;\n}"
20412
+ "decl": "export interface WixGroupWriteInput {\n /** Required on create. */\n name?: string;\n /** UNKNOWN | PUBLIC | PRIVATE | SECRET */\n privacyStatus?: string;\n /** Plain-text group description. Social Groups v2 models this as a plain string\n * (public schema social-groups-v2-group-groups.schemas.ts → `description: z.string()`),\n * NOT a Ricos doc, so create/update accept it directly in `{ group }`. */\n description?: string;\n coverImage?: WixGroupCoverImage | null;\n accessRestriction?: WixGroupAccessRestriction;\n settings?: WixGroupSettings;\n}"
20032
20413
  },
20033
20414
  {
20034
20415
  "name": "WixCreateGroupRequest",
20035
20416
  "kind": "interface",
20036
20417
  "jsdoc": "",
20037
- "decl": "export interface WixCreateGroupRequest {\n group: WixGroupWrite;\n}"
20418
+ "decl": "export interface WixCreateGroupRequest {\n group: WixGroupWriteInput;\n}"
20038
20419
  },
20039
20420
  {
20040
20421
  "name": "WixCreateGroupResponse",
@@ -20046,7 +20427,7 @@
20046
20427
  "name": "WixUpdateGroupRequest",
20047
20428
  "kind": "interface",
20048
20429
  "jsdoc": "",
20049
- "decl": "export interface WixUpdateGroupRequest {\n group: WixGroupWrite & { id: string };\n}"
20430
+ "decl": "export interface WixUpdateGroupRequest {\n group: WixGroupWriteInput & { id: string };\n}"
20050
20431
  },
20051
20432
  {
20052
20433
  "name": "WixUpdateGroupResponse",
@@ -20063,23 +20444,26 @@
20063
20444
  {
20064
20445
  "name": "createGroup",
20065
20446
  "kind": "function",
20066
- "jsdoc": "/** Create a group — POST /social-groups-proxy/groups/v2/groups. `name` is required; the entity is wrapped as `{ group }`. */",
20067
- "decl": "export function createGroup(group: WixGroupWrite): Promise<WixCreateGroupResponse>;",
20068
- "http": "POST /social-groups-proxy/groups/v2/groups"
20447
+ "jsdoc": "/**\n * Create a group — POST /social-groups-proxy/groups/v2/groups. `name` is required;\n * the entity is wrapped as `{ group }`.\n *\n * @scope owner — CONFIRMED: requires a true owner/admin-scoped API token. Returns\n * HTTP 403 for every member session, including the site owner's own account signed\n * in via a normal member-login flow. There is NO member-side workaround — do not\n * wire this to a consumer-facing \"create group\" action. See the section note above\n * for the reproduction.\n */",
20448
+ "decl": "export function createGroup(group: WixGroupWriteInput): Promise<WixCreateGroupResponse>;",
20449
+ "http": "POST /social-groups-proxy/groups/v2/groups",
20450
+ "scope": "owner"
20069
20451
  },
20070
20452
  {
20071
20453
  "name": "updateGroup",
20072
20454
  "kind": "function",
20073
- "jsdoc": "/** Update a group — PATCH /social-groups-proxy/groups/v2/groups/{id} (field-mask style). Only the supplied fields change; the request carries `{ group: { id, ... } }`. */",
20074
- "decl": "export function updateGroup(groupId: string, group: WixGroupWrite): Promise<WixUpdateGroupResponse>;",
20075
- "http": "PATCH /social-groups-proxy/groups/v2/groups/{…}"
20455
+ "jsdoc": "/**\n * Update a group — PATCH /social-groups-proxy/groups/v2/groups/{id} (field-mask style).\n * Only the supplied fields change; the request carries `{ group: { id, ... } }`.\n *\n * @scope owner — VERY LIKELY the same owner/admin-scoped-token requirement as\n * `createGroup` (same entity, same write-class, originally verified together via\n * \"the real Owner Create/Edit-Group flow\") — but NOT independently re-tested\n * against a member session this round. needsLiveProbe to confirm directly rather\n * than by inference.\n */",
20456
+ "decl": "export function updateGroup(groupId: string, group: WixGroupWriteInput): Promise<WixUpdateGroupResponse>;",
20457
+ "http": "PATCH /social-groups-proxy/groups/v2/groups/{…}",
20458
+ "scope": "owner"
20076
20459
  },
20077
20460
  {
20078
20461
  "name": "deleteGroup",
20079
20462
  "kind": "function",
20080
- "jsdoc": "/** Delete a group — DELETE /social-groups-proxy/groups/v2/groups/{id}. */",
20463
+ "jsdoc": "/**\n * Delete a group — DELETE /social-groups-proxy/groups/v2/groups/{id}.\n *\n * @scope owner — VERY LIKELY the same owner/admin-scoped-token requirement as\n * `createGroup` (same reasoning as `updateGroup` above) — not independently\n * re-tested against a member session this round. needsLiveProbe.\n */",
20081
20464
  "decl": "export function deleteGroup(groupId: string): Promise<WixDeleteGroupResponse>;",
20082
- "http": "DELETE /social-groups-proxy/groups/v2/groups/{…}"
20465
+ "http": "DELETE /social-groups-proxy/groups/v2/groups/{…}",
20466
+ "scope": "owner"
20083
20467
  },
20084
20468
  {
20085
20469
  "name": "WixGroupJoinResponse",
@@ -20090,16 +20474,18 @@
20090
20474
  {
20091
20475
  "name": "joinGroup",
20092
20476
  "kind": "function",
20093
- "jsdoc": "/** Join a group as the signed-in member — POST /social-groups/v2/groups/{id}/join. */",
20477
+ "jsdoc": "/**\n * Join a group as the signed-in member — POST /social-groups/v2/groups/{id}/join.\n *\n * @scope member — a self-service action any signed-in member session can reach\n * (distinct REST base from group CRUD above, which is owner-only). Verified live.\n */",
20094
20478
  "decl": "export function joinGroup(groupId: string): Promise<WixGroupJoinResponse>;",
20095
- "http": "POST /social-groups/v2/groups/{…}/join"
20479
+ "http": "POST /social-groups/v2/groups/{…}/join",
20480
+ "scope": "member"
20096
20481
  },
20097
20482
  {
20098
20483
  "name": "leaveGroup",
20099
20484
  "kind": "function",
20100
- "jsdoc": "/** Leave a group as the signed-in member — POST /social-groups/v2/groups/{id}/leave. */",
20485
+ "jsdoc": "/**\n * Leave a group as the signed-in member — POST /social-groups/v2/groups/{id}/leave.\n *\n * @scope member — same reasoning as `joinGroup`. Verified live.\n */",
20101
20486
  "decl": "export function leaveGroup(groupId: string): Promise<Record<string, never>>;",
20102
- "http": "POST /social-groups/v2/groups/{…}/leave"
20487
+ "http": "POST /social-groups/v2/groups/{…}/leave",
20488
+ "scope": "member"
20103
20489
  },
20104
20490
  {
20105
20491
  "name": "WixGroupMember",
@@ -20116,9 +20502,126 @@
20116
20502
  {
20117
20503
  "name": "queryMembers",
20118
20504
  "kind": "function",
20119
- "jsdoc": "/** Query a group's members — POST /social-groups-proxy/members/v2/groups/{groupId}/members/query.\n * The members service lives behind the `members` proxy base (NOT `groups`);\n * live-verified 2026-06-19 (the `groups` base 404s, this base returns 200). */",
20505
+ "jsdoc": "/**\n * Query a group's members — POST /social-groups-proxy/members/v2/groups/{groupId}/members/query.\n * The members service lives behind the `members` proxy base (NOT `groups`);\n * live-verified 2026-06-19 (the `groups` base 404s, this base returns 200).\n *\n * @scope member — reachable by a signed-in member session (listing a group's\n * members is an already-working consumer-app feature); visitor/anonymous\n * readability for a public group is unconfirmed — needsLiveProbe.\n */",
20120
20506
  "decl": "export function queryMembers(groupId: string, limit = 30): Promise<WixQueryGroupMembersResponse>;",
20121
- "http": "POST /social-groups-proxy/members/v2/groups/{…}/members/query"
20507
+ "http": "POST /social-groups-proxy/members/v2/groups/{…}/members/query",
20508
+ "scope": "member"
20509
+ },
20510
+ {
20511
+ "name": "WixJoinGroupRequest",
20512
+ "kind": "interface",
20513
+ "jsdoc": "",
20514
+ "decl": "export interface WixJoinGroupRequest {\n siteMemberId?: string;\n contactId?: string;\n /** No enum is pinned anywhere in the ingested spec — needsLiveProbe. */\n status?: string;\n requestDetails?: { rejectionReason?: string };\n}"
20515
+ },
20516
+ {
20517
+ "name": "WixListJoinGroupRequestsResponse",
20518
+ "kind": "interface",
20519
+ "jsdoc": "",
20520
+ "decl": "export interface WixListJoinGroupRequestsResponse {\n joinGroupRequests?: WixJoinGroupRequest[];\n metadata?: { count?: number; offset?: number; total?: number; tooManyToCount?: boolean };\n}"
20521
+ },
20522
+ {
20523
+ "name": "listJoinGroupRequests",
20524
+ "kind": "function",
20525
+ "jsdoc": "/**\n * List a group's pending join requests — GET /social-groups-proxy/join/v2/groups/{groupId}/join-requests.\n *\n * verify-live: not yet called against a real group — path and shape come from the\n * ingested Social Groups spec.\n *\n * @scope member — documented as reachable by a signed-in member whose in-group\n * role is admin/manager (not an owner-scoped API token — see the section's \"OPEN\n * QUESTION\" note); a regular member gets 403. Not independently live-probed.\n */",
20526
+ "decl": "export function listJoinGroupRequests(groupId: string, limit = 30, offset = 0): Promise<WixListJoinGroupRequestsResponse>;",
20527
+ "http": "GET /social-groups-proxy/join/v2/groups/{…}/join-requests?limit={…}&offset={…}",
20528
+ "scope": "member",
20529
+ "verified": false
20530
+ },
20531
+ {
20532
+ "name": "WixApproveJoinGroupRequestsResponse",
20533
+ "kind": "interface",
20534
+ "jsdoc": "",
20535
+ "decl": "export interface WixApproveJoinGroupRequestsResponse {\n joinGroupRequests?: WixJoinGroupRequest[];\n}"
20536
+ },
20537
+ {
20538
+ "name": "approveJoinGroupRequests",
20539
+ "kind": "function",
20540
+ "jsdoc": "/**\n * Approve pending join requests — POST /social-groups-proxy/join/v2/groups/{groupId}/join-requests/approve,\n * body { groupId, memberIds }.\n *\n * verify-live: not yet called against a real group — path and shape come from the\n * ingested Social Groups spec.\n *\n * @scope member — same documented-but-unverified basis as `listJoinGroupRequests`\n * (see the section's \"OPEN QUESTION\" note) — a regular member gets 403.\n */",
20541
+ "decl": "export function approveJoinGroupRequests(groupId: string, memberIds: string[]): Promise<WixApproveJoinGroupRequestsResponse>;",
20542
+ "http": "POST /social-groups-proxy/join/v2/groups/{…}/join-requests/approve",
20543
+ "scope": "member",
20544
+ "verified": false
20545
+ },
20546
+ {
20547
+ "name": "WixJoinGroupRequestRejection",
20548
+ "kind": "interface",
20549
+ "jsdoc": "",
20550
+ "decl": "export interface WixJoinGroupRequestRejection {\n memberId: string;\n reason?: string;\n}"
20551
+ },
20552
+ {
20553
+ "name": "WixRejectJoinGroupRequestsResponse",
20554
+ "kind": "interface",
20555
+ "jsdoc": "",
20556
+ "decl": "export interface WixRejectJoinGroupRequestsResponse {\n joinGroupRequests?: WixJoinGroupRequest[];\n}"
20557
+ },
20558
+ {
20559
+ "name": "rejectJoinGroupRequests",
20560
+ "kind": "function",
20561
+ "jsdoc": "/**\n * Reject pending join requests — POST /social-groups-proxy/join/v2/groups/{groupId}/join-requests/reject,\n * body { groupId, rejections }.\n *\n * verify-live: not yet called against a real group — path and shape come from the\n * ingested Social Groups spec.\n *\n * @scope member — same documented-but-unverified basis as `listJoinGroupRequests`\n * (see the section's \"OPEN QUESTION\" note) — a regular member gets 403.\n */",
20562
+ "decl": "export function rejectJoinGroupRequests(groupId: string, rejections: WixJoinGroupRequestRejection[]): Promise<WixRejectJoinGroupRequestsResponse>;",
20563
+ "http": "POST /social-groups-proxy/join/v2/groups/{…}/join-requests/reject",
20564
+ "scope": "member",
20565
+ "verified": false
20566
+ },
20567
+ {
20568
+ "name": "WixGroupRole",
20569
+ "kind": "interface",
20570
+ "jsdoc": "",
20571
+ "decl": "export interface WixGroupRole {\n value?: string;\n}"
20572
+ },
20573
+ {
20574
+ "name": "WixAssignRoleResponse",
20575
+ "kind": "interface",
20576
+ "jsdoc": "",
20577
+ "decl": "export interface WixAssignRoleResponse {\n groupId?: string;\n memberIds?: string[];\n role?: WixGroupRole;\n}"
20578
+ },
20579
+ {
20580
+ "name": "assignRole",
20581
+ "kind": "function",
20582
+ "jsdoc": "/**\n * Assign a role to group members — POST /social-groups-proxy/roles/v2/groups/{groupId}/roles/assign,\n * body { groupId, memberIds, role: { value } }. `role` is a loose string, not a union: no\n * literal role value (e.g. \"ADMIN\"/\"MEMBER\") is pinned anywhere in the ingested spec —\n * needsLiveProbe.\n *\n * verify-live: not yet called against a real group — path and shape come from the\n * ingested Social Groups spec.\n *\n * @scope member — documented as reachable by a signed-in member whose in-group\n * role is admin/manager, not an owner-scoped API token (see the join-request\n * moderation section's \"OPEN QUESTION\" note above) — a regular member gets 403.\n * Not independently live-probed.\n */",
20583
+ "decl": "export function assignRole(groupId: string, memberIds: string[], role: string): Promise<WixAssignRoleResponse>;",
20584
+ "http": "POST /social-groups-proxy/roles/v2/groups/{…}/roles/assign",
20585
+ "scope": "member",
20586
+ "verified": false
20587
+ },
20588
+ {
20589
+ "name": "WixUnassignRoleResponse",
20590
+ "kind": "interface",
20591
+ "jsdoc": "",
20592
+ "decl": "export interface WixUnassignRoleResponse {\n groupId?: string;\n siteMemberIds?: string[];\n memberIds?: string[];\n role?: WixGroupRole;\n}"
20593
+ },
20594
+ {
20595
+ "name": "unassignRole",
20596
+ "kind": "function",
20597
+ "jsdoc": "/**\n * Remove a role from group members — POST /social-groups-proxy/roles/v2/groups/{groupId}/roles/unassign,\n * body { groupId, memberIds, role: { value } }. Same unconfirmed-enum caveat as `assignRole`.\n *\n * verify-live: not yet called against a real group — path and shape come from the\n * ingested Social Groups spec.\n *\n * @scope member — same documented-but-unverified basis as `assignRole` — a regular\n * member gets 403.\n */",
20598
+ "decl": "export function unassignRole(groupId: string, memberIds: string[], role: string): Promise<WixUnassignRoleResponse>;",
20599
+ "http": "POST /social-groups-proxy/roles/v2/groups/{…}/roles/unassign",
20600
+ "scope": "member",
20601
+ "verified": false
20602
+ },
20603
+ {
20604
+ "name": "WixRemoveGroupMembersResponse",
20605
+ "kind": "interface",
20606
+ "jsdoc": "",
20607
+ "decl": "export interface WixRemoveGroupMembersResponse {}"
20608
+ },
20609
+ {
20610
+ "name": "removeGroupMembers",
20611
+ "kind": "function",
20612
+ "jsdoc": "/**\n * Remove members from a group — DELETE /social-groups-proxy/members/v2/groups/{groupId}/members,\n * `memberIds` repeated in the QUERY STRING (`?memberIds=a&memberIds=b`), no body — every\n * no-path-param DELETE this repo has confirmed against Wix's own generated clients sends its\n * request that way (codegen/wix/tests/delete-query-string.test.ts); unlike a GET/HEAD body,\n * which the gateway drops unconditionally, a DELETE body is NOT dropped — this is a convention\n * match with Wix's own generated clients, not a gateway constraint. Same `members` proxy base\n * `queryMembers` already live-verified (2026-06-19) uses; this specific verb+path combination\n * is not yet live-probed.\n *\n * verify-live: not yet called against a real group — path and shape come from the\n * ingested Social Groups spec.\n *\n * @scope member — same documented-but-unverified basis as `assignRole` — a regular\n * member gets 403.\n */",
20613
+ "decl": "export function removeGroupMembers(groupId: string, memberIds: string[]): Promise<WixRemoveGroupMembersResponse>;",
20614
+ "http": "DELETE /social-groups-proxy/members/v2/groups/{…}/members?{…}",
20615
+ "scope": "member",
20616
+ "verified": false
20617
+ },
20618
+ {
20619
+ "name": "updateGroupSettings",
20620
+ "kind": "function",
20621
+ "jsdoc": "/**\n * Update a group's settings — PATCH /social-groups-proxy/groups/v2/groups/{id} (field-mask),\n * via the existing `updateGroup` RPC, body { group: { id, settings } }. No separate settings\n * endpoint exists.\n *\n * verify-live: not yet called against a real group — path and shape come from the\n * ingested Social Groups spec.\n *\n * @scope owner — rides the SAME `updateGroup` RPC that is very likely owner-token-only\n * (see `updateGroup`'s own doc above) — reclassified from an earlier \"group-admin\n * member\" assumption once `createGroup`'s owner-only finding showed group CRUD writes\n * are gated by API-token tier, not in-group role. Not independently live-probed.\n */",
20622
+ "decl": "export function updateGroupSettings(groupId: string, settings: WixGroupSettings): Promise<WixUpdateGroupResponse>;",
20623
+ "scope": "owner",
20624
+ "verified": false
20122
20625
  }
20123
20626
  ]
20124
20627
  },
@@ -22808,14 +23311,16 @@
22808
23311
  {
22809
23312
  "name": "listFeedItems",
22810
23313
  "kind": "function",
22811
- "jsdoc": "/** List a group's activity feed — GET\n * https://social.wix.com/serverless/mobile/feed/v4/feedPosts (the ENRICHED read the\n * real mobile app uses). Each item carries content (Ricos blocks), commentsCount, and\n * reactionsList (count = length); the response's top-level `profiles[]` resolves each\n * item's author.id → userName + profileImage. Verified live (200). Replaces the lean\n * GET /api/v1/feed/items read, which omitted counts + author. */",
22812
- "decl": "export function listFeedItems(groupId: string, limit = 20): Promise<WixListFeedItemsResponse>;"
23314
+ "jsdoc": "/**\n * List a group's activity feed — GET\n * https://social.wix.com/serverless/mobile/feed/v4/feedPosts (the ENRICHED read the\n * real mobile app uses). Each item carries content (Ricos blocks), commentsCount, and\n * reactionsList (count = length); the response's top-level `profiles[]` resolves each\n * item's author.id → userName + profileImage. Verified live (200). Replaces the lean\n * GET /api/v1/feed/items read, which omitted counts + author.\n *\n * @scope member — verified live with a signed-in member session; visitor/anonymous\n * readability of a public group's feed is unconfirmed.\n */",
23315
+ "decl": "export function listFeedItems(groupId: string, limit = 20): Promise<WixListFeedItemsResponse>;",
23316
+ "scope": "member"
22813
23317
  },
22814
23318
  {
22815
23319
  "name": "createFeedItem",
22816
23320
  "kind": "function",
22817
- "jsdoc": "/** Create a feed post in a group as the signed-in member — POST\n * https://social.wix.com/api/v1/feed/items. `content` is the post text (modern\n * posts are Ricos rich-content serialized to a string; plain text also works with\n * contentType PLAIN_TEXT). Verified live (returns the created FeedItem). */",
22818
- "decl": "export function createFeedItem(groupId: string, content: string): Promise<WixFeedItem>;"
23321
+ "jsdoc": "/**\n * Create a feed post in a group as the signed-in member — POST\n * https://social.wix.com/api/v1/feed/items. `content` is the post text (modern\n * posts are Ricos rich-content serialized to a string; plain text also works with\n * contentType PLAIN_TEXT). Verified live (returns the created FeedItem).\n *\n * @scope member — requires a signed-in site member. Verified live.\n */",
23322
+ "decl": "export function createFeedItem(groupId: string, content: string): Promise<WixFeedItem>;",
23323
+ "scope": "member"
22819
23324
  },
22820
23325
  {
22821
23326
  "name": "WixReactionsSummary",
@@ -22832,14 +23337,16 @@
22832
23337
  {
22833
23338
  "name": "reactToFeedItem",
22834
23339
  "kind": "function",
22835
- "jsdoc": "/** Like (react to) a feed item as the signed-in member. Verified live (200 →\n * { total, reactionCodeCounts }). The real mobile app posts to the Groups\n * mobile-serverless wrapper (NOT the raw /api/v1/reactions REST route, which\n * 404s for the member): POST /serverless/mobile/feed/v3/addReaction with\n * { containerId=groupId, appDefId(Groups), reactionCode(emoji), resourceId=feedItemId, mode }.\n * Auth is the signed instance (the wixApi bridge attaches it). `mode:\"APPEND\"`\n * adds without clearing other reactions. (RE'd from wix-one-app-feed\n * feed-api.reactionPress + groups-mobile-serverless addReaction.) */",
22836
- "decl": "export function reactToFeedItem(feedItemId: string, groupId: string, reactionCode: string = DEFAULT_REACTION): Promise<WixReactionsSummary>;"
23340
+ "jsdoc": "/**\n * Like (react to) a feed item as the signed-in member. Verified live (200 →\n * { total, reactionCodeCounts }). The real mobile app posts to the Groups\n * mobile-serverless wrapper (NOT the raw /api/v1/reactions REST route, which\n * 404s for the member): POST /serverless/mobile/feed/v3/addReaction with\n * { containerId=groupId, appDefId(Groups), reactionCode(emoji), resourceId=feedItemId, mode }.\n * Auth is the signed instance (the wixApi bridge attaches it). `mode:\"APPEND\"`\n * adds without clearing other reactions. (RE'd from wix-one-app-feed\n * feed-api.reactionPress + groups-mobile-serverless addReaction.)\n *\n * @scope member — requires a signed-in site member. Verified live.\n */",
23341
+ "decl": "export function reactToFeedItem(feedItemId: string, groupId: string, reactionCode: string = DEFAULT_REACTION): Promise<WixReactionsSummary>;",
23342
+ "scope": "member"
22837
23343
  },
22838
23344
  {
22839
23345
  "name": "unreactFeedItem",
22840
23346
  "kind": "function",
22841
- "jsdoc": "/** Remove the member's reaction from a feed item — POST\n * /serverless/mobile/feed/v2/removeReaction (same body minus `mode`).\n * Verified live (200 → total decremented). */",
22842
- "decl": "export function unreactFeedItem(feedItemId: string, groupId: string, reactionCode: string = DEFAULT_REACTION): Promise<WixReactionsSummary>;"
23347
+ "jsdoc": "/**\n * Remove the member's reaction from a feed item — POST\n * /serverless/mobile/feed/v2/removeReaction (same body minus `mode`).\n * Verified live (200 → total decremented).\n *\n * @scope member — requires a signed-in site member. Verified live.\n */",
23348
+ "decl": "export function unreactFeedItem(feedItemId: string, groupId: string, reactionCode: string = DEFAULT_REACTION): Promise<WixReactionsSummary>;",
23349
+ "scope": "member"
22843
23350
  }
22844
23351
  ]
22845
23352
  },
@@ -23120,7 +23627,7 @@
23120
23627
  "name": "StoreProduct",
23121
23628
  "kind": "interface",
23122
23629
  "jsdoc": "",
23123
- "decl": "export interface StoreProduct {\n id?: string;\n name?: string;\n slug?: string;\n description?: string;\n plainDescription?: string;\n /** Both gallery layouts: V1 `mainMedia`/`items`, V3 `main`/`itemsInfo.items`. */\n media?: {\n mainMedia?: WixMediaSlot;\n main?: WixMediaSlot;\n items?: WixMediaSlot[];\n itemsInfo?: { items?: WixMediaSlot[] };\n };\n price?: { formatted?: { price?: string }; price?: number; currency?: string };\n priceData?: { formatted?: { price?: string }; price?: number; currency?: string };\n currency?: string;\n actualPriceRange?: {\n minValue?: { amount?: string; formattedAmount?: string; currency?: string };\n maxValue?: { amount?: string; formattedAmount?: string; currency?: string };\n };\n /** Option groups, both spellings: V1 `productOptions`, V3 `options`. Declared\n * because the wire carries them on BOTH catalogs and this type denying them is\n * what let every template product screen drop the colour/size picker. Shapes\n * differ per catalog, so read them with `productOptions()` from ./options. */\n productOptions?: unknown[];\n options?: unknown[];\n /** V3 purchasable variants. The cart addresses a V3 option choice by `variantId`,\n * which `cartOptionsPayload()` resolves out of this. */\n variantsInfo?: { variants?: unknown[] };\n}"
23630
+ "decl": "export interface StoreProduct {\n id?: string;\n productType?: string;\n name?: string;\n slug?: string;\n description?: string;\n plainDescription?: string;\n /** Both gallery layouts: V1 `mainMedia`/`items`, V3 `main`/`itemsInfo.items`. */\n media?: {\n mainMedia?: WixMediaSlot;\n main?: WixMediaSlot;\n items?: WixMediaSlot[];\n itemsInfo?: { items?: WixMediaSlot[] };\n };\n price?: { formatted?: { price?: string }; price?: number; currency?: string };\n priceData?: { formatted?: { price?: string }; price?: number; currency?: string };\n currency?: string;\n actualPriceRange?: {\n minValue?: { amount?: string; formattedAmount?: string; currency?: string };\n maxValue?: { amount?: string; formattedAmount?: string; currency?: string };\n };\n /** Option groups, both spellings: V1 `productOptions`, V3 `options`. Declared\n * because the wire carries them on BOTH catalogs and this type denying them is\n * what let every template product screen drop the colour/size picker. Shapes\n * differ per catalog, so read them with `productOptions()` from ./options. */\n productOptions?: unknown[];\n options?: unknown[];\n /** V3 purchasable variants. The cart addresses a V3 option choice by `variantId`,\n * which `cartOptionsPayload()` resolves out of this. */\n variantsInfo?: { variants?: unknown[] };\n}"
23124
23631
  },
23125
23632
  {
23126
23633
  "name": "StoreProductsResponse",