import { type FoldedResultList as InsightFoldedResultList, type ResultsPerPage as InsightResultsPerPage } from '@coveo/headless/insight';
import { type CSSResultGroup, LitElement } from 'lit';
import { type ItemRenderingFunction } from '../../common/item-list/item-list-common';
import { type ItemDisplayDensity, type ItemDisplayImageSize } from '../../common/layout/item-layout-utils';
import type { InsightBindings } from '../atomic-insight-interface/atomic-insight-interface';
import type { InitializableComponent } from '../../../decorators/types';
import '../atomic-insight-result/atomic-insight-result';
import '../atomic-insight-result-template/atomic-insight-result-template';
declare const AtomicInsightFoldedResultList_base: typeof LitElement;
/**
 * The `atomic-insight-folded-result-list` component is responsible for displaying folded query results in an insight panel,
 * 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
 */
export declare class AtomicInsightFoldedResultList extends AtomicInsightFoldedResultList_base implements InitializableComponent<InsightBindings> {
    static styles: CSSResultGroup;
    private static readonly propsSchema;
    foldedResultList: InsightFoldedResultList;
    resultsPerPage: InsightResultsPerPage;
    private itemRenderingFunction;
    private loadingFlag;
    private nextNewResultTarget?;
    private resultListCommon;
    private resultTemplateProvider;
    private readonly display;
    /**
     * 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 name of the field on which to do the folding. The folded result list component will use the values of this field to resolve the collections of result items.
     *
     * @defaultValue `foldingcollection`
     */
    collectionField?: string;
    /**
     * The name of the field that determines whether a certain result is a top result containing other child results within a collection.
     *
     * @defaultValue `foldingparent`
     */
    parentField?: string;
    /**
     * The name of the field that uniquely identifies a result within a collection.
     *
     * @defaultValue `foldingchild`
     */
    childField?: string;
    /**
     * The initial number of child results to request for each folded collection, before expansion.
     *
     * @defaultValue `2`
     */
    numberOfFoldedResults: number;
    bindings: InsightBindings;
    error: Error;
    private isAppLoaded;
    private isEveryResultReady;
    private resultTemplateRegistered;
    private templateHasError;
    private foldedResultListState;
    private resultsPerPageState;
    constructor();
    disconnectedCallback(): void;
    initialize(): void;
    /**
     * 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.
     */
    setRenderFunction(resultRenderingFunction: ItemRenderingFunction): Promise<void>;
    willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
    render(): import("lit-html").TemplateResult<1>;
    private updateResultReadyState;
    private handleResolveFoldedResultList;
    private handleLoadCollection;
    private initFolding;
    private initResultTemplateProvider;
    private initResultListCommon;
    private computeListDisplayClasses;
    private renderList;
    private get focusTarget();
    private getContent;
    private getInteractiveResult;
    private getResultId;
}
declare global {
    interface HTMLElementTagNameMap {
        'atomic-insight-folded-result-list': AtomicInsightFoldedResultList;
    }
}
export {};
