import { FilterManager, KlevuFilterResultOptions, KlevuFilterResultSlider, KlevuFilterResultRating } from "@klevu/core";
import { EventEmitter } from "../../stencil-public-runtime";
import { KlevuFacetMode } from "../klevu-facet/klevu-facet";
export type KlevuColorSwatchOverride = {
  [key: string]: {
    color?: string;
    imageUrl?: string;
    borderColor?: string;
  };
};
export type KlevuFiltersAppliedEventDetail = {
  manager: FilterManager;
};
/**
 * Render all facets of filter manager
 *
 */
export declare class KlevuFacetList {
  #private;
  el: HTMLKlevuFacetListElement;
  /**
   * Filter managet from which the list is built from
   */
  manager: FilterManager;
  /**
   * Set mode for facets or if object is passed then define per key
   */
  mode?: KlevuFacetMode | {
    [key: string]: KlevuFacetMode;
  };
  /**
   * Custom order keys for every facet
   */
  customOrder?: {
    [key: string]: string[];
  };
  /**
   * Specify which facet keys should be rendered as color swatches
   */
  colorSwatches?: string[];
  /**
   * Specific overrides for individual color swatch.
   * The overrides can be colors (hex or valid css colors) or a valid url to load.
   * ImageUrl takes precedence over color when both are specified.
   */
  colorSwatchOverrides?: {
    [key: string]: KlevuColorSwatchOverride;
  };
  /**
   * Should use accordions to for facets
   */
  accordion?: boolean;
  /**
   * Display "apply filters" button in the end. And do not apply filters until this button is pressed
   */
  useApplyButton?: boolean;
  /**
   * Button text for Apply button when using `useApplyButton`
   */
  applyButtonText: string;
  /**
   * Button text for Clear button when using `useApplyButton`
   */
  clearButtonText: string;
  /**
   * Default price label for sliders
   */
  defaultPriceLabel: string;
  /**
   * To set the facet selection value in the url
   */
  shouldUpdateUrlForFacets?: boolean;
  /**
   * The currency to show in the price slider
   */
  priceSliderCurrency: string;
  /**
   * When filters are applied
   */
  klevuApplyFilters: EventEmitter<KlevuFiltersAppliedEventDetail>;
  filters: Array<KlevuFilterResultOptions | KlevuFilterResultSlider | KlevuFilterResultRating>;
  connectedCallback(): void;
  componentWillLoad(): void;
  filterManagerAppliedFilters(): void;
  filterSelectionUpdate(e: CustomEvent<{
    key: string;
    name: string;
    selected: boolean;
  }>): void;
  /**
   * When using `useApplyButton` then this method can be used to update current state filterManager
   * into to local state of that is displayed in the UI
   */
  updateApplyFilterState(): Promise<void>;
  render(): any;
}
