@businessdash/sdk 0.9.60 → 0.9.80

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 (239) hide show
  1. package/README.md +991 -295
  2. package/assets/biab-sw.js +92 -0
  3. package/dist/account-core/index.d.ts +126 -0
  4. package/dist/account-core/index.d.ts.map +1 -0
  5. package/dist/account-core/index.js +191 -0
  6. package/dist/account-core/index.js.map +1 -0
  7. package/dist/account.d.ts +11 -0
  8. package/dist/account.d.ts.map +1 -0
  9. package/dist/account.js +11 -0
  10. package/dist/account.js.map +1 -0
  11. package/dist/auth-handler.d.ts +1 -1
  12. package/dist/auth-links.d.ts +33 -0
  13. package/dist/auth-links.d.ts.map +1 -0
  14. package/dist/auth-links.js +64 -0
  15. package/dist/auth-links.js.map +1 -0
  16. package/dist/blog-core/index.d.ts +112 -0
  17. package/dist/blog-core/index.d.ts.map +1 -0
  18. package/dist/blog-core/index.js +330 -0
  19. package/dist/blog-core/index.js.map +1 -0
  20. package/dist/blog.d.ts +11 -0
  21. package/dist/blog.d.ts.map +1 -0
  22. package/dist/blog.js +11 -0
  23. package/dist/blog.js.map +1 -0
  24. package/dist/chat-core/index.d.ts +97 -0
  25. package/dist/chat-core/index.d.ts.map +1 -0
  26. package/dist/chat-core/index.js +237 -0
  27. package/dist/chat-core/index.js.map +1 -0
  28. package/dist/chat.d.ts +11 -0
  29. package/dist/chat.d.ts.map +1 -0
  30. package/dist/chat.js +11 -0
  31. package/dist/chat.js.map +1 -0
  32. package/dist/checkout-core/index.d.ts +65 -0
  33. package/dist/checkout-core/index.d.ts.map +1 -0
  34. package/dist/checkout-core/index.js +159 -0
  35. package/dist/checkout-core/index.js.map +1 -0
  36. package/dist/checkout.d.ts +10 -0
  37. package/dist/checkout.d.ts.map +1 -0
  38. package/dist/checkout.js +10 -0
  39. package/dist/checkout.js.map +1 -0
  40. package/dist/cli.js +133 -25
  41. package/dist/cli.js.map +1 -1
  42. package/dist/client.d.ts +622 -1
  43. package/dist/client.d.ts.map +1 -1
  44. package/dist/client.js +888 -1
  45. package/dist/client.js.map +1 -1
  46. package/dist/consent-core/index.cjs +107 -0
  47. package/dist/consent-core/index.d.ts +103 -0
  48. package/dist/consent-core/index.d.ts.map +1 -0
  49. package/dist/consent-core/index.js +157 -0
  50. package/dist/consent-core/index.js.map +1 -0
  51. package/dist/contracts.d.ts +3526 -767
  52. package/dist/contracts.d.ts.map +1 -1
  53. package/dist/contracts.js +571 -4
  54. package/dist/contracts.js.map +1 -1
  55. package/dist/data-model-schema.d.ts +1 -1
  56. package/dist/data-model-schema.d.ts.map +1 -1
  57. package/dist/element.d.ts +30 -0
  58. package/dist/element.d.ts.map +1 -1
  59. package/dist/element.js +56 -0
  60. package/dist/element.js.map +1 -1
  61. package/dist/embed-protocol.d.ts +86 -0
  62. package/dist/embed-protocol.d.ts.map +1 -0
  63. package/dist/embed-protocol.js +60 -0
  64. package/dist/embed-protocol.js.map +1 -0
  65. package/dist/framework-support.d.ts +122 -0
  66. package/dist/framework-support.d.ts.map +1 -0
  67. package/dist/framework-support.js +323 -0
  68. package/dist/framework-support.js.map +1 -0
  69. package/dist/index.cjs +1355 -24
  70. package/dist/legal-core/index.cjs +115 -0
  71. package/dist/legal-core/index.d.ts +160 -0
  72. package/dist/legal-core/index.d.ts.map +1 -0
  73. package/dist/legal-core/index.js +220 -0
  74. package/dist/legal-core/index.js.map +1 -0
  75. package/dist/marketing-core/index.d.ts +66 -0
  76. package/dist/marketing-core/index.d.ts.map +1 -0
  77. package/dist/marketing-core/index.js +154 -0
  78. package/dist/marketing-core/index.js.map +1 -0
  79. package/dist/marketing.d.ts +7 -0
  80. package/dist/marketing.d.ts.map +1 -0
  81. package/dist/marketing.js +7 -0
  82. package/dist/marketing.js.map +1 -0
  83. package/dist/mcp-adapters/index.d.ts +135 -0
  84. package/dist/mcp-adapters/index.d.ts.map +1 -0
  85. package/dist/mcp-adapters/index.js +187 -0
  86. package/dist/mcp-adapters/index.js.map +1 -0
  87. package/dist/mcp-adapters.d.ts +7 -0
  88. package/dist/mcp-adapters.d.ts.map +1 -0
  89. package/dist/mcp-adapters.js +7 -0
  90. package/dist/mcp-adapters.js.map +1 -0
  91. package/dist/model3d-core/index.cjs +95 -0
  92. package/dist/model3d-core/index.d.ts +167 -0
  93. package/dist/model3d-core/index.d.ts.map +1 -0
  94. package/dist/model3d-core/index.js +158 -0
  95. package/dist/model3d-core/index.js.map +1 -0
  96. package/dist/notifications-core/index.cjs +315 -0
  97. package/dist/notifications-core/index.d.ts +229 -0
  98. package/dist/notifications-core/index.d.ts.map +1 -0
  99. package/dist/notifications-core/index.js +445 -0
  100. package/dist/notifications-core/index.js.map +1 -0
  101. package/dist/portal-core/index.d.ts +451 -0
  102. package/dist/portal-core/index.d.ts.map +1 -0
  103. package/dist/portal-core/index.js +819 -0
  104. package/dist/portal-core/index.js.map +1 -0
  105. package/dist/portal.d.ts +7 -0
  106. package/dist/portal.d.ts.map +1 -0
  107. package/dist/portal.js +7 -0
  108. package/dist/portal.js.map +1 -0
  109. package/dist/push-core/index.cjs +171 -0
  110. package/dist/push-core/index.d.ts +149 -0
  111. package/dist/push-core/index.d.ts.map +1 -0
  112. package/dist/push-core/index.js +231 -0
  113. package/dist/push-core/index.js.map +1 -0
  114. package/dist/react-marketing.d.ts +1 -17
  115. package/dist/react-marketing.d.ts.map +1 -1
  116. package/dist/react-marketing.js +4 -0
  117. package/dist/react-marketing.js.map +1 -1
  118. package/dist/react.d.ts +294 -101
  119. package/dist/react.d.ts.map +1 -1
  120. package/dist/react.js +302 -246
  121. package/dist/react.js.map +1 -1
  122. package/dist/seed-core/index.d.ts +354 -0
  123. package/dist/seed-core/index.d.ts.map +1 -0
  124. package/dist/seed-core/index.js +420 -0
  125. package/dist/seed-core/index.js.map +1 -0
  126. package/dist/seed.d.ts +7 -0
  127. package/dist/seed.d.ts.map +1 -0
  128. package/dist/seed.js +7 -0
  129. package/dist/seed.js.map +1 -0
  130. package/dist/seo-core/blog.d.ts +94 -0
  131. package/dist/seo-core/blog.d.ts.map +1 -0
  132. package/dist/seo-core/blog.js +149 -0
  133. package/dist/seo-core/blog.js.map +1 -0
  134. package/dist/seo-core/commerce.d.ts +64 -0
  135. package/dist/seo-core/commerce.d.ts.map +1 -0
  136. package/dist/seo-core/commerce.js +87 -0
  137. package/dist/seo-core/commerce.js.map +1 -0
  138. package/dist/seo-core/index.cjs +751 -0
  139. package/dist/seo-core/index.d.ts +226 -0
  140. package/dist/seo-core/index.d.ts.map +1 -0
  141. package/dist/seo-core/index.js +455 -0
  142. package/dist/seo-core/index.js.map +1 -0
  143. package/dist/seo-core/local.d.ts +181 -0
  144. package/dist/seo-core/local.d.ts.map +1 -0
  145. package/dist/seo-core/local.js +193 -0
  146. package/dist/seo-core/local.js.map +1 -0
  147. package/dist/sitemap-core/index.cjs +167 -0
  148. package/dist/sitemap-core/index.d.ts +155 -0
  149. package/dist/sitemap-core/index.d.ts.map +1 -0
  150. package/dist/sitemap-core/index.js +195 -0
  151. package/dist/sitemap-core/index.js.map +1 -0
  152. package/dist/social-core/index.d.ts +74 -0
  153. package/dist/social-core/index.d.ts.map +1 -0
  154. package/dist/social-core/index.js +72 -0
  155. package/dist/social-core/index.js.map +1 -0
  156. package/dist/social.d.ts +7 -0
  157. package/dist/social.d.ts.map +1 -0
  158. package/dist/social.js +7 -0
  159. package/dist/social.js.map +1 -0
  160. package/dist/solid-compat.d.ts +204 -0
  161. package/dist/solid-compat.d.ts.map +1 -0
  162. package/dist/solid-compat.js +221 -0
  163. package/dist/solid-compat.js.map +1 -0
  164. package/dist/store-core/index.d.ts +141 -0
  165. package/dist/store-core/index.d.ts.map +1 -0
  166. package/dist/store-core/index.js +277 -0
  167. package/dist/store-core/index.js.map +1 -0
  168. package/dist/store.d.ts +12 -0
  169. package/dist/store.d.ts.map +1 -0
  170. package/dist/store.js +12 -0
  171. package/dist/store.js.map +1 -0
  172. package/dist/vanilla.d.ts +111 -0
  173. package/dist/vanilla.d.ts.map +1 -1
  174. package/dist/vanilla.js +206 -0
  175. package/dist/vanilla.js.map +1 -1
  176. package/dist/verify-core/index.d.ts +98 -0
  177. package/dist/verify-core/index.d.ts.map +1 -0
  178. package/dist/verify-core/index.js +186 -0
  179. package/dist/verify-core/index.js.map +1 -0
  180. package/dist/verify.d.ts +8 -0
  181. package/dist/verify.d.ts.map +1 -0
  182. package/dist/verify.js +8 -0
  183. package/dist/verify.js.map +1 -0
  184. package/openapi.json +4516 -1311
  185. package/package.json +128 -11
  186. package/src/account-core/index.ts +309 -0
  187. package/src/account.ts +11 -0
  188. package/src/angular/headless.ts +519 -0
  189. package/src/angular/index.ts +3 -0
  190. package/src/auth-links.ts +76 -0
  191. package/src/blog-core/index.ts +423 -0
  192. package/src/blog.ts +11 -0
  193. package/src/chat-core/index.ts +335 -0
  194. package/src/chat.ts +11 -0
  195. package/src/checkout-core/index.ts +225 -0
  196. package/src/checkout.ts +10 -0
  197. package/src/cli.ts +184 -28
  198. package/src/client.ts +1097 -0
  199. package/src/consent-core/index.ts +213 -0
  200. package/src/contracts.ts +768 -11
  201. package/src/data-model-schema.ts +1 -1
  202. package/src/element.ts +102 -0
  203. package/src/embed-protocol.ts +100 -0
  204. package/src/framework-support.ts +440 -0
  205. package/src/legal-core/index.ts +276 -0
  206. package/src/marketing-core/index.ts +209 -0
  207. package/src/marketing.ts +7 -0
  208. package/src/mcp-adapters/index.ts +264 -0
  209. package/src/mcp-adapters.ts +7 -0
  210. package/src/model3d-core/index.ts +248 -0
  211. package/src/notifications-core/index.ts +650 -0
  212. package/src/portal-core/index.ts +1564 -0
  213. package/src/portal.ts +7 -0
  214. package/src/push-core/index.ts +335 -0
  215. package/src/qwik.tsx +602 -2
  216. package/src/react-marketing.tsx +5 -0
  217. package/src/react.tsx +434 -319
  218. package/src/seed-core/index.ts +735 -0
  219. package/src/seed.ts +7 -0
  220. package/src/seo-core/blog.ts +216 -0
  221. package/src/seo-core/commerce.ts +138 -0
  222. package/src/seo-core/index.ts +605 -0
  223. package/src/seo-core/local.ts +333 -0
  224. package/src/sitemap-core/index.ts +296 -0
  225. package/src/social-core/index.ts +103 -0
  226. package/src/social.ts +7 -0
  227. package/src/solid-compat.tsx +347 -0
  228. package/src/solid-surfaces.tsx +1311 -0
  229. package/src/solid.tsx +82 -60
  230. package/src/store-core/index.ts +426 -0
  231. package/src/store.ts +12 -0
  232. package/src/svelte/SocialLinks.svelte +84 -0
  233. package/src/svelte/headless.ts +435 -0
  234. package/src/svelte/index.ts +9 -0
  235. package/src/vanilla.ts +367 -0
  236. package/src/verify-core/index.ts +288 -0
  237. package/src/verify.ts +8 -0
  238. package/src/vue/headless.ts +527 -0
  239. package/src/vue/index.ts +3 -0
package/dist/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { type AddressDetailsResponse, type AddressFormValues, type AddressSearchInput, type AddressSearchResponse, type AddressVerifyResponse, type AiVisibilityInput, type AiVisibilityResponse, type AttributionHeartbeatInput, type AttributionHeartbeatResponse, type AttributionPolicy, type AuthIntrospectResponse, type BlogCategoryListResponse, type BlogCommentListResponse, type BlogCommentPostInput, type BlogCommentPostResponse, type BlogLikeResponse, type BlogListPostsResponse, type BlogPostBySlugResponse, type BlogSessionInput, type BlogSessionResponse, type BlogTagListResponse, type CartAddItemInput, type CartCouponInput, type CartSessionResponse, type CartSnapshot, type CartUpdateItemInput, type ChatbotAppendMessageInput, type ChatbotAvailability, type ChatbotChatInput, type ChatbotChatResponse, type ChatbotConfig, type ChatbotConfigUpdateInput, type ChatbotFormDefinition, type ChatbotFormSubmitInput, type ChatbotFormSubmitResponse, type ChatbotMessagesResponse, type ChatbotPersistedSessionInput, type ChatbotPersistedSessionResponse, type ChatbotRequestHumanInput, type ChatbotRequestHumanResponse, type ChatbotSessionResponse, type CheckoutSessionInput, type CheckoutSessionResponse, type CheckoutStartInput, type CheckoutStartResponse, type CheckoutStatusResponse, type ConfirmVerificationInput, type ConfirmVerificationResponse, type CouponValidateResponse, type CreateCollectionInput, type CreateCollectionResponse, type CreateEmailTemplateInput, type CreateEmailTemplateResponse, type CreateEmailTemplateVersionInput, type CreateEmailTemplateVersionResponse, type CustomerContactCompanyInput, type CustomerContactCompanyResponse, type CustomerContractDetail, type CustomerContractSignResponse, type CustomerDownloadsResponse, type CustomerInvoiceDetail, type CustomerInvoicePayInput, type CustomerInvoicePayResponse, type CustomerInvoicePdf, type CustomerJobActivityResponse, type CustomerJobComment, type CustomerJobCommentPostInput, type CustomerJobCommentsListResponse, type CustomerJobDetail, type CustomerJobEtaResponse, type CustomerNotificationPreferencesResponse, type CustomerNotificationPreferencesUpdateInput, type CustomerNotificationPreferencesUpdateResponse, type CustomerOrderDetail, type CustomerOrderListResponse, type CustomerPortalContextResponse, type CustomerPortalOtherOrgsResponse, type CustomerPortalProfile, type CustomerPortalUpdateProfileInput, type CustomerPortalUpdateProfileResponse, type CustomerQuoteActionResponse, type CustomerQuoteDetail, type CustomerReferralHistoryResponse, type CustomerReferralPayoutsResponse, type CustomerReferralStats, type CustomerReturnRequestCreated, type CustomerReturnRequestInput, type CustomerReviewListResponse, type CustomerReviewSubmitInput, type CustomerReviewSubmitResponse, type CustomerShipmentTracking, type CustomerWorkBundle, type DashboardSessionResponse, type ExecuteActionInput, type ExecuteActionResponse, type FollowerEditInput, type FollowerEditResponse, type FollowerJoinInput, type FollowerJoinResponse, type FollowerLeaveInput, type FollowerLeaveResponse, type FollowerMeInput, type FollowerMeResponse, type GetCollectionResponse, type GetEmailTemplateResponse, type GetMarketingLocalesResponse, type GetMarketingPageBundleResponse, type GetPublishedMarketingSchemaResponse, type GetSiteMarketingPageResponse, type GoogleAddress, type JobCategoryListResponse, type JobPosting, type JobPostingListResponse, type ListCollectionsResponse, type ListDataModelRecordsInput, type ListDataModelRecordsResponse, type ListEmailTemplatesInput, type ListEmailTemplatesResponse, type ListRowsInput, type ListRowsResponse, type ListSiteMarketingPagesResponse, type NotificationPreferencesResponse, type NotificationPreferencesUpdateInput, type PageViewsInput, type PageViewsResponse, type PublishMarketingSectionsInput, type PublishMarketingSectionsResponse, type QueryRowsInput, type QueryRowsResponse, type ReviewWallListResponse, type ShippingRatesInput, type ShippingRatesResponse, type ShippingSettingsResponse, type ShippingTrackResponse, type SiteAssetInput, type SiteBranding, type StartVerificationInput, type StartVerificationResponse, type StorefrontAddonsResponse, type StorefrontCategoriesResponse, type StorefrontListProductsResponse, type StorefrontProductDetail, type StorefrontProductReviewsResponse, type StorefrontProductsWithMetaResponse, type StorefrontRelatedProductsResponse, type StorefrontSessionInput, type StorefrontSessionResponse, type StorefrontSort, type SubscriptionCheckoutInput, type SubscriptionCheckoutResponse, type SubscriptionOffering, type SubscriptionOfferingsListResponse, type TenantAuthExchangeInput, type TenantAuthExchangeResponse, type TenantAuthMeResponse, type TenantAuthPasswordResetInput, type TenantAuthPasswordResetResponse, type TenantAuthSignOutResponse, type TenantAuthStartInput, type TenantAuthStartResponse, type UploadSiteAssetResponse, type UpsertDraftMarketingSchemaInput, type UpsertDraftMarketingSchemaResponse, type UpsertRowInput, type UpsertRowResponse } from "./contracts.js";
2
+ import { type AddressDetailsResponse, type AddressFormValues, type AddressSearchInput, type AddressSearchResponse, type AddressVerifyResponse, type AiVisibilityInput, type AiVisibilityResponse, type AttributionHeartbeatInput, type AttributionHeartbeatResponse, type AttributionPolicy, type AuthIntrospectResponse, type BlogCategoryListResponse, type BlogCommentListResponse, type BlogCommentPostInput, type BlogCommentPostResponse, type BlogLikeResponse, type BlogListPostsResponse, type BlogPostBySlugResponse, type BlogSessionInput, type BlogSessionResponse, type BlogTagListResponse, type CartAddItemInput, type CartCouponInput, type CartSessionResponse, type CartSnapshot, type CartUpdateItemInput, type ChatbotAppendMessageInput, type ChatbotAvailability, type ChatbotChatInput, type ChatbotChatResponse, type ChatbotConfig, type ChatbotConfigUpdateInput, type ChatbotFormDefinition, type ChatbotFormSubmitInput, type ChatbotFormSubmitResponse, type ChatbotMessagesResponse, type ChatbotPersistedSessionInput, type ChatbotPersistedSessionResponse, type ChatbotRequestHumanInput, type ChatbotRequestHumanResponse, type ChatbotSessionResponse, type CheckoutSessionInput, type CheckoutSessionResponse, type CheckoutStartInput, type CheckoutStartResponse, type CheckoutStatusResponse, type ConfirmVerificationInput, type ConfirmVerificationResponse, type CouponCreateInput, type CouponCreateResponse, type CouponListResponse, type CouponValidateResponse, type CreateCollectionInput, type CreateCollectionResponse, type CreateEmailTemplateInput, type CreateEmailTemplateResponse, type CreateEmailTemplateVersionInput, type CreateEmailTemplateVersionResponse, type CustomerContactCompanyInput, type CustomerContactCompanyResponse, type CustomerContractDetail, type CustomerContractListResponse, type CustomerContractSignResponse, type CustomerDownloadsResponse, type CustomerInviteResendResponse, type CustomerInvoiceDetail, type CustomerInvoiceListResponse, type CustomerInvoicePayInput, type CustomerInvoicePayResponse, type CustomerInvoicePdf, type CustomerJobActivityResponse, type CustomerJobComment, type CustomerJobCommentPostInput, type CustomerJobCommentsListResponse, type CustomerJobDetail, type CustomerJobEtaResponse, type CustomerNotificationPreferencesResponse, type CustomerNotificationPreferencesUpdateInput, type CustomerNotificationPreferencesUpdateResponse, type CustomerNotReceivedResult, type CustomerOrderDetail, type CustomerOrderListResponse, type CustomerPortalContextResponse, type CustomerPortalMessage, type CustomerPortalMessageListResponse, type CustomerPortalMessagePostInput, type CustomerPortalMessagesMarkReadResponse, type CustomerPortalOtherOrgsResponse, type CustomerPortalProfile, type CustomerPortalQuizResultsResponse, type CustomerPortalUpdateProfileInput, type CustomerPortalUpdateProfileResponse, type CustomerProductReviewCreated, type CustomerProductReviewList, type CustomerPushConfig, type CustomerQuoteActionResponse, type CustomerQuoteDetail, type CustomerQuoteListResponse, type CustomerReferralHistoryResponse, type CustomerReferralPayoutsResponse, type CustomerReferralStats, type CustomerReturnRequestCreated, type CustomerReturnRequestInput, type CustomerReturnRequestListResponse, type CustomerReviewListResponse, type CustomerReviewSubmitInput, type CustomerReviewSubmitResponse, type CustomerShipmentListResponse, type CustomerShipmentTracking, type CustomerSubscriberContentResponse, type CustomerSubscriptionCancelResponse, type CustomerSubscriptionResponse, type CustomerWorkBundle, type DashboardSessionResponse, type ExecuteActionInput, type ExecuteActionResponse, type FollowerEditInput, type FollowerEditResponse, type FollowerJoinInput, type FollowerJoinResponse, type FollowerLeaveInput, type FollowerLeaveResponse, type FollowerMeInput, type FollowerMeResponse, type GetCollectionResponse, type GetEmailTemplateResponse, type GetMarketingLocalesResponse, type GetMarketingPageBundleResponse, type GetPublishedMarketingSchemaResponse, type GetSiteMarketingPageResponse, type GoogleAddress, type JobCategoryListResponse, type JobPosting, type JobPostingListResponse, type LegalDocument, type LegalListResponse, type ListCollectionsResponse, type ListDataModelRecordsInput, type ListDataModelRecordsResponse, type ListEmailTemplatesInput, type ListEmailTemplatesResponse, type ListRowsInput, type ListRowsResponse, type ListSiteMarketingPagesResponse, type NotificationPreferencesResponse, type NotificationPreferencesUpdateInput, type PageViewsInput, type PageViewsResponse, type PublishMarketingSectionsInput, type PublishMarketingSectionsResponse, type QueryRowsInput, type QueryRowsResponse, type ReviewWallListResponse, type SchedulingBookingResult, type SchedulingBookingView, type SchedulingCancelResult, type SchedulingEventTypeDetail, type SchedulingEventTypeList, type SchedulingRescheduleResult, type SchedulingSlotsResponse, type ShippingRatesInput, type ShippingRatesResponse, type ShippingSettingsResponse, type ShippingTrackResponse, type SiteAssetInput, type SiteBranding, type StartVerificationInput, type StartVerificationResponse, type StorefrontAddonsResponse, type StorefrontCategoriesResponse, type StorefrontListProductsResponse, type StorefrontProductDetail, type StorefrontProductReviewsResponse, type StorefrontProductsWithMetaResponse, type StorefrontRelatedProductsResponse, type StorefrontSessionInput, type StorefrontSessionResponse, type StorefrontSort, type StorefrontSyncToStripeResponse, type SubscriptionCheckoutInput, type SubscriptionCheckoutResponse, type SubscriptionOffering, type SubscriptionOfferingsListResponse, type TenantAuthExchangeInput, type TenantAuthExchangeResponse, type TenantAuthMeResponse, type TenantAuthPasswordResetInput, type TenantAuthPasswordResetResponse, type TenantAuthSignOutResponse, type TenantAuthStartInput, type TenantAuthStartResponse, type UploadSiteAssetResponse, type UpsertDraftMarketingSchemaInput, type UpsertDraftMarketingSchemaResponse, type UpsertRowInput, type UpsertRowResponse } from "./contracts.js";
3
3
  export type FetchLike = typeof fetch;
4
4
  /** Options for {@link BiabDevClient} / {@link createBiabDevClient}. */
5
5
  export type BiabDevClientOptions = {
@@ -49,12 +49,29 @@ export declare class BiabDevClient {
49
49
  get coupons(): BiabDevCouponsClient;
50
50
  get subscriptions(): BiabDevSubscriptionsClient;
51
51
  get shipping(): BiabDevShippingClient;
52
+ /** Customer-portal invitations — currently resend. */
53
+ get customerInvites(): BiabDevCustomerInvitesClient;
52
54
  get notifications(): BiabDevNotificationsClient;
53
55
  get address(): BiabDevAddressClient;
54
56
  get blog(): BiabDevBlogClient;
55
57
  get reviews(): BiabDevReviewsClient;
58
+ /**
59
+ * Tracking consent for this org's site.
60
+ *
61
+ * Pair with `@businessdash/sdk/consent`, which handles the visitor cookie
62
+ * and gives you a gate to check before starting analytics.
63
+ */
64
+ get consent(): BiabDevConsentClient;
56
65
  /** Public job postings — build a careers page on your own domain. */
57
66
  get hiring(): BiabDevHiringClient;
67
+ /**
68
+ * The org's published legal pages — privacy, terms, refund policy, whatever
69
+ * they authored in the dashboard.
70
+ *
71
+ * Pair with `@businessdash/sdk/legal` to render them without writing a page
72
+ * per document.
73
+ */
74
+ get legal(): BiabDevLegalClient;
58
75
  get chatbot(): BiabDevChatbotClient;
59
76
  get auth(): BiabDevAuthClient;
60
77
  /**
@@ -102,6 +119,14 @@ export declare class BiabDevSiteClient {
102
119
  */
103
120
  readonly marketing: BiabDevMarketingClient;
104
121
  readonly parallelPages: BiabDevParallelPagesClient;
122
+ /**
123
+ * Booking and conference calls.
124
+ *
125
+ * Previously reachable only through `sdk.ts`'s separate scheduling
126
+ * resource, which is why the OpenAPI generator — which reads this file —
127
+ * never saw it, and why no non-JS starter had scheduling at all.
128
+ */
129
+ readonly scheduling: BiabDevSchedulingClient;
105
130
  constructor(client: BiabDevClient, siteId: string);
106
131
  /**
107
132
  * The org's storefront branding — logo + favicon (site static media) plus
@@ -114,6 +139,23 @@ export declare class BiabDevSiteClient {
114
139
  * <img src={b.logoUrl ?? b.orgIcon ?? ""} alt={b.orgName ?? ""} />
115
140
  * ```
116
141
  */
142
+ /**
143
+ * Every URL the PLATFORM owns the shape of, as JSON.
144
+ *
145
+ * Published site-builder pages, published legal documents, and every
146
+ * materialised programmatic-page URL. Blog posts and products are not here
147
+ * — the platform does not know where your site renders them. Merge those in
148
+ * with `@businessdash/sdk/sitemap`, which handles the whole job.
149
+ *
150
+ * Paths are relative, so you join them against your own origin rather than
151
+ * the org's primary verified domain.
152
+ */
153
+ sitemapEntries(): Promise<{
154
+ entries: Array<{
155
+ loc: string;
156
+ lastmod?: string | undefined;
157
+ }>;
158
+ }>;
117
159
  branding(): Promise<SiteBranding>;
118
160
  }
119
161
  export declare const parallelPagesListResponseSchema: z.ZodObject<{
@@ -691,6 +733,37 @@ export declare class BiabDevStorefrontClient {
691
733
  * own native product catalog using BIAB as the data layer.
692
734
  */
693
735
  createSession(input?: StorefrontSessionInput): Promise<StorefrontSessionResponse>;
736
+ /**
737
+ * Push your catalog into YOUR OWN Stripe account.
738
+ *
739
+ * Products and their variant combinations become Stripe Products and
740
+ * Prices on the Stripe account connected to your workspace, so you can
741
+ * manage the catalog here and let Stripe be the system of record for
742
+ * money. Safe to re-run: an unchanged product is left alone, and a new
743
+ * Price is minted only when the amount actually changed (Stripe Prices
744
+ * are immutable on amount).
745
+ *
746
+ * Requires a SECRET key holding `storefront:write` — never a publishable
747
+ * token, because this spends against Stripe on your behalf.
748
+ *
749
+ * Pass `productId` to sync one product. Omit it to sync everything not yet
750
+ * pushed, in bounded batches: check `remaining` and call again until it
751
+ * reaches 0.
752
+ *
753
+ * ```ts
754
+ * let remaining = 1;
755
+ * while (remaining > 0) {
756
+ * const res = await biab.storefront.syncToStripe();
757
+ * remaining = res.remaining;
758
+ * }
759
+ * ```
760
+ *
761
+ * Per-product failures are returned in `failed` rather than throwing, so
762
+ * one bad product doesn't abandon the batch.
763
+ */
764
+ syncToStripe(input?: {
765
+ productId?: string;
766
+ }): Promise<StorefrontSyncToStripeResponse>;
694
767
  /**
695
768
  * Paginated list of live products for the calling org's storefront.
696
769
  * Cursor is an opaque integer offset — pass back the response's
@@ -727,6 +800,33 @@ export declare class BiabDevStorefrontClient {
727
800
  * via `BiabApiError` if the product isn't live or doesn't belong
728
801
  * to the org bound to the API key.
729
802
  */
803
+ /**
804
+ * The CAD file for a product — STEP, IGES, or a native part file.
805
+ *
806
+ * ## Call this from YOUR server, then proxy it
807
+ *
808
+ * The API key is a server secret, so a browser cannot reach this directly.
809
+ * Expose your own route (`/api/products/:id/cad`), call this behind it, and
810
+ * redirect the visitor to the URL it returns.
811
+ *
812
+ * The platform withholds the raw URL from every product payload on purpose:
813
+ * CAD files are the largest thing it serves and are the org's intellectual
814
+ * property, so a catalog of naked URLs is a design library published to
815
+ * anyone willing to write a loop. This endpoint requires a `biab_cad` cookie
816
+ * on the incoming request, rate-limits per IP, and re-checks the
817
+ * `ecommerce.product_3d` entitlement before answering.
818
+ *
819
+ * `cacheSeconds` is what to put on your own response — CAD at a content URL
820
+ * does not change, so caching hard is where the bandwidth saving comes from.
821
+ *
822
+ * Rejects 404 when the product is a draft, has no CAD file, or the org lacks
823
+ * the add-on. Those are deliberately one answer.
824
+ */
825
+ getCadDownload(productId: string): Promise<{
826
+ url: string;
827
+ fileName: string | null;
828
+ cacheSeconds: number;
829
+ }>;
730
830
  getProduct(productId: string): Promise<StorefrontProductDetail>;
731
831
  /** Approved reviews for a product + aggregate (`avgRating`, `totalCount`).
732
832
  * Cursor-paginated — pass back `nextCursor` for the next page. */
@@ -926,6 +1026,34 @@ export declare class BiabDevCouponsClient {
926
1026
  * else toast.error(result.message);
927
1027
  * ```
928
1028
  */
1029
+ /**
1030
+ * Create a coupon and make it live in YOUR OWN Stripe account in one call —
1031
+ * a Stripe Coupon plus a Promotion Code, so the same string works on your
1032
+ * storefront and on Stripe-hosted Checkout.
1033
+ *
1034
+ * Creation and the Stripe sync are one operation deliberately: a coupon
1035
+ * that exists locally but not in Stripe is the failure worth designing out,
1036
+ * where a customer types a code your storefront accepts and Stripe rejects.
1037
+ * If the sync fails the coupon is still created and `stripeSynced` comes
1038
+ * back `false` with the reason, rather than pretending it is live.
1039
+ *
1040
+ * Requires a SECRET key holding `storefront:write`.
1041
+ *
1042
+ * ```ts
1043
+ * const { coupon, stripeSynced } = await biab.coupons.create({
1044
+ * code: 'WELCOME10',
1045
+ * discountType: 'percent',
1046
+ * value: 10,
1047
+ * })
1048
+ * ```
1049
+ *
1050
+ * Buy-X-get-Y and bundle-gift coupons aren't available here — Stripe has no
1051
+ * native BXGY, so those run through our own cart math and need the offer
1052
+ * rows the dashboard collects.
1053
+ */
1054
+ create(input: CouponCreateInput): Promise<CouponCreateResponse>;
1055
+ /** Every coupon on the workspace, newest first. Requires `storefront:write`. */
1056
+ list(): Promise<CouponListResponse>;
929
1057
  validate(code: string): Promise<CouponValidateResponse>;
930
1058
  }
931
1059
  /**
@@ -1176,6 +1304,77 @@ export declare class BiabDevHiringClient {
1176
1304
  */
1177
1305
  categories(): Promise<JobCategoryListResponse>;
1178
1306
  }
1307
+ /**
1308
+ * The org's published legal pages.
1309
+ *
1310
+ * Everything here is content the org deliberately put on the public internet;
1311
+ * drafts are filtered server-side and unreachable. Requires `legal:read`, which
1312
+ * is publishable — a browser token is the expected caller.
1313
+ *
1314
+ * @example
1315
+ * ```ts
1316
+ * const { items, presentation } = await client.legal.list();
1317
+ * const privacy = await client.legal.get("privacy");
1318
+ * ```
1319
+ */
1320
+ export declare class BiabDevLegalClient {
1321
+ private readonly client;
1322
+ constructor(client: BiabDevClient);
1323
+ /**
1324
+ * Every published document, plus the header/footer presentation.
1325
+ *
1326
+ * Both in one response because the common use — a footer link list — needs
1327
+ * the titles and the presentation together, and a second round trip for the
1328
+ * latter is one a site either makes on every page or skips entirely.
1329
+ */
1330
+ list(): Promise<LegalListResponse>;
1331
+ /**
1332
+ * One document by slug, body included.
1333
+ *
1334
+ * Rejects with a 404 when the slug is unpublished or absent — the two are
1335
+ * deliberately indistinguishable, since "exists but hidden" would leak that
1336
+ * an org is drafting a policy and is not something a caller can act on.
1337
+ */
1338
+ get(slug: string): Promise<LegalDocument>;
1339
+ }
1340
+ /**
1341
+ * Tracking consent, scoped to the calling org.
1342
+ *
1343
+ * Every call is answered for the org whose key made it. There is no shape here
1344
+ * that could read or write another org's consent — consent is given to a
1345
+ * controller, and one controller's record is not another's to act on.
1346
+ *
1347
+ * The visitor is identified by an `x-biab-visitor` header carrying an opaque id
1348
+ * from the caller's own first-party cookie. `@businessdash/sdk/consent` manages
1349
+ * that for you; these methods are the transport underneath it.
1350
+ */
1351
+ export declare class BiabDevConsentClient {
1352
+ private readonly client;
1353
+ constructor(client: BiabDevClient);
1354
+ /** The notice to show, and what this visitor currently allows. */
1355
+ get(visitorKey?: string | null): Promise<{
1356
+ categories: string[];
1357
+ noticeText: string | null;
1358
+ noticeVersion: number;
1359
+ allowed: string[];
1360
+ mustAsk: boolean;
1361
+ reason: string;
1362
+ }>;
1363
+ /**
1364
+ * Record the visitor's answer.
1365
+ *
1366
+ * `granted: []` is a real answer — "asked, refused everything" — and is
1367
+ * stored as one, so the banner does not reappear on the next page.
1368
+ */
1369
+ record(input: {
1370
+ visitorKey: string;
1371
+ granted: string[];
1372
+ noticeVersion: number;
1373
+ source?: "banner" | "settings";
1374
+ }): Promise<{
1375
+ ok: boolean;
1376
+ }>;
1377
+ }
1179
1378
  export declare class BiabDevChatbotClient {
1180
1379
  private readonly client;
1181
1380
  constructor(client: BiabDevClient);
@@ -1350,6 +1549,16 @@ export declare class BiabDevCustomerPortalClient {
1350
1549
  private headers;
1351
1550
  context(): Promise<CustomerPortalContextResponse>;
1352
1551
  getProfile(): Promise<CustomerPortalProfile>;
1552
+ /**
1553
+ * The signed-in customer's quiz results at this org — the SDK side of
1554
+ * the account-gated reveal: an invitation completed with "create an
1555
+ * account to see how you did" surfaces its result here (and only to
1556
+ * the invited email). Interview-mode quizzes come back with
1557
+ * `scoreWithheld: true` and no verdict, by the org's own setting.
1558
+ */
1559
+ myQuizResults(options?: {
1560
+ token?: string;
1561
+ }): Promise<CustomerPortalQuizResultsResponse>;
1353
1562
  updateProfile(input: CustomerPortalUpdateProfileInput): Promise<CustomerPortalUpdateProfileResponse>;
1354
1563
  myOtherCustomerOrgs(): Promise<CustomerPortalOtherOrgsResponse>;
1355
1564
  /**
@@ -1501,6 +1710,68 @@ export declare class BiabDevCustomerPortalClient {
1501
1710
  }): Promise<CustomerReferralHistoryResponse>;
1502
1711
  /** The customer's referral payout history + upcoming rows (newest first). */
1503
1712
  myReferralPayouts(): Promise<CustomerReferralPayoutsResponse>;
1713
+ /**
1714
+ * The return requests on one order, newest first.
1715
+ *
1716
+ * `resolutionNote` carries staff's answer — when a return is denied that IS
1717
+ * the answer, and hiding it just moves the question to email.
1718
+ */
1719
+ listReturnRequests(orderId: string): Promise<CustomerReturnRequestListResponse>;
1720
+ /**
1721
+ * The customer's message thread with the org's staff, newest first.
1722
+ *
1723
+ * Automated rows — the review-ask and similar — are excluded server-side, so
1724
+ * this is only what a person wrote.
1725
+ */
1726
+ listMessages(opts?: {
1727
+ limit?: number;
1728
+ jobId?: string;
1729
+ }): Promise<CustomerPortalMessageListResponse>;
1730
+ /** Send a message to the org's staff. Lands in the CRM timeline. */
1731
+ postMessage(input: CustomerPortalMessagePostInput): Promise<CustomerPortalMessage>;
1732
+ /**
1733
+ * Mark the staff messages read up to now.
1734
+ *
1735
+ * One-way: it never clears a stamp. A portal that could un-read a message
1736
+ * would let a customer hide from staff that they had seen something.
1737
+ */
1738
+ markMessagesRead(): Promise<CustomerPortalMessagesMarkReadResponse>;
1739
+ /**
1740
+ * The customer's invoices, newest first.
1741
+ *
1742
+ * `unpaid: true` filters on the computed BALANCE rather than on the status
1743
+ * string, because a partially-paid invoice still owes money whatever it is
1744
+ * called. This is the call behind "show me everything I owe" — which had no
1745
+ * endpoint at all before 0.9.61.
1746
+ */
1747
+ listInvoices(opts?: {
1748
+ limit?: number;
1749
+ status?: string;
1750
+ unpaid?: boolean;
1751
+ }): Promise<CustomerInvoiceListResponse>;
1752
+ /** The customer's quotes. `status: "sent"` is the set still awaiting them. */
1753
+ listQuotes(opts?: {
1754
+ limit?: number;
1755
+ status?: string;
1756
+ }): Promise<CustomerQuoteListResponse>;
1757
+ /** The customer's contracts. `status: "sent"` still awaits a signature. */
1758
+ listContracts(opts?: {
1759
+ limit?: number;
1760
+ status?: string;
1761
+ }): Promise<CustomerContractListResponse>;
1762
+ /**
1763
+ * Every shipment across the customer's orders. `active: true` narrows to
1764
+ * parcels still moving.
1765
+ *
1766
+ * STORED status only — no live carrier poll. `trackShipment(id)` spends a
1767
+ * Shippo request because it is one parcel the customer opened; doing that
1768
+ * per row here would mean a carrier call for every parcel in their history
1769
+ * on every page load.
1770
+ */
1771
+ listShipments(opts?: {
1772
+ limit?: number;
1773
+ active?: boolean;
1774
+ }): Promise<CustomerShipmentListResponse>;
1504
1775
  /**
1505
1776
  * The signed-in customer's orders (newest first), each with a shipment
1506
1777
  * roll-up (`overallStatus`, `anyInTransit`, `latestEstimatedDelivery`) for
@@ -1552,6 +1823,180 @@ export declare class BiabDevCustomerPortalClient {
1552
1823
  * ```
1553
1824
  */
1554
1825
  submitReturnRequest(orderId: string, input?: CustomerReturnRequestInput): Promise<CustomerReturnRequestCreated>;
1826
+ /**
1827
+ * Ask for a replacement instead of a refund.
1828
+ *
1829
+ * Sugar over `submitReturnRequest` with `kind: "exchange"`, because an
1830
+ * exchange reads as its own action to the person writing the UI, and burying
1831
+ * it in an options bag is how it stays undiscovered. `variantId` is the one
1832
+ * they want instead — omit it when that still needs a conversation.
1833
+ *
1834
+ * @example
1835
+ * ```ts
1836
+ * await portal.submitExchangeRequest(orderId, {
1837
+ * exchangeForVariantId: largeVariantId,
1838
+ * reason: "wrong size",
1839
+ * });
1840
+ * ```
1841
+ */
1842
+ submitExchangeRequest(orderId: string, input?: Omit<CustomerReturnRequestInput, "kind">): Promise<CustomerReturnRequestCreated>;
1843
+ /**
1844
+ * Report that a parcel never arrived.
1845
+ *
1846
+ * This does NOT change the shipment's carrier status, and deliberately so:
1847
+ * when the carrier says delivered and the customer says otherwise, both
1848
+ * facts matter — the carrier's scan is what the org files a claim against.
1849
+ * The result carries `carrierStatus` alongside the report so a UI can show
1850
+ * both: *"Carrier says delivered Aug 14 · You reported not received Aug 16."*
1851
+ *
1852
+ * `contested: true` means exactly that disagreement. Re-reporting an open
1853
+ * claim returns it with `alreadyOpen: true` rather than erroring — a
1854
+ * customer tapping twice is anxious, not hostile.
1855
+ *
1856
+ * @example
1857
+ * ```ts
1858
+ * const r = await portal.reportNotReceived(shipmentId, {
1859
+ * note: "Nothing on the porch, checked with neighbours.",
1860
+ * });
1861
+ * if (r.contested) showCarrierDisputeHelp();
1862
+ * ```
1863
+ */
1864
+ reportNotReceived(shipmentId: string, input?: {
1865
+ note?: string;
1866
+ }): Promise<CustomerNotReceivedResult>;
1867
+ /**
1868
+ * The product reviews this customer has written for this org.
1869
+ *
1870
+ * Distinct from `listReviews()`, which is reviews of the ORG. Both exist
1871
+ * because "are these people good to deal with" and "is this thing any good"
1872
+ * are different questions, stored in different tables, and shown in
1873
+ * different places.
1874
+ *
1875
+ * `isApproved: false` means QUEUED, not rejected — render it as "awaiting
1876
+ * review" or the customer will assume it was lost and write it again.
1877
+ */
1878
+ /**
1879
+ * The customer's subscription with this org, and what the org offers.
1880
+ *
1881
+ * One subscription per org — `user_subscriptions` is unique on
1882
+ * (user, org) — so there is no id to pass. The org's live offerings come
1883
+ * back alongside, because a portal that reports "not subscribed" and
1884
+ * nothing else is a dead end.
1885
+ *
1886
+ * **Render entitlement from `subscription.hasAccess`, not from `status`.**
1887
+ * A lifetime purchase has no period to expire and a cancelled subscription
1888
+ * keeps access until the period already paid for ends; `hasAccess` is
1889
+ * computed by the same function the content gates use, so the portal and
1890
+ * the gate cannot disagree.
1891
+ */
1892
+ getSubscription(): Promise<CustomerSubscriptionResponse>;
1893
+ /**
1894
+ * Cancel the subscription at the end of the paid period.
1895
+ *
1896
+ * Cancelling ends the RENEWAL, not the access: the customer has paid for
1897
+ * the period they are in and keeps everything until `accessUntil`. Ending
1898
+ * access on the click would take back something they already bought, which
1899
+ * is the most common way a subscription flow feels like a trap.
1900
+ *
1901
+ * Read `accessUntil` back to them — "active until 14 March" is the true
1902
+ * statement, not "cancelled".
1903
+ */
1904
+ cancelSubscription(): Promise<CustomerSubscriptionCancelResponse>;
1905
+ /**
1906
+ * Clear a pending cancellation.
1907
+ *
1908
+ * Between cancelling and the period ending nothing has actually been lost,
1909
+ * so changing your mind should cost one call rather than a re-purchase.
1910
+ * After the period ends there is nothing to resume and they subscribe again
1911
+ * like anyone else.
1912
+ */
1913
+ resumeSubscription(): Promise<CustomerSubscriptionCancelResponse>;
1914
+ /**
1915
+ * The content this subscription entitles them to — the answer to "what am
1916
+ * I actually getting for this?", which is the question asked right before
1917
+ * someone cancels.
1918
+ *
1919
+ * When `entitled` is false these are LOCKED previews, not an empty
1920
+ * entitlement: titles, excerpts and images, no bodies. Show them beside the
1921
+ * offer. Rendering an empty list would hide the pitch at exactly the moment
1922
+ * it is most relevant.
1923
+ */
1924
+ getSubscriberContent(opts?: {
1925
+ limit?: number;
1926
+ }): Promise<CustomerSubscriberContentResponse>;
1927
+ /**
1928
+ * Push config and the browsers this customer has registered.
1929
+ *
1930
+ * Returns `vapidPublicKey` too, because a page cannot subscribe without it.
1931
+ */
1932
+ getPushConfig(): Promise<CustomerPushConfig>;
1933
+ /**
1934
+ * Register this browser.
1935
+ *
1936
+ * Pair with `subscribeToPush()` from `@businessdash/sdk/push-core`, which
1937
+ * handles the service worker, the permission prompt and the key encoding
1938
+ * and hands back exactly this payload.
1939
+ *
1940
+ * Upserted on the endpoint, so re-subscribing from the same browser
1941
+ * refreshes the row rather than creating a second one.
1942
+ */
1943
+ subscribePush(input: {
1944
+ endpoint: string;
1945
+ p256dh: string;
1946
+ auth: string;
1947
+ userAgent?: string | null;
1948
+ label?: string | null;
1949
+ categories?: string[] | null;
1950
+ }): Promise<{
1951
+ id: string;
1952
+ created: boolean;
1953
+ }>;
1954
+ /**
1955
+ * Rename a device, or narrow what it receives.
1956
+ *
1957
+ * `categories: []` means "nothing for now" and keeps the subscription
1958
+ * warm — browsers make re-granting a revoked permission deliberately
1959
+ * awkward, so an "off" that discards the subscription is hard to undo.
1960
+ */
1961
+ updatePushDevice(input: {
1962
+ id: string;
1963
+ label?: string | null;
1964
+ categories?: string[] | null;
1965
+ }): Promise<{
1966
+ ok: boolean;
1967
+ }>;
1968
+ /**
1969
+ * Forget a device. Takes an id or the endpoint.
1970
+ *
1971
+ * A browser tearing its own subscription down knows its endpoint, not our
1972
+ * row id — so pass what `unsubscribeFromPush()` returns.
1973
+ */
1974
+ unsubscribePush(input: {
1975
+ id?: string;
1976
+ endpoint?: string;
1977
+ }): Promise<{
1978
+ ok: boolean;
1979
+ deletedId: string | null;
1980
+ }>;
1981
+ listProductReviews(): Promise<CustomerProductReviewList>;
1982
+ /**
1983
+ * Review a product this customer BOUGHT.
1984
+ *
1985
+ * The portal requires a matching order — it is standing inside the
1986
+ * customer's purchase history, which is the one thing the public storefront
1987
+ * does not know. That makes these verified-buyer reviews, and it stops a
1988
+ * competitor one-starring a catalogue they never bought.
1989
+ *
1990
+ * Rejects with `not_purchased` (403) when no order matches, and
1991
+ * `already_reviewed` (409) on a second review of the same product.
1992
+ * Moderation follows the ORG's policy, so the result may be
1993
+ * `awaitingModeration`.
1994
+ */
1995
+ submitProductReview(input: {
1996
+ productId: string;
1997
+ rating: number;
1998
+ content: string;
1999
+ }): Promise<CustomerProductReviewCreated>;
1555
2000
  /**
1556
2001
  * List the digital downloads the customer is entitled to for a paid order
1557
2002
  * (P10d). Each item is a ready-to-use URL — a short-lived presigned link for
@@ -1602,7 +2047,31 @@ export declare class BiabDevCustomerPortalClient {
1602
2047
  * dispatch travel-time recompute layer ships, at which point the
1603
2048
  * `eta` field switches sources without breaking this shape.
1604
2049
  */
2050
+ /**
2051
+ * Where the job and its technicians are in the dispatch lifecycle.
2052
+ *
2053
+ * Named for ETA historically; it is the DISPATCH STATUS surface, which is
2054
+ * why `getDispatchStatus` below is the same call under the name people
2055
+ * look for.
2056
+ *
2057
+ * Read `dispatchStatus` (job-level) for "is anyone on the way" and
2058
+ * `assignments[].dispatchStatus` for per-technician detail. They differ on
2059
+ * purpose: the job is `completed` only once the LAST assignee finishes.
2060
+ *
2061
+ * Nothing about the dispatch CASCADE is exposed — who was offered the job,
2062
+ * who declined, how many people were asked before someone accepted. That
2063
+ * is staff-internal, and a customer learning they were the fourth choice
2064
+ * helps nobody.
2065
+ */
1605
2066
  getJobEta(jobId: string): Promise<CustomerJobEtaResponse>;
2067
+ /**
2068
+ * Dispatch status for a job — the same call as `getJobEta`, under the name
2069
+ * developers actually search for.
2070
+ *
2071
+ * An alias rather than a second route: two endpoints returning the same
2072
+ * thing is how they drift.
2073
+ */
2074
+ getDispatchStatus(jobId: string): Promise<CustomerJobEtaResponse>;
1606
2075
  /**
1607
2076
  * Unified job activity feed: structured events (status changes,
1608
2077
  * dispatch lifecycle, media uploads, quote/contract/invoice
@@ -1677,5 +2146,157 @@ export declare class BiabDevAuthClient {
1677
2146
  */
1678
2147
  requestPasswordReset(input: TenantAuthPasswordResetInput): Promise<TenantAuthPasswordResetResponse>;
1679
2148
  }
2149
+ /**
2150
+ * Booking, rescheduling, cancelling — and the conference call attached to it.
2151
+ *
2152
+ * ## Both sides of every flow
2153
+ *
2154
+ * An invitee acts with a signed TOKEN from their confirmation email; staff act
2155
+ * with the API key. Both reach the same service, so the same notifications fire
2156
+ * to the invitee AND every host either way, and the booking records which of
2157
+ * them made the change.
2158
+ *
2159
+ * ## Three tokens, not one
2160
+ *
2161
+ * A confirmed booking yields `manageToken`, `rescheduleToken` and `cancelToken`
2162
+ * separately. A cancel link in an email must not also be able to reschedule,
2163
+ * and neither should be able to read the whole booking. One token for all three
2164
+ * would make every emailed link as powerful as the strongest thing it enables.
2165
+ *
2166
+ * ## The conference link is re-minted on reschedule
2167
+ *
2168
+ * Moving a booking can issue a new meeting URL. Read `conferenceLink` back from
2169
+ * the reschedule result rather than reusing the one from confirmation —
2170
+ * otherwise the calendar invite you send points at a dead room.
2171
+ */
2172
+ /**
2173
+ * Customer-portal invitations.
2174
+ *
2175
+ * For an org running its own admin tooling rather than the dashboard.
2176
+ */
2177
+ export declare class BiabDevCustomerInvitesClient {
2178
+ private readonly client;
2179
+ constructor(client: BiabDevClient);
2180
+ /**
2181
+ * Hand an invite link out again.
2182
+ *
2183
+ * **Rotates the token** — the previous link stops working. That is the
2184
+ * point rather than a side effect: if the reason for resending was "it went
2185
+ * to the wrong address", rotating IS the fix, and reusing the token would
2186
+ * leave the wrong recipient holding a working invitation. The cost is that
2187
+ * someone who finds the original email later gets a dead link, which is a
2188
+ * support message rather than an account.
2189
+ *
2190
+ * Rate limited to one send a minute per invitation, answering **429** with
2191
+ * a retry hint. Resend mails an address the caller chose, so an unbounded
2192
+ * one is a mail-bombing tool. Staff clicking the button in the dashboard
2193
+ * skip the wait; an API key does not, because an API key is the automated
2194
+ * caller the limit exists for.
2195
+ *
2196
+ * Refuses a **revoked** invitation (resending would quietly un-revoke it)
2197
+ * and a **fully-redeemed** one (it did its job; a new invitation should be
2198
+ * created as one, so the list keeps showing what happened).
2199
+ */
2200
+ resend(inviteId: string, opts?: {
2201
+ expiresInDays?: number | null;
2202
+ }): Promise<CustomerInviteResendResponse>;
2203
+ }
2204
+ export declare class BiabDevSchedulingClient {
2205
+ private readonly client;
2206
+ private readonly siteId;
2207
+ constructor(client: BiabDevClient, siteId: string);
2208
+ private path;
2209
+ /** What the org offers to book. */
2210
+ listEventTypes(): Promise<SchedulingEventTypeList>;
2211
+ /** One event type, plus the questions asked when booking it. */
2212
+ getEventType(slug: string): Promise<SchedulingEventTypeDetail>;
2213
+ /**
2214
+ * Free slots in a window.
2215
+ *
2216
+ * Ask for the window you are about to render, not the whole month: slot
2217
+ * computation walks every host's calendar and busy times, so a wide range
2218
+ * is a slow one.
2219
+ */
2220
+ getAvailableSlots(slug: string, params: {
2221
+ from: Date | string;
2222
+ to: Date | string;
2223
+ }): Promise<SchedulingSlotsResponse>;
2224
+ /**
2225
+ * Book a slot.
2226
+ *
2227
+ * Returns `pending` rather than `confirmed` when the event type requires
2228
+ * approval — say "requested" in the UI for that case, because telling
2229
+ * someone their meeting is booked when staff still have to accept it is the
2230
+ * kind of thing they plan a day around.
2231
+ */
2232
+ confirmBooking(input: {
2233
+ eventTypeSlug: string;
2234
+ startAt: Date | string;
2235
+ invitee: {
2236
+ email: string;
2237
+ name: string;
2238
+ phone?: string | null;
2239
+ timezone: string;
2240
+ };
2241
+ answers?: Array<{
2242
+ questionId: string;
2243
+ value: string;
2244
+ }>;
2245
+ notes?: string | null;
2246
+ schedulingLinkId?: string;
2247
+ holderKey?: string | null;
2248
+ }): Promise<SchedulingBookingResult>;
2249
+ /**
2250
+ * Read a booking with one of its signed tokens.
2251
+ *
2252
+ * `type` must match the token you hold — a cancel token will not open the
2253
+ * manage view. That is the point of issuing three.
2254
+ */
2255
+ getBooking(token: string, type?: "manage" | "cancel" | "reschedule"): Promise<SchedulingBookingView>;
2256
+ /**
2257
+ * Move a booking — the INVITEE side, with their reschedule token.
2258
+ *
2259
+ * Notifies the invitee and every host, and cancels the reminder jobs queued
2260
+ * against the old time so nobody gets "your meeting starts in 15 minutes"
2261
+ * for a slot that moved.
2262
+ */
2263
+ rescheduleBooking(input: {
2264
+ token: string;
2265
+ newStartAt: Date | string;
2266
+ reason?: string | null;
2267
+ }): Promise<SchedulingRescheduleResult>;
2268
+ /**
2269
+ * Move a booking as STAFF, with the API key rather than an invitee token.
2270
+ *
2271
+ * Same service as the token path, so the invitee AND every host are
2272
+ * notified either way, and the reminder jobs for the old time are
2273
+ * cancelled either way. `actorUserId` records WHO moved it, which is what
2274
+ * lets a customer's history say "they rescheduled" rather than leaving an
2275
+ * unexplained change.
2276
+ */
2277
+ rescheduleBookingAsStaff(input: {
2278
+ bookingId: string;
2279
+ newStartAt: Date | string;
2280
+ reason?: string | null;
2281
+ actorUserId?: string | null;
2282
+ }): Promise<SchedulingRescheduleResult>;
2283
+ /** Cancel a booking as STAFF. Notifies the invitee and every host. */
2284
+ cancelBookingAsStaff(input: {
2285
+ bookingId: string;
2286
+ reason?: string | null;
2287
+ actorUserId?: string | null;
2288
+ }): Promise<SchedulingCancelResult>;
2289
+ /**
2290
+ * Cancel a booking — the INVITEE side, with their cancel token.
2291
+ *
2292
+ * `reason` is passed to the hosts. Worth collecting: "something came up" and
2293
+ * "I booked the wrong service" lead to different follow-ups, and the second
2294
+ * is recoverable revenue.
2295
+ */
2296
+ cancelBooking(input: {
2297
+ token: string;
2298
+ reason?: string | null;
2299
+ }): Promise<SchedulingCancelResult>;
2300
+ }
1680
2301
  export {};
1681
2302
  //# sourceMappingURL=client.d.ts.map