import type { PropsWithChildren } from "react";
import type { MetabasePluginsConfig } from "../../../..";
import type { LoadQuestionHookResult } from "../../../../hooks/private/use-load-question";
import type { SdkCollectionId } from "../../../../types/collection";
import type { LoadSdkQuestionParams, SdkQuestionId } from "../../../../types/question";
import type { MetabaseQuestion } from "../../../../../../../../frontend/src/metabase/embedding-sdk/types/question";
import type { NotebookProps as QBNotebookProps } from "../../../../../../../../frontend/src/metabase/querying/notebook/components/Notebook";
import type { Mode } from "../../../../../../../../frontend/src/metabase/visualizations/click-actions/Mode";
import type Question from "../../../../../../../../frontend/src/metabase-lib/v1/Question";
import type { ParameterId } from "../../../../../../../../frontend/src/metabase-types/api";
export type EntityTypeFilterKeys = "table" | "question" | "model" | "metric";
export type ParameterValues = Record<ParameterId, string | number>;
type InteractiveQuestionConfig = {
    componentPlugins?: MetabasePluginsConfig;
    onNavigateBack?: () => void;
    onBeforeSave?: (question: MetabaseQuestion | undefined, context: {
        isNewQuestion: boolean;
    }) => Promise<void>;
    onSave?: (question: MetabaseQuestion | undefined, context: {
        isNewQuestion: boolean;
    }) => void;
    entityTypeFilter?: EntityTypeFilterKeys[];
    /** Is the save question button visible? */
    isSaveEnabled?: boolean;
    /** Initial values for the SQL parameters */
    initialSqlParameters?: ParameterValues;
    withDownloads?: boolean;
    /**
     * @deprecated Use `targetCollection` instead
     */
    saveToCollection?: SdkCollectionId;
    targetCollection?: SdkCollectionId;
};
export type QuestionMockLocationParameters = {
    location: {
        search: string;
        hash: string;
        pathname: string;
    };
    params: {
        slug?: string;
    };
};
export type InteractiveQuestionProviderProps = PropsWithChildren<InteractiveQuestionConfig & Omit<LoadSdkQuestionParams, "questionId"> & {
    questionId: SdkQuestionId | null;
    variant?: "static" | "interactive";
}>;
export type InteractiveQuestionContextType = Omit<LoadQuestionHookResult, "loadAndQueryQuestion"> & Pick<InteractiveQuestionConfig, "onNavigateBack" | "isSaveEnabled" | "targetCollection" | "withDownloads"> & Pick<InteractiveQuestionProviderProps, "variant"> & Pick<QBNotebookProps, "modelsFilterList"> & {
    plugins: InteractiveQuestionConfig["componentPlugins"] | null;
    mode: Mode | null | undefined;
    resetQuestion: () => void;
    onReset: () => void;
    onCreate: (question: Question) => Promise<void>;
    onSave: (question: Question) => Promise<void>;
} & {
    isCardIdError: boolean;
    originalId: SdkQuestionId | null;
};
export {};
