import * as i0 from '@angular/core';
import { OnDestroy, OnInit, Provider } from '@angular/core';

declare class SiDatatableInteractionDirective implements OnDestroy, OnInit {
    private table;
    /**
     * Automatically select every row or cell that is navigated trough.
     * Is ignored unless `selectionType` is `single` or `cell`.
     *
     * @defaultValue false
     */
    readonly datatableInteractionAutoSelect: i0.InputSignalWithTransform<boolean, unknown>;
    protected tabIndex: string;
    private element;
    private tableBody?;
    private autoSelectTimeout;
    private isMousedown;
    protected onKeydown(event: KeyboardEvent): void;
    protected onMousedown(event: MouseEvent): void;
    protected onMouseup(event: MouseEvent): void;
    protected onFocusin(event: FocusEvent): void;
    ngOnInit(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiDatatableInteractionDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SiDatatableInteractionDirective, "ngx-datatable[siDatatableInteraction]", ["si-datatable-interaction"], { "datatableInteractionAutoSelect": { "alias": "datatableInteractionAutoSelect"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class SiDatatableModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<SiDatatableModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<SiDatatableModule, never, [typeof SiDatatableInteractionDirective], [typeof SiDatatableInteractionDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<SiDatatableModule>;
}

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */

/** Interface for messages to override default table texts. */
interface NgxDatatableMessages {
    /** Message to show when the array is present but empty */
    emptyMessage: string;
    /** Footer total message */
    totalMessage: string;
    /** Footer selected message */
    selectedMessage: string;
    /** Pager screen reader message for the first page button */
    ariaFirstPageMessage: string;
    /**
     * Pager screen reader message for the n-th page button.
     * It will be rendered as: `{{ariaPageNMessage}} {{n}}`.
     */
    ariaPageNMessage: string;
    /** Pager screen reader message for the previous page button */
    ariaPreviousPageMessage: string;
    /** Pager screen reader message for the next page button */
    ariaNextPageMessage: string;
    /** Pager screen reader message for the last page button */
    ariaLastPageMessage: string;
    /** Row checkbox aria label */
    ariaRowCheckboxMessage: string;
    /** Header checkbox aria label */
    ariaHeaderCheckboxMessage: string;
    /** Group header checkbox aria label */
    ariaGroupHeaderCheckboxMessage: string;
}
/** CSS classes for icons that override the default table icons. */
interface NgxDatatableCssClasses {
    sortAscending: string;
    sortDescending: string;
    sortUnset: string;
    pagerLeftArrow: string;
    pagerRightArrow: string;
    pagerPrevious: string;
    pagerNext: string;
    treeStatusLoading: string;
    treeStatusExpanded: string;
    treeStatusCollapsed: string;
}
/**
 * Interface definition for ngx-datatable global configuration
 */
interface NgxDatatableConfig {
    messages?: NgxDatatableMessages;
    cssClasses?: NgxDatatableCssClasses;
    headerHeight?: number;
    footerHeight?: number;
    rowHeight?: number;
    defaultColumnWidth?: number;
}
/**
 * @deprecated Use NgxDatatableConfig from \@siemens/ngx-datatable instead from v23 onward.
 *
 * Configuration interface for the upstream \@siemens/ngx-datatable project.
 * See https://github.com/siemens/ngx-datatable/blob/main/projects/ngx-datatable/src/lib/ngx-datatable.config.ts#L50.
 */
interface INgxDatatableConfig extends NgxDatatableConfig {
}
/**
 * Extends the original NgxDatatableConfig with additional properties and makes all fields required to maintain compatibility.
 */
interface SiDatatableConfig extends NgxDatatableConfig {
    cssClasses: Exclude<NgxDatatableConfig['cssClasses'], undefined>;
    headerHeight: number;
    footerHeight: number;
    rowHeight: number;
    rowHeightSmall: number;
    rowHeightExtraSmall: number;
    rowHeightTiny: number;
    summaryHeight: number;
}
declare const SI_DATATABLE_CONFIG: SiDatatableConfig;
/**
 * Provides element configuration for the \@siemens/ngx-datatable.
 *
 *  @param configOverrides - overrides that will be merged with the element configuration.
 */
declare const provideSiDatatableConfig: (configOverrides?: NgxDatatableConfig) => Provider;

export { SI_DATATABLE_CONFIG, SiDatatableInteractionDirective, SiDatatableModule, provideSiDatatableConfig };
export type { INgxDatatableConfig, NgxDatatableConfig };
