import { FilterManager, KlevuRecord, KlevuResponseQueryObject, KlevuSearchSorting, KMCRootObject, KlevuBanner } from "@klevu/core";
import { EventEmitter } from "../../stencil-public-runtime";
import { KlevuPaginationCustomEvent, KlevuProductCustomEvent, ViewportSize } from "../../components";
import { KlevuProductOnProductClick } from "../klevu-product/klevu-product";
type NoResultsOptions = KMCRootObject["klevu_uc_userOptions"]["noResultsOptions"];
type Banner = NoResultsOptions["banners"][0];
/**
 * Full app component for search landing page
 *
 * @slot header - Header container
 * @slot footer - Footer container
 * @slot content - Product grid items including the grid container
 * @slot facets - Sidebar of facets content
 * @slot noResults - Show message when no results found
 * @slot topbanners - Top banner content
 * @slot bottombanners - Bottom banner content
 */
export declare class KlevuSearchLandingPage {
  #private;
  /**
   * How many results to display on a page
   */
  limit: number;
  /**
   * What term was used for search
   */
  term: string;
  /**
   * In which order to set the products
   */
  sort?: KlevuSearchSorting;
  /**
   * How many products to display in filters
   */
  filterCount?: number;
  /**
   * Order filters in a customer order
   */
  filterCustomOrder?: {
    [key: string]: string[];
  };
  /**
   * Use pagination instead of loading more
   */
  usePagination?: boolean;
  /**
   * Should use infinite scroll component to trigger load next
   */
  useInfiniteScroll?: boolean;
  /**
   * Show ratings
   */
  showRatings?: boolean;
  /**
   * Show ratings count
   */
  showRatingsCount?: boolean;
  /**
   * The title of the page
   */
  tSearchTitle: any;
  /**
   * Text of load more button
   */
  tLoadMore: any;
  /**
   * Enable personalization
   */
  usePersonalisation?: boolean;
  /**
   * How many products to show in popular products
   */
  popularProductsResultCount: number;
  /**
   * Show the quick search box at the top of the page
   */
  showSearch?: boolean;
  /**
   * Hide filters on results page
   */
  hideFilters?: boolean;
  /**
   * Specify whether to show checkboxes or radio buttons for filters
   */
  useMultiSelectFilters?: boolean;
  /**
   * Enable Klaviyo integration
   */
  useKlaviyo?: boolean;
  /**
   * Show price as options
   */
  showPriceAsSlider?: boolean;
  /**
   * The factor to use to generate the ranges
   */
  priceInterval: number;
  /**
   * Hides price from search results
   */
  hidePrice?: boolean;
  /**
   * Pass image url if performing image search
   */
  imageUrlForSearch: string;
  results: Array<KlevuRecord>;
  manager: FilterManager;
  currentViewPortSize?: ViewportSize;
  infiniteScrollingPaused?: boolean;
  loading?: boolean;
  noResultsMessage: string;
  trendingProducts: KlevuRecord[];
  noResultsBannerDetails: Banner[];
  searchResultTopBanners: KlevuBanner[];
  searchResultBottomBanners: KlevuBanner[];
  isUploadingImage: boolean;
  connectedCallback(): Promise<void>;
  termChanged(oldValue: string, newValue: string): void;
  loadMore(): Promise<void>;
  paginationChange(event: KlevuPaginationCustomEvent<number>): Promise<void>;
  productClickHandler(event: KlevuProductCustomEvent<KlevuProductOnProductClick>): void;
  filterManagerFiltersUpdated(): void;
  klevuData: EventEmitter<{
    resultObject: KlevuResponseQueryObject;
    records: KlevuRecord[];
    manager: FilterManager;
  }>;
  componentDidLoad(): Promise<void>;
  render(): any;
}
export {};
