import { ElementRef, EventEmitter, OnInit } from '@angular/core';
import { ColumnApi, GridOptions, IsFullWidthRowParams } from 'ag-grid-community';
import { GridContextMenuOption } from './contextmenu/grid-context-menu-option';
import { DialogService } from '../modal/dialog/dialog.service';
import { PreferencesService } from 'systelab-preferences';
import { I18nService } from 'systelab-translate';
import { GridContextMenuComponent, GridRowMenuActionHandler } from './contextmenu/grid-context-menu-component';
import { GridColumnsOptions } from './options/grid-column-options';
import { GridHeaderContextMenu, GridHeaderMenuActionHandler } from './contextmenu/grid-header-context-menu.component';
import * as i0 from "@angular/core";
export type rowSelectionType = 'single' | 'multiple';
export declare abstract class AbstractGrid<T> implements OnInit, GridRowMenuActionHandler, GridHeaderMenuActionHandler {
    protected preferencesService: PreferencesService;
    protected i18nService: I18nService;
    protected dialogService: DialogService;
    static readonly contextMenuColId = "contextMenu";
    static readonly selectionColId = "selectCol";
    gridOptions: GridOptions;
    overlayNoRowsTemplate: any;
    overlayLoadingTemplate: any;
    startCellEditorWithTab: boolean;
    headerMenu: Array<GridContextMenuOption<Object>>;
    menu: Array<GridContextMenuOption<T>>;
    preferenceName: string;
    multipleSelection: boolean;
    showChecks: boolean;
    headerCheckboxSelection: boolean;
    rowData: Array<T>;
    noRowsText: any;
    loadingText: any;
    removeSelectionOnOpenContextMenu: boolean;
    autoSizeColumnsToContent: boolean;
    action: EventEmitter<any>;
    clickRow: EventEmitter<any>;
    rowDragEnd: EventEmitter<any>;
    viewportChanged: EventEmitter<any>;
    rowSelected: EventEmitter<any>;
    hiddenElement: ElementRef;
    popupmenu: GridContextMenuComponent<T>;
    headerPopupMenu: GridHeaderContextMenu<Object>;
    protected firstSizeToFitExecuted: boolean;
    private calculatedGridState;
    private scrollTimeout;
    protected constructor(preferencesService: PreferencesService, i18nService: I18nService, dialogService: DialogService);
    ngOnInit(): void;
    protected getInitialGridOptions(): GridOptions;
    protected onCellEditingStarted(event: any): void;
    onModelUpdated(event: any): any;
    doGridReady(event: any): void;
    protected saveColumnsStateInPreferences(): void;
    protected loadColumnsStateFromPreferences(): void;
    private loadColumnsState;
    private setColumnWidthToFitContent;
    private getContextMenuColumnDef;
    private getCheckColumnDef;
    protected abstract getColumnDefs(): Array<any>;
    protected getColumnDefsWithOptions(): Array<any>;
    protected hideHeader(): boolean;
    protected getIsFullWidthRow(isFullWidthRowParams: IsFullWidthRowParams): boolean;
    getFullWidthCellRenderer(): any;
    protected getGridOptionsPreferencesPrefix(): string;
    executeContextMenuAction(elementId: string, actionId: string): void;
    isContextMenuOptionEnabled(elementId: string, actionId: string): boolean;
    executeHeaderContextMenuAction(elementId: string, actionId: string, headerData: any): void;
    isHeaderContextMenuOptionEnabled(elementId: string, actionId: string, headerData: any): boolean;
    protected isColResizeEnabled(): boolean;
    private suppressColumnSizeToFit;
    onRowSelected(event: any): void;
    protected getRowSelectionType(): rowSelectionType;
    getSelectedRows(): Array<T>;
    getSelectedRow(): T;
    selectRow(index: number): void;
    doClick(event: any): void;
    doColumnResized(event: any): void;
    doViewportChanged(): void;
    doGridSizeChanged(event: any): void;
    showOptions(canHideAllColumns?: boolean): void;
    protected getGridColumnOptions(columnApi: ColumnApi, columnDefs: Array<any>): GridColumnsOptions;
    protected applyGridColumnOptions(columnApi: ColumnApi, columnOptions: GridColumnsOptions): void;
    dotsClicked(rowIndex: number, data: T | Array<T>, event: MouseEvent): void;
    headerDotsClicked(headerData: Object, event: MouseEvent): void;
    protected existsAtLeastOneHeaderActionEnabled(data: Object | Array<Object>): boolean;
    protected existsAtLeastOneActionEnabled(data: T | Array<T> | Object | Array<Object>): boolean;
    private isMenuOptionEnabled;
    onRowDragEnd(event: any): void;
    protected getContextMenuColumnWidth(): number;
    protected getCheckColumnWidth(): number;
    private onBodyScroll;
    private doAutoSizeManagement;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractGrid<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractGrid<any>, never, never, { "headerMenu": { "alias": "headerMenu"; "required": false; }; "menu": { "alias": "menu"; "required": false; }; "preferenceName": { "alias": "preferenceName"; "required": false; }; "multipleSelection": { "alias": "multipleSelection"; "required": false; }; "showChecks": { "alias": "showChecks"; "required": false; }; "headerCheckboxSelection": { "alias": "headerCheckboxSelection"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; "noRowsText": { "alias": "noRowsText"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "removeSelectionOnOpenContextMenu": { "alias": "removeSelectionOnOpenContextMenu"; "required": false; }; "autoSizeColumnsToContent": { "alias": "autoSizeColumnsToContent"; "required": false; }; }, { "action": "action"; "clickRow": "clickRow"; "rowDragEnd": "rowDragEnd"; "viewportChanged": "viewportChanged"; "rowSelected": "rowSelected"; }, never, never, false, never>;
}
