import { type LRUCache } from "lru-cache";
import { type IDashboardLayoutItem, type IDashboardWidget, type IInsight, type ObjRef } from "@gooddata/sdk-model";
import { type DashboardLayoutItemModifications } from "../../_staging/dashboard/flexibleLayout/builder/interfaces.js";
/**
 * We need to aggressively memoize the widget sanitization results in order to prevent expensive re-renders
 * down the line - we need to keep the widgets referentially equal whenever they are not changed.
 */
export declare const getMemoizedWidgetSanitizer: <TWidget>(cache: LRUCache<string, IDashboardLayoutItem<TWidget>, unknown>) => (getInsightByRef: (insightRef: ObjRef) => IInsight | undefined) => DashboardLayoutItemModifications<TWidget>;
/**
 * Ensure that areObjRefsEqual() and other predicates will be working with uncontrolled user ref inputs
 * in custom layout transformation and/or custom widget/item renderers.
 *
 * @internal
 */
export declare function polluteWidgetRefsWithBothIdAndUri<TWidget = IDashboardWidget>(getInsightByRef: (insightRef: ObjRef) => IInsight | undefined): DashboardLayoutItemModifications<TWidget>;
/**
 * Ensure the insight widgets conform to their allowed sizes.
 *
 * @internal
 */
export declare function validateItemsSize<TWidget = IDashboardWidget>(getInsightByRef: (insightRef: ObjRef) => IInsight | undefined): DashboardLayoutItemModifications<TWidget>;
//# sourceMappingURL=DefaultDashboardLayoutUtils.d.ts.map