import type { GeneratedAnswer, GeneratedAnswerState, SearchStatusState } from '@coveo/headless';
import type { ReactiveController, ReactiveControllerHost } from 'lit';
import type { AnyBindings } from '../interface/bindings';
import { type GeneratedAnswerData } from '../../../utils/local-storage-utils';
import '../atomic-generated-answer-feedback-modal/atomic-generated-answer-feedback-modal';
export interface GeneratedAnswerControllerOptions {
    withToggle?: boolean;
    getGeneratedAnswer: () => GeneratedAnswer | undefined;
    getGeneratedAnswerState: () => Partial<GeneratedAnswerState> | undefined;
    getSearchStatusState: () => Partial<SearchStatusState> | undefined;
    getBindings: () => AnyBindings;
}
/**
 * Reactive controller managing shared logic for generated answer components.
 * Handles storage, modal interactions, feedback, and clipboard operations.
 */
export declare class GeneratedAnswerController implements ReactiveController {
    private host;
    private storage;
    private _data;
    private modalRef?;
    private options;
    constructor(host: ReactiveControllerHost & HTMLElement, options: GeneratedAnswerControllerOptions);
    hostConnected(): void;
    get data(): GeneratedAnswerData;
    set data(newData: GeneratedAnswerData);
    /**
     * Creates and inserts the feedback modal element before the host element.
     */
    insertFeedbackModal(): void;
    /**
     * Reads stored visibility data from local storage.
     */
    readStoredData(): GeneratedAnswerData;
    /**
     * Writes visibility data to local storage.
     */
    writeStoredData(data: GeneratedAnswerData): void;
    /**
     * Generates a status message describing the current state of the generated answer.
     */
    getGeneratedAnswerStatus(): string;
    /**
     * Checks if there's a retryable error.
     */
    get hasRetryableError(): boolean;
    /**
     * Checks if no answer has been generated.
     */
    get hasNoAnswerGenerated(): boolean;
    /**
     * Checks if the answer is currently visible.
     */
    get isAnswerVisible(): boolean;
    /**
     * Gets the tooltip text for the toggle button.
     */
    getToggleTooltip(): string;
    /**
     * Gets the tooltip text for the copy to clipboard button.
     */
    getCopyToClipboardTooltip(copied: boolean, copyError: boolean): string;
    /**
     * Copies the answer text to clipboard and logs the action.
     */
    copyToClipboard(answer: string, onCopySuccess: () => void, onCopyError: () => void): Promise<void>;
    /**
     * Handles clicking the show/collapse button.
     */
    clickOnShowButton(): void;
    /**
     * Handles the dislike action.
     */
    clickDislike(): void;
    /**
     * Handles the like action.
     */
    clickLike(): void;
    /**
     * Sets whether the answer was helpful (for the feedback modal).
     */
    private setIsAnswerHelpful;
    /**
     * Opens the feedback modal if conditions are met.
     */
    private openFeedbackModal;
}
