import { type ResultTemplate as RecsResultTemplate, type ResultTemplateCondition as RecsResultTemplateCondition } from '@coveo/headless/recommendation';
import { LitElement } from 'lit';
import '../../common/atomic-component-error/atomic-component-error';
import type { LitElementWithError } from '../../../decorators/types';
import '../atomic-recs-result/atomic-recs-result';
/**
 * A [result template](https://docs.coveo.com/en/atomic/latest/usage/displaying-results#defining-a-result-template) determines the format of the query results, depending on the conditions that are defined for each template.
 *
 * A `template` element must be the child of an `atomic-recs-result-template`, and an `atomic-recs-list` must be the parent of each `atomic-recs-result-template`.
 *
 * **Note:** Any `<script>` tags that are defined inside a `<template>` element will not be executed when the results are being rendered.
 *
 * @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 AtomicRecsResultTemplate extends LitElement implements LitElementWithError {
    private recsResultTemplateController;
    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: RecsResultTemplateCondition[];
    /**
     * 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 the conditions applied.
     */
    getTemplate(): Promise<RecsResultTemplate<DocumentFragment> | null>;
}
declare global {
    interface HTMLElementTagNameMap {
        'atomic-recs-result-template': AtomicRecsResultTemplate;
    }
}
