import * as i2 from '@acorex/cdk/common';
import { AXEvent, MXBaseComponent, AXDataSource, AXSortOrder, AXButtonClickEvent, AXItemClickEvent, AXValueChangedEvent, AXListDataSource } from '@acorex/cdk/common';
import * as i0 from '@angular/core';
import { EventEmitter, TemplateRef, ChangeDetectorRef, OnInit, DoCheck, QueryList, WritableSignal, ElementRef, AfterViewInit, Signal } from '@angular/core';
import * as i11 from '@acorex/core/format';
import { AXFormatOptions } from '@acorex/core/format';
import * as i8 from '@acorex/components/button';
import { AXButtonItemListItem, AXButtonItemComponent } from '@acorex/components/button';
import * as i1 from '@angular/common';
import * as i3 from '@angular/cdk/scrolling';
import * as i4 from '@acorex/core/translation';
import * as i5 from '@acorex/components/result';
import * as i6 from '@acorex/components/loading';
import * as i7 from '@acorex/components/skeleton';
import * as i9 from '@acorex/components/decorators';
import * as i10 from '@acorex/components/dropdown';
import * as i12 from '@acorex/components/data-pager';
import { AXDataPagerComponent, AXDataPagerChangedEvent } from '@acorex/components/data-pager';
import * as i13 from '@angular/cdk/drag-drop';
import { CdkDragDrop } from '@angular/cdk/drag-drop';

interface AXDataTableScrollIndexChanged extends AXEvent {
    index: number;
}
interface AXDataTableRowClick extends AXEvent {
    data?: any;
}
interface AXColumnsOrderChangedEvent extends AXEvent {
    data?: any;
}
interface onColumnSizeChangedEvent extends AXEvent {
    type: 'start' | 'end';
    data?: any;
}
interface AXDataTableRowDbClick extends AXDataTableRowClick {
}
declare abstract class AXBaseDataTable extends MXBaseComponent {
    dataSource: AXDataSource<unknown>;
    /**
     * For handle nested rows.
     *
     * @defaultValue `parentId`
     */
    parentField: string;
    selectedRowsChange: EventEmitter<unknown[]>;
    /**
     * Gets the data source key field name.
     *
     * @returns string - The key field name for the data source.
     */
    getDataSourceKey(): string;
    private _selectedRows;
    get selectedRows(): unknown[];
    set selectedRows(v: unknown[]);
    /**
     * Expands a row to show its children.
     *
     * @param row - The row data to expand.
     * @returns Promise<void> - Promise that resolves when expansion is complete.
     */
    expandRow(row: any): Promise<void>;
    /**
     * Refreshes the children of a specific item.
     *
     * @param id - The ID of the item whose children should be refreshed.
     * @returns Promise<void> - Promise that resolves when refresh is complete.
     */
    refreshItemChildren(id: string): Promise<void>;
    /**
     * Selects one or more rows.
     *
     * @param rows - The rows to select.
     * @returns void - No return value.
     */
    selectRows(...rows: unknown[]): void;
    /**
     * Unselects one or more rows.
     *
     * @param rows - The rows to unselect.
     * @returns void - No return value.
     */
    unSelectRows(...rows: unknown[]): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXBaseDataTable, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXBaseDataTable>;
}

declare abstract class AXDataTableColumnComponent {
    caption: string;
    width: string | number;
    fixed: 'start' | 'end' | undefined;
    allowSorting: boolean;
    allowResizing: boolean;
    sortIndex: number | undefined;
    sortOrder: AXSortOrder | undefined;
    abstract get renderCellTemplate(): TemplateRef<unknown>;
    abstract get renderHeaderTemplate(): TemplateRef<unknown>;
    abstract get renderFooterTemplate(): TemplateRef<unknown>;
    abstract get loadingEnabled(): boolean;
    abstract get name(): string;
    get cssClass(): string | undefined;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXDataTableColumnComponent, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXDataTableColumnComponent>;
}

declare class AXDataTableColumnResizableDirective {
    private el;
    private renderer;
    private ngZone;
    private cdr;
    private document;
    private platformID;
    column: AXDataTableColumnComponent;
    private resize$;
    private startX;
    private startWidth;
    private onMouseMoveRawBound;
    private onMouseUpBound;
    constructor();
    /**
     * Handles mouse down events to initiate column resizing.
     *
     * @param event - The mouse down event.
     * @returns void - No return value.
     */
    onMouseDown(event: MouseEvent): void;
    /**
     * Handles raw mouse move events and forwards them to the debounced resize stream.
     * This method acts as a bridge between the raw DOM event and the debounced onMouseMove method.
     *
     * @param event - The raw mouse move event.
     * @returns void - No return value.
     */
    onMouseMoveRaw(event: MouseEvent): void;
    /**
     * Handles mouse move events during column resizing.
     *
     * @param event - The mouse move event.
     * @returns void - No return value.
     */
    onMouseMove(event: MouseEvent): void;
    /**
     * Handles mouse up events to complete column resizing.
     *
     * @returns void - No return value.
     */
    onMouseUp(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXDataTableColumnResizableDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AXDataTableColumnResizableDirective, "[ax-table-column-resizble]", never, { "column": { "alias": "ax-table-column-resizble"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Component for a text column in a data table, supporting header, cell, and footer templates.
 *
 * @category Components
 */
declare class AXDataTableTextColumnComponent extends AXDataTableColumnComponent {
    private grid;
    protected loadingRow: i0.WritableSignal<any>;
    protected initialWidth: string;
    customExpandIcon: string;
    customCollapseIcon: string;
    /**
     * Defines the data field to display in the column.
     */
    dataField: string;
    /**
     * Controls the display of an expandable arrow icon beside the cell text.
     * If set to `true`, an arrow icon is shown next to the text, indicating expandability.
     *
     * @defaultValue false
     *
     */
    expandHandler: boolean;
    /**
     * Toggles text wrapping in the cell.
     *
     * @defaultValue false
     */
    wrapText: boolean;
    /**
     * Provides a custom template for rendering cells within the column.
     */
    cellTemplate: TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentCellTemplate;
    /**
     * Returns the template used for rendering cells.
     * Falls back to a default template if no custom template is provided.
     */
    get renderCellTemplate(): TemplateRef<unknown>;
    /**
     * Template used for rendering the footer of the column.
     */
    footerTemplate: TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentFooterTemplate;
    /**
     * Returns the template used for rendering the column footer,
     * falling back to a default if not provided.
     */
    get renderFooterTemplate(): TemplateRef<unknown>;
    /**
     * Defines the template for rendering the column header.
     */
    headerTemplate: TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentHeaderTemplate;
    /**
     * Retrieves the template used for rendering the column header.
     * Falls back to a default template if none is provided.
     */
    get renderHeaderTemplate(): TemplateRef<unknown>;
    /**
     * Indicates whether loading functionality is enabled.
     */
    get loadingEnabled(): boolean;
    /**
     *  @ignore
     */
    protected handleExpandRow(row: any): Promise<void>;
    /**
     * Generates a unique name based on the `dataField` value.
     */
    get name(): string;
    /**
     *  @ignore
     */
    private formatService;
    protected getDisplayText(rowData: unknown, dataField: string): string;
    /**
     * Defines the format string for displaying values in the component.
     */
    format: string;
    /**
     * Provides additional options for formatting values.
     */
    formatOptions: AXFormatOptions;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXDataTableTextColumnComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXDataTableTextColumnComponent, "ax-text-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "allowSorting": { "alias": "allowSorting"; "required": false; }; "allowResizing": { "alias": "allowResizing"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "customExpandIcon": { "alias": "customExpandIcon"; "required": false; }; "customCollapseIcon": { "alias": "customCollapseIcon"; "required": false; }; "dataField": { "alias": "dataField"; "required": false; }; "expandHandler": { "alias": "expandHandler"; "required": false; }; "wrapText": { "alias": "wrapText"; "required": false; }; "cellTemplate": { "alias": "cellTemplate"; "required": false; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "format": { "alias": "format"; "required": false; }; "formatOptions": { "alias": "formatOptions"; "required": false; }; }, {}, never, never, true, never>;
}

type AXRowCommandItem = AXButtonItemListItem;
type AXRowCommandItemClickEvent = AXButtonClickEvent;
declare abstract class AXBaseRowCommandColumnComponent extends AXDataTableColumnComponent {
    protected grid: AXBaseDataTable;
    protected cdr: ChangeDetectorRef;
    allowSorting: boolean;
    get loadingEnabled(): boolean;
    get cssClass(): string;
    onItemClick: EventEmitter<AXRowCommandItemClickEvent>;
}
/**
 * A column for displaying dropdown command buttons in a data table.
 *
 * @category Components
 */
declare class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumnComponent {
    /**
     *  @ignore
     */
    private _cellTemplate;
    /**
     * Returns the template used for rendering cell content.
     * This method provides the cell template used in the data table column, falling back to a default template if none is provided.
     */
    get renderCellTemplate(): TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentHeaderTemplate;
    /**
     * Returns the template used for rendering the header content.
     * This method provides the header template used in the data table column.
     */
    get renderHeaderTemplate(): TemplateRef<unknown>;
    footerTemplate: TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentFooterTemplate;
    /**
     * Returns the template used for rendering the footer content.
     * This method provides the footer template used in the data table column.
     */
    get renderFooterTemplate(): TemplateRef<unknown>;
    /**
     * Returns the name identifier for the column component.
     */
    get name(): string;
    /**
     *  @ignore
     */
    protected _items: AXRowCommandItem[];
    items: AXRowCommandItem[] | ((rowData: unknown) => AXRowCommandItem[] | Promise<AXRowCommandItem[]>);
    /**
     *  @ignore
     */
    protected handleOnOpened(rowData: any): Promise<void>;
    /**
     *  @ignore
     */
    protected handleOnClosed(): void;
    /**
     *  @ignore
     */
    protected handleOnItemClick(e: AXItemClickEvent<AXButtonItemComponent>, data: unknown): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXRowDropdownCommandColumnComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXRowDropdownCommandColumnComponent, "ax-dropdown-command-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "onItemClick": "onItemClick"; }, never, never, true, never>;
}
/**
 * A column for displaying command buttons in a data table.
 *
 * @category Components
 */
declare class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent {
    /**
     *  @ignore
     */
    private _cellTemplate;
    /**
     * Returns the template used for rendering the cell content.
     * Uses the specified cell template if provided; otherwise, falls back to a default template.
     */
    get renderCellTemplate(): TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentHeaderTemplate;
    /**
     * Returns the template used for rendering the header content.
     * Overrides the base implementation to provide a specific template for the command column.
     */
    get renderHeaderTemplate(): TemplateRef<unknown>;
    /**
     * Template used for rendering the footer content of the column.
     */
    footerTemplate: TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentFooterTemplate;
    /**
     * Gets the template used for rendering the footer content of the column.
     * Returns `footerTemplate` if provided; otherwise, returns `_contentFooterTemplate`.
     */
    get renderFooterTemplate(): TemplateRef<unknown>;
    /**
     * Gets the unique name identifier for the command column.
     */
    get name(): string;
    /**
     * Defines the command items to display in the column.
     * @defaultValue []
     */
    items: AXRowCommandItem[] | ((rowData: unknown) => AXRowCommandItem[]);
    /**
     *  @ignore
     */
    protected getItems(rowData: unknown): AXRowCommandItem[];
    /**
     *  @ignore
     */
    protected handleOnItemClick(e: MouseEvent, item: AXRowCommandItem, data: unknown): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXRowCommandColumnComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXRowCommandColumnComponent, "ax-command-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "onItemClick": "onItemClick"; }, never, never, true, never>;
}

/**
 * Column component that provides checkboxes for row selection in a data table.
 *
 * @category Components
 */
declare class AXRowExpandColumnComponent extends AXDataTableColumnComponent {
    private grid;
    protected loadingRow: i0.WritableSignal<any>;
    /**
     *  @ignore
     */
    private _cellTemplate;
    /**
     * Gets the template used to render cells in the column.
     */
    get renderCellTemplate(): TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentHeaderTemplate;
    /**
     * Gets the template used to render the column header.
     */
    get renderHeaderTemplate(): TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentFooterTemplate;
    /**
     * Gets the template used to render the column footer.
     */
    get renderFooterTemplate(): TemplateRef<unknown>;
    /**
     * Gets the unique identifier for the column.
     */
    get name(): string;
    /**
     *  @ignore
     */
    protected handleExpandRow(row: any): Promise<void>;
    /**
     * Indicates whether loading is enabled for the column.
     */
    get loadingEnabled(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXRowExpandColumnComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXRowExpandColumnComponent, "ax-expand-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Component for displaying row indices in a data table column.
 *
 * @category Components
 */
declare class AXRowIndexColumnComponent extends AXDataTableColumnComponent implements OnInit {
    private grid;
    private unsubscriber;
    /**
     *  @ignore
     */
    private _cellTemplate;
    /**
     * Provides the cell template for custom rendering if defined.
     */
    get renderCellTemplate(): TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentHeaderTemplate;
    /**
     * Provides the header template for custom rendering if defined.
     */
    get renderHeaderTemplate(): TemplateRef<unknown>;
    /**
     * Template used for rendering the footer content of the column.
     */
    footerTemplate: TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentFooterTemplate;
    /**
     * Returns the template used for rendering the footer of the column.
     * This method returns the `footerTemplate` if it is provided; otherwise, it defaults to the `_contentFooterTemplate`. This allows for custom footer content while falling back to a default template if no custom template is specified.
     */
    get renderFooterTemplate(): TemplateRef<unknown>;
    /**
     * Gets the unique identifier name for the column.
     */
    get name(): string;
    /**
     * Determines whether the index should be zero-padded.
     * @defaultValue false
     */
    padZero: boolean;
    /**
     *  @ignore
     */
    protected formatCount: number;
    /**
     *  @ignore
     */
    ngOnInit(): void;
    /**
     * Disables sorting for this column.
     *
     * @defaultValue false
     */
    allowSorting: boolean;
    /**
     * Indicates whether loading is enabled for this component.
     */
    get loadingEnabled(): boolean;
    /**
     * Gets the CSS class applied to the component.
     */
    get cssClass(): string | undefined;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXRowIndexColumnComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXRowIndexColumnComponent, "ax-index-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; }; "padZero": { "alias": "padZero"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Column component that provides checkboxes for row selection in a data table.
 *
 * @category Components
 */
declare class AXRowSelectColumnComponent extends AXDataTableColumnComponent {
    private grid;
    /**
     *  @ignore
     */
    private _cellTemplate;
    /**
     * Gets the template used to render cells in the column.
     */
    get renderCellTemplate(): TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentHeaderTemplate;
    /**
     * Gets the template used to render the column header.
     */
    get renderHeaderTemplate(): TemplateRef<unknown>;
    /**
     *  @ignore
     */
    private _contentFooterTemplate;
    /**
     * Gets the template used to render the column footer.
     */
    get renderFooterTemplate(): TemplateRef<unknown>;
    /**
     * Gets the unique identifier for the column.
     */
    get name(): string;
    /**
     *  @ignore
     */
    private getDataSourceKey;
    /**
     *  @ignore
     */
    protected isSelected(item: unknown): boolean;
    /**
     *  @ignore
     */
    protected checkAllSelected(rows: any): boolean;
    /**
     *  @ignore
     */
    protected handleChange(e: AXValueChangedEvent, item: unknown): void;
    /**
     *  @ignore
     */
    protected handleSelectAll(e: AXValueChangedEvent, rows: any): void;
    /**
     * Indicates whether loading is enabled for the column.
     */
    get loadingEnabled(): boolean;
    /**
     * Gets the CSS class applied to the component.
     */
    get cssClass(): string | undefined;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXRowSelectColumnComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXRowSelectColumnComponent, "ax-select-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Component for a data table with infinite scrolling capabilities.
 *
 * @category Components
 */
declare class AXInfiniteScrollDataTableComponent extends AXBaseDataTable implements OnInit, DoCheck {
    private document;
    private platformID;
    private ngZone;
    /**
     *  @ignore
     */
    protected columns: QueryList<AXDataTableColumnComponent>;
    /**
     *  @ignore
     */
    protected startFixedColumn(): AXDataTableColumnComponent[];
    /**
     *  @ignore
     */
    protected endFixedColumn(): AXDataTableColumnComponent[];
    /**
     *  @ignore
     */
    protected notFixedColumn(): AXDataTableColumnComponent[];
    /**
     *  @ignore
     */
    protected notFixedColumnCount(): number;
    /**
     *  @ignore
     */
    protected fixedColumnCount(): number;
    /**
     * Emits an event when the page changes.
     *
     * @event
     */
    onPageChanged: EventEmitter<AXValueChangedEvent<number>>;
    /**
     *  @ignore
     */
    private clickSubject;
    /**
     * Emits an event when a row is clicked.
     *
     * @event
     */
    onRowClick: EventEmitter<AXDataTableRowClick>;
    /**
     * Emits an event when a row is double-clicked.
     *
     * @event
     */
    onRowDbClick: EventEmitter<AXDataTableRowDbClick>;
    /**
     * Template for rendering rows in the data table.
     */
    rowTemplate?: TemplateRef<unknown>;
    /**
     * Template to display when the data table is empty.
     */
    emptyTemplate?: TemplateRef<unknown>;
    /**
     * Controls the visibility of the table header.
     *
     * @defaultValue true
     */
    showHeader: boolean;
    /**
     * Defines the mode for fetching data.
     *
     * @defaultValue 'auto'
     */
    fetchDataMode: 'auto' | 'manual';
    /**
     * Configuration for the loading state of the data table.
     *
     * @defaultValue { enabled: true, animation: true }
     */
    loading: {
        enabled: boolean;
        animation: boolean;
        loadingTemplate?: TemplateRef<unknown>;
    };
    /**
     *  @ignore
     */
    protected listDataSource: AXListDataSource<unknown>;
    /**
     *  @ignore
     */
    protected isLoading: WritableSignal<boolean>;
    /**
     *  @ignore
     */
    protected hasItems: boolean;
    /**
     *  @ignore
     */
    protected totalRows: number;
    /**
     *  @ignore
     */
    protected currentPage: number;
    /**
     *  @ignore
     */
    protected totalPages: number;
    /**
     *  @ignore
     */
    protected startRowIndex: number;
    /**
     *  @ignore
     */
    private lastIndex;
    /**
     * Event emitted when the focused row changes.
     *
     * @event
     */
    focusedRowChange: EventEmitter<unknown>;
    /**
     *  @ignore
     */
    private _focusedRow;
    /**
     * Retrieves the currently focused row.
     */
    get focusedRow(): unknown;
    /**
     * Sets the currently focused row and emits a change event.
     *
     * @param v - The row data to be set as focused.
     */
    set focusedRow(v: unknown);
    /**
     * Defines the height of each item in the table.
     *
     * @default 40
     */
    itemHeight: number | 'auto';
    /**
     *  @ignore
     */
    protected width: string;
    /**
     *  @ignore
     */
    protected height: string;
    /**
     *  @ignore
     */
    private viewport;
    /**
     * Emitted when the scroll index changes in the table.
     *
     * @event
     */
    onScrolledIndexChanged: EventEmitter<AXDataTableScrollIndexChanged>;
    trackByIdx(i: any): any;
    /**
     *  @ignore
     */
    ngOnInit(): void;
    /**
     *  @ignore
     */
    headerContainer: ElementRef<HTMLDivElement>;
    /**
     *  @ignore
     */
    footerContainer: ElementRef;
    /**
     *  @ignore
     */
    scrollableContainer: ElementRef<HTMLDivElement>;
    /**
     *  @ignore
     */
    protected _handleOnscrolledIndexChange(e: number): void;
    /**
     *  @ignore
     */
    ngDoCheck(): void;
    /**
     *  @ignore
     */
    private updateTotalCount;
    /**
     *  @ignore
     */
    private updateHeight;
    /**
     *  @ignore
     */
    private updateWidth;
    /**
     *  @ignore
     */
    private updateHScroll;
    /**
     *  @ignore
     */
    private copyFixedColumns;
    /**
     * Updates the viewport by checking its size and scrolling to the last index.
     * Marks the component for change detection.
     * @ignore
     */
    render(): void;
    /**
     * Resets the index to zero and refreshes the data source.
     * @ignore
     */
    refresh(): void;
    /**
     *  @ignore
     */
    protected handleRowClick(event: MouseEvent, item: unknown): void;
    /**
     *  @ignore
     */
    private handleRowSingleClick;
    /**
     *  @ignore
     */
    protected handleRowDoubleClick(e: MouseEvent, item: unknown): void;
    /**
     * Handles column header clicks to toggle sorting on the column.
     *
     * @param e - The mouse event triggered by the click.
     * @param column - The column that was clicked.
     * @ignore
     */
    handleColumnClick(e: MouseEvent, column: AXDataTableColumnComponent): void;
    /**
     *  @ignore
     */
    protected getSort(column: AXDataTableColumnComponent): string | undefined;
    /**
     *  @ignore
     */
    protected _handleOnScroll(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXInfiniteScrollDataTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXInfiniteScrollDataTableComponent, "ax-infinite-scroll-data-table", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "rowTemplate": { "alias": "rowTemplate"; "required": false; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "fetchDataMode": { "alias": "fetchDataMode"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "focusedRow": { "alias": "focusedRow"; "required": false; }; "itemHeight": { "alias": "itemHeight"; "required": false; }; }, { "selectedRowsChange": "selectedRowsChange"; "onPageChanged": "onPageChanged"; "onRowClick": "onRowClick"; "onRowDbClick": "onRowDbClick"; "focusedRowChange": "focusedRowChange"; "onScrolledIndexChanged": "onScrolledIndexChanged"; }, ["columns"], ["ax-header", "ax-footer"], true, never>;
}

/**
 * Component for displaying and managing a data table with advanced features.
 *
 * @category Components
 */
declare class AXDataTableComponent extends AXBaseDataTable implements OnInit, AfterViewInit {
    #private;
    private _unsubscriber;
    private _zone;
    private document;
    private platformID;
    /**
     *  @ignore
     */
    dataPager: any;
    /**
     *  @ignore
     */
    customDataPager: AXDataPagerComponent;
    /**
     *  @ignore
     */
    protected rtl: boolean;
    /**
     *  @ignore
     */
    protected displayedRows: WritableSignal<any[]>;
    /**
     *  @ignore
     */
    protected page: WritableSignal<number>;
    /**
     *  @ignore
     */
    protected pageSize: WritableSignal<number>;
    /**
     *  @ignore
     */
    protected isLoading: WritableSignal<boolean>;
    /**
     *  @ignore
     */
    protected columnsList: WritableSignal<any[]>;
    /**
     *  @ignore
     */
    protected endFixedColumnsList: Signal<any[]>;
    /**
     *  @ignore
     */
    protected startFixedColumnsList: Signal<any[]>;
    /**
     *  @ignore
     */
    protected normalColumnsList: Signal<any[]>;
    /**
     *  @ignore
     */
    protected resizeColumnProp: {
        startX: number;
        startWidth: number;
        columnIndex: number;
        newColumnWidth: number;
        thElement: any;
    };
    /**
     *  @ignore
     */
    protected hasItems: boolean;
    /**
     *  @ignore
     */
    protected totalRows: number;
    /**
     *  @ignore
     */
    protected currentPage: number;
    /**
     *  @ignore
     */
    protected totalPages: number;
    /**
     *  @ignore
     */
    protected startRowIndex: number;
    /**
     * Template for custom row content.
     */
    rowTemplate?: TemplateRef<unknown>;
    /**
     * Template to display when the table is empty.
     */
    emptyTemplate?: TemplateRef<unknown>;
    /**
     * Template to display when no data is loaded yet.
     */
    noDataTemplate?: TemplateRef<unknown>;
    /**
     * Defines if alternative row styling should be applied.
     *
     * @defaultValue `true`
     */
    alternative: boolean;
    /**
     * Indicates if the table header should be displayed.
     *
     * @defaultValue `true`
     */
    showHeader: boolean;
    /**
     * Indicates if the table header should be fixed.
     *
     * @defaultValue `true`
     */
    fixedHeader: boolean;
    /**
     * Indicates if the table footer should be displayed.
     *
     * @defaultValue `false`
     */
    showFooter: boolean;
    /**
     * Indicates if the table footer should be fixed.
     *
     * @defaultValue `true`
     */
    fixedFooter: boolean;
    /**
     * Specifies the height of each item in the table.
     *
     * @defaultValue `40`
     */
    itemHeight: number | 'auto';
    /**
     * Enables or disables row reordering.
     *
     * @defaultValue `false`
     */
    allowReordering: boolean;
    /**
     * Enables or disables paging.
     *
     * @defaultValue `true`
     */
    paging: boolean;
    /**
     * Specifies how data should be fetched.
     *
     * @defaultValue `'auto'`
     */
    fetchDataMode: 'auto' | 'manual';
    /**
     * Configuration for loading state.
     *
     * @defaultValue `{ enabled: true, animation: true }`
     */
    loading: {
        enabled: boolean;
        animation: boolean;
        loadingTemplate?: TemplateRef<unknown>;
    };
    /**
     *  @ignore
     */
    private _focusedRow;
    /**
     * Gets the currently focused row.
     */
    get focusedRow(): unknown;
    /**
     * Sets the currently focused row and emits the change event.
     *
     * @param v - The row to be focused.
     */
    set focusedRow(v: unknown);
    /**
     * Emits when the focused row changes.
     *
     * @event
     */
    focusedRowChange: EventEmitter<unknown>;
    /**
     * Emits when a row is clicked.
     *
     * @event onRowClick
     */
    onRowClick: EventEmitter<AXDataTableRowClick>;
    /**
     * Emits when a row is double-clicked.
     *
     * @event onRowDbClick
     */
    onRowDbClick: EventEmitter<AXDataTableRowDbClick>;
    /**
     * Emits when the order of columns changes.
     *
     * @event onColumnsOrderChanged
     */
    onColumnsOrderChanged: EventEmitter<AXColumnsOrderChangedEvent>;
    /**
     * Emits when the size of columns changes.
     *
     * @event onColumnSizeChanged
     */
    onColumnSizeChanged: EventEmitter<onColumnSizeChangedEvent>;
    /**
     * Emits when page changes.
     *
     * @event onColumnSizeChanged
     */
    onPageChanged: EventEmitter<AXDataPagerChangedEvent>;
    /**
     *  @ignore
     */
    private clickSubject;
    /**
     *  @ignore
     */
    private isRefreshCalled;
    /**
     * Returns true if in manual mode and no data has been loaded yet.
     */
    get showNoDataLoadedYet(): boolean;
    /**
     *  @ignore
     */
    protected columns: QueryList<AXDataTableColumnComponent>;
    /**
     *  @ignore
     */
    ngOnInit(): void;
    /**
     *  @ignore
     */
    ngAfterViewInit(): void;
    protected toggleExpanded(rows: any[], expandedItem: any, children: any[]): any[];
    protected refreshExpandedItem(id: string | number): Promise<void>;
    private updateChildren;
    /**
     *  @ignore
     */
    protected drop(event: CdkDragDrop<any, any, any>): void;
    /**
     *  @ignore
     */
    protected handleRowClick(event: MouseEvent, item: unknown): void;
    /**
     *  @ignore
     */
    private handleRowSingleClick;
    /**
     *  @ignore
     */
    protected handleChangePage(event: AXDataPagerChangedEvent): void;
    /**
     *  @ignore
     */
    protected handleRowDoubleClick(e: MouseEvent, item: unknown): void;
    /**
     *  @ignore
     */
    private applyDataPagerMethods;
    /**
     * Handles the click event on a column header.
     * Toggles the sorting direction or removes the sort if already sorted.
     *
     * @param e - The mouse event triggered by the click.
     * @param column - The column that was clicked.
     * @ignore
     */
    protected handleColumnClick(e: MouseEvent, column: AXDataTableColumnComponent): void;
    /**
     *  @ignore
     */
    protected getSort(column: AXDataTableColumnComponent): string | undefined;
    /**
     * Refreshes the data table with optional reset options.
     *
     * @param options - Configuration options for refresh operation.
     * @param options.reset - Whether to reset pagination state.
     * @returns void - No return value.
     */
    refresh(options?: {
        reset?: boolean;
    }): void;
    /**
     *  @ignore
     */
    protected calculateRowIndex(index: number): number;
    /**
     *  @ignore
     */
    protected onResizeColumnStart(event: MouseEvent, columnIndex: number): void;
    /**
     *  @ignore
     */
    private onResizeColumnMove;
    /**
     *  @ignore
     */
    private onResizeColumnEnd;
    /**
     *  @ignore
     */
    private resetResizingProcess;
    /**
     *  @ignore
     */
    private calculateStickyColumnsPositions;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXDataTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXDataTableComponent, "ax-data-table", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "selectedRows": { "alias": "selectedRows"; "required": false; }; "parentField": { "alias": "parentField"; "required": false; }; "rowTemplate": { "alias": "rowTemplate"; "required": false; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; }; "noDataTemplate": { "alias": "noDataTemplate"; "required": false; }; "alternative": { "alias": "alternative"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "fixedHeader": { "alias": "fixedHeader"; "required": false; }; "showFooter": { "alias": "showFooter"; "required": false; }; "fixedFooter": { "alias": "fixedFooter"; "required": false; }; "itemHeight": { "alias": "itemHeight"; "required": false; }; "allowReordering": { "alias": "allowReordering"; "required": false; }; "paging": { "alias": "paging"; "required": false; }; "fetchDataMode": { "alias": "fetchDataMode"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "focusedRow": { "alias": "focusedRow"; "required": false; }; }, { "selectedRowsChange": "selectedRowsChange"; "focusedRowChange": "focusedRowChange"; "onRowClick": "onRowClick"; "onRowDbClick": "onRowDbClick"; "onColumnsOrderChanged": "onColumnsOrderChanged"; "onColumnSizeChanged": "onColumnSizeChanged"; "onPageChanged": "onPageChanged"; }, ["customDataPager", "columns"], ["ax-header", "ax-data-pager", "ax-footer"], true, never>;
}

declare class AXDataTableModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXDataTableModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXDataTableModule, never, [typeof i1.CommonModule, typeof i2.AXCommonModule, typeof i3.ScrollingModule, typeof i4.AXTranslationModule, typeof i5.AXResultModule, typeof i6.AXLoadingModule, typeof i7.AXSkeletonModule, typeof i8.AXButtonModule, typeof i9.AXDecoratorModule, typeof i10.AXDropdownModule, typeof i11.AXFormatModule, typeof i2.AXRippleDirective, typeof i12.AXDataPagerModule, typeof i13.CdkDropList, typeof i13.CdkDrag, typeof i13.CdkDragPlaceholder, typeof i13.CdkDragHandle, typeof AXInfiniteScrollDataTableComponent, typeof AXDataTableComponent, typeof AXDataTableTextColumnComponent, typeof AXRowIndexColumnComponent, typeof AXRowSelectColumnComponent, typeof AXRowExpandColumnComponent, typeof AXRowCommandColumnComponent, typeof AXRowDropdownCommandColumnComponent, typeof AXDataTableColumnResizableDirective], [typeof AXInfiniteScrollDataTableComponent, typeof AXDataTableComponent, typeof AXDataTableTextColumnComponent, typeof AXRowIndexColumnComponent, typeof AXRowSelectColumnComponent, typeof AXRowExpandColumnComponent, typeof AXRowCommandColumnComponent, typeof AXRowDropdownCommandColumnComponent, typeof AXDataTableColumnResizableDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXDataTableModule>;
}

export { AXBaseDataTable, AXBaseRowCommandColumnComponent, AXDataTableColumnComponent, AXDataTableColumnResizableDirective, AXDataTableComponent, AXDataTableModule, AXDataTableTextColumnComponent, AXInfiniteScrollDataTableComponent, AXRowCommandColumnComponent, AXRowDropdownCommandColumnComponent, AXRowExpandColumnComponent, AXRowIndexColumnComponent, AXRowSelectColumnComponent };
export type { AXColumnsOrderChangedEvent, AXDataTableRowClick, AXDataTableRowDbClick, AXDataTableScrollIndexChanged, AXRowCommandItem, AXRowCommandItemClickEvent, onColumnSizeChangedEvent };
