import type { InteractiveResult as RecsInteractiveResult, Result as RecsResult } from '@coveo/headless/recommendation';
import { type CSSResultGroup, LitElement } from 'lit';
import type { DisplayConfig } from '../../common/item-list/context/item-display-config-context-controller';
import { type ItemRenderingFunction } from '../../common/item-list/item-list-common';
import type { ItemDisplayDensity, ItemDisplayImageSize, ItemDisplayLayout } from '../../common/layout/item-layout-utils';
import type { RecsStore } from '../atomic-recs-interface/store';
import '../../search/atomic-result-link/atomic-result-link';
declare const AtomicRecsResult_base: typeof LitElement;
/**
 * The `atomic-recs-result` component is used internally by the `atomic-recs-list` component.
 */
export declare class AtomicRecsResult extends AtomicRecsResult_base {
    private resultRootRef?;
    private linkContainerRef?;
    private itemLayoutController;
    static styles: CSSResultGroup;
    error: Error;
    /**
     * Whether `atomic-result-link` components nested in the `atomic-recs-result` should stop click event propagation.
     */
    stopPropagation?: boolean;
    /**
     * The result item.
     */
    result: RecsResult;
    /**
     * The InteractiveResult item.
     */
    interactiveResult: RecsInteractiveResult;
    /**
     * Global Atomic state.
     */
    store?: RecsStore;
    /**
     * The result content to display.
     */
    content?: ParentNode;
    /**
     * The result link to use when the result is clicked in a grid layout.
     *
     * @default An `atomic-result-link` without any customization.
     */
    linkContent: ParentNode;
    /**
     * How results should be displayed.
     */
    display: ItemDisplayLayout;
    /**
     * How large or small results should be.
     */
    density: ItemDisplayDensity;
    /**
     * The size of the visual section in result list items.
     *
     * This is overwritten by the image size defined in the result content, if it exists.
     */
    imageSize: ItemDisplayImageSize;
    /**
     * The classes to add to the result element.
     */
    classes: string;
    /**
     * A unique identifier for tracking the loading state of this result component.
     * When set, this flag is added to the global loading flags array and automatically
     * removed when the component finishes its initial render. This allows the framework
     * to determine when all components have finished loading.
     *
     * @internal
     */
    loadingFlag?: string;
    /**
     * Internal function used in advanced setups, which lets you bypass the standard HTML template system.
     * Particularly useful for Atomic React.
     *
     * @internal
     */
    renderingFunction: ItemRenderingFunction;
    constructor();
    resolveResult: (event: CustomEvent<(result: RecsResult) => void>) => void;
    resolveInteractiveResult: (event: CustomEvent<(interactiveResult: RecsInteractiveResult) => void>) => void;
    resolveStopPropagation: (event: CustomEvent) => void;
    resolveResultDisplayConfig: (event: CustomEvent<(config: DisplayConfig) => void>) => void;
    clickLinkContainer: () => void;
    handleClick: (event: MouseEvent) => void;
    connectedCallback(): Promise<void>;
    disconnectedCallback(): void;
    private getContentHTML;
    private getLinkHTML;
    render(): import("lit-html").TemplateResult<1>;
    firstUpdated(_changedProperties: Map<string, unknown>): void;
}
declare global {
    interface HTMLElementTagNameMap {
        'atomic-recs-result': AtomicRecsResult;
    }
}
export {};
