import { AfterViewInit, ComponentRef, ComponentFactoryResolver, ElementRef, EventEmitter, OnDestroy, InjectionToken, RendererFactory2 } from '@angular/core';
import { DragAndDropGhostComponent } from './../../components/drag-and-drop-ghost/drag-and-drop-ghost.component';
import { TablejsGridProxy } from './../../shared/classes/tablejs-grid-proxy';
import { GridService } from './../../services/grid/grid.service';
import { DirectiveRegistrationService } from './../../services/directive-registration/directive-registration.service';
import { IColumnData } from './../../shared/interfaces/i-column-data';
import { ScrollViewportDirective } from './../../directives/scroll-viewport/scroll-viewport.directive';
import { ScrollDispatcherService } from './../../services/scroll-dispatcher/scroll-dispatcher.service';
import { OperatingSystemService } from './../../services/operating-system/operating-system.service';
import { ResizeSensor } from 'css-element-queries';
import { Subject, Subscription } from 'rxjs';
import { Overlay, OverlayConfig, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';
import { ComponentType } from '@angular/cdk/portal';
import { IColumnHierarchy } from '../../shared/interfaces/i-column-hierarchy';
import { IColumnHideChange } from '../../shared/interfaces/events/i-column-hide-change';
import * as i0 from "@angular/core";
export declare class GridDirective extends TablejsGridProxy implements AfterViewInit, OnDestroy {
    private elementRef;
    private resolver;
    private gridService;
    private directiveRegistrationService;
    private document;
    private overlay;
    private scrollDispatcherService;
    private operatingSystem;
    private rendererFactory;
    dragging: boolean;
    reordering: boolean;
    startX: number;
    startY: number;
    stylesByClass: any[];
    id: string | null;
    viewport: HTMLElement | null | undefined;
    viewportID: string | null;
    currentClassesToResize: string[];
    startingWidths: number[];
    minWidths: number[];
    totalComputedMinWidth: number;
    totalComputedWidth: number;
    defaultTableMinWidth: number;
    gridTemplateClasses: string[];
    gridOrder: number[];
    classWidths: any[];
    gridTemplateTypes: any[];
    draggingColumn: HTMLElement | null;
    colRangeGroups: number[][][];
    lastDraggedOverElement: any;
    lastDraggedGroupIndex: number;
    lastDraggedOverRect: ClientRect | null;
    lastDraggedGroupBoundingRects: ClientRect[] | null;
    lastMoveDirection: number;
    resizableColumns: HTMLElement[];
    resizableGrips: HTMLElement[];
    reorderGrips: HTMLElement[];
    reorderableColumns: HTMLElement[];
    columnsWithDataClasses: HTMLElement[];
    rows: HTMLElement[];
    infiniteScrollViewports: HTMLElement[];
    mutationResizableColumns: HTMLElement[];
    mutationResizableGrips: HTMLElement[];
    mutationReorderGrips: HTMLElement[];
    mutationReorderableColumns: HTMLElement[];
    mutationColumnsWithDataClasses: HTMLElement[];
    mutationRows: HTMLElement[];
    mutationInfiniteScrollViewports: HTMLElement[];
    headTag: HTMLHeadElement;
    styleContent: string;
    headStyle: HTMLStyleElement | null;
    styleList: HTMLStyleElement[];
    initialWidths: any[];
    initialWidthsAreSet: boolean | undefined;
    lastColumns: any[];
    contentResizeSensor: ResizeSensor | null;
    observer: MutationObserver | null;
    isCustomElement: boolean;
    pointerListenerFunc: any;
    parentGroups: Element[][];
    colData: IColumnData | null;
    colDataGroups: IColumnData[][];
    elementsWithHighlight: any[];
    dragAndDropGhostComponent: DragAndDropGhostComponent | null;
    dragOffsetX: number;
    dragOffsetY: number;
    reorderHandleColOffset: number;
    scrollbarWidth: number;
    initialWidthSettingsSubscription$: Subscription;
    reorderableClass: string;
    widthStyle: HTMLStyleElement | null;
    widthStyleFragment: DocumentFragment | null;
    reorderHighlightStyle: HTMLStyleElement | null;
    reorderHighlightStyleFragment: DocumentFragment | null;
    subGroupStyles: (HTMLStyleElement | null)[];
    subGroupFragments: (DocumentFragment | null)[];
    gridOrderStyles: (HTMLStyleElement | null)[];
    gridOrderFragments: (DocumentFragment | null)[];
    subGroupStyleObjs: any;
    scrollbarAdjustmentFragment: DocumentFragment | null;
    scrollbarAdjustmentStyle: HTMLStyleElement | null;
    resizeMakeUpPercent: number;
    resizeMakeUpPerColPercent: number;
    scrollViewportDirective: ScrollViewportDirective | null;
    overlayRef: OverlayRef;
    hiddenColumnIndices: number[];
    hiddenColumnChanges: Subject<IColumnHideChange | null>;
    private hiddenColumnChangesSubscription$;
    HIDDEN_COLUMN_CLASS: string;
    private injector;
    private DRAG_AND_DROP_GHOST_OVERLAY_DATA;
    private animationFrameIDs;
    linkClass: string | undefined;
    resizeColumnWidthByPercent: boolean;
    columnResizeStart: EventEmitter<any>;
    columnResize: EventEmitter<any>;
    columnResizeEnd: EventEmitter<any>;
    columnReorder: EventEmitter<any>;
    columnReorderStart: EventEmitter<any>;
    dragOver: EventEmitter<any>;
    columnReorderEnd: EventEmitter<any>;
    preGridInitialize: EventEmitter<any>;
    gridInitialize: EventEmitter<any>;
    constructor(elementRef: ElementRef, resolver: ComponentFactoryResolver, gridService: GridService, directiveRegistrationService: DirectiveRegistrationService, document: any, overlay: Overlay, scrollDispatcherService: ScrollDispatcherService, operatingSystem: OperatingSystemService, rendererFactory: RendererFactory2);
    private registerDirectiveToElement;
    private attachMutationObserver;
    private updateMutations;
    private getChildNodes;
    ngAfterViewInit(): void;
    private onEnterFrame;
    canHideColumn(column: Element): boolean;
    getFlattenedHierarchy(): IColumnHierarchy[];
    private getSubColumns;
    getColumnHierarchy(): any;
    getHierarchySubColumns(item: IColumnData, levelCount: number): IColumnHierarchy[];
    checkForGridInitReady(): void;
    private awaitWidths;
    private awaitSingleFrame;
    private onPointerDown;
    private getClassWidthInPixels;
    private setMinimumWidths;
    private attachReorderGhost;
    private getContainerScrollCount;
    private onPointerMove;
    private getLastVisibleColumnClass;
    private getRangePosition;
    private columnIsHiddenWithClass;
    private getTotalGroupedColumnsVisible;
    private getFirstGridOrderIndexAfterColumnGroup;
    private getPostColumnWidthTotal;
    private getPostColumnMinimumWidthTotal;
    private getPreviousColumnWidthTotal;
    private updateWidthsInPercent;
    private updateWidthsInPixels;
    private fitWidthsToOneHundredPercent;
    private updateWidths;
    private generateWidthStyle;
    private getResizableClasses;
    private setResizableStyles;
    private addStyle;
    private setStyleContent;
    moveStyleContentToProminent(): void;
    private setReorderStyles;
    private getColSpan;
    private validateColumnSpansAreTheSame;
    private onPointerUp;
    private addPointerListeners;
    private removePointerListeners;
    private endDrag;
    private initGrid;
    private setGridTemplateClasses;
    private verifyLinkedTemplateClassesMatch;
    private calculateWidthsFromStyles;
    private emitGridInitialization;
    private createDragAndDropComponent;
    openModal(componentType: ComponentType<unknown>, token: InjectionToken<any>, data: any, positionStrategy?: PositionStrategy | null, overlayConfig?: OverlayConfig | null): ComponentRef<unknown>;
    private createInjector;
    private setDragAndDropPosition;
    private removeDragAndDropComponent;
    private setParentGroups;
    private generateColumnGroups;
    private verifyLinkedGroupStructuresMatch;
    private setHiddenClassForAllLinkedParentHeaders;
    private setHiddenClassForAllLinkedHeaders;
    private setHiddenClassForColumnGroup;
    getRelatedHeaders(element: Element): (Element | any)[];
    getRelatedHeader(element: Element): Element | any;
    private setLinkedChildren;
    private setLinkedHeaderContainerClasses;
    private addClassToLinkedHeader;
    private generateSubGroup;
    private orderSubGroups;
    private setColumnStyle;
    private setGridOrder;
    private getOffset;
    private getParentTablejsGridDirective;
    private elementRefUnderPoint;
    private getResizeGripUnderPoint;
    private getReorderColsUnderPoint;
    private getReorderHandlesUnderPoint;
    private getResizableElements;
    removeHighlights(elToExclude?: HTMLElement | null, moveDirection?: number): void;
    removeElementHighlight(el: HTMLElement): void;
    private reorderColumns;
    private getAverageColumnWidth;
    private getFirstVisibleItemWidth;
    private setLinkedColumnIndicesFromMaster;
    private updateMasterColumnIndices;
    private updateHiddenColumnIndices;
    private constructGridTemplateColumns;
    private getHiddenColumnIndices;
    private orderSubCols;
    private setReorderHighlightHeight;
    private retrieveOrCreateElementID;
    private generateGridID;
    private generateContainerID;
    private generateViewportID;
    private attachContentResizeSensor;
    private setScrollbarAdjustmentStyle;
    private clearSelection;
    private addResizableGrip;
    private addResizableColumn;
    private addReorderGrip;
    private addReorderableColumn;
    private addColumnsWithDataClasses;
    private addRow;
    private addInfiniteScrollViewport;
    private removeStylesFromHead;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<GridDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<GridDirective, "[tablejsGrid],[tablejsgrid]", never, { "linkClass": "linkClass"; "resizeColumnWidthByPercent": "resizeColumnWidthByPercent"; }, { "columnResizeStart": "columnResizeStart"; "columnResize": "columnResize"; "columnResizeEnd": "columnResizeEnd"; "columnReorder": "columnReorder"; "columnReorderStart": "columnReorderStart"; "dragOver": "dragOver"; "columnReorderEnd": "columnReorderEnd"; "preGridInitialize": "preGridInitialize"; "gridInitialize": "gridInitialize"; }, never>;
}
export interface ISortableWidthItem {
    minWidth: number;
    width: number;
    className: string;
}
