import type { FoldedResult as InsightFoldedResult, InteractiveResult as InsightInteractiveResult, Result as InsightResult } from '@coveo/headless/insight';
import { type CSSResultGroup, LitElement, nothing } 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 } from '../../common/layout/item-layout-utils';
import type { InsightStore } from '../atomic-insight-interface/store';
type InsightResultContextEvent<T = InsightResult | InsightFoldedResult> = CustomEvent<(result: T) => void>;
type InsightInteractiveResultContextEvent<T extends InsightInteractiveResult = InsightInteractiveResult> = CustomEvent<(result: T) => void>;
declare const AtomicInsightResult_base: typeof LitElement;
/**
 * The `atomic-insight-result` component is used internally by the `atomic-insight-result-list` component.
 */
export declare class AtomicInsightResult extends AtomicInsightResult_base {
    private resultRootRef;
    private itemLayoutController;
    static styles: CSSResultGroup;
    error: Error;
    /**
     * Whether `atomic-result-link` components nested in the `atomic-insight-result` should stop click event propagation.
     */
    stopPropagation?: boolean;
    /**
     * The result item.
     */
    result: InsightResult | InsightFoldedResult;
    /**
     * The InteractiveResult item.
     * @internal
     */
    interactiveResult: InsightInteractiveResult;
    /**
     * Global Atomic state.
     * @internal
     */
    store?: InsightStore;
    /**
     * The result content to display.
     */
    content?: ParentNode;
    /**
     * How large or small results should be.
     */
    density: ItemDisplayDensity;
    /**
     * The size of the image 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: InsightResultContextEvent) => void;
    resolveInteractiveResult: (event: InsightInteractiveResultContextEvent) => void;
    resolveStopPropagation: (event: CustomEvent) => void;
    resolveResultDisplayConfig: (event: InsightResultContextEvent<DisplayConfig>) => void;
    connectedCallback(): Promise<void>;
    disconnectedCallback(): void;
    private getContentHTML;
    render(): import("lit-html").TemplateResult<1> | typeof nothing;
    firstUpdated(_changedProperties: Map<string, unknown>): void;
}
declare global {
    interface HTMLElementTagNameMap {
        'atomic-insight-result': AtomicInsightResult;
    }
}
export {};
