@behio/storefront-sdk 2.22.0 → 2.25.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.
package/dist/index.mjs CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  ok,
13
13
  publishCartSummary,
14
14
  toSdkError
15
- } from "./chunk-VHHDIU6J.mjs";
15
+ } from "./chunk-GNWW2O3A.mjs";
16
16
 
17
17
  // src/react/utils/format-price.ts
18
18
  function formatPrice(amount, currency, locale, display) {
@@ -238,8 +238,25 @@ async function revokeAnalyticsConsent(client) {
238
238
  var ERROR_MESSAGES = {
239
239
  "cs": {
240
240
  "be.billing.apiDailyLimit": "Denn\xED limit vol\xE1n\xED API va\u0161eho tarifu ({limit}) je vy\u010Derpan\xFD. Obnov\xED se o p\u016Flnoci UTC, vy\u0161\u0161\xED tarif m\xE1 limit vy\u0161\u0161\xED.",
241
+ "be.bookings.bookingNotActive": "Rezervace u\u017E nen\xED aktivn\xED, tak\u017Ee ji nejde m\u011Bnit.",
242
+ "be.bookings.changeTooLate": "Na zm\u011Bnu nebo zru\u0161en\xED p\u0159es odkaz je u\u017E pozd\u011B. Ozv\u011Bte se n\xE1m pros\xEDm p\u0159\xEDmo.",
243
+ "be.bookings.manageNotFound": "Odkaz na rezervaci neplat\xED. Pou\u017Eijte pros\xEDm posledn\xED e-mail, kter\xFD v\xE1m p\u0159i\u0161el.",
244
+ "be.bookings.originNotAllowed": "Na tomto webu rezerva\u010Dn\xED widget nem\xE1 povolen\xED b\u011B\u017Eet.",
245
+ "be.bookings.rangeInvalid": "Konec obdob\xED je p\u0159ed za\u010D\xE1tkem.",
246
+ "be.bookings.rangeTooLong": "Vyberte nejv\xFD\u0161 {max} dn\xED.",
247
+ "be.bookings.rejected": "Rezervaci se nepoda\u0159ilo odeslat. Zkuste to pros\xEDm znovu.",
248
+ "be.bookings.serviceNotFound": "Slu\u017Eba nebyla nalezena nebo nen\xED dostupn\xE1.",
249
+ "be.bookings.servicesInvalid": "Vyberte aspo\u0148 jednu slu\u017Ebu.",
250
+ "be.bookings.servicesMixedCurrency": "Slu\u017Eby v jedn\xE9 rezervaci mus\xED m\xEDt stejnou m\u011Bnu.",
251
+ "be.bookings.slotTaken": "Tenhle term\xEDn si pr\xE1v\u011B n\u011Bkdo zarezervoval. Vyberte pros\xEDm jin\xFD.",
252
+ "be.bookings.staffCannotDoServices": "Vybran\xFD pracovn\xEDk tyto slu\u017Eby ned\u011Bl\xE1.",
253
+ "be.bookings.staffNotAvailable": "Vybran\xFD pracovn\xEDk te\u010F online rezervace nep\u0159ij\xEDm\xE1.",
254
+ "be.bookings.startInvalid": "Za\u010D\xE1tek rezervace nen\xED platn\xFD.",
255
+ "be.bookings.tooManyRequests": "P\u0159\xEDli\u0161 mnoho pokus\u016F. Zkuste to pros\xEDm za chv\xEDli.",
256
+ "be.bookings.widgetNotFound": "Rezervace tady nejsou dostupn\xE9.",
241
257
  "be.collections.collectionNotFound": "Kolekce nebyla nalezena.",
242
258
  "be.collections.itemNotFound": "Polo\u017Eka kolekce nebyla nalezena.",
259
+ "be.common.networkFailed": "Spojen\xED se serverem selhalo. Zkontrolujte p\u0159ipojen\xED a zkuste to znovu.",
243
260
  "be.common.notFound": "Tohle u\u017E neexistuje.",
244
261
  "be.forms.consentRequired": "Bez souhlasu nejde formul\xE1\u0159 odeslat.",
245
262
  "be.forms.fileFieldNotFound": "Formul\xE1\u0159 takov\xE9 pole pro soubor nem\xE1.",
@@ -262,6 +279,7 @@ var ERROR_MESSAGES = {
262
279
  "be.payments.goIdInvalid": "GoID nepat\u0159\xED k t\u011Bmto p\u0159\xEDstupov\xFDm \xFAdaj\u016Fm nebo neexistuje. Zkontrolujte GoID a tak\xE9 to, jestli sed\xED testovac\xED re\u017Eim.",
263
280
  "be.payments.returnNotFound": "N\xE1vratov\xE1 adresa z platebn\xED br\xE1ny nen\xED platn\xE1.",
264
281
  "be.payments.returnSecretMissing": "N\xE1vrat z platebn\xED br\xE1ny nen\xED na serveru nastaven\xFD.",
282
+ "be.payments.stripeAccountIncomplete": "Dokon\u010Dete aktivaci \xFA\u010Dtu ve Stripe. P\u0159ij\xEDm\xE1n\xED plateb nebo v\xFDplaty zat\xEDm nejsou povolen\xE9.",
265
283
  "be.payments.webhookMissingPaymentId": "Ozn\xE1men\xED od br\xE1ny {provider} neobsahuje identifik\xE1tor platby.",
266
284
  "be.payments.webhookSignatureInvalid": "Podpis platebn\xEDho ozn\xE1men\xED nen\xED platn\xFD.",
267
285
  "be.sms.accountInactive": "\xDA\u010Det u oper\xE1tora nen\xED aktivn\xED, tak\u017Ee p\u0159es n\u011Bj zpr\xE1vy neodejdou. Zkontrolujte ho v jeho administraci.",
@@ -485,6 +503,9 @@ var ERROR_MESSAGES = {
485
503
  "be.storefront.unknownPaymentProvider": "Nezn\xE1m\xFD poskytovatel plateb {provider}.",
486
504
  "be.storefront.variantsOnlyParent": "Produkt {name} nejde koupit p\u0159\xEDmo. Vyberte jednu z jeho variant.",
487
505
  "be.storefront.wishlistItemNotFound": "Polo\u017Eka obl\xEDben\xFDch nenalezena.",
506
+ "be.storefront.withdrawalAlreadySubmitted": "Od t\xE9to objedn\xE1vky u\u017E jste odstoupili, nebo u n\xED b\u011B\u017E\xED vr\xE1cen\xED v\u0161ech polo\u017Eek.",
507
+ "be.storefront.withdrawalDisabled": "Tento obchod online odstoupen\xED od smlouvy nenab\xEDz\xED. Napi\u0161te mu pros\xEDm e-mailem.",
508
+ "be.storefront.withdrawalNameRequired": "Vypl\u0148te pros\xEDm sv\xE9 jm\xE9no.",
488
509
  "be.web.webNotFound": "Web nebyl nalezen.",
489
510
  "be.validation.failed": "N\u011Bkter\xFD \xFAdaj nen\xED spr\xE1vn\u011B vypln\u011Bn\xFD. Zkontrolujte ho pros\xEDm.",
490
511
  "be.validation.required": "Toto pole je povinn\xE9.",
@@ -503,8 +524,25 @@ var ERROR_MESSAGES = {
503
524
  },
504
525
  "sk": {
505
526
  "be.billing.apiDailyLimit": "Denn\xFD limit volan\xED API v\xE1\u0161ho tarifu ({limit}) je vy\u010Derpan\xFD. Obnov\xED sa o polnoci UTC, vy\u0161\u0161\xED tarif m\xE1 vy\u0161\u0161\xED limit.",
527
+ "be.bookings.bookingNotActive": "Rezerv\xE1cia u\u017E nie je akt\xEDvna, tak\u017Ee ju nejde meni\u0165.",
528
+ "be.bookings.changeTooLate": "Na zmenu alebo zru\u0161enie cez odkaz je u\u017E neskoro. Ozvite sa n\xE1m pros\xEDm priamo.",
529
+ "be.bookings.manageNotFound": "Odkaz na rezerv\xE1ciu neplat\xED. Pou\u017Eite pros\xEDm posledn\xFD e-mail, ktor\xFD v\xE1m pri\u0161iel.",
530
+ "be.bookings.originNotAllowed": "Na tomto webe rezerva\u010Dn\xFD widget nem\xE1 povolenie be\u017Ea\u0165.",
531
+ "be.bookings.rangeInvalid": "Koniec obdobia je pred za\u010Diatkom.",
532
+ "be.bookings.rangeTooLong": "Vyberte najviac {max} dn\xED.",
533
+ "be.bookings.rejected": "Rezerv\xE1ciu sa nepodarilo odosla\u0165. Sk\xFAste to pros\xEDm znova.",
534
+ "be.bookings.serviceNotFound": "Slu\u017Eba nebola n\xE1jden\xE1 alebo nie je dostupn\xE1.",
535
+ "be.bookings.servicesInvalid": "Vyberte aspo\u0148 jednu slu\u017Ebu.",
536
+ "be.bookings.servicesMixedCurrency": "Slu\u017Eby v jednej rezerv\xE1cii musia ma\u0165 rovnak\xFA menu.",
537
+ "be.bookings.slotTaken": "Tento term\xEDn si pr\xE1ve niekto zarezervoval. Vyberte pros\xEDm in\xFD.",
538
+ "be.bookings.staffCannotDoServices": "Vybran\xFD pracovn\xEDk tieto slu\u017Eby nerob\xED.",
539
+ "be.bookings.staffNotAvailable": "Vybran\xFD pracovn\xEDk teraz online rezerv\xE1cie neprij\xEDma.",
540
+ "be.bookings.startInvalid": "Za\u010Diatok rezerv\xE1cie nie je platn\xFD.",
541
+ "be.bookings.tooManyRequests": "Pr\xEDli\u0161 ve\u013Ea pokusov. Sk\xFAste to pros\xEDm o chv\xED\u013Eu.",
542
+ "be.bookings.widgetNotFound": "Rezerv\xE1cie tu nie s\xFA dostupn\xE9.",
506
543
  "be.collections.collectionNotFound": "Kolekcia sa nena\u0161la.",
507
544
  "be.collections.itemNotFound": "Polo\u017Eka kolekcie sa nena\u0161la.",
545
+ "be.common.networkFailed": "Spojenie so serverom zlyhalo. Skontrolujte pripojenie a sk\xFAste to znova.",
508
546
  "be.common.notFound": "Toto u\u017E neexistuje.",
509
547
  "be.forms.consentRequired": "Bez s\xFAhlasu sa formul\xE1r ned\xE1 odosla\u0165.",
510
548
  "be.forms.fileFieldNotFound": "Formul\xE1r tak\xE9to pole pre s\xFAbor nem\xE1.",
@@ -527,6 +565,7 @@ var ERROR_MESSAGES = {
527
565
  "be.payments.goIdInvalid": "GoID nepatr\xED k t\xFDmto pr\xEDstupov\xFDm \xFAdajom alebo neexistuje. Skontrolujte GoID a tie\u017E to, \u010Di sed\xED testovac\xED re\u017Eim.",
528
566
  "be.payments.returnNotFound": "N\xE1vratov\xE1 adresa z platobnej br\xE1ny nie je platn\xE1.",
529
567
  "be.payments.returnSecretMissing": "N\xE1vrat z platobnej br\xE1ny nie je na serveri nastaven\xFD.",
568
+ "be.payments.stripeAccountIncomplete": "Dokon\u010Dite aktiv\xE1ciu \xFA\u010Dtu v Stripe. Prij\xEDmanie platieb alebo v\xFDplaty zatia\u013E nie s\xFA povolen\xE9.",
530
569
  "be.payments.webhookMissingPaymentId": "Ozn\xE1menie od br\xE1ny {provider} neobsahuje identifik\xE1tor platby.",
531
570
  "be.payments.webhookSignatureInvalid": "Podpis platobn\xE9ho ozn\xE1menia nie je platn\xFD.",
532
571
  "be.sms.accountInactive": "\xDA\u010Det u oper\xE1tora nie je akt\xEDvny, tak\u017Ee cez neho spr\xE1vy neod\xEDdu. Skontrolujte ho v jeho administr\xE1cii.",
@@ -750,6 +789,9 @@ var ERROR_MESSAGES = {
750
789
  "be.storefront.unknownPaymentProvider": "Nezn\xE1my poskytovate\u013E platieb {provider}.",
751
790
  "be.storefront.variantsOnlyParent": "Produkt {name} sa ned\xE1 k\xFApi\u0165 priamo. Vyberte jeden z jeho variantov.",
752
791
  "be.storefront.wishlistItemNotFound": "Polo\u017Eka ob\u013E\xFAben\xFDch sa nena\u0161la.",
792
+ "be.storefront.withdrawalAlreadySubmitted": "Od tejto objedn\xE1vky ste u\u017E odst\xFApili, alebo pri nej prebieha vr\xE1tenie v\u0161etk\xFDch polo\u017Eiek.",
793
+ "be.storefront.withdrawalDisabled": "Tento obchod online odst\xFApenie od zmluvy nepon\xFAka. Nap\xED\u0161te mu pros\xEDm e-mailom.",
794
+ "be.storefront.withdrawalNameRequired": "Vypl\u0148te pros\xEDm svoje meno.",
753
795
  "be.web.webNotFound": "Web sa nena\u0161iel.",
754
796
  "be.validation.failed": "Niektor\xFD \xFAdaj nie je spr\xE1vne vyplnen\xFD. Skontrolujte ho pros\xEDm.",
755
797
  "be.validation.required": "Toto pole je povinn\xE9.",
@@ -768,8 +810,25 @@ var ERROR_MESSAGES = {
768
810
  },
769
811
  "en": {
770
812
  "be.billing.apiDailyLimit": "Your plan's daily API limit ({limit} calls) has been reached. It resets at midnight UTC; higher plans have a higher limit.",
813
+ "be.bookings.bookingNotActive": "This booking is no longer active, so it cannot be changed.",
814
+ "be.bookings.changeTooLate": "It is too late to change or cancel through the link. Please contact us directly.",
815
+ "be.bookings.manageNotFound": "This booking link is not valid. Please use the latest e-mail you received.",
816
+ "be.bookings.originNotAllowed": "The booking widget is not allowed to run on this website.",
817
+ "be.bookings.rangeInvalid": "The end of the period is before its start.",
818
+ "be.bookings.rangeTooLong": "Choose at most {max} days.",
819
+ "be.bookings.rejected": "The booking could not be sent. Please try again.",
820
+ "be.bookings.serviceNotFound": "Service not found or not available.",
821
+ "be.bookings.servicesInvalid": "Choose at least one service.",
822
+ "be.bookings.servicesMixedCurrency": "Services in one booking must use the same currency.",
823
+ "be.bookings.slotTaken": "Someone has just booked this time. Please choose another one.",
824
+ "be.bookings.staffCannotDoServices": "The selected staff member does not provide these services.",
825
+ "be.bookings.staffNotAvailable": "The selected staff member is not taking online bookings right now.",
826
+ "be.bookings.startInvalid": "The booking start is not valid.",
827
+ "be.bookings.tooManyRequests": "Too many attempts. Please try again in a moment.",
828
+ "be.bookings.widgetNotFound": "Bookings are not available here.",
771
829
  "be.collections.collectionNotFound": "Collection not found.",
772
830
  "be.collections.itemNotFound": "Collection item not found.",
831
+ "be.common.networkFailed": "Connection to the server failed. Check your network and try again.",
773
832
  "be.common.notFound": "This no longer exists.",
774
833
  "be.forms.consentRequired": "The form cannot be sent without consent.",
775
834
  "be.forms.fileFieldNotFound": "This form has no such file field.",
@@ -792,6 +851,7 @@ var ERROR_MESSAGES = {
792
851
  "be.payments.goIdInvalid": "This GoID does not belong to these credentials or does not exist. Check the GoID, and check that test mode matches.",
793
852
  "be.payments.returnNotFound": "This payment return link is not valid.",
794
853
  "be.payments.returnSecretMissing": "Payment return is not configured on the server.",
854
+ "be.payments.stripeAccountIncomplete": "Complete your Stripe account activation. Payments or payouts are not enabled yet.",
795
855
  "be.payments.webhookMissingPaymentId": "The notification from {provider} does not contain a payment identifier.",
796
856
  "be.payments.webhookSignatureInvalid": "The payment notification signature is not valid.",
797
857
  "be.sms.accountInactive": "The operator account is not active, so nothing will go out through it. Check it in their administration.",
@@ -1015,6 +1075,9 @@ var ERROR_MESSAGES = {
1015
1075
  "be.storefront.unknownPaymentProvider": "Unknown payment provider",
1016
1076
  "be.storefront.variantsOnlyParent": "{name} cannot be purchased directly, choose one of its variants",
1017
1077
  "be.storefront.wishlistItemNotFound": "Wishlist item not found",
1078
+ "be.storefront.withdrawalAlreadySubmitted": "You have already withdrawn from this order, or a return of every item is in progress.",
1079
+ "be.storefront.withdrawalDisabled": "This shop does not offer online withdrawal. Please contact it by e-mail.",
1080
+ "be.storefront.withdrawalNameRequired": "Please enter your name.",
1018
1081
  "be.web.webNotFound": "Website not found",
1019
1082
  "be.validation.failed": "Some of the details are not filled in correctly. Please check them.",
1020
1083
  "be.validation.required": "This field is required.",
package/dist/next.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { p as BehioStorefrontConfig, B as BehioStorefront } from './client-BgU2lmu-.mjs';
1
+ import { p as BehioStorefrontConfig, B as BehioStorefront } from './client-CF_H3vgY.mjs';
2
2
 
3
3
  interface GetBehioOptions extends Partial<BehioStorefrontConfig> {
4
4
  /** Override the cart session cookie name (default: "behio_cart_session"). */
package/dist/next.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { p as BehioStorefrontConfig, B as BehioStorefront } from './client-BgU2lmu-.js';
1
+ import { p as BehioStorefrontConfig, B as BehioStorefront } from './client-CF_H3vgY.js';
2
2
 
3
3
  interface GetBehioOptions extends Partial<BehioStorefrontConfig> {
4
4
  /** Override the cart session cookie name (default: "behio_cart_session"). */
package/dist/next.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkL7IIU5MZjs = require('./chunk-L7IIU5MZ.js');
3
+ var _chunkIUC57IOBjs = require('./chunk-IUC57IOB.js');
4
4
 
5
5
  // src/next.ts
6
6
  var _headers = require('next/headers');
@@ -19,7 +19,7 @@ async function getBehio(options = {}) {
19
19
  const locale = _nullishCoalesce(options.locale, () => ( process.env.BEHIO_LOCALE));
20
20
  const currency = _nullishCoalesce(options.currency, () => ( process.env.BEHIO_CURRENCY));
21
21
  const cookieName = _nullishCoalesce(options.cartCookieName, () => ( CART_COOKIE_NAME));
22
- const client = new (0, _chunkL7IIU5MZjs.BehioStorefront)({
22
+ const client = new (0, _chunkIUC57IOBjs.BehioStorefront)({
23
23
  apiKey,
24
24
  ...baseUrl ? { baseUrl } : {},
25
25
  ...locale ? { locale } : {},
package/dist/next.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BehioStorefront
3
- } from "./chunk-VHHDIU6J.mjs";
3
+ } from "./chunk-GNWW2O3A.mjs";
4
4
 
5
5
  // src/next.ts
6
6
  import { cookies, headers } from "next/headers";
package/dist/react.d.mts CHANGED
@@ -318,6 +318,20 @@ interface ShopInfo {
318
318
  * may still be served.
319
319
  */
320
320
  seo?: ShopSeoIdentity;
321
+ /**
322
+ * Online withdrawal function (Art. 11a Directive 2011/83/EU, mandatory in
323
+ * the EU from 19 Jun 2026). When `enabled`, render a clearly labelled link
324
+ * ("Withdraw from contract here") in the footer and in the customer account,
325
+ * leading to the withdrawal form (`returns.withdraw`). Optional because
326
+ * cached ShopInfo payloads predating the field may still be served (2.25.0).
327
+ */
328
+ withdrawal?: WithdrawalSettings;
329
+ }
330
+ /** Merchant setting of the online withdrawal function (2.25.0). */
331
+ interface WithdrawalSettings {
332
+ enabled: boolean;
333
+ /** Withdrawal period in days from receipt of the goods (14 by law). */
334
+ periodDays: number;
321
335
  }
322
336
  interface ShopAppearance {
323
337
  primaryColor: string | null;
@@ -1464,6 +1478,12 @@ interface TaxBreakdownLine {
1464
1478
  grossAmount: number;
1465
1479
  }
1466
1480
  interface CartDiscount {
1481
+ /** Additional delivery benefit. Absent/null means none on older APIs.
1482
+ * FREE_SHIPPING in `type` still denotes a legacy delivery-only code. */
1483
+ shippingDiscountType?: "PERCENTAGE" | "FIXED_AMOUNT" | "FREE_SHIPPING" | null;
1484
+ /** Percentage or fixed amount, capped at delivery cost by checkout.
1485
+ * Do not subtract locally: use checkout preview's authoritative totals. */
1486
+ shippingDiscountValue?: number;
1467
1487
  code: string;
1468
1488
  type: string;
1469
1489
  value: number;
@@ -1901,6 +1921,9 @@ interface OrderDetail extends OrderListItem {
1901
1921
  * the order returned by `checkout.createOrder()`. Null/absent for
1902
1922
  * offline methods (bank transfer, COD) and zero-total orders.
1903
1923
  */
1924
+ /** Existing unexpired Stripe Checkout session for this authorized unpaid order.
1925
+ * Null after payment, cancellation, expiry, or when no eligible attempt exists.
1926
+ * Reopen it directly; never submit checkout again to retry this order. */
1904
1927
  paymentRedirectUrl?: string | null;
1905
1928
  }
1906
1929
  /** Generic response to `orders.requestAccessCode` — never reveals existence. */
@@ -3138,9 +3161,70 @@ interface ReturnableOrder {
3138
3161
  orderId: string;
3139
3162
  orderNumber: string;
3140
3163
  status: string;
3164
+ /** Name from the order billing address, to prefill the withdrawal form (2.25.0). */
3165
+ customerName: string | null;
3141
3166
  items: ReturnableOrderItem[];
3167
+ /** Withdrawal window of this order (2.25.0). */
3168
+ withdrawal: WithdrawalWindow;
3142
3169
  createdAt: number;
3143
3170
  }
3171
+ /**
3172
+ * What the withdrawal form should say about the period. The form stays
3173
+ * usable outside the window: the consumer may always submit, the merchant
3174
+ * decides. (2.25.0)
3175
+ */
3176
+ interface WithdrawalWindow {
3177
+ /** The e-shop offers the online withdrawal function. */
3178
+ enabled: boolean;
3179
+ periodDays: number;
3180
+ /** Last moment of the period (ms). Null while it has not started or delivery is not recorded. */
3181
+ deadlineAt: number | null;
3182
+ /** False only when the period demonstrably ended. */
3183
+ withinPeriod: boolean;
3184
+ /** AFTER_DEADLINE | BEFORE_DISPATCH | DELIVERY_UNKNOWN | DIGITAL_CONTENT_CONSENT */
3185
+ flags: WithdrawalFlag[];
3186
+ }
3187
+ type WithdrawalFlag = "AFTER_DEADLINE" | "BEFORE_DISPATCH" | "DELIVERY_UNKNOWN" | "DIGITAL_CONTENT_CONSENT";
3188
+ /**
3189
+ * Input of `returns.withdraw()`: the withdrawal statement of Art. 11a(2):
3190
+ * the consumer's name, the contract (order number) and the e-mail the
3191
+ * acknowledgement goes to. Send it only after the consumer pressed the
3192
+ * confirmation button ("Confirm withdrawal"), hence `confirmed: true`. (2.25.0)
3193
+ */
3194
+ interface SubmitWithdrawalInput {
3195
+ orderNumber: string;
3196
+ /** Order e-mail: the ownership gate and where the acknowledgement is sent. */
3197
+ email: string;
3198
+ name: string;
3199
+ /** Omit to withdraw from every still returnable item of the order. */
3200
+ items?: {
3201
+ orderItemId: string;
3202
+ quantity: number;
3203
+ }[];
3204
+ note?: string;
3205
+ confirmed: true;
3206
+ }
3207
+ /**
3208
+ * Returned by `returns.withdraw()`. Show it as the acknowledgement: the same
3209
+ * content with date and time also goes out by e-mail. `confirmationSent`
3210
+ * says whether that e-mail really went out. (2.25.0)
3211
+ */
3212
+ interface WithdrawalAcknowledgement {
3213
+ id: string;
3214
+ orderNumber: string;
3215
+ customerName: string;
3216
+ email: string;
3217
+ /** Date and time of submission (ms). */
3218
+ submittedAt: number;
3219
+ items: {
3220
+ productName: string;
3221
+ quantity: number;
3222
+ }[];
3223
+ note: string | null;
3224
+ deadlineAt: number | null;
3225
+ withinPeriod: boolean;
3226
+ confirmationSent: boolean;
3227
+ }
3144
3228
  interface ReturnRequestItem {
3145
3229
  id: string;
3146
3230
  orderItemId: string;
@@ -3171,6 +3255,8 @@ interface ReturnStatusItem {
3171
3255
  interface ReturnStatus {
3172
3256
  id: string;
3173
3257
  orderNumber: string;
3258
+ /** WITHDRAWAL = withdrawal from the contract, RETURN = return or complaint (2.25.0). */
3259
+ type: "RETURN" | "WITHDRAWAL";
3174
3260
  /** REQUESTED | APPROVED | SHIPPED_BACK | RECEIVED | REFUNDED | REJECTED | CLOSED */
3175
3261
  status: string;
3176
3262
  reason: string;
@@ -3330,6 +3416,145 @@ interface GamificationRefreshResult {
3330
3416
  awarded: number;
3331
3417
  completed: number;
3332
3418
  }
3419
+ type BookingLocale = "cs" | "sk" | "en";
3420
+ type BookingStatus = "PENDING" | "CONFIRMED" | "CANCELLED" | "NO_SHOW" | "COMPLETED";
3421
+ interface BookingService {
3422
+ id: string;
3423
+ categoryId: string | null;
3424
+ name: string;
3425
+ description: string | null;
3426
+ durationMinutes: number;
3427
+ /** Null = price on site (show it as such, never as 0). */
3428
+ price: number | null;
3429
+ /** ISO 4217 code (CZK, EUR, ...). */
3430
+ currency: string;
3431
+ }
3432
+ interface BookingCategory {
3433
+ id: string;
3434
+ name: string;
3435
+ }
3436
+ interface BookingStaff {
3437
+ id: string;
3438
+ name: string;
3439
+ title: string | null;
3440
+ bio: string | null;
3441
+ /** `#rrggbb` or null. */
3442
+ color: string | null;
3443
+ /** Services this person does. */
3444
+ serviceIds: string[];
3445
+ }
3446
+ interface BookingLocation {
3447
+ id: string;
3448
+ name: string;
3449
+ address: string | null;
3450
+ timezone: string;
3451
+ }
3452
+ /** Public booking setup of the site owner (`GET /bookings/config`). */
3453
+ interface BookingConfig {
3454
+ businessName: string;
3455
+ intro: string | null;
3456
+ /** `#rrggbb` brand colour of the widget, or null. */
3457
+ accentColor: string | null;
3458
+ defaultLocale: BookingLocale;
3459
+ /** Offer a staff choice step (otherwise send `staffId: null`). */
3460
+ allowStaffChoice: boolean;
3461
+ /** New bookings start as PENDING and the business confirms them. */
3462
+ requireApproval: boolean;
3463
+ /** How many days ahead a customer may book. */
3464
+ maxAdvanceDays: number;
3465
+ /** Customer may change or cancel until this many hours before the start. */
3466
+ customerCancelHours: number;
3467
+ contactPhone: string | null;
3468
+ contactEmail: string | null;
3469
+ /**
3470
+ * Online booking is paused (plan limit). Do not offer the flow, show the
3471
+ * contact instead: `create` would answer `be.bookings.onlineLimitReached`.
3472
+ */
3473
+ onlinePaused: boolean;
3474
+ /** IANA time zone of the branch; show every day and time in it. */
3475
+ timezone: string;
3476
+ locations: BookingLocation[];
3477
+ categories: BookingCategory[];
3478
+ services: BookingService[];
3479
+ staff: BookingStaff[];
3480
+ }
3481
+ interface BookingSlot {
3482
+ startMs: number;
3483
+ endMs: number;
3484
+ }
3485
+ interface BookingSlots {
3486
+ timezone: string;
3487
+ /** Total length of the selected services. */
3488
+ durationMinutes: number;
3489
+ slots: BookingSlot[];
3490
+ }
3491
+ interface BookingSlotsQuery {
3492
+ /** Selected services in the order they follow each other (1 to 10). */
3493
+ serviceIds: string[];
3494
+ /** Only this person; omit for anyone free. */
3495
+ staffId?: string | null;
3496
+ /** First day `YYYY-MM-DD` (branch time zone). */
3497
+ from: string;
3498
+ /** Last day `YYYY-MM-DD`, at most 31 days after `from`. */
3499
+ to: string;
3500
+ }
3501
+ interface BookingManageSlotsQuery {
3502
+ from: string;
3503
+ to: string;
3504
+ }
3505
+ interface BookingCreateInput {
3506
+ serviceIds: string[];
3507
+ /** Null or omitted = anyone free. */
3508
+ staffId?: string | null;
3509
+ /** `startMs` of a slot from `getSlots`. */
3510
+ startMs: number;
3511
+ name: string;
3512
+ email: string;
3513
+ phone?: string | null;
3514
+ note?: string | null;
3515
+ /** Language of the confirmation email. */
3516
+ locale?: BookingLocale;
3517
+ /** Honeypot: render a hidden input and send its value; people leave it empty. */
3518
+ website?: string;
3519
+ /** Analytics visitor (consent-gated), only for the CRM. */
3520
+ visitorId?: string | null;
3521
+ }
3522
+ /** One booking as the customer sees it. */
3523
+ interface Booking {
3524
+ id: string;
3525
+ /** Short code shown to the customer and in emails. */
3526
+ code: string;
3527
+ status: BookingStatus;
3528
+ startMs: number;
3529
+ endMs: number;
3530
+ timezone: string;
3531
+ businessName: string;
3532
+ staffName: string;
3533
+ locationName: string;
3534
+ locationAddress: string | null;
3535
+ services: string[];
3536
+ serviceIds: string[];
3537
+ /** Person chosen by the customer; null = anyone. */
3538
+ staffId: string | null;
3539
+ totalPrice: number | null;
3540
+ currency: string;
3541
+ customerName: string;
3542
+ /** The customer may still change or cancel (deadline from the settings). */
3543
+ canChange: boolean;
3544
+ /** Until when (ms) the customer may change or cancel. */
3545
+ changeDeadline: number | null;
3546
+ /** Phone of the business to show once `canChange` is false. */
3547
+ contactPhone: string | null;
3548
+ locale: string;
3549
+ }
3550
+ interface BookingCreated {
3551
+ booking: Booking;
3552
+ /**
3553
+ * Token for the change and cancel link (the same one the confirmation email
3554
+ * carries). Treat it like a password: never put it in analytics or logs.
3555
+ */
3556
+ manageToken: string;
3557
+ }
3333
3558
 
3334
3559
  declare class BehioStorefront {
3335
3560
  private baseUrl;
@@ -3384,6 +3609,7 @@ declare class BehioStorefront {
3384
3609
  readonly forms: FormsModule;
3385
3610
  readonly collections: CollectionsModule;
3386
3611
  readonly faq: FaqModule;
3612
+ readonly bookings: BookingsModule;
3387
3613
  readonly wishlist: WishlistModule;
3388
3614
  readonly reviews: ReviewsModule;
3389
3615
  readonly returns: ReturnsModule;
@@ -4137,6 +4363,49 @@ declare class FaqModule {
4137
4363
  */
4138
4364
  get(group: string, query?: StorefrontFaqQuery): Promise<SdkResult<StorefrontFaqGroup>>;
4139
4365
  }
4366
+ /**
4367
+ * Online booking of the site owner's services (hair salon, clinic, lessons):
4368
+ * the public setup, free times, a new booking, and the change and cancel flow
4369
+ * behind the token from the confirmation email. Works with website keys that
4370
+ * have no e-shop attached; the Bookings module must be on in the admin
4371
+ * (otherwise 404 `be.bookings.widgetNotFound`).
4372
+ *
4373
+ * Days are `YYYY-MM-DD` in the branch time zone (`config.timezone`), not the
4374
+ * visitor's; format times with `timeZone: config.timezone`.
4375
+ *
4376
+ * Errors worth handling: 409 `be.bookings.slotTaken` (someone was faster:
4377
+ * reload the slots and let the customer pick again), 403
4378
+ * `be.bookings.onlineLimitReached` (online booking paused, show the contact),
4379
+ * 403 `be.bookings.changeTooLate` (too late to change, show
4380
+ * `booking.contactPhone`), 404 `be.bookings.manageNotFound` (old or wrong
4381
+ * token), 429 (rate limit: 10 new bookings and 20 changes per minute).
4382
+ */
4383
+ declare class BookingsModule {
4384
+ private client;
4385
+ constructor(client: BehioStorefront);
4386
+ /** Services, categories, staff, branches and rules of the booking flow. */
4387
+ getConfig(): Promise<SdkResult<BookingConfig>>;
4388
+ /** Free start times for the selected services (at most 31 days per call). */
4389
+ getSlots(query: BookingSlotsQuery): Promise<SdkResult<BookingSlots>>;
4390
+ /**
4391
+ * Create a booking. Counts toward the monthly online limit of the plan.
4392
+ * Keep `manageToken` only to link the customer to the change and cancel
4393
+ * page; the same link arrives in the confirmation email.
4394
+ */
4395
+ create(input: BookingCreateInput): Promise<SdkResult<BookingCreated>>;
4396
+ /** The booking behind the token from the confirmation email. */
4397
+ getByToken(token: string): Promise<SdkResult<Booking>>;
4398
+ /** Free times to move the booking to (same services and person rules). */
4399
+ getManageSlots(token: string, query: BookingManageSlotsQuery): Promise<SdkResult<BookingSlots>>;
4400
+ /** Cancel the booking (optional reason for the business). */
4401
+ cancel(token: string, input?: {
4402
+ reason?: string | null;
4403
+ }): Promise<SdkResult<Booking>>;
4404
+ /** Move the booking to `startMs` of a slot from `getManageSlots`. */
4405
+ reschedule(token: string, input: {
4406
+ startMs: number;
4407
+ }): Promise<SdkResult<Booking>>;
4408
+ }
4140
4409
  /**
4141
4410
  * Merchant-defined forms (contact, demand, registration to an event...).
4142
4411
  * The definition is public and cacheable; a submit is validated server-side
@@ -4221,6 +4490,15 @@ declare class ReturnsModule {
4221
4490
  * quantities. POST so the email never appears in a URL.
4222
4491
  */
4223
4492
  lookupOrder(orderNumber: string, email: string): Promise<SdkResult<ReturnableOrder>>;
4493
+ /**
4494
+ * EU withdrawal function (Art. 11a Directive 2011/83/EU, 2.25.0). Two steps
4495
+ * in the template: the form (name, order number, e-mail), then a summary
4496
+ * with the "Confirm withdrawal" button that calls this. The result is the
4497
+ * acknowledgement to show; the same content with date and time goes out by
4498
+ * e-mail. Guests welcome, the order e-mail is the gate.
4499
+ */
4500
+ withdraw(input: SubmitWithdrawalInput): Promise<SdkResult<WithdrawalAcknowledgement>>;
4501
+ /** Return or complaint. Reason CHANGED_MIND is recorded as a withdrawal on the server. */
4224
4502
  submit(input: SubmitReturnInput): Promise<SdkResult<ReturnRequest>>;
4225
4503
  /** Email is the ownership gate; POST so it never lands in a URL / log. */
4226
4504
  getStatus(returnId: string, email: string): Promise<SdkResult<ReturnStatus>>;
@@ -5221,6 +5499,36 @@ declare function useSiteFormSubmit(slug: string): {
5221
5499
  reset: () => void;
5222
5500
  };
5223
5501
 
5502
+ interface UseBookingsOptions {
5503
+ enabled?: boolean;
5504
+ }
5505
+ /** Public booking setup: services, staff, branches, rules (`client.bookings.getConfig`). */
5506
+ declare function useBookingConfig(options?: UseBookingsOptions): _tanstack_react_query.UseQueryResult<NoInfer<BookingConfig>, Error>;
5507
+ /**
5508
+ * Free start times for the selected services. Disabled until at least one
5509
+ * service is picked. Free times change with every booking, so the data is
5510
+ * treated as stale after 30 seconds.
5511
+ */
5512
+ declare function useBookingSlots(query: BookingSlotsQuery, options?: UseBookingsOptions): _tanstack_react_query.UseQueryResult<NoInfer<BookingSlots>, Error>;
5513
+ /**
5514
+ * Create a booking. On 409 `be.bookings.slotTaken` the free times are
5515
+ * refreshed automatically; show `errorMessage(error, locale)` and let the
5516
+ * customer pick another time.
5517
+ */
5518
+ declare function useCreateBooking(): _tanstack_react_query.UseMutationResult<BookingCreated, Error, BookingCreateInput, unknown>;
5519
+ /** The booking behind the token from the confirmation email. */
5520
+ declare function useManagedBooking(token: string, options?: UseBookingsOptions): _tanstack_react_query.UseQueryResult<NoInfer<Booking>, Error>;
5521
+ /** Free times to move a booking to. */
5522
+ declare function useManagedBookingSlots(token: string, query: BookingManageSlotsQuery, options?: UseBookingsOptions): _tanstack_react_query.UseQueryResult<NoInfer<BookingSlots>, Error>;
5523
+ /** Cancel the booking; the cached booking is replaced with the answer. */
5524
+ declare function useCancelBooking(token: string): _tanstack_react_query.UseMutationResult<Booking, Error, void | {
5525
+ reason?: string | null;
5526
+ }, unknown>;
5527
+ /** Move the booking to a new start; the cached booking is replaced with the answer. */
5528
+ declare function useRescheduleBooking(token: string): _tanstack_react_query.UseMutationResult<Booking, Error, {
5529
+ startMs: number;
5530
+ }, unknown>;
5531
+
5224
5532
  interface UseShopInfoOptions {
5225
5533
  enabled?: boolean;
5226
5534
  }
@@ -5726,6 +6034,8 @@ declare function useLookupReturnableOrder(): _tanstack_react_query.UseMutationRe
5726
6034
  orderNumber: string;
5727
6035
  email: string;
5728
6036
  }, unknown>;
6037
+ /** EU withdrawal function: call after the consumer pressed "Confirm withdrawal" (2.25.0). */
6038
+ declare function useSubmitWithdrawal(): _tanstack_react_query.UseMutationResult<WithdrawalAcknowledgement, Error, SubmitWithdrawalInput, unknown>;
5729
6039
  declare function useSubmitReturn(): _tanstack_react_query.UseMutationResult<ReturnRequest, Error, SubmitReturnInput, unknown>;
5730
6040
  declare function useReturnStatus(returnId: string | undefined, email: string | undefined): _tanstack_react_query.UseQueryResult<NoInfer<ReturnStatus>, Error>;
5731
6041
 
@@ -6057,4 +6367,4 @@ declare function revokeAnalyticsConsent(client: BehioStorefront): Promise<SdkRes
6057
6367
  success: boolean;
6058
6368
  }>>;
6059
6369
 
6060
- export { type ActivePromotion, type AddToCartInput, type AnalyticsEventInput, type AuthTokens, BehioAnalyticsTracker, BehioApiError, BehioProvider, type BehioProviderProps, type Blog, type BlogPostDetail, type BlogPostListItem, type BlogPostsPage, type BlogPostsQuery, type BlogSettings, type BlogTag, type Bundle, type BundleItem, type Cart, type CartDiscount, type CartItem, type Category, type CategoryDetail, type CheckoutAddress, type CheckoutInput, type CheckoutPaymentMethod, type CookieConsent, type CookieConsentInput, type CrossSellItem, CurrencySwitcher, type CurrencySwitcherProps, type CurrencySwitcherRenderProps, type CustomerAddress, type CustomerProfile, type EcommerceEventName, type EcommerceItem, type EcommercePayload, type Facet, type FacetRange, type FacetValue, type FacetsResponse, type FilterField, type FulfillmentStatus, type GiftCardBalance, type LoginInput, type MessageResponse, type OrderDetail, type OrderItem, type OrderListItem, type OrderStatus, type Page, type PageAttachment, type PageDetail, type PaginatedResponse, type PaymentInstrument, type PaymentStatus, type PaymentSwift, type PersonalOffer, type ProductDetail, type ProductLabel, type ProductListItem, type ProductParameter, type ProductParameterGroup, type ProductParametersResponse, type ProductPrice, type ProductReview, type ProductReviewsResponse, type ProductVariant, type ProductsQuery, type QuoteRequest, type RegisterInput, type ReturnRequest, RichText, type RichTextProps, type ShopInfo, type ShopSeo, type SiteFormField, type SiteFormFieldOption, type SiteFormFieldType, type StorageAdapter, type StorefrontForm, type StorefrontFormFieldError, type StorefrontFormFieldErrorCode, type StorefrontFormSettings, type StorefrontFormSubmitInput, type StorefrontFormSubmitResult, StorefrontScripts, type StorefrontScriptsProps, type SubmitQuoteInput, type SubmitReturnInput, type SubmitReviewInput, type UseAddressAutocompleteOptions, type UseAddressAutocompleteReturn, type UseAddressesOptions, type UseBlogPostOptions, type UseBlogPostsOptions, type UseBlogsOptions, type UseCartCountOptions, type UseCartOptions, type UseCategoriesOptions, type UseCategoryOptions, type UseCertificateVerificationOptions, type UseCollectionOptions, type UseCourseCertificatesOptions, type UseCourseOptions, type UseCoursesOptions, type UseCurrencyResult, type UseCustomerOptions, type UseFacetsOptions, type UseFaqOptions, type UseFeaturedOptions, type UseFiltersOptions, type UseLabelsOptions, type UseLessonCommentsOptions, type UseLessonNoteOptions, type UseLessonQuizOptions, type UseLessonTutorOptions, type UseLoyaltyOptions, type UseMenuOptions, type UseOrderOptions, type UseOrdersOptions, type UsePageOptions, type UsePagesOptions, type UsePaymentMethodsOptions, type UsePersonalOffersOptions, type UseProductOptions, type UseProductParametersOptions, type UseProductsOptions, type UseSearchOptions, type UseShippingMethodsOptions, type UseShippingQuoteOptions, type UseShopInfoOptions, type UseShopScriptsOptions, type UseShopSeoOptions, type UseSiteFormOptions, type UseSubscriptionsOptions, type UseVisitorMessagesOptions, type VisitorMessage, type WishlistItem, cookieStorage, createMemoryStorage, detectStorage, formatPrice, generateVisitorId, getStoredVisitorId, grantAnalyticsConsent, localStorageAdapter, memoryStorage, revokeAnalyticsConsent, trackEcommerceEvent, useAddressAutocomplete, useAddresses, useAnalyticsEvents, useAuth, useBehio, useBehioClient, useBlogPost, useBlogPosts, useBlogs, useBundle, useBundles, useCart, useCartCount, useCategories, useCategory, useCertificateVerification, useCheckout, useCheckoutPreview, useCollection, useCollectionItem, useCookieConsent, useCourse, useCourseCertificates, useCourses, useCrossSell, useCurrency, useCustomer, useFacets, useFaqGroup, useFaqGroups, useFeatured, useFilters, useGiftCardBalance, useIsInWishlist, useLabels, useLessonComments, useLessonNote, useLessonQuiz, useLessonTutor, useLookupReturnableOrder, useLoyalty, useMenu, useNewsletterSubscribe, useNewsletterUnsubscribe, useNotifyWhenAvailable, useOrder, useOrderAccess, useOrders, usePage, usePages, usePaymentMethods, usePersonalOffers, usePickupPoints, useProduct, useProductGroup, useProductParameters, useProductPromotions, useProductReviews, useProducts, useQuoteStatus, useReturnStatus, useSearch, useShippingMethods, useShippingQuote, useShopInfo, useShopScripts, useShopSeo, useSiteForm, useSiteFormSubmit, useSubmitQuote, useSubmitReturn, useSubmitReview, useSubscriptions, useVisitorMessages, useWishlist };
6370
+ export { type ActivePromotion, type AddToCartInput, type AnalyticsEventInput, type AuthTokens, BehioAnalyticsTracker, BehioApiError, BehioProvider, type BehioProviderProps, type Blog, type BlogPostDetail, type BlogPostListItem, type BlogPostsPage, type BlogPostsQuery, type BlogSettings, type BlogTag, type Booking, type BookingCategory, type BookingConfig, type BookingCreateInput, type BookingCreated, type BookingLocale, type BookingLocation, type BookingManageSlotsQuery, type BookingService, type BookingSlot, type BookingSlots, type BookingSlotsQuery, type BookingStaff, type BookingStatus, type Bundle, type BundleItem, type Cart, type CartDiscount, type CartItem, type Category, type CategoryDetail, type CheckoutAddress, type CheckoutInput, type CheckoutPaymentMethod, type CookieConsent, type CookieConsentInput, type CrossSellItem, CurrencySwitcher, type CurrencySwitcherProps, type CurrencySwitcherRenderProps, type CustomerAddress, type CustomerProfile, type EcommerceEventName, type EcommerceItem, type EcommercePayload, type Facet, type FacetRange, type FacetValue, type FacetsResponse, type FilterField, type FulfillmentStatus, type GiftCardBalance, type LoginInput, type MessageResponse, type OrderDetail, type OrderItem, type OrderListItem, type OrderStatus, type Page, type PageAttachment, type PageDetail, type PaginatedResponse, type PaymentInstrument, type PaymentStatus, type PaymentSwift, type PersonalOffer, type ProductDetail, type ProductLabel, type ProductListItem, type ProductParameter, type ProductParameterGroup, type ProductParametersResponse, type ProductPrice, type ProductReview, type ProductReviewsResponse, type ProductVariant, type ProductsQuery, type QuoteRequest, type RegisterInput, type ReturnRequest, RichText, type RichTextProps, type ShopInfo, type ShopSeo, type SiteFormField, type SiteFormFieldOption, type SiteFormFieldType, type StorageAdapter, type StorefrontForm, type StorefrontFormFieldError, type StorefrontFormFieldErrorCode, type StorefrontFormSettings, type StorefrontFormSubmitInput, type StorefrontFormSubmitResult, StorefrontScripts, type StorefrontScriptsProps, type SubmitQuoteInput, type SubmitReturnInput, type SubmitReviewInput, type SubmitWithdrawalInput, type UseAddressAutocompleteOptions, type UseAddressAutocompleteReturn, type UseAddressesOptions, type UseBlogPostOptions, type UseBlogPostsOptions, type UseBlogsOptions, type UseBookingsOptions, type UseCartCountOptions, type UseCartOptions, type UseCategoriesOptions, type UseCategoryOptions, type UseCertificateVerificationOptions, type UseCollectionOptions, type UseCourseCertificatesOptions, type UseCourseOptions, type UseCoursesOptions, type UseCurrencyResult, type UseCustomerOptions, type UseFacetsOptions, type UseFaqOptions, type UseFeaturedOptions, type UseFiltersOptions, type UseLabelsOptions, type UseLessonCommentsOptions, type UseLessonNoteOptions, type UseLessonQuizOptions, type UseLessonTutorOptions, type UseLoyaltyOptions, type UseMenuOptions, type UseOrderOptions, type UseOrdersOptions, type UsePageOptions, type UsePagesOptions, type UsePaymentMethodsOptions, type UsePersonalOffersOptions, type UseProductOptions, type UseProductParametersOptions, type UseProductsOptions, type UseSearchOptions, type UseShippingMethodsOptions, type UseShippingQuoteOptions, type UseShopInfoOptions, type UseShopScriptsOptions, type UseShopSeoOptions, type UseSiteFormOptions, type UseSubscriptionsOptions, type UseVisitorMessagesOptions, type VisitorMessage, type WishlistItem, type WithdrawalAcknowledgement, type WithdrawalWindow, cookieStorage, createMemoryStorage, detectStorage, formatPrice, generateVisitorId, getStoredVisitorId, grantAnalyticsConsent, localStorageAdapter, memoryStorage, revokeAnalyticsConsent, trackEcommerceEvent, useAddressAutocomplete, useAddresses, useAnalyticsEvents, useAuth, useBehio, useBehioClient, useBlogPost, useBlogPosts, useBlogs, useBookingConfig, useBookingSlots, useBundle, useBundles, useCancelBooking, useCart, useCartCount, useCategories, useCategory, useCertificateVerification, useCheckout, useCheckoutPreview, useCollection, useCollectionItem, useCookieConsent, useCourse, useCourseCertificates, useCourses, useCreateBooking, useCrossSell, useCurrency, useCustomer, useFacets, useFaqGroup, useFaqGroups, useFeatured, useFilters, useGiftCardBalance, useIsInWishlist, useLabels, useLessonComments, useLessonNote, useLessonQuiz, useLessonTutor, useLookupReturnableOrder, useLoyalty, useManagedBooking, useManagedBookingSlots, useMenu, useNewsletterSubscribe, useNewsletterUnsubscribe, useNotifyWhenAvailable, useOrder, useOrderAccess, useOrders, usePage, usePages, usePaymentMethods, usePersonalOffers, usePickupPoints, useProduct, useProductGroup, useProductParameters, useProductPromotions, useProductReviews, useProducts, useQuoteStatus, useRescheduleBooking, useReturnStatus, useSearch, useShippingMethods, useShippingQuote, useShopInfo, useShopScripts, useShopSeo, useSiteForm, useSiteFormSubmit, useSubmitQuote, useSubmitReturn, useSubmitReview, useSubmitWithdrawal, useSubscriptions, useVisitorMessages, useWishlist };