import { default as React } from 'react';
import { AICFOChatSubmissionSource } from '@zeniai/client-analytics';
import { AiCfoAnswerResponseType, AiCfoQuestionWithAnswer, ChatSession, FetchStateAndError, ID, SyntheticAiCfoAnswer } from '@zeniai/client-epic-state';
import { AiCfoAnswerProps } from './AiCfoAnswer';
import { ResolvedSyntheticAiCfoCard, ResolvedSyntheticAiCfoPolicy } from './SyntheticAiCfoAnswerView';
export declare const initialFetchState: FetchStateAndError;
export interface AiCfoQuestionAnswerProps {
    aiCfoAnswer: AiCfoQuestionWithAnswer;
    /** Only the active (last) QA runs COT typing; prevents re-typing on resubmit after error */
    enableCotTypingEffect: boolean;
    enableTypingEffect: boolean;
    isCotCollapsed: boolean;
    isFullView: boolean;
    responseState: Record<ID, FetchStateAndError>;
    tableDownloadEndPoint: string;
    /** Forwarded to `AiCfoAnswer` for interactive-form variants (owner picker). */
    allUsers?: AiCfoAnswerProps["allUsers"];
    /** Forwarded to `AiCfoAnswer` for the AI Card Policy form (Step 2 search). */
    cardPolicyCategorySearchOptions?: AiCfoAnswerProps["cardPolicyCategorySearchOptions"];
    /** Forwarded to `AiCfoAnswer` for the AI Card Policy `upload` variant. */
    cardPolicyDocumentUploadErrorMessage?: AiCfoAnswerProps["cardPolicyDocumentUploadErrorMessage"];
    /** Forwarded to `AiCfoAnswer` for the AI Card Policy `upload` variant. */
    cardPolicyDocumentUploadState?: AiCfoAnswerProps["cardPolicyDocumentUploadState"];
    /** Forwarded to `AiCfoAnswer` — CES-owned `aiCardPolicyFormDraft`. */
    cardPolicyFormDraft?: AiCfoAnswerProps["cardPolicyFormDraft"];
    /** Forwarded to `AiCfoAnswer` — vendor search request in flight? */
    cardPolicyIsVendorSearchLoading?: AiCfoAnswerProps["cardPolicyIsVendorSearchLoading"];
    /** Forwarded to `AiCfoAnswer` for the AI Card Policy form (Step 4 limits config). */
    cardPolicyLimitRowsConfig?: AiCfoAnswerProps["cardPolicyLimitRowsConfig"];
    /** Forwarded to `AiCfoAnswer` for the AI Card Policy `upload` variant. */
    cardPolicyUploadedFileName?: AiCfoAnswerProps["cardPolicyUploadedFileName"];
    /** Forwarded to `AiCfoAnswer` for the AI Card Policy form (Step 1 search). */
    cardPolicyVendorSearchOptions?: AiCfoAnswerProps["cardPolicyVendorSearchOptions"];
    /** Forwarded to `AiCfoAnswer` — CES-owned `aiCardCreationFormDraft`. */
    cardsCreationFormDraft?: AiCfoAnswerProps["cardsCreationFormDraft"];
    /** Forwarded to `AiCfoAnswer` — credit-account cap for card-creation limits. */
    cardsCreationMaxLimitAmount?: AiCfoAnswerProps["cardsCreationMaxLimitAmount"];
    currentChatSession?: ChatSession;
    /** Forwarded to `AiCfoAnswer`; set while the create-cards mutation is in flight. */
    isInteractiveFormSubmitting?: boolean;
    /** Forwarded to `AiCfoAnswer` — debounced card-policy watch flush. */
    onCardPolicyFormChange?: AiCfoAnswerProps["onCardPolicyFormChange"];
    /** Forwarded to `AiCfoAnswer`; required if any answer payload may be a `card_policy` interactive form. */
    onCardPolicyFormSubmit?: AiCfoAnswerProps["onCardPolicyFormSubmit"];
    /** Forwarded to `AiCfoAnswer`; fired when the user clears the uploaded document. */
    onCardPolicyRemoveDocument?: AiCfoAnswerProps["onCardPolicyRemoveDocument"];
    /** Forwarded to `AiCfoAnswer`; fired when the user picks a file in the `upload` Step 1 drop zone. */
    onCardPolicyUploadDocument?: AiCfoAnswerProps["onCardPolicyUploadDocument"];
    /** Forwarded to `AiCfoAnswer` — debounced vendor search keystroke handler. */
    onCardPolicyVendorSearchTextChange?: AiCfoAnswerProps["onCardPolicyVendorSearchTextChange"];
    /** Forwarded to `AiCfoAnswer` — debounced cards-creation watch flush. */
    onCardsCreationFormChange?: AiCfoAnswerProps["onCardsCreationFormChange"];
    /** Forwarded to `AiCfoAnswer`; required if any answer payload may be a `cards_creation` interactive form. */
    onCardsCreationFormSubmit?: AiCfoAnswerProps["onCardsCreationFormSubmit"];
    style?: React.CSSProperties;
    /**
     * Synthetic "Creating…" / "Created" bubble whose
     * `sourceQuestionAnswerId` matches this Q/A. When set, the AI side of
     * the bubble (the whole `AiCfoAnswer`) is replaced by the synthetic
     * tile; follow-up questions are hidden during the `creating_*` phase
     * and shown beneath the tile in the `created_*` phase.
     */
    syntheticAnswerForAnswer?: SyntheticAiCfoAnswer;
    handleChainOfThoughtTypingDoneForScrollPurpose: (responseType: AiCfoAnswerResponseType) => void;
    onCopy: (content: string) => void;
    onQuestionClick: (question: string, source: AICFOChatSubmissionSource, input?: number) => void;
    onThumbsDown: (questionAnswerId: ID) => void;
    onThumbsUp: (questionAnswerId: ID) => void;
    onToggleCotCollapsed: (questionAnswerId: ID, isCollapsed: boolean) => void;
    /**
     * Resolver used to render the `created_cards` synthetic tile. Forwarded
     * to `SyntheticAiCfoAnswerView` when this answer's interactive form has
     * been replaced in-place by the synthetic bubble.
     */
    resolveSyntheticAnswerCardTile?: (cardId: ID) => ResolvedSyntheticAiCfoCard | undefined;
    /**
     * Resolver used to render the `created_policy` synthetic tile.
     * Forwarded to `SyntheticAiCfoAnswerView` when this answer's
     * interactive form has been replaced in-place by the synthetic bubble.
     */
    resolveSyntheticAnswerPolicyTile?: (templateId: ID) => ResolvedSyntheticAiCfoPolicy | undefined;
}
declare const AiCfoQuestionAnswer: React.FC<AiCfoQuestionAnswerProps>;
export default AiCfoQuestionAnswer;
