import type { ResultTemplate, ResultTemplateCondition } from '@coveo/headless';
import { LitElement } from 'lit';
import '../../common/atomic-component-error/atomic-component-error';
import type { LitElementWithError } from '../../../decorators/types';
import '../atomic-result/atomic-result';
/**
 * A result template determines the format of the query results, 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 AtomicResultTemplate 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: ResultTemplateCondition[];
    /**
     * The field and values that define which results the condition must be applied to.
     * For example, a template with the following attribute only applies to results whose `sourcetype` is `YouTube` or `Salesforce`:
     * `must-match-sourcetype="YouTube,Salesforce"`
     * @type {Record<string, string[]>}
     * @default {}
     */
    mustMatch: Record<string, string[]>;
    /**
     * The field and values that define which results the condition must not be applied to.
     * For example, a template with the following attribute only applies to results whose `sourcetype` is not `YouTube`:
     * `must-not-match-sourcetype="YouTube"`
     * @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<ResultTemplate<DocumentFragment> | null>;
}
declare global {
    interface HTMLElementTagNameMap {
        'atomic-result-template': AtomicResultTemplate;
    }
}
