@behio/storefront-sdk 0.41.0 → 1.0.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.mts CHANGED
@@ -356,6 +356,14 @@ interface ProductVariant {
356
356
  * "default photo" or to render the picture in a subtler style.
357
357
  */
358
358
  imageIsInherited: boolean;
359
+ /**
360
+ * Parameters of this variant. A variant carries its own value where it has
361
+ * one and inherits the parent's everywhere else, so you can render the rows
362
+ * that actually differ under each variant. Empty when nothing is assigned.
363
+ *
364
+ * Added in SDK 1.0.0.
365
+ */
366
+ parameterGroups: ProductParameterGroup[];
359
367
  }
360
368
  interface ProductLabel {
361
369
  id: string;
@@ -411,6 +419,36 @@ interface ProductListItem {
411
419
  * disable the buy button, never re-derive the rule client-side.
412
420
  */
413
421
  isPurchasable: boolean;
422
+ /**
423
+ * The merchant sells this product ONLY through its variants: "Tričko" on its
424
+ * own means nothing, the shop sells the red one and the yellow one.
425
+ *
426
+ * The product keeps its card, its PDP and its search presence — it simply is
427
+ * not a sellable unit. `isPurchasable` is false and the cart/checkout reject
428
+ * its `id` with a 400, so the shopper must pick a variant first.
429
+ *
430
+ * When this is true, render the headline price as **"od {priceFrom}"** and
431
+ * keep the buy button disabled until a variant is chosen; then switch to that
432
+ * variant's own `price` and add `variant.id` to the cart. `price` still
433
+ * carries the parent's own number for backwards compatibility, but showing it
434
+ * as *the* price would quote 990 and charge 1990 — always label it "od".
435
+ *
436
+ * False for every product without variants, so nothing changes for shops that
437
+ * never turn it on.
438
+ */
439
+ variantsOnly: boolean;
440
+ /**
441
+ * "From" price: the CHEAPEST variant price, in the requested currency, or
442
+ * null when the product has no variants (or prices are gated behind login in
443
+ * B2B mode). Populated for EVERY variant parent, not only `variantsOnly`
444
+ * ones, so a card can render "od 990 Kč" whenever the template wants to.
445
+ *
446
+ * Computed over the same variant set the PDP lists (published, enabled
447
+ * variants) and deliberately IGNORING stock — a size selling out must not
448
+ * make the advertised price jump. `compareAtPrice` carries that same
449
+ * variant's strike-through price when it has one.
450
+ */
451
+ priceFrom?: ProductPrice | null;
414
452
  /**
415
453
  * Early bird (time-based launch price) is active: `price.amount` already IS
416
454
  * the discounted early-bird amount and the regular price sits in
@@ -539,25 +577,41 @@ interface VariantAxis {
539
577
  values: VariantAxisValue[];
540
578
  }
541
579
  /**
542
- * One custom-field (data-group value) rendered as a spec-table row. BOOLEAN
543
- * carries a typed `booleanValue` (value is null) so the storefront can localize
544
- * Ano/Ne; MONEY carries its currency in `unit`; PERCENTAGE carries "%" in
545
- * `unit`.
580
+ * One row of a curated parameter group.
581
+ *
582
+ * A parameter is something the merchant explicitly published: a label they
583
+ * wrote, a value resolved from a fixed string, a product field, or ONE named
584
+ * field of one warehouse data group. Nothing here reveals warehouse structure:
585
+ * no ids, no field keys, no internal types.
586
+ *
587
+ * `value` is null only for boolean parameters, where `booleanValue` carries the
588
+ * typed value so the storefront localizes Ano/Ne itself. A parameter with no
589
+ * value is omitted from the array rather than rendered as an empty row.
546
590
  */
547
- interface ProductCustomField {
548
- key: string;
549
- name: string;
550
- /** TEXT | NUMBER | DECIMAL | BOOLEAN | DATE | TIME | DATETIME | PERCENTAGE | MONEY | ITEM_LIST | ... */
551
- type: string;
591
+ interface ProductParameter {
592
+ label: string;
552
593
  value: string | null;
553
594
  booleanValue: boolean | null;
595
+ /** "cm", "g", a currency code, "%"; null when the parameter has none. */
554
596
  unit: string | null;
555
597
  }
556
- /** A spec-table section (one inventory data group) with its fields. */
557
- interface ProductCustomFieldGroup {
558
- key: string;
598
+ /**
599
+ * One curated parameter group. A product can carry several, so a template can
600
+ * render one as a spec table and another as badges. Ordering is array order,
601
+ * both for the groups and for the parameters inside them.
602
+ */
603
+ interface ProductParameterGroup {
604
+ /**
605
+ * Stable public identifier derived from the merchant's own group name
606
+ * ("Parametry oblečení" -> "parametry-obleceni"). Pass it to
607
+ * `catalog.getProductParameterGroup` to fetch just this group.
608
+ */
609
+ slug: string;
559
610
  name: string;
560
- fields: ProductCustomField[];
611
+ parameters: ProductParameter[];
612
+ }
613
+ interface ProductParametersResponse {
614
+ groups: ProductParameterGroup[];
561
615
  }
562
616
  interface ProductDetail extends ProductListItem {
563
617
  longDescription?: string;
@@ -587,14 +641,15 @@ interface ProductDetail extends ProductListItem {
587
641
  variantAxes: VariantAxis[];
588
642
  volumePricing: ProductVolumePrice[];
589
643
  /**
590
- * Structured product parameters from custom fields (inventory data groups),
591
- * grouped into spec-table sections (GAP-12). Empty when the product has no
592
- * data-group values. Distinct from `longDescription` (free HTML): this is
593
- * machine-readable key/value data for a "Parametry" table + comparison
594
- * engines. (Corrected from the old untyped `Record<string, unknown>` — the
595
- * API never populated that; it now sends this structured shape.)
644
+ * Curated parameter groups, already resolved. Empty when the merchant
645
+ * assigned none. Distinct from `longDescription` (free HTML): this is
646
+ * machine-readable key/value data for a "Parametry" table, comparison
647
+ * engines and AEO.
648
+ *
649
+ * Replaced `customFields` in SDK 1.0.0. The old field returned raw warehouse
650
+ * data groups, which published internal bookkeeping nobody curated.
596
651
  */
597
- customFields: ProductCustomFieldGroup[];
652
+ parameterGroups: ProductParameterGroup[];
598
653
  seo: {
599
654
  title?: string | null;
600
655
  description?: string | null;
@@ -701,13 +756,22 @@ interface CategoryDetail extends Category {
701
756
  ogImage?: string | null;
702
757
  };
703
758
  }
704
- type DataGroupFieldType = "TEXT" | "NUMBER" | "DECIMAL" | "BOOLEAN" | "DATE" | "TIME" | "DATETIME" | "PERCENTAGE" | "MONEY" | "ASSET" | "ITEM_LIST" | "DYNAMIC_NUMBER_CALCULATION_FROM_OTHERS";
759
+ /**
760
+ * One available filter, derived from a curated parameter the merchant marked
761
+ * filterable. A visitor can therefore never filter by a field that does not
762
+ * appear in the product's parameters.
763
+ */
705
764
  interface FilterField {
765
+ /** Parameter slug. Pass it back in `ProductsQuery.parameters` or `facets`. */
706
766
  key: string;
767
+ /** Parameter label in the requested language. */
707
768
  name: string;
708
- type: DataGroupFieldType | string;
709
- groupKey: string;
769
+ /** How to render it: value list, numeric range, or yes/no. */
770
+ type: "enum" | "range" | "boolean" | string;
771
+ /** Slug of the parameter group this filter belongs to. */
772
+ groupSlug: string;
710
773
  groupName: string;
774
+ unit?: string | null;
711
775
  values?: string[];
712
776
  }
713
777
  interface FacetValue {
@@ -727,14 +791,14 @@ interface FacetRange {
727
791
  max: number | null;
728
792
  }
729
793
  interface Facet {
794
+ /** Parameter slug. Never a warehouse field key. */
730
795
  key: string;
731
796
  name: string;
732
797
  /** "enum" (checkboxes), "range" (slider) or "boolean". */
733
798
  type: "enum" | "range" | "boolean" | string;
734
- groupKey: string;
799
+ /** Slug of the parameter group this facet belongs to. */
800
+ groupSlug: string;
735
801
  groupName: string;
736
- /** Underlying data-group field type (TEXT, NUMBER, MONEY, ...). */
737
- fieldType: string;
738
802
  /** enum/boolean facets: selectable values with counts. */
739
803
  values?: FacetValue[];
740
804
  /** range facets: numeric bounds within the current context. */
@@ -829,11 +893,17 @@ interface ProductsQuery {
829
893
  /** Minimum aggregate rating, e.g. 4 for "4 and up". */
830
894
  ratingMin?: number;
831
895
  search?: string;
832
- /** Custom-field filters. A value may be an array = multi-select (OR within
833
- * the key), e.g. {"barva": ["cerna", "bila"]}. */
834
- customFields?: Record<string, string | number | boolean | string[] | unknown>;
835
- /** Slug-based facet selection for SEO URLs: facet key -> value slugs, e.g.
836
- * {"barva": ["cerna"]}. Resolved server-side to the underlying values. */
896
+ /**
897
+ * Parameter filters, keyed by PARAMETER SLUG. A value may be an array =
898
+ * multi-select (OR within the key), e.g. {"barva": ["cerna", "bila"]}.
899
+ * Range filters use the `_min` / `_max` suffix, e.g. {"hmotnost_min": 100}.
900
+ *
901
+ * Replaced `customFields` in SDK 1.0.0, which was keyed by a warehouse
902
+ * data-group field key.
903
+ */
904
+ parameters?: Record<string, string | number | boolean | string[] | unknown>;
905
+ /** Slug-based facet selection for SEO URLs: parameter slug -> value slugs,
906
+ * e.g. {"barva": ["cerna"]}. Resolved server-side to the stored values. */
837
907
  facets?: Record<string, string[]>;
838
908
  /** Filter by specific product IDs (comma-separated in URL) */
839
909
  ids?: string[];
@@ -1172,7 +1242,10 @@ interface DigitalDownload {
1172
1242
  fileName: string;
1173
1243
  /** Localized product name the file belongs to (may be null). */
1174
1244
  productName: string | null;
1175
- /** Product slug for linking back to the PDP (may be null). */
1245
+ /**
1246
+ * Product slug for linking back to the PDP (may be null). Resolved the same
1247
+ * way as everywhere else: per-locale slug first, then the product id.
1248
+ */
1176
1249
  productSlug: string | null;
1177
1250
  fileSize: number;
1178
1251
  mimeType: string;
@@ -1194,7 +1267,10 @@ interface CourseListItem {
1194
1267
  courseId: string;
1195
1268
  /** Localized course (product) name, best-effort. */
1196
1269
  name: string | null;
1197
- /** Product slug for linking to the PDP. */
1270
+ /**
1271
+ * Product slug for linking to the PDP. Resolved the same way as in the
1272
+ * catalog: per-locale slug first, then the product id.
1273
+ */
1198
1274
  slug: string;
1199
1275
  imageUrl: string | null;
1200
1276
  totalLessons: number;
@@ -1246,6 +1322,7 @@ interface CourseModule {
1246
1322
  interface CourseDetail {
1247
1323
  courseId: string;
1248
1324
  name: string | null;
1325
+ /** Product slug for linking to the PDP (resolved per-locale slug, else id). */
1249
1326
  slug: string;
1250
1327
  imageUrl: string | null;
1251
1328
  /** Welcome text shown at the top of the member area (markdown). */
@@ -1586,15 +1663,17 @@ interface Bundle {
1586
1663
  slug: string;
1587
1664
  name: string;
1588
1665
  description: string | null;
1589
- bundlePrice: number;
1666
+ /** `null` when the eshop hides prices from guests and this visitor has no price entitlement. */
1667
+ bundlePrice: number | null;
1590
1668
  currency: string;
1591
1669
  coverImage: string | null;
1592
1670
  endsAt: number | null;
1593
- itemsSum: number;
1594
- /** Absolute saving vs buying the components separately, in `currency`. */
1595
- savings: number;
1596
- /** Percentage saving, 0–100. 0 when `itemsSum` is zero. */
1597
- savingsPercent: number;
1671
+ /** `null` when prices are hidden (see `bundlePrice`). */
1672
+ itemsSum: number | null;
1673
+ /** Absolute saving vs buying the components separately, in `currency`. `null` when prices are hidden. */
1674
+ savings: number | null;
1675
+ /** Percentage saving, 0–100. 0 when `itemsSum` is zero. `null` when prices are hidden. */
1676
+ savingsPercent: number | null;
1598
1677
  /** Minimum bundles per order. Default 1. */
1599
1678
  minQuantity: number;
1600
1679
  /** Maximum bundles per order. `null` = uncapped. */
@@ -2298,15 +2377,42 @@ declare class CatalogModule {
2298
2377
  locale?: string;
2299
2378
  currency?: string;
2300
2379
  }): Promise<SdkResult<PaginatedResponse<ProductListItem>>>;
2301
- /** Get available filter fields for dynamic filter UI */
2302
- getFilters(): Promise<SdkResult<{
2380
+ /**
2381
+ * Available filters for a dynamic filter UI.
2382
+ *
2383
+ * Derived from curated PARAMETERS the merchant marked filterable, so a
2384
+ * visitor can never filter by something that does not appear in the
2385
+ * product's parameters. Labels are per language, hence `locale`.
2386
+ */
2387
+ getFilters(options?: {
2388
+ locale?: string;
2389
+ }): Promise<SdkResult<{
2303
2390
  filters: FilterField[];
2304
2391
  }>>;
2305
2392
  /**
2306
- * Facet groups + selection-aware counts for the current filter set (custom
2307
- * fields, labels, price, availability, rating, subcategories). Pass the SAME
2308
- * query you pass to `getProducts` (category, search, price, inStock, ratingMin,
2309
- * customFields, facets slugs, labels): counts for each facet are computed with
2393
+ * Curated parameter groups of a product, already resolved (label, value,
2394
+ * unit, order). Returns an ARRAY of groups so a template can lay them out
2395
+ * however it likes: one group as a spec table, another as badges.
2396
+ *
2397
+ * A variant's own parameters ride along on `ProductDetail.variants[]`, so
2398
+ * this call is for the parent product.
2399
+ */
2400
+ getProductParameters(slug: string, options?: {
2401
+ locale?: string;
2402
+ }): Promise<SdkResult<ProductParametersResponse>>;
2403
+ /**
2404
+ * One specific parameter group of a product, by its slug. 404 when the
2405
+ * product does not have that group, which is deliberate: the caller asked
2406
+ * for a named thing, so an empty array would hide a wrong slug.
2407
+ */
2408
+ getProductParameterGroup(slug: string, groupSlug: string, options?: {
2409
+ locale?: string;
2410
+ }): Promise<SdkResult<ProductParameterGroup>>;
2411
+ /**
2412
+ * Facet groups + selection-aware counts for the current filter set
2413
+ * (parameters, labels, price, availability, rating, subcategories). Pass the
2414
+ * SAME query you pass to `getProducts` (category, search, price, inStock,
2415
+ * ratingMin, parameters, facets slugs, labels): counts are computed with
2310
2416
  * that facet excluded, and values that drop to 0 are still returned (render
2311
2417
  * them disabled). Use this to build an Alza-style filter sidebar.
2312
2418
  */
@@ -2926,6 +3032,8 @@ interface UseFeaturedOptions {
2926
3032
  declare function useFeatured(options?: UseFeaturedOptions): _tanstack_react_query.UseQueryResult<NoInfer<PaginatedResponse<ProductListItem>>, Error>;
2927
3033
 
2928
3034
  interface UseFiltersOptions {
3035
+ /** Filter labels are per language; defaults to the shop's default language. */
3036
+ locale?: string;
2929
3037
  enabled?: boolean;
2930
3038
  }
2931
3039
  declare function useFilters(options?: UseFiltersOptions): _tanstack_react_query.UseQueryResult<NoInfer<FilterField[]>, Error>;
@@ -2942,6 +3050,22 @@ interface UseFacetsOptions {
2942
3050
  */
2943
3051
  declare function useFacets(query?: ProductsQuery, options?: UseFacetsOptions): _tanstack_react_query.UseQueryResult<NoInfer<FacetsResponse>, Error>;
2944
3052
 
3053
+ interface UseProductParametersOptions {
3054
+ locale?: string;
3055
+ /** Fetch only this group (by its slug) instead of all of them. */
3056
+ groupSlug?: string;
3057
+ enabled?: boolean;
3058
+ }
3059
+ /**
3060
+ * Curated parameter groups of a product.
3061
+ *
3062
+ * Prefer reading `product.parameterGroups` from `useProduct` when you already
3063
+ * have the detail loaded; this hook is for the cases where you want the spec
3064
+ * table (or one named group) on its own, e.g. a comparison table or a tab that
3065
+ * loads lazily.
3066
+ */
3067
+ declare function useProductParameters(slug: string, options?: UseProductParametersOptions): _tanstack_react_query.UseQueryResult<NoInfer<ProductParameterGroup[]>, Error>;
3068
+
2945
3069
  interface UseSearchOptions {
2946
3070
  page?: number;
2947
3071
  limit?: number;
@@ -4315,4 +4439,4 @@ declare function revokeAnalyticsConsent(client: BehioStorefront): Promise<SdkRes
4315
4439
  success: boolean;
4316
4440
  }>>;
4317
4441
 
4318
- 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 };
4442
+ 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 };