import { type IAttributeDescriptor, type IAttributeFilter, type IDateFilter, type IDrillDownIntersectionIgnoredAttributes, type IDrillToDashboard, type IDrillToInsight, type IFilter, type IMeasure, type InsightDrillDefinition, type ObjRef, type ObjRefInScope, type SourceInsightFilterObjRef } from "@gooddata/sdk-model";
import { type IAvailableDrillTargets, type IDrillEvent } from "@gooddata/sdk-ui";
import { type DashboardDrillDefinition, type IDrillDownDefinition, type IDrillToUrlAttributeDefinition, type IGlobalDrillDownAttributeHierarchyDefinition } from "../../types.js";
export declare function getDrillsBySourceLocalIdentifiers(widgetDrillDefinition: Array<DashboardDrillDefinition>, drillSourceLocalIdentifiers: string[]): Array<DashboardDrillDefinition>;
export declare function getLocalIdentifiersFromEvent(drillEvent: IDrillEvent): string[];
export declare function getDrillSourceLocalIdentifierFromEvent(drillEvent: IDrillEvent): string[];
export declare function filterDrillsByDrillEvent(drillDefinitions: DashboardDrillDefinition[], drillEvent: IDrillEvent): DashboardDrillDefinition[];
export declare function getDrillOriginLocalIdentifier({ origin }: InsightDrillDefinition | IDrillDownDefinition | IGlobalDrillDownAttributeHierarchyDefinition | IDrillToUrlAttributeDefinition): string;
export declare function getLocalIdentifierOrDie(ref: ObjRefInScope): string;
/**
 * Returns source measure filters for a drill origin measure.
 *
 * @internal
 */
export declare function getSourceMeasureFiltersForDrillDefinition(drillDefinition: Pick<IDrillToDashboard | IDrillToInsight, "origin">, sourceInsightMeasures: IMeasure[]): Array<IAttributeFilter | IDateFilter>;
export declare function isDrillConfigured(drill: DashboardDrillDefinition, configuredDrills: DashboardDrillDefinition[]): boolean;
export declare function getValidDrillOriginAttributes(supportedItemsForWidget: IAvailableDrillTargets, localIdentifier: string): IAttributeDescriptor[];
/**
 * Check whether drill intersection ignored attributes belong to a particular hierarchy.
 *
 * Date drill down does not contain a proper date attribute reference (date hierarchy is global),
 * so we just check that the hierarchy and its reference are date hierarchies.
 *
 * For other drill downs, we check reference equality as usual.
 *
 * @internal
 */
export declare function isDrillDownIntersectionIgnoredAttributesForHierarchy(drillDownIgnoredDrillIntersection: IDrillDownIntersectionIgnoredAttributes, targetHierarchyRef: ObjRef): boolean;
/**
 * Compares persisted drill filter reference with actual insight filter.
 *
 * @internal
 */
export declare function isMatchingSourceInsightFilter(filter: IFilter, sourceFilterObjRef: SourceInsightFilterObjRef): boolean;
/**
 * Compares two persisted source insight filter references.
 *
 * @internal
 */
export declare function isSourceInsightFilterObjRefEqual(left: SourceInsightFilterObjRef, right: SourceInsightFilterObjRef): boolean;
export declare function sourceInsightFilterObjRef(filter: IFilter): SourceInsightFilterObjRef | undefined;
export declare function sourceInsightFilterObjRefValue(sourceFilterObjRef: SourceInsightFilterObjRef): ObjRefInScope;
//# sourceMappingURL=drillingUtils.d.ts.map