import { type LayoutResult } from '../model/layout'; import type { ColumnsOption } from '../model/columns'; export interface ApplyLayoutExtras { /** Fixed column count or breakpoint map; overrides `minColWidth`. */ columns?: ColumnsOption; /** Height assumed for items that measure as zero. */ estimatedItemHeight?: number; } /** * Apply JS-powered masonry layout using absolute positioning and CSS transforms. * * Placement itself is delegated to {@link computeLayout} so the vanilla engine * and the framework adapters cannot drift apart. * * DOM access is strictly phased to avoid layout thrashing: * 1. write every width (one style recalc is now pending) * 2. read every height (one forced reflow, amortised across all items) * 3. write every transform (no reads follow, so nothing is invalidated) * * @returns the computed layout, or `null` if the container has no width yet. */ export declare function applyMasonryLayout(container: HTMLElement, items: HTMLElement[], minColWidth: number, gutter: number, animate: boolean, duration: number, extras?: ApplyLayoutExtras): LayoutResult | null; /** * Remove all JS masonry inline styles from the container and its items. */ export declare function removeMasonryLayout(container: HTMLElement, items: HTMLElement[]): void;