import type { ValueAndColumnForColumnNameDate } from "../../../../metabase/lib/formatting/link";
import type { ClickObjectDimension as DimensionType } from "../../..";
import type Question from "../../../v1/Question";
import type { ClickObjectDataRow } from "../../../v1/queries/drills/types";
import type { ClickBehavior, ClickBehaviorSource, ClickBehaviorTarget, Dashboard, DatasetColumn, Parameter, ParameterValueOrArray, QuestionDashboardCard, UserAttribute } from "../../../../metabase-types/api";
interface Target {
    id: Parameter["id"];
    name: Parameter["name"] | null | undefined;
    target: ClickBehaviorTarget;
    sourceFilters: SourceFilters;
}
interface SourceFilters {
    column: (column: DatasetColumn, question: Question) => boolean;
    parameter: (parameter: Parameter) => boolean;
    userAttribute: (userAttribute: string) => boolean;
}
interface ExtraData {
    dashboard?: Dashboard;
    parameters?: Parameter[];
    dashboards?: Record<Dashboard["id"], Dashboard>;
}
export declare function getDataFromClicked({ extraData: { dashboard, parameterValuesBySlug, userAttributes }, dimensions, data, }: {
    extraData?: {
        dashboard?: Dashboard;
        parameterValuesBySlug?: Record<string, ParameterValueOrArray>;
        userAttributes?: Record<UserAttribute, UserAttribute> | null;
    };
    dimensions?: DimensionType[];
    data?: (ClickObjectDataRow & {
        clickBehaviorValue?: ClickObjectDataRow["value"];
    })[];
}): ValueAndColumnForColumnNameDate;
export declare function getTargetsForQuestion(question: Question): Target[];
export declare function getTargetsForDashboard(dashboard: Dashboard, dashcard: QuestionDashboardCard): Target[];
export declare function clickBehaviorIsValid(clickBehavior: ClickBehavior | undefined | null): boolean;
export declare function canSaveClickBehavior(clickBehavior: ClickBehavior | undefined | null, targetDashboard: Dashboard | undefined): boolean;
export declare function formatSourceForTarget(source: ClickBehaviorSource, target: ClickBehaviorTarget, { data, extraData, clickBehavior, }: {
    data: ValueAndColumnForColumnNameDate;
    extraData: ExtraData;
    clickBehavior: ClickBehavior;
}): any;
export declare function getTargetForQueryParams(target: ClickBehaviorTarget, { extraData, clickBehavior, }: {
    extraData: ExtraData;
    clickBehavior: ClickBehavior;
}): string | undefined;
export {};
