/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import Component from '@glimmer/component';
import type { ComponentLike } from '@glint/template';
import type Owner from '@ember/owner';
import { HdsAdvancedTableDensityValues, HdsAdvancedTableVerticalAlignmentValues } from './types.ts';
import type { HdsAdvancedTableColumn, HdsAdvancedTableDensities, HdsAdvancedTableHorizontalAlignment, HdsAdvancedTableOnSelectionChangeSignature, HdsAdvancedTableSortingFunction, HdsAdvancedTableThSortOrder, HdsAdvancedTableVerticalAlignment, HdsAdvancedTableModel, HdsAdvancedTableExpandState } from './types.ts';
import type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';
import type { HdsAdvancedTableTdSignature } from './td.ts';
import type { HdsAdvancedTableThSignature } from './th.ts';
import type { HdsAdvancedTableTrSignature } from './tr.ts';
export declare const DENSITIES: HdsAdvancedTableDensities[];
export declare const DEFAULT_DENSITY = HdsAdvancedTableDensityValues.Medium;
export declare const VALIGNMENTS: HdsAdvancedTableVerticalAlignment[];
export declare const DEFAULT_VALIGN = HdsAdvancedTableVerticalAlignmentValues.Top;
export interface HdsAdvancedTableSignature {
    Args: {
        align?: HdsAdvancedTableHorizontalAlignment;
        caption?: string;
        columns: HdsAdvancedTableColumn[];
        density?: HdsAdvancedTableDensities;
        identityKey?: string;
        isSelectable?: boolean;
        isStriped?: boolean;
        model: HdsAdvancedTableModel;
        onSelectionChange?: (selection: HdsAdvancedTableOnSelectionChangeSignature) => void;
        onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;
        selectionAriaLabelSuffix?: string;
        sortBy?: string;
        selectableColumnKey?: string;
        sortedMessageText?: string;
        sortOrder?: HdsAdvancedTableThSortOrder;
        valign?: HdsAdvancedTableVerticalAlignment;
        hasStickyHeader?: boolean;
        hasStickyFirstColumn?: boolean;
        childrenKey?: string;
    };
    Blocks: {
        body?: [
            {
                Td?: ComponentLike<HdsAdvancedTableTdSignature>;
                Tr?: ComponentLike<HdsAdvancedTableTrSignature>;
                Th?: ComponentLike<HdsAdvancedTableThSignature>;
                data?: Record<string, unknown>;
                rowIndex?: number | string;
                isOpen?: HdsAdvancedTableExpandState;
            }
        ];
    };
    Element: HTMLDivElement;
}
export default class HdsAdvancedTable extends Component<HdsAdvancedTableSignature> {
    private _sortBy;
    private _sortOrder;
    private _selectAllCheckbox?;
    private _isSelectAllCheckboxSelected?;
    private _selectableRows;
    private _captionId;
    private _tableModel;
    private _scrollHandler;
    private _resizeObserver;
    private _theadElement;
    scrollIndicatorDimensions: {
        bottom: string;
        height: string;
        left: string;
        right: string;
        top: string;
        width: string;
    };
    isStickyColumnPinned: boolean;
    isStickyHeaderPinned: boolean;
    showScrollIndicatorLeft: boolean;
    showScrollIndicatorRight: boolean;
    showScrollIndicatorTop: boolean;
    showScrollIndicatorBottom: boolean;
    stickyColumnOffset: string;
    constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']);
    get getSortCriteria(): string | HdsAdvancedTableSortingFunction<unknown>;
    get columnWidths(): string[] | undefined;
    get identityKey(): string | undefined;
    get childrenKey(): string;
    get hasScrollIndicator(): boolean;
    get sortedMessageText(): string;
    get isSelectable(): boolean;
    get isStriped(): boolean;
    get density(): HdsAdvancedTableDensities;
    get valign(): HdsAdvancedTableVerticalAlignment;
    get gridTemplateColumns(): string;
    get classNames(): string;
    get theadClassNames(): string;
    private _setUpScrollWrapper;
    private _setUpThead;
    setSortBy(column: string): void;
    onSelectionChangeCallback(checkbox?: HdsFormCheckboxBaseSignature['Element'], selectionKey?: string): void;
    onSelectionAllChange(): void;
    onSelectionRowChange(checkbox?: HdsFormCheckboxBaseSignature['Element'], selectionKey?: string): void;
    didInsertSelectAllCheckbox(checkbox: HdsFormCheckboxBaseSignature['Element']): void;
    willDestroySelectAllCheckbox(): void;
    didInsertRowCheckbox(checkbox: HdsFormCheckboxBaseSignature['Element'], selectionKey?: string): void;
    willDestroyRowCheckbox(selectionKey?: string): void;
    setSelectAllState(): void;
}
