import type { ResultTemplate as InsightResultTemplate, ResultTemplateCondition as InsightResultTemplateCondition } from '@coveo/headless/insight';
import { LitElement } from 'lit';
import type { LitElementWithError } from '../../../decorators/types';
import '../atomic-insight-result/atomic-insight-result.js';
/**
 * The `atomic-insight-result-template` component determines the format of the query results for Insight interfaces, depending on the conditions that are defined for each template.
 *
 * @slot default - The default slot where to insert the template element.
 * @slot link - A `template` element that contains a single `atomic-result-link` component.
 */
export declare class AtomicInsightResultTemplate extends LitElement implements LitElementWithError {
    private resultTemplateController;
    error: Error;
    /**
     * A function that must return true on results for the result template to apply.
     * Set programmatically before initialization, not via attribute.
     *
     * For example, the following targets a template and sets a condition to make it apply only to results whose `title` contains `singapore`:
     * `document.querySelector('#target-template').conditions = [(result) => /singapore/i.test(result.title)];`
     */
    conditions: InsightResultTemplateCondition[];
    /**
     * The field and values that define which result items the condition must be applied to.
     *
     * For example, a template with the following attribute only applies to result items whose `filetype` is `lithiummessage` or `YouTubePlaylist`: `must-match-filetype="lithiummessage,YouTubePlaylist"`
     * @type {Record<string, string[]>}
     * @default {}
     */
    mustMatch: Record<string, string[]>;
    /**
     * The field and values that define which result items the condition must not be applied to.
     *
     * For example, a template with the following attribute only applies to result items whose `filetype` is not `lithiummessage`: `must-not-match-filetype="lithiummessage"`
     * @type {Record<string, string[]>}
     * @default {}
     */
    mustNotMatch: Record<string, string[]>;
    constructor();
    connectedCallback(): void;
    render(): symbol;
    /**
     * Gets the appropriate result template based on conditions applied.
     */
    getTemplate(): Promise<InsightResultTemplate<DocumentFragment> | null>;
}
declare global {
    interface HTMLElementTagNameMap {
        'atomic-insight-result-template': AtomicInsightResultTemplate;
    }
}
