import { FilterManager, KlevuRecord, KlevuSearchSorting } from "@klevu/core";
import { KlevuPaginationCustomEvent, KlevuProductCustomEvent, ViewportSize } from "../../components";
import { KlevuProductOnProductClick, KlevuProductSlots } from "../klevu-product/klevu-product";
/**
 * Full app component for search landing page
 */
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;
  results: Array<KlevuRecord | undefined>;
  manager: FilterManager;
  currentViewPortSize?: ViewportSize;
  connectedCallback(): Promise<void>;
  termChanged(oldValue: string, newValue: string): void;
  loadMore(): Promise<void>;
  paginationChange(event: KlevuPaginationCustomEvent<number>): Promise<void>;
  productClickHandler(event: KlevuProductCustomEvent<KlevuProductOnProductClick>): void;
  filterSelectionUpdate(): void;
  /**
   * Rendering function created to put custom content to klevu-product slots. Provides a product being rendered.
   * This function is called for each slot (top, image, info and bottom) of the component. Second parameter provides
   * slot requested. Return null for slots that you do not want to render.
   */
  renderProductSlot?: (product: KlevuRecord, productSlot: KlevuProductSlots) => HTMLElement | string | null;
  componentDidLoad(): Promise<void>;
  render(): any;
}
