import { type RecommendationList, type RecommendationListState } from '@coveo/headless/recommendation';
import { type CSSResultGroup, LitElement, nothing } from 'lit';
import { type ItemRenderingFunction } from '../../common/item-list/item-list-common';
import { type ItemDisplayBasicLayout, type ItemDisplayDensity, type ItemDisplayImageSize } from '../../common/layout/item-layout-utils';
import type { RecsBindings } from '../../recommendations/atomic-recs-interface/interfaces';
import type { InitializableComponent } from '../../../decorators/types';
import '../../recommendations/atomic-recs-result-template/atomic-recs-result-template';
import '../../recommendations/atomic-recs-result/atomic-recs-result';
declare const AtomicIpxRecsList_base: typeof LitElement;
/**
 * The `atomic-ipx-recs-list` component displays recommendations by applying one or more result templates.
 *
 * @part result-list - The element containing the list of results.
 * @part result-list-grid-clickable-container - The parent of the result and the clickable link encompassing it.
 * @part outline - The outline element around a result in the grid layout.
 * @part label - The label of the result list.
 * @part previous-button - The previous button.
 * @part next-button - The next button.
 * @part previous-icon - The previous button icon.
 * @part next-icon - The next button icon.
 * @part carousel - The carousel container.
 * @part indicators - The list of indicators.
 * @part indicator - A single indicator.
 * @part active-indicator - The active indicator.
 *
 * @slot default - The default slot where the result templates are defined.
 *
 * @cssprop --atomic-recs-number-of-columns - The number of columns in the grid.
 */
export declare class AtomicIpxRecsList extends AtomicIpxRecsList_base implements InitializableComponent<RecsBindings> {
    static styles: CSSResultGroup;
    private static readonly propsSchema;
    recommendationList: RecommendationList;
    private actionsHistoryActions?;
    private itemRenderingFunction;
    private itemListCommon;
    private itemTemplateProvider;
    private loadingFlag;
    private nextNewResultTarget?;
    bindings: RecsBindings;
    error: Error;
    private currentPage;
    private isAppLoaded;
    private isEveryResultReady;
    private resultTemplateRegistered;
    private templateHasError;
    recommendationListState: RecommendationListState;
    /**
     * The Recommendation identifier used by the Coveo platform to retrieve recommended documents.
     * Make sure to set a different value for each atomic-ipx-recs-list in your page.
     */
    recommendation: string;
    /**
     * The layout to apply when displaying results themselves. This does not affect the display of the surrounding list itself.
     * To modify the number of recommendations per column, modify the --atomic-recs-number-of-columns CSS variable.
     */
    display: ItemDisplayBasicLayout;
    /**
     * The spacing of various elements in the result list, including the gap between results, the gap between parts of a result, and the font sizes of different parts in a result.
     */
    density: ItemDisplayDensity;
    /**
     * The expected size of the image displayed in the results.
     */
    imageSize: ItemDisplayImageSize;
    /**
     * The total number of recommendations to display.
     * This does not modify the number of recommendations per column. To do so, modify the --atomic-recs-number-of-columns CSS variable.
     */
    numberOfRecommendations: number;
    /**
     * The number of recommendations to display, per page.
     * Setting a value greater than 0 and lower than the numberOfRecommendations value activates the carousel.
     * This does not affect the display of the list itself, only the number of recommendation pages.
     */
    numberOfRecommendationsPerPage?: number;
    /**
     * The non-localized label for the list of recommendations.
     * This will also set the `originLevel2` (tab) of the analytics requests.
     */
    label?: string;
    /**
     * The [heading level](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements) to use for the heading label, from 1 to 6.
     * When set to 0, a `div` will be used instead of a Heading Element.
     */
    headingLevel: number;
    constructor();
    /**
     * Sets a rendering function to bypass the standard HTML template mechanism for rendering results.
     * You can use this function while working with web frameworks that don't use plain HTML syntax such as React, Angular, or Vue.
     *
     * Do not use this method if you integrate Atomic in a plain HTML deployment.
     *
     * @param resultRenderingFunction
     */
    setRenderFunction(resultRenderingFunction: ItemRenderingFunction): Promise<void>;
    /**
     * Moves to the previous page, when the carousel is activated.
     */
    previousPage(): Promise<void>;
    /**
     * Moves to the next page, when the carousel is activated.
     */
    nextPage(): Promise<void>;
    initialize(): void;
    willUpdate(changedProperties: Map<string, unknown>): Promise<void>;
    private updateResultsReadyState;
    private get focusTarget();
    private get recommendationListStateWithAugment();
    private validateNumberOfRecommendationsPerPage;
    private validateRecommendationIdentifier;
    private updateOriginLevel2;
    private get currentIndex();
    private get subsetRecommendations();
    private get numberOfPages();
    private get hasPagination();
    private get shouldRenderPagination();
    private get hasNoResults();
    private onSelect;
    private getPropsForAtomicRecsResult;
    private computeListDisplayClasses;
    private renderHeading;
    private renderAsGrid;
    private renderRecommendationList;
    private get shouldRender();
    render(): import("lit-html").TemplateResult<1> | typeof nothing;
}
declare global {
    interface HTMLElementTagNameMap {
        'atomic-ipx-recs-list': AtomicIpxRecsList;
    }
}
export {};
