import { FilterManager, KlevuBanner, KlevuMerchandisingOptions, KlevuRecord, KlevuResponseQueryObject, KlevuSearchSorting } from "@klevu/core";
import { EventEmitter } from "../../stencil-public-runtime";
import { KlevuProductCustomEvent } from "../../components";
import { KlevuProductOnProductClick } from "../klevu-product/klevu-product";
import { ViewportSize } from "../klevu-util-viewport/klevu-util-viewport";
/**
 * Full merchandising app to power up your product grid pages
 *
 * @slot header - Header container
 * @slot footer - Footer container
 * @slot content - Product grid items including the grid container
 * @slot facets - Sidebar of facets content
 * @slot topbanners - Top banner content
 * @slot bottombanners - Bottom banner content
 *
 * @csspart merchandising-sidebar - Sidebar container
 * @csspart merchandising-header - Header container
 * @csspart merchandising-content - Content container
 * @csspart merchandising-footer - Footer container
 */
export declare class KlevuMerchandising {
  #private;
  /**
   * Should display pagination instead of load next
   */
  usePagination?: boolean;
  /**
   * Should use infinite scroll component to trigger load next
   */
  useInfiniteScroll?: boolean;
  /**
   * Count of products for page
   */
  limit: number;
  /**
   * Which category products
   */
  category: string;
  /**
   * Category title
   */
  categoryTitle: string;
  /**
   * Text for load more button
   */
  tLoadMore: string;
  /**
   * Order of results
   */
  sort?: KlevuSearchSorting;
  /**
   * How many filters per facet to show
   */
  filterCount?: number;
  /**
   * Object to override and settings on search options
   */
  options?: KlevuMerchandisingOptions;
  /**
   * Order filters in given order
   */
  filterCustomOrder?: {
    [key: string]: string[];
  };
  /**
   * Pass custom options for the sort dropdown
   */
  sortOptions?: Array<{
    value: KlevuSearchSorting;
    text: string;
  }>;
  /**
   * Show ratings
   */
  showRatings?: boolean;
  /**
   * Show ratings count
   */
  showRatingsCount?: boolean;
  /**
   * Enable personalisation
   */
  usePersonalisation?: boolean;
  /**
   * To update the pagination and filters to the url automatically
   */
  autoUpdateUrl?: boolean;
  /**
   * Overrides KMC setting to use ABtest for results
   */
  useABTest?: boolean;
  /**
   * Used to enable loading indicator
   */
  useLoadingIndicator: boolean;
  /**
   * Hides price from merchandising
   */
  hidePrice?: boolean;
  /**
   * Show variants count in merchandising
   */
  showVariantsCount: boolean;
  /**
   * Hides brand from merchandising
   */
  hideBrand?: boolean;
  /**
   * Hides description from merchandising
   */
  hideDescription?: boolean;
  /**
   * Hides hover image from merchandising
   */
  hideHoverImage?: boolean;
  /**
   * Hides image from merchandising
   */
  hideImage?: boolean;
  /**
   * Hides name from merchandising
   */
  hideName?: boolean;
  /**
   * Do not show swatches in products in merchandising
   */
  hideSwatches?: boolean;
  /**
   * Caption to show if product is out of stock in products in merchandising
   */
  outOfStockCaption?: string;
  /**
   * Show add to cart button in products in merchandising
   */
  showAddToCart?: boolean;
  /**
   * To show the product code next to product name in merchandising
   */
  showProductCode?: boolean;
  /**
   * Text for add to cart button in merchandising
   */
  tAddToCart?: string;
  /**
   * Text to be added after the price. Usually used to indicate that does the price include VAT or not in merchandising.
   */
  vatCaption?: string;
  currentViewPortSize?: ViewportSize;
  results: Array<KlevuRecord>;
  manager: FilterManager;
  loading: boolean;
  infiniteScrollingPaused?: boolean;
  searchResultTopBanners: KlevuBanner[];
  searchResultBottomBanners: KlevuBanner[];
  el: HTMLElement;
  klevuData: EventEmitter<{
    resultObject: KlevuResponseQueryObject;
    records: KlevuRecord[];
    manager: FilterManager;
  }>;
  connectedCallback(): Promise<void>;
  componentWillLoad(): Promise<void>;
  watchPropHandler(newValue: string, oldValue: string): Promise<void>;
  infiniteScrollLoadMoreHandler(): void;
  infiniteLoadPausedHandler(): void;
  productClickHandler(event: KlevuProductCustomEvent<KlevuProductOnProductClick>): void;
  componentDidLoad(): Promise<void>;
  filterManagerFiltersUpdated(): void;
  render(): any;
}
