/**
 * Always: every cell will fill whole column no matter the content size
 * None: normal behavior of bento grid
 * Responsive: cell will fill when responsive breakpoint is reached
 */
export declare enum Filler {
    Always = "always",
    None = "none",
    Responsive = "responsive"
}
/**
 * Fit: filler will fit the available space -> allow to have multiple items in the same column
 * Full: filler will fill the whole column -> only one item in the column, the rest of the column will be filler
 */
export declare enum FillerMode {
    Fit = "fit",
    Full = "full"
}
/** Pixel position of a single placed bento item (absolute coordinates). */
export interface BentoItemPosition {
    /** 0-based exclusive column index where the item ends (used for data-column attribute). */
    columnEnd: number;
    /** 0-based column index where the item starts (used for data-column attribute). */
    columnStart: number;
    height: number;
    left: number;
    /** 0-based row index where the item starts (used for maxRows filtering and data-row attribute). */
    rowStart: number;
    top: number;
    width: number;
}
/** Parameters passed to BentoLayout.compute(). */
export interface BentoLayoutParams {
    columnGap: number;
    columns: number;
    containerWidth: number;
    itemHeight: number;
    /**
     * Maximum number of rows to display. When finite, scroll height is capped at
     * maxRows × (itemHeight + rowGap) − rowGap so hidden rows don't inflate the container.
     */
    maxRows?: number;
    rowGap: number;
    /**
     * Total number of items including those not yet loaded.
     * When provided and greater than items.length, the scroll height is extended
     * to approximate the full dataset size (unloaded items assumed to be 1×1).
     */
    totalItems?: number;
}
/** Inclusive item index range returned by BentoLayout.getActiveRange(). */
export interface BentoActiveRange {
    first: number;
    last: number;
}
