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
 */
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: any;
  /**
   * 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;
  /**
   * Overrides KMC setting to use ABtest for results
   */
  useABTest?: boolean;
  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>;
  watchPropHandler(newValue: string, oldValue: string): Promise<void>;
  infiniteScrollLoadMoreHandler(): void;
  infiniteLoadPausedHandler(): void;
  productClickHandler(event: KlevuProductCustomEvent<KlevuProductOnProductClick>): void;
  componentDidLoad(): Promise<void>;
  filterManagerFiltersUpdated(): void;
  render(): any;
}
