/**
 * Copyright Aquera Inc 2025
 *
 * This source code is licensed under the BSD-3-Clause license found in the
 * LICENSE file in the root directory of this source tree.
 */
import { CSSResultArray, TemplateResult } from 'lit';
import NileElement from '../internal/nile-element';
import { PrefixColumn } from './types/nile-grid.types';
/**
 * Nile grid component.
 *
 * @tag nile-grid
 *
 */
export declare class NileGrid extends NileElement {
    /**
     * The styles for nile-grid
     * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
     */
    static get styles(): CSSResultArray;
    /** To store the column widths in the beginning and after resizing */
    columnWidths: number[];
    /** To get the slot element */
    slotEl: HTMLSlotElement;
    /** To get the first resize line to show the resize handle */
    resizeStart: HTMLElement;
    /** To get the last resize line to show the resize handle */
    resizeEnd: HTMLElement;
    /** To get the last resize line to show the resize handle */
    shadowLeft: HTMLElement;
    /** To get the last resize line to show the resize handle */
    shadowRight: HTMLElement;
    /** To enable horizontal scrolling when user is resizing */
    enableScroll: boolean;
    /** To enable hoverable rows */
    hoverable: boolean;
    /** Controls vertical overscroll behavior when the grid is scrollable. */
    overflowScrollBehaviour: string;
    /** To store the mutation observer */
    private mo?;
    /** To store the resize observer */
    private resizeObserver?;
    private resizeObserverStickyShadows?;
    /** To store the request animation frame */
    private raf;
    /** Minimum column width */
    minColumnWidth: number;
    /** To store the sticky index's */
    stickyLeftIndexes: number[];
    /** To store the sticky index's */
    stickyRightIndexes: number[];
    /** To calculate the rowspan height */
    cellHeight: number | null;
    headHeight: number | null;
    /** To check if the widths are initialized */
    widthsInitialized: boolean;
    /** To check if the widths are initialized */
    lockedWidthColumns: boolean[];
    /** prefix columns width */
    prefixSumColumnsWidth: PrefixColumn[];
    /** prefix columns width */
    stickyColumns: number[];
    /** body rows */
    bodyRows: HTMLElement[];
    /** head rows */
    headRows: HTMLElement[];
    needsStructureLayout: boolean;
    needsWidthLayout: boolean;
    needsSpanLayout: boolean;
    colCount: number;
    isGridReady: boolean;
    shadowLeftVisibleSticky?: boolean;
    shadowRightVisibleSticky?: boolean;
    stickyLeftHeadEls: HTMLElement[];
    stickyRightHeadEls: HTMLElement[];
    stickyLeftBodyEls: HTMLElement[];
    stickyRightBodyEls: HTMLElement[];
    private resizeTimer;
    /** To throttle sticky shadow updates */
    private shadowRaf;
    resizeBaseColumnWidths: number[];
    constructor();
    connectedCallback(): void;
    private syncStickyShadowsRaf;
    private updateOverscrollBehavior;
    private scheduleLayout;
    private ensureWidths;
    private onResize;
    protected firstUpdated(): void;
    updated(changed: Map<string, unknown>): void;
    private _attachObserverAndLayout;
    render(): TemplateResult;
    disconnectedCallback(): void;
}
export default NileGrid;
declare global {
    interface HTMLElementTagNameMap {
        'nile-grid': NileGrid;
    }
}
