import { EventEmitter } from '../../stencil-public-runtime';
import { StorageMethods } from '../../utils/store/component-store';
import { SearchChangeEvent } from './algolia-data';
import type { IndexResult, FilterChangeEventDetail, AlgoliaFacet } from './algolia-interface';
/**
 * Displays and syncs algolia filters
 * Must be nested within an nano-algolia component.
 * @slot filter-template - Template string (format from nano-algolia 'tplEngine' property).
 * @slot output - A placeholder for template output.
 */
export declare class AlgoliaFilter {
    el: HTMLNanoAlgoliaFilterElement;
    private templateStr;
    private templateSlot;
    private outputSlot;
    private outputEle;
    private filterId;
    private tplDidRnder;
    private tplWillRnder;
    changeEvent: SearchChangeEvent;
    internalValue: Array<string>;
    showFilter: boolean;
    indexResults: IndexResult;
    filterChanged: string;
    facets: AlgoliaFacet;
    tplRenderFn: (...args: any[]) => any;
    globalStoreMethod: StorageMethods;
    /**
     * Name of this filter - must match an appropriate algolia facet on a parent nano-algolia index to display
     */
    filterName: string;
    /**
     * Set values of this filter. Will result in form elements being selected. '|' delimited string or array.
     */
    value: string | Array<string>;
    /**
     * The internal operator joining filter values.
     */
    operator: 'or' | 'and';
    /**
     * Store search queries (against this ID) to the component store.
     * Use in conjunction with storeMethod
     */
    storeId?: string;
    /**
     * The method of storage.
     * Either session storage, url hash (after the '#') or url query (after the '?').
     */
    storeMethod: StorageMethods;
    /**
     * Emitted when the filter value changes
     */
    nanoFilterChanged: EventEmitter<FilterChangeEventDetail>;
    /**
     * Emitted when templates are updated
     */
    nanoTplUpdated: EventEmitter<HTMLNanoAlgoliaFilterElement>;
    valueSet(): void;
    valueChanged(): void;
    appliedFilterChanged(): void;
    tplUpdate(): void;
    handleFilterChange(): void;
    handleChangeEvent(): boolean;
    private updateContent;
    private getFieldValues;
    private setFieldValues;
    private didValueChange;
    connectedCallback(): void;
    componentWillLoad(): void;
    componentDidLoad(): void;
    render(): any;
}
