import type { ReactNode } from "react";
import type { ParameterValues } from "../components/private/InteractiveQuestion/context";
import type { Deferred } from "../../../../../frontend/src/metabase/lib/promise";
import type { QueryParams } from "../../../../../frontend/src/metabase/query_builder/actions";
import type { ObjectId } from "../../../../../frontend/src/metabase/visualizations/components/ObjectDetail/types";
import type Question from "../../../../../frontend/src/metabase-lib/v1/Question";
import type { Card, CardId } from "../../../../../frontend/src/metabase-types/api";
import type { SdkEntityId } from "./entity-id";
export type SdkQuestionId = number | "new" | SdkEntityId;
export interface SdkQuestionState {
    question?: Question;
    originalQuestion?: Question;
    queryResults?: any[];
}
export interface LoadSdkQuestionParams {
    options?: QueryParams;
    deserializedCard?: Card;
    questionId?: CardId | null;
    initialSqlParameters?: ParameterValues;
}
export interface NavigateToNewCardParams {
    nextCard: Card;
    previousCard: Card;
    objectId: ObjectId;
    cancelDeferred?: Deferred;
}
export interface QuestionStateParams {
    question: Question;
    updateQuestion: (question: Question, opts: {
        run: boolean;
    }) => void;
}
export type SdkQuestionTitleProps = boolean | undefined | ReactNode | (() => ReactNode);
