import type { QuestionAnswerDocumentIdentifier } from '../../../api/search/search/question-answering.js';
import type { Result } from '../../../api/search/search/result.js';
import type { CoreEngine } from '../../../app/engine.js';
import { type Controller } from '../../controller/headless-controller.js';
import type { SmartSnippetAnalyticsClient } from '../smart-snippet/headless-core-smart-snippet.js';
export interface SmartSnippetQuestionsListOptions {
    /**
     * The amount of time in milliseconds to wait before selecting the source after calling `beginDelayedSelect`.
     *
     * @defaultValue `1000`
     */
    selectionDelay?: number;
}
export interface SmartSnippetQuestionsListProps {
    /**
     * The options for the `SmartSnippetQuestionsList` controller.
     */
    options?: SmartSnippetQuestionsListOptions;
}
/**
 * The `CoreSmartSnippetQuestionsList` controller allows to manage additional queries for which a SmartSnippet model can provide relevant excerpts.
 */
export interface CoreSmartSnippetQuestionsList extends Controller {
    /**
     * The state of the SmartSnippetQuestionsList controller.
     * */
    state: CoreSmartSnippetQuestionsListState;
    /**
     * Expand the specified snippet suggestion.
     *
     * @param identifier - The `questionAnswerId` of the smart snippet to expand.
     */
    expand(identifier: string): void;
    /**
     * Collapse the specified snippet suggestion.
     *
     * @param identifier - The `questionAnswerId` of the smart snippet to collapse.
     */
    collapse(identifier: string): void;
}
/**
 * A scoped and simplified part of the headless state that is relevant to the `SmartSnippetQuestionsList` controller.
 */
export interface CoreSmartSnippetQuestionsListState {
    /**
     * The related questions for the current query
     */
    questions: SmartSnippetRelatedQuestion[];
}
/**
 * The related questions for a given smart snippet.
 */
export interface SmartSnippetRelatedQuestion {
    /**
     * The question related to the smart snippet.
     */
    question: string;
    /**
     * The answer, or snippet, related to the question.
     *
     * This can contain HTML markup, depending on the source of the answer.
     */
    answer: string;
    /**
     * The index identifier for the document that provided the answer.
     */
    documentId: QuestionAnswerDocumentIdentifier;
    /**
     * The unique identifier for this question & answer.
     */
    questionAnswerId: string;
    /**
     * Determines if the snippet is currently expanded.
     */
    expanded: boolean;
    /**
     * Provides the source of the smart snippet.
     */
    source?: Result;
}
/**
 * Creates a core `SmartSnippetQuestionsList` controller instance.
 *
 * @param engine - The headless engine.
 * @param analyticsClient - A SmartSnippetAnalyticsClient to send the appropriate analytics calls.
 * @returns A `CoreSmartSnippetQuestionsList` controller instance.
 * */
export declare function buildCoreSmartSnippetQuestionsList(engine: CoreEngine, analyticsClient: SmartSnippetAnalyticsClient): CoreSmartSnippetQuestionsList;
