@behio/storefront-sdk 0.42.0 → 1.1.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/react.d.ts CHANGED
@@ -327,7 +327,55 @@ interface ProductVariant {
327
327
  */
328
328
  id: string;
329
329
  sku: string;
330
+ /**
331
+ * Variant name in the requested locale. Before SDK 1.1.0 this was always the
332
+ * warehouse item name, so translated shops showed one language to everyone.
333
+ */
330
334
  name: string;
335
+ /**
336
+ * Deep-link token for this variant — NOT a URL of its own.
337
+ *
338
+ * A variant has no standalone product page: the catalog 404s its slug and
339
+ * every listing excludes it, because a variant is bought from the parent's
340
+ * detail page. Link to `/product/{product.slug}?variant={variant.variantSlug}`
341
+ * and preselect the variant from that query parameter.
342
+ *
343
+ * Added in SDK 1.1.0.
344
+ */
345
+ variantSlug: string;
346
+ /**
347
+ * Short description of THIS variant, or `null` when the merchant left it
348
+ * empty. `null` means INHERIT: fall back to `ProductDetail.shortDescription`
349
+ * instead of rendering an empty block. Sanitised HTML.
350
+ *
351
+ * Added in SDK 1.1.0.
352
+ */
353
+ shortDescription?: string | null;
354
+ /** Long description of THIS variant. Same inherit-on-null contract as
355
+ * `shortDescription`. Added in SDK 1.1.0. */
356
+ longDescription?: string | null;
357
+ /**
358
+ * Gallery of THIS variant, ordered. Empty means the variant has no photos of
359
+ * its own, so keep showing the parent's gallery.
360
+ *
361
+ * Added in SDK 1.1.0.
362
+ */
363
+ images: ProductDetail["images"];
364
+ /**
365
+ * Per-variant SEO/OG overrides, or `null` when the merchant wrote none. The
366
+ * canonical URL stays the parent's, so use these only when a variant is
367
+ * preselected via `?variant=`.
368
+ *
369
+ * Added in SDK 1.1.0.
370
+ */
371
+ seo?: {
372
+ title?: string | null;
373
+ description?: string | null;
374
+ keywords?: string | null;
375
+ ogTitle?: string | null;
376
+ ogDescription?: string | null;
377
+ ogImage?: string | null;
378
+ } | null;
331
379
  /**
332
380
  * Axis name/value pairs identifying this variant (e.g.
333
381
  * `[{name: 'Barva', value: 'červená'}]`) — matches the wire shape the API
@@ -356,6 +404,14 @@ interface ProductVariant {
356
404
  * "default photo" or to render the picture in a subtler style.
357
405
  */
358
406
  imageIsInherited: boolean;
407
+ /**
408
+ * Parameters of this variant. A variant carries its own value where it has
409
+ * one and inherits the parent's everywhere else, so you can render the rows
410
+ * that actually differ under each variant. Empty when nothing is assigned.
411
+ *
412
+ * Added in SDK 1.0.0.
413
+ */
414
+ parameterGroups: ProductParameterGroup[];
359
415
  }
360
416
  interface ProductLabel {
361
417
  id: string;
@@ -569,25 +625,41 @@ interface VariantAxis {
569
625
  values: VariantAxisValue[];
570
626
  }
571
627
  /**
572
- * One custom-field (data-group value) rendered as a spec-table row. BOOLEAN
573
- * carries a typed `booleanValue` (value is null) so the storefront can localize
574
- * Ano/Ne; MONEY carries its currency in `unit`; PERCENTAGE carries "%" in
575
- * `unit`.
628
+ * One row of a curated parameter group.
629
+ *
630
+ * A parameter is something the merchant explicitly published: a label they
631
+ * wrote, a value resolved from a fixed string, a product field, or ONE named
632
+ * field of one warehouse data group. Nothing here reveals warehouse structure:
633
+ * no ids, no field keys, no internal types.
634
+ *
635
+ * `value` is null only for boolean parameters, where `booleanValue` carries the
636
+ * typed value so the storefront localizes Ano/Ne itself. A parameter with no
637
+ * value is omitted from the array rather than rendered as an empty row.
576
638
  */
577
- interface ProductCustomField {
578
- key: string;
579
- name: string;
580
- /** TEXT | NUMBER | DECIMAL | BOOLEAN | DATE | TIME | DATETIME | PERCENTAGE | MONEY | ITEM_LIST | ... */
581
- type: string;
639
+ interface ProductParameter {
640
+ label: string;
582
641
  value: string | null;
583
642
  booleanValue: boolean | null;
643
+ /** "cm", "g", a currency code, "%"; null when the parameter has none. */
584
644
  unit: string | null;
585
645
  }
586
- /** A spec-table section (one inventory data group) with its fields. */
587
- interface ProductCustomFieldGroup {
588
- key: string;
646
+ /**
647
+ * One curated parameter group. A product can carry several, so a template can
648
+ * render one as a spec table and another as badges. Ordering is array order,
649
+ * both for the groups and for the parameters inside them.
650
+ */
651
+ interface ProductParameterGroup {
652
+ /**
653
+ * Stable public identifier derived from the merchant's own group name
654
+ * ("Parametry oblečení" -> "parametry-obleceni"). Pass it to
655
+ * `catalog.getProductParameterGroup` to fetch just this group.
656
+ */
657
+ slug: string;
589
658
  name: string;
590
- fields: ProductCustomField[];
659
+ parameters: ProductParameter[];
660
+ }
661
+ interface ProductParametersResponse {
662
+ groups: ProductParameterGroup[];
591
663
  }
592
664
  interface ProductDetail extends ProductListItem {
593
665
  longDescription?: string;
@@ -617,14 +689,15 @@ interface ProductDetail extends ProductListItem {
617
689
  variantAxes: VariantAxis[];
618
690
  volumePricing: ProductVolumePrice[];
619
691
  /**
620
- * Structured product parameters from custom fields (inventory data groups),
621
- * grouped into spec-table sections (GAP-12). Empty when the product has no
622
- * data-group values. Distinct from `longDescription` (free HTML): this is
623
- * machine-readable key/value data for a "Parametry" table + comparison
624
- * engines. (Corrected from the old untyped `Record<string, unknown>` — the
625
- * API never populated that; it now sends this structured shape.)
692
+ * Curated parameter groups, already resolved. Empty when the merchant
693
+ * assigned none. Distinct from `longDescription` (free HTML): this is
694
+ * machine-readable key/value data for a "Parametry" table, comparison
695
+ * engines and AEO.
696
+ *
697
+ * Replaced `customFields` in SDK 1.0.0. The old field returned raw warehouse
698
+ * data groups, which published internal bookkeeping nobody curated.
626
699
  */
627
- customFields: ProductCustomFieldGroup[];
700
+ parameterGroups: ProductParameterGroup[];
628
701
  seo: {
629
702
  title?: string | null;
630
703
  description?: string | null;
@@ -731,13 +804,22 @@ interface CategoryDetail extends Category {
731
804
  ogImage?: string | null;
732
805
  };
733
806
  }
734
- type DataGroupFieldType = "TEXT" | "NUMBER" | "DECIMAL" | "BOOLEAN" | "DATE" | "TIME" | "DATETIME" | "PERCENTAGE" | "MONEY" | "ASSET" | "ITEM_LIST" | "DYNAMIC_NUMBER_CALCULATION_FROM_OTHERS";
807
+ /**
808
+ * One available filter, derived from a curated parameter the merchant marked
809
+ * filterable. A visitor can therefore never filter by a field that does not
810
+ * appear in the product's parameters.
811
+ */
735
812
  interface FilterField {
813
+ /** Parameter slug. Pass it back in `ProductsQuery.parameters` or `facets`. */
736
814
  key: string;
815
+ /** Parameter label in the requested language. */
737
816
  name: string;
738
- type: DataGroupFieldType | string;
739
- groupKey: string;
817
+ /** How to render it: value list, numeric range, or yes/no. */
818
+ type: "enum" | "range" | "boolean" | string;
819
+ /** Slug of the parameter group this filter belongs to. */
820
+ groupSlug: string;
740
821
  groupName: string;
822
+ unit?: string | null;
741
823
  values?: string[];
742
824
  }
743
825
  interface FacetValue {
@@ -757,14 +839,14 @@ interface FacetRange {
757
839
  max: number | null;
758
840
  }
759
841
  interface Facet {
842
+ /** Parameter slug. Never a warehouse field key. */
760
843
  key: string;
761
844
  name: string;
762
845
  /** "enum" (checkboxes), "range" (slider) or "boolean". */
763
846
  type: "enum" | "range" | "boolean" | string;
764
- groupKey: string;
847
+ /** Slug of the parameter group this facet belongs to. */
848
+ groupSlug: string;
765
849
  groupName: string;
766
- /** Underlying data-group field type (TEXT, NUMBER, MONEY, ...). */
767
- fieldType: string;
768
850
  /** enum/boolean facets: selectable values with counts. */
769
851
  values?: FacetValue[];
770
852
  /** range facets: numeric bounds within the current context. */
@@ -859,11 +941,17 @@ interface ProductsQuery {
859
941
  /** Minimum aggregate rating, e.g. 4 for "4 and up". */
860
942
  ratingMin?: number;
861
943
  search?: string;
862
- /** Custom-field filters. A value may be an array = multi-select (OR within
863
- * the key), e.g. {"barva": ["cerna", "bila"]}. */
864
- customFields?: Record<string, string | number | boolean | string[] | unknown>;
865
- /** Slug-based facet selection for SEO URLs: facet key -> value slugs, e.g.
866
- * {"barva": ["cerna"]}. Resolved server-side to the underlying values. */
944
+ /**
945
+ * Parameter filters, keyed by PARAMETER SLUG. A value may be an array =
946
+ * multi-select (OR within the key), e.g. {"barva": ["cerna", "bila"]}.
947
+ * Range filters use the `_min` / `_max` suffix, e.g. {"hmotnost_min": 100}.
948
+ *
949
+ * Replaced `customFields` in SDK 1.0.0, which was keyed by a warehouse
950
+ * data-group field key.
951
+ */
952
+ parameters?: Record<string, string | number | boolean | string[] | unknown>;
953
+ /** Slug-based facet selection for SEO URLs: parameter slug -> value slugs,
954
+ * e.g. {"barva": ["cerna"]}. Resolved server-side to the stored values. */
867
955
  facets?: Record<string, string[]>;
868
956
  /** Filter by specific product IDs (comma-separated in URL) */
869
957
  ids?: string[];
@@ -908,7 +996,22 @@ interface LoginInput {
908
996
  password: string;
909
997
  }
910
998
  interface CartItemProduct {
999
+ /**
1000
+ * Slug of the page this line links to. For a variant line this is the
1001
+ * PARENT's slug: a variant has no page of its own, so linking to its own slug
1002
+ * landed customers on a 404 (fixed 2026-08-03, SDK 1.1.0).
1003
+ */
911
1004
  slug: string;
1005
+ /**
1006
+ * Deep-link token of the variant on this line, `null` for a plain product.
1007
+ * Build the link as `/product/{slug}?variant={variantSlug}` so the customer
1008
+ * returns to the exact variant sitting in their cart.
1009
+ *
1010
+ * Added in SDK 1.1.0.
1011
+ */
1012
+ variantSlug?: string | null;
1013
+ /** Product name in the CART's language. Before SDK 1.1.0 the API picked an
1014
+ * arbitrary translation row, so this could come back in another language. */
912
1015
  name: string;
913
1016
  sku: string;
914
1017
  imageUrl?: string;
@@ -1202,7 +1305,10 @@ interface DigitalDownload {
1202
1305
  fileName: string;
1203
1306
  /** Localized product name the file belongs to (may be null). */
1204
1307
  productName: string | null;
1205
- /** Product slug for linking back to the PDP (may be null). */
1308
+ /**
1309
+ * Product slug for linking back to the PDP (may be null). Resolved the same
1310
+ * way as everywhere else: per-locale slug first, then the product id.
1311
+ */
1206
1312
  productSlug: string | null;
1207
1313
  fileSize: number;
1208
1314
  mimeType: string;
@@ -1224,7 +1330,10 @@ interface CourseListItem {
1224
1330
  courseId: string;
1225
1331
  /** Localized course (product) name, best-effort. */
1226
1332
  name: string | null;
1227
- /** Product slug for linking to the PDP. */
1333
+ /**
1334
+ * Product slug for linking to the PDP. Resolved the same way as in the
1335
+ * catalog: per-locale slug first, then the product id.
1336
+ */
1228
1337
  slug: string;
1229
1338
  imageUrl: string | null;
1230
1339
  totalLessons: number;
@@ -1276,6 +1385,7 @@ interface CourseModule {
1276
1385
  interface CourseDetail {
1277
1386
  courseId: string;
1278
1387
  name: string | null;
1388
+ /** Product slug for linking to the PDP (resolved per-locale slug, else id). */
1279
1389
  slug: string;
1280
1390
  imageUrl: string | null;
1281
1391
  /** Welcome text shown at the top of the member area (markdown). */
@@ -1616,15 +1726,17 @@ interface Bundle {
1616
1726
  slug: string;
1617
1727
  name: string;
1618
1728
  description: string | null;
1619
- bundlePrice: number;
1729
+ /** `null` when the eshop hides prices from guests and this visitor has no price entitlement. */
1730
+ bundlePrice: number | null;
1620
1731
  currency: string;
1621
1732
  coverImage: string | null;
1622
1733
  endsAt: number | null;
1623
- itemsSum: number;
1624
- /** Absolute saving vs buying the components separately, in `currency`. */
1625
- savings: number;
1626
- /** Percentage saving, 0–100. 0 when `itemsSum` is zero. */
1627
- savingsPercent: number;
1734
+ /** `null` when prices are hidden (see `bundlePrice`). */
1735
+ itemsSum: number | null;
1736
+ /** Absolute saving vs buying the components separately, in `currency`. `null` when prices are hidden. */
1737
+ savings: number | null;
1738
+ /** Percentage saving, 0–100. 0 when `itemsSum` is zero. `null` when prices are hidden. */
1739
+ savingsPercent: number | null;
1628
1740
  /** Minimum bundles per order. Default 1. */
1629
1741
  minQuantity: number;
1630
1742
  /** Maximum bundles per order. `null` = uncapped. */
@@ -2328,15 +2440,42 @@ declare class CatalogModule {
2328
2440
  locale?: string;
2329
2441
  currency?: string;
2330
2442
  }): Promise<SdkResult<PaginatedResponse<ProductListItem>>>;
2331
- /** Get available filter fields for dynamic filter UI */
2332
- getFilters(): Promise<SdkResult<{
2443
+ /**
2444
+ * Available filters for a dynamic filter UI.
2445
+ *
2446
+ * Derived from curated PARAMETERS the merchant marked filterable, so a
2447
+ * visitor can never filter by something that does not appear in the
2448
+ * product's parameters. Labels are per language, hence `locale`.
2449
+ */
2450
+ getFilters(options?: {
2451
+ locale?: string;
2452
+ }): Promise<SdkResult<{
2333
2453
  filters: FilterField[];
2334
2454
  }>>;
2335
2455
  /**
2336
- * Facet groups + selection-aware counts for the current filter set (custom
2337
- * fields, labels, price, availability, rating, subcategories). Pass the SAME
2338
- * query you pass to `getProducts` (category, search, price, inStock, ratingMin,
2339
- * customFields, facets slugs, labels): counts for each facet are computed with
2456
+ * Curated parameter groups of a product, already resolved (label, value,
2457
+ * unit, order). Returns an ARRAY of groups so a template can lay them out
2458
+ * however it likes: one group as a spec table, another as badges.
2459
+ *
2460
+ * A variant's own parameters ride along on `ProductDetail.variants[]`, so
2461
+ * this call is for the parent product.
2462
+ */
2463
+ getProductParameters(slug: string, options?: {
2464
+ locale?: string;
2465
+ }): Promise<SdkResult<ProductParametersResponse>>;
2466
+ /**
2467
+ * One specific parameter group of a product, by its slug. 404 when the
2468
+ * product does not have that group, which is deliberate: the caller asked
2469
+ * for a named thing, so an empty array would hide a wrong slug.
2470
+ */
2471
+ getProductParameterGroup(slug: string, groupSlug: string, options?: {
2472
+ locale?: string;
2473
+ }): Promise<SdkResult<ProductParameterGroup>>;
2474
+ /**
2475
+ * Facet groups + selection-aware counts for the current filter set
2476
+ * (parameters, labels, price, availability, rating, subcategories). Pass the
2477
+ * SAME query you pass to `getProducts` (category, search, price, inStock,
2478
+ * ratingMin, parameters, facets slugs, labels): counts are computed with
2340
2479
  * that facet excluded, and values that drop to 0 are still returned (render
2341
2480
  * them disabled). Use this to build an Alza-style filter sidebar.
2342
2481
  */
@@ -2956,6 +3095,8 @@ interface UseFeaturedOptions {
2956
3095
  declare function useFeatured(options?: UseFeaturedOptions): _tanstack_react_query.UseQueryResult<NoInfer<PaginatedResponse<ProductListItem>>, Error>;
2957
3096
 
2958
3097
  interface UseFiltersOptions {
3098
+ /** Filter labels are per language; defaults to the shop's default language. */
3099
+ locale?: string;
2959
3100
  enabled?: boolean;
2960
3101
  }
2961
3102
  declare function useFilters(options?: UseFiltersOptions): _tanstack_react_query.UseQueryResult<NoInfer<FilterField[]>, Error>;
@@ -2972,6 +3113,22 @@ interface UseFacetsOptions {
2972
3113
  */
2973
3114
  declare function useFacets(query?: ProductsQuery, options?: UseFacetsOptions): _tanstack_react_query.UseQueryResult<NoInfer<FacetsResponse>, Error>;
2974
3115
 
3116
+ interface UseProductParametersOptions {
3117
+ locale?: string;
3118
+ /** Fetch only this group (by its slug) instead of all of them. */
3119
+ groupSlug?: string;
3120
+ enabled?: boolean;
3121
+ }
3122
+ /**
3123
+ * Curated parameter groups of a product.
3124
+ *
3125
+ * Prefer reading `product.parameterGroups` from `useProduct` when you already
3126
+ * have the detail loaded; this hook is for the cases where you want the spec
3127
+ * table (or one named group) on its own, e.g. a comparison table or a tab that
3128
+ * loads lazily.
3129
+ */
3130
+ declare function useProductParameters(slug: string, options?: UseProductParametersOptions): _tanstack_react_query.UseQueryResult<NoInfer<ProductParameterGroup[]>, Error>;
3131
+
2975
3132
  interface UseSearchOptions {
2976
3133
  page?: number;
2977
3134
  limit?: number;
@@ -4345,4 +4502,4 @@ declare function revokeAnalyticsConsent(client: BehioStorefront): Promise<SdkRes
4345
4502
  success: boolean;
4346
4503
  }>>;
4347
4504
 
4348
- export { type ActivePromotion, type AddToCartInput, type AnalyticsEventInput, type AuthTokens, BehioAnalyticsTracker, BehioApiError, BehioProvider, type BehioProviderProps, type Bundle, type BundleItem, type Cart, type CartDiscount, type CartItem, type Category, type CategoryDetail, type CheckoutAddress, type CheckoutInput, type CookieConsent, type CookieConsentInput, type CrossSellItem, CurrencySwitcher, type CurrencySwitcherProps, type CurrencySwitcherRenderProps, type CustomerAddress, type CustomerProfile, type EcommerceEventName, type EcommerceItem, type EcommercePayload, type FilterField, type FulfillmentStatus, type GiftCardBalance, type LoginInput, type MessageResponse, type OrderDetail, type OrderItem, type OrderListItem, type OrderStatus, type Page, type PageDetail, type PaginatedResponse, type PaymentStatus, type PersonalOffer, type ProductDetail, type ProductLabel, type ProductListItem, type ProductPrice, type ProductReview, type ProductReviewsResponse, type ProductVariant, type ProductsQuery, type QuoteRequest, type RegisterInput, type ReturnRequest, type ShopInfo, type ShopSeo, type StorageAdapter, StorefrontScripts, type StorefrontScriptsProps, type SubmitQuoteInput, type SubmitReturnInput, type SubmitReviewInput, type UseAddressAutocompleteOptions, type UseAddressAutocompleteReturn, type UseAddressesOptions, type UseCartCountOptions, type UseCartOptions, type UseCategoriesOptions, type UseCategoryOptions, type UseCertificateVerificationOptions, type UseCourseCertificatesOptions, type UseCourseOptions, type UseCoursesOptions, type UseCurrencyResult, type UseCustomerOptions, type UseFacetsOptions, 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 UseProductsOptions, type UseSearchOptions, type UseShippingMethodsOptions, type UseShippingQuoteOptions, type UseShopInfoOptions, type UseShopScriptsOptions, type UseShopSeoOptions, type UseSubscriptionsOptions, type WishlistItem, cookieStorage, createMemoryStorage, detectStorage, formatPrice, generateVisitorId, getStoredVisitorId, grantAnalyticsConsent, localStorageAdapter, memoryStorage, revokeAnalyticsConsent, trackEcommerceEvent, useAddressAutocomplete, useAddresses, useAnalyticsEvents, useAuth, useBehio, useBehioClient, useBundle, useBundles, useCart, useCartCount, useCategories, useCategory, useCertificateVerification, useCheckout, useCookieConsent, useCourse, useCourseCertificates, useCourses, useCrossSell, useCurrency, useCustomer, useFacets, 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, useProductPromotions, useProductReviews, useProducts, useQuoteStatus, useReturnStatus, useSearch, useShippingMethods, useShippingQuote, useShopInfo, useShopScripts, useShopSeo, useSubmitQuote, useSubmitReturn, useSubmitReview, useSubscriptions, useWishlist };
4505
+ export { type ActivePromotion, type AddToCartInput, type AnalyticsEventInput, type AuthTokens, BehioAnalyticsTracker, BehioApiError, BehioProvider, type BehioProviderProps, type Bundle, type BundleItem, type Cart, type CartDiscount, type CartItem, type Category, type CategoryDetail, type CheckoutAddress, type CheckoutInput, 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 PageDetail, type PaginatedResponse, type PaymentStatus, 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, type ShopInfo, type ShopSeo, type StorageAdapter, StorefrontScripts, type StorefrontScriptsProps, type SubmitQuoteInput, type SubmitReturnInput, type SubmitReviewInput, type UseAddressAutocompleteOptions, type UseAddressAutocompleteReturn, type UseAddressesOptions, type UseCartCountOptions, type UseCartOptions, type UseCategoriesOptions, type UseCategoryOptions, type UseCertificateVerificationOptions, type UseCourseCertificatesOptions, type UseCourseOptions, type UseCoursesOptions, type UseCurrencyResult, type UseCustomerOptions, type UseFacetsOptions, 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 UseSubscriptionsOptions, type WishlistItem, cookieStorage, createMemoryStorage, detectStorage, formatPrice, generateVisitorId, getStoredVisitorId, grantAnalyticsConsent, localStorageAdapter, memoryStorage, revokeAnalyticsConsent, trackEcommerceEvent, useAddressAutocomplete, useAddresses, useAnalyticsEvents, useAuth, useBehio, useBehioClient, useBundle, useBundles, useCart, useCartCount, useCategories, useCategory, useCertificateVerification, useCheckout, useCookieConsent, useCourse, useCourseCertificates, useCourses, useCrossSell, useCurrency, useCustomer, useFacets, 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, useSubmitQuote, useSubmitReturn, useSubmitReview, useSubscriptions, useWishlist };