/**
 * The Coveo Headless Commerce sub-package exposes the engine, controllers, actions, and utility functions to
 * build a [commerce search experience](https://docs.coveo.com/en/o6r70022/).
 *
 * @example
 * ```typescript
 * import { buildCommerceEngine, getSampleCommerceEngineConfiguration, buildSearch } from '@coveo/headless/commerce';
 *
 * const engine = buildCommerceEngine({
 *  configuration: getSampleCommerceEngineConfiguration(),
 * });
 *
 * const search = buildSearch(engine);
 * search.executeFirstSearch();
 * ```
 *
 * @module Commerce
 */
import * as Selectors from './selectors/commerce-selectors.index.js';
import * as HighlightUtils from './utils/highlight.js';
export type { Relay } from '@coveo/relay';
export type { Middleware, Unsubscribe } from '@reduxjs/toolkit';
export { getCommerceApiBaseUrl } from './api/commerce/commerce-api-client.js';
export type { CartItemParam } from './api/commerce/commerce-api-params.js';
export type { BaseProduct, ChildProduct, Product, } from './api/commerce/common/product.js';
export type { BaseResult, Result, SpotlightContent, } from './api/commerce/common/result.js';
export { ResultType } from './api/commerce/common/result.js';
export type { Badge, BadgePlacement, BadgesProduct, } from './api/commerce/product-enrichment/product-enrichment-response.js';
export { getAnalyticsNextApiBaseUrl, getOrganizationEndpoint, } from './api/platform-client.js';
export { deserializeRelativeDate, validateRelativeDate, } from './api/search/date/relative-date.js';
export type { CategoryFacetSearchResult } from './api/search/facet-search/category-facet-search/category-facet-search-response.js';
export type { SpecificFacetSearchResult as RegularFacetSearchResult } from './api/search/facet-search/specific-facet-search/specific-facet-search-response.js';
export type { CommerceEngine, CommerceEngineConfiguration, CommerceEngineOptions, } from './app/commerce-engine/commerce-engine.js';
export { buildCommerceEngine } from './app/commerce-engine/commerce-engine.js';
export { getSampleCommerceEngineConfiguration } from './app/commerce-engine/commerce-engine-configuration.js';
export type { CoreEngine, CoreEngineNext, ExternalEngineOptions, } from './app/engine.js';
export type { AnalyticsConfiguration, AnalyticsRuntimeEnvironment, EngineConfiguration, } from './app/engine-configuration.js';
export type { LoggerOptions, LogLevel } from './app/logger.js';
export type { NavigatorContext } from './app/navigator-context-provider.js';
export type { Cart, CartInitialState, CartItem, CartProps, CartState, } from './controllers/commerce/context/cart/headless-cart.js';
export { buildCart } from './controllers/commerce/context/cart/headless-cart.js';
export type { Context, ContextOptions, ContextProps, ContextState, CustomContext, UserLocation, View, } from './controllers/commerce/context/headless-context.js';
export { buildContext } from './controllers/commerce/context/headless-context.js';
export type { Breadcrumb, BreadcrumbManager, BreadcrumbManagerState, BreadcrumbValue, DeselectableValue, } from './controllers/commerce/core/breadcrumb-manager/headless-core-breadcrumb-manager.js';
export type { CategoryFacet, CategoryFacetState, } from './controllers/commerce/core/facets/category/headless-commerce-category-facet.js';
export type { CategoryFacetSearch, CategoryFacetSearchState, } from './controllers/commerce/core/facets/category/headless-commerce-category-facet-search.js';
export type { DateFacet, DateFacetState, } from './controllers/commerce/core/facets/date/headless-commerce-date-facet.js';
export { buildDateRange } from './controllers/commerce/core/facets/date/headless-commerce-date-facet.js';
export type { FacetGenerator, FacetGeneratorState, GeneratedFacetControllers, MappedGeneratedFacetController, } from './controllers/commerce/core/facets/generator/headless-commerce-facet-generator.js';
export type { BaseFacetValue, CategoryFacetValue, CategoryFacetValueRequest, DateFacetValue, DateRangeRequest, FacetType, FacetValueRequest, LocationFacetValue, LocationFacetValueRequest, NumericFacetValue, NumericRangeRequest, RegularFacetValue, } from './controllers/commerce/core/facets/headless-core-commerce-facet.js';
export type { LocationFacet, LocationFacetState, } from './controllers/commerce/core/facets/location/headless-commerce-location-facet.js';
export type { NumericFacet, NumericFacetState, } from './controllers/commerce/core/facets/numeric/headless-commerce-numeric-facet.js';
export type { RegularFacet, RegularFacetState, } from './controllers/commerce/core/facets/regular/headless-commerce-regular-facet.js';
export type { RegularFacetSearch, RegularFacetSearchState, } from './controllers/commerce/core/facets/regular/headless-commerce-regular-facet-search.js';
export type { InteractiveProduct, InteractiveProductOptions, InteractiveProductProps, } from './controllers/commerce/core/interactive-product/headless-core-interactive-product.js';
export type { InteractiveSpotlightContent, InteractiveSpotlightContentOptions, InteractiveSpotlightContentProps, } from './controllers/commerce/core/interactive-spotlight-content/headless-core-interactive-spotlight-content.js';
export type { Pagination, PaginationOptions, PaginationProps, PaginationState, } from './controllers/commerce/core/pagination/headless-core-commerce-pagination.js';
export type { ParameterManager, ParameterManagerInitialState, ParameterManagerProps, ParameterManagerState, } from './controllers/commerce/core/parameter-manager/headless-core-parameter-manager.js';
export type { Sort, SortByFields, SortByFieldsFields, SortByRelevance, SortCriterion, SortInitialState, SortProps, SortState, } from './controllers/commerce/core/sort/headless-core-commerce-sort.js';
export { buildFieldsSortCriterion, buildRelevanceSortCriterion, SortBy, SortDirection, } from './controllers/commerce/core/sort/headless-core-commerce-sort.js';
export type { BaseSolutionTypeSubControllers, SearchAndListingSubControllers, SearchSubControllers, } from './controllers/commerce/core/sub-controller/headless-sub-controller.js';
export type { Summary } from './controllers/commerce/core/summary/headless-core-summary.js';
export type { BaseUrlManagerProps, UrlManager, UrlManagerInitialState, UrlManagerProps, UrlManagerState, } from './controllers/commerce/core/url-manager/headless-core-url-manager.js';
export type { CategoryFieldSuggestions, CategoryFieldSuggestionsState, } from './controllers/commerce/field-suggestions/headless-category-field-suggestions.js';
export type { FieldSuggestionsGenerator, GeneratedFieldSuggestionsControllers, } from './controllers/commerce/field-suggestions/headless-field-suggestions-generator.js';
export { buildFieldSuggestionsGenerator } from './controllers/commerce/field-suggestions/headless-field-suggestions-generator.js';
export type { CategoryFilterSuggestions, CategoryFilterSuggestionsState, } from './controllers/commerce/filter-suggestions/headless-category-filter-suggestions.js';
export { buildCategoryFilterSuggestions } from './controllers/commerce/filter-suggestions/headless-category-filter-suggestions.js';
export type { FilterSuggestions, FilterSuggestionsState, } from './controllers/commerce/filter-suggestions/headless-filter-suggestions.js';
export { buildFilterSuggestions } from './controllers/commerce/filter-suggestions/headless-filter-suggestions.js';
export type { FilterSuggestionsGenerator, GeneratedFilterSuggestionsControllers, } from './controllers/commerce/filter-suggestions/headless-filter-suggestions-generator.js';
export { buildFilterSuggestionsGenerator } from './controllers/commerce/filter-suggestions/headless-filter-suggestions-generator.js';
export type { InstantProducts, InstantProductsOptions, InstantProductsProps, InstantProductsState, } from './controllers/commerce/instant-products/headless-instant-products.js';
export { buildInstantProducts } from './controllers/commerce/instant-products/headless-instant-products.js';
export type { ProductEnrichment, ProductEnrichmentOptions, ProductEnrichmentProps, ProductEnrichmentState, } from './controllers/commerce/product-enrichment/headless-product-enrichment.js';
export { buildProductEnrichment } from './controllers/commerce/product-enrichment/headless-product-enrichment.js';
export type { ProductListing, ProductListingOptions, ProductListingState, } from './controllers/commerce/product-listing/headless-product-listing.js';
export { buildProductListing } from './controllers/commerce/product-listing/headless-product-listing.js';
export type { ProductListingSummaryState } from './controllers/commerce/product-listing/summary/headless-product-listing-summary.js';
export type { ProductView } from './controllers/commerce/product-view/headless-product-view.js';
export { buildProductView } from './controllers/commerce/product-view/headless-product-view.js';
export type { RecentQueriesList, RecentQueriesListInitialState, RecentQueriesListOptions, RecentQueriesListProps, RecentQueriesState, } from './controllers/commerce/recent-queries-list/headless-recent-queries-list.js';
export { buildRecentQueriesList } from './controllers/commerce/recent-queries-list/headless-recent-queries-list.js';
export type { Recommendations, RecommendationsOptions, RecommendationsProps, RecommendationsState, } from './controllers/commerce/recommendations/headless-recommendations.js';
export { buildRecommendations } from './controllers/commerce/recommendations/headless-recommendations.js';
export type { RecommendationsSummaryState } from './controllers/commerce/recommendations/summary/headless-recommendations-summary.js';
export type { DidYouMean, DidYouMeanState, QueryCorrection, WordCorrection, } from './controllers/commerce/search/did-you-mean/headless-did-you-mean.js';
export type { Search, SearchOptions, SearchState, } from './controllers/commerce/search/headless-search.js';
export { buildSearch } from './controllers/commerce/search/headless-search.js';
export type { SearchSummaryState } from './controllers/commerce/search/summary/headless-search-summary.js';
export type { SearchBox, SearchBoxOptions, SearchBoxProps, SearchBoxState, Suggestion, } from './controllers/commerce/search-box/headless-search-box.js';
export { buildSearchBox } from './controllers/commerce/search-box/headless-search-box.js';
export type { StandaloneSearchBox, StandaloneSearchBoxState, } from './controllers/commerce/standalone-search-box/headless-standalone-search-box.js';
export { buildStandaloneSearchBox } from './controllers/commerce/standalone-search-box/headless-standalone-search-box.js';
export { buildNotifyTrigger } from './controllers/commerce/triggers/headless-notify-trigger.js';
export type { QueryTriggerOptions } from './controllers/commerce/triggers/headless-query-trigger.js';
export { buildQueryTrigger } from './controllers/commerce/triggers/headless-query-trigger.js';
export { buildRedirectionTrigger } from './controllers/commerce/triggers/headless-redirection-trigger.js';
export type { Controller, Subscribable, } from './controllers/controller/headless-controller.js';
export { buildController } from './controllers/controller/headless-controller.js';
export type { DateFilterRange } from './controllers/core/facets/range-facet/date-facet/headless-core-date-filter.js';
export type { InteractiveResultCore } from './controllers/core/interactive-result/headless-core-interactive-result.js';
export type { NotifyTrigger, NotifyTriggerState, } from './controllers/core/triggers/headless-core-notify-trigger.js';
export type { QueryTrigger, QueryTriggerState, } from './controllers/core/triggers/headless-core-query-trigger.js';
export type { RedirectionTrigger, RedirectionTriggerState, } from './controllers/core/triggers/headless-core-redirection-trigger.js';
export type { StandaloneSearchBoxOptions, StandaloneSearchBoxProps, } from './controllers/standalone-search-box/headless-standalone-search-box.ts';
export * from './features/commerce/configuration/configuration-actions-loader.js';
export * from './features/commerce/context/cart/cart-actions-loader.js';
export type { Transaction } from './features/commerce/context/cart/cart-selector.js';
export type { CartItemWithMetadata } from './features/commerce/context/cart/cart-state.js';
export * from './features/commerce/context/context-actions-loader.js';
export * from './features/commerce/facets/category-facet/category-facet-actions-loader.js';
export * from './features/commerce/facets/core-facet/core-facet-actions-loader.js';
export * from './features/commerce/facets/date-facet/date-facet-actions-loader.js';
export type { FieldSuggestionsFacet } from './features/commerce/facets/field-suggestions-order/field-suggestions-order-state.ts';
export * from './features/commerce/facets/location-facet/location-facet-actions-loader.js';
export * from './features/commerce/facets/numeric-facet/numeric-facet-actions-loader.js';
export * from './features/commerce/facets/regular-facet/regular-facet-actions-loader.js';
export * from './features/commerce/instant-products/instant-products-actions-loader.js';
export * from './features/commerce/pagination/pagination-actions-loader.js';
export type { Parameters } from './features/commerce/parameters/parameters-actions.js';
export { productListingSerializer, searchSerializer, } from './features/commerce/parameters/parameters-serializer.js';
export * from './features/commerce/product/product-actions-loaders.js';
export * from './features/commerce/product-enrichment/product-enrichment-actions-loader.js';
export * from './features/commerce/product-listing/product-listing-actions-loader.js';
export * from './features/commerce/product-listing-parameters/product-listing-parameters-actions-loader.js';
export { ProductTemplatesHelpers } from './features/commerce/product-templates/product-templates-helpers.js';
export type { ProductTemplate, ProductTemplateCondition, ProductTemplatesManager, } from './features/commerce/product-templates/product-templates-manager.js';
export { buildProductTemplatesManager } from './features/commerce/product-templates/product-templates-manager.js';
export * from './features/commerce/query/query-actions-loader.js';
export * from './features/commerce/query-set/query-set-actions-loader.js';
export * from './features/commerce/query-suggest/query-suggest-actions-loader.js';
export * from './features/commerce/recent-queries/recent-queries-actions-loader.js';
export * from './features/commerce/recommendations/recommendations-actions-loader.js';
export * from './features/commerce/search/search-actions-loader.js';
export type { CommerceSearchParameters } from './features/commerce/search-parameters/search-parameters-actions.js';
export * from './features/commerce/search-parameters/search-parameters-actions-loader.js';
export * from './features/commerce/sort/sort-actions-loader.js';
export * from './features/commerce/spotlight-content/spotlight-content-actions-loaders.js';
export * from './features/commerce/standalone-search-box-set/standalone-search-box-set-actions-loader.js';
export * from './features/commerce/triggers/triggers-actions-loader.js';
export type { SearchParameters } from './features/search-parameters/search-parameter-actions.js';
export type { Template } from './features/templates/templates-manager.ts';
export type { HighlightKeyword } from './utils/highlight.js';
export type { PlatformEnvironment } from './utils/url-utils.js';
export { VERSION } from './utils/version.js';
export { HighlightUtils, Selectors };
