import type { FoldedResult, InteractiveResult, Result } from '@coveo/headless';
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 { SearchStore } from '../atomic-search-interface/store';
import type { InteractiveResultContextEvent, ResultContextEvent } from '../result-template-component-utils/context/result-context-controller';
import '../atomic-result-text/atomic-result-text';
declare const AtomicResult_base: typeof LitElement;
/**
 * The `atomic-result` component is used internally by the `atomic-result-list` and `atomic-folded-result-list` components.
 */
export declare class AtomicResult extends AtomicResult_base {
    private resultRootRef?;
    private linkContainerRef?;
    private itemLayoutController;
    static styles: CSSResultGroup;
    private static readonly propsSchema;
    error: Error;
    /**
     * Whether `atomic-result-link` components nested in the `atomic-result` should stop click event propagation.
     */
    stopPropagation?: boolean;
    /**
     * The result item.
     */
    result: Result | FoldedResult;
    /**
     * The InteractiveResult item.
     */
    interactiveResult: InteractiveResult;
    /**
     * Global Atomic state.
     */
    store?: SearchStore;
    /**
     * 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: ResultContextEvent) => void;
    resolveInteractiveResult: (event: InteractiveResultContextEvent) => void;
    resolveStopPropagation: (event: CustomEvent) => void;
    resolveResultDisplayConfig: (event: ResultContextEvent<DisplayConfig>) => void;
    handleClick: (event: MouseEvent) => void;
    clickLinkContainer: () => 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-result': AtomicResult;
    }
}
export {};
