import { type ResultList, type ResultsPerPage, type TabManager, type TabManagerState } from '@coveo/headless';
import { type CSSResultGroup, LitElement } from 'lit';
import { type ItemRenderingFunction } from '../../common/item-list/item-list-common';
import { type ItemDisplayDensity, type ItemDisplayImageSize, type ItemDisplayLayout } from '../../common/layout/item-layout-utils';
import type { Bindings } from '../atomic-search-interface/atomic-search-interface';
import type { InitializableComponent } from '../../../decorators/types';
import '../atomic-result-template/atomic-result-template';
import '../atomic-result/atomic-result';
declare const AtomicResultList_base: typeof LitElement;
/**
 * The `atomic-result-list` component is responsible for displaying query results by applying one or more result templates.
 *
 * @slot default - The default slot where the result templates are inserted.
 * @part result-list - The element containing every result of a result list
 * @part outline - The element displaying an outline or a divider around a result
 * @part result-list-grid-clickable-container - The parent of the result and the clickable link encompassing it, when results are displayed as a grid
 * @part result-list-grid-clickable - The clickable link encompassing the result when results are displayed as a grid
 * @part result-table - The element of the result table containing a heading and a body
 * @part result-table-heading - The element containing the row of cells in the result table's heading
 * @part result-table-heading-row - The element containing cells of the result table's heading
 * @part result-table-heading-cell - The element representing a cell of the result table's heading
 * @part result-table-body - The element containing the rows of the result table's body
 * @part result-table-row - The element containing the cells of a row in the result table's body
 * @part result-table-row-odd - The element containing the cells of an odd row in the result table's body
 * @part result-table-row-even - The element containing the cells of an even row in the result table's body
 * @part result-table-cell - The element representing a cell of the result table's body
 */
export declare class AtomicResultList extends AtomicResultList_base implements InitializableComponent<Bindings> {
    static styles: CSSResultGroup;
    private static readonly propsSchema;
    resultList: ResultList;
    resultsPerPage: ResultsPerPage;
    tabManager: TabManager;
    private itemRenderingFunction;
    private loadingFlag;
    private nextNewResultTarget?;
    private resultListCommon;
    private resultTemplateProvider;
    bindings: Bindings;
    error: Error;
    private isAppLoaded;
    private isEveryResultReady;
    private resultTemplateRegistered;
    private templateHasError;
    private resultListState;
    private resultsPerPageState;
    tabManagerState: TabManagerState;
    /**
     * 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 desired layout to use when displaying results. Layouts affect how many results to display per row and how visually distinct they are from each other.
     */
    display: ItemDisplayLayout;
    /**
     * The expected size of the image displayed in the results.
     */
    imageSize: ItemDisplayImageSize;
    /**
     * The tabs on which the result list can be displayed. This property should not be used at the same time as `tabs-excluded`.
     *
     * Set this property as a stringified JSON array, for example:
     * ```html
     *  <atomic-result-list tabs-included='["tabIDA", "tabIDB"]'></atomic-result-list snippet>
     * ```
     * If you don't set this property, the result list can be displayed on any tab. Otherwise, the result list can only be displayed on the specified tabs.
     */
    tabsIncluded: string[];
    /**
     * The tabs on which this result list must not be displayed. This property should not be used at the same time as `tabs-included`.
     *
     * Set this property as a stringified JSON array, for example:
     * ```html
     *  <atomic-result-list tabs-excluded='["tabIDA", "tabIDB"]'></atomic-result-list>
     * ```
     * If you don't set this property, the result list can be displayed on any tab. Otherwise, the result list won't be displayed on any of the specified tabs.
     */
    tabsExcluded: string[];
    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>;
    initialize(): void;
    willUpdate(changedProperties: Map<string, unknown>): Promise<void>;
    private updateResultReadyState;
    render(): import("lit-html").TemplateResult<1>;
    private initResultTemplateProvider;
    private initResultListCommon;
    private computeListDisplayClasses;
    private renderGrid;
    private renderList;
    private renderTable;
    private get focusTarget();
    private getLinkContent;
    private getContent;
    private getInteractiveResult;
    private getResultId;
}
declare global {
    interface HTMLElementTagNameMap {
        'atomic-result-list': AtomicResultList;
    }
}
export {};
