import type { ParameterValues } from "../../components/private/InteractiveQuestion/context";
import type { LoadSdkQuestionParams, NavigateToNewCardParams, SdkQuestionState } from "../../types/question";
import type Question from "../../../../../../frontend/src/metabase-lib/v1/Question";
type LoadQuestionResult = Promise<SdkQuestionState & {
    originalQuestion?: Question;
}>;
export interface LoadQuestionHookResult {
    question?: Question;
    originalQuestion?: Question;
    queryResults?: any[];
    isQuestionLoading: boolean;
    isQueryRunning: boolean;
    queryQuestion(): Promise<void>;
    loadAndQueryQuestion(): LoadQuestionResult;
    updateQuestion(question: Question, options?: {
        run?: boolean;
    }): Promise<void>;
    /**
     * Replaces both the question and originalQuestion object directly.
     * Unlike updateQuestion, this does not turn the question into an ad-hoc question.
     */
    replaceQuestion(question: Question): void;
    navigateToNewCard(params: NavigateToNewCardParams): Promise<void>;
}
export declare function useLoadQuestion({ questionId, options, deserializedCard, initialSqlParameters, }: LoadSdkQuestionParams): LoadQuestionHookResult;
export declare const getParameterDependencyKey: (parameters?: ParameterValues) => string;
export {};
