import { ComponentRef, ViewContainerRef, OnDestroy, OnInit } from '@angular/core';
import { PblRowContext } from '../context/index';
import { PblNgridCellComponent } from '../cell/cell.component';
import { PblColumn } from '../column/model';
import { PblNgridBaseRowComponent } from './base-row.component';
import * as i0 from "@angular/core";
export declare const PBL_NGRID_ROW_TEMPLATE = "";
export declare class PblNgridRowComponent extends PblNgridBaseRowComponent<'data', T> implements OnInit, OnDestroy {
_viewRef: ViewContainerRef;
readonly rowType: "data";
get rowIndex(): number;
/** Indicates if intersection observer is on, detecting outOfView state for us */
private observerMode;
context: PblRowContext;
protected prevRow: T | undefined;
protected currRow: T | undefined;
private _classDiffer;
private _lastClass;
private _rowIndex;
private outOfView;
ngOnInit(): void;
ngOnDestroy(): void;
updateRow(): boolean;
getCell(index: number): PblNgridCellComponent | undefined;
getCellById(id: string): PblNgridCellComponent | undefined;
/**
* Rebuild the cells rendered.
* This should be called when the columns have changed and new columns created in the column store.
*
* The new columns are new instances, clones of the previous columns and they DONT have a column definition!
* This method will iterate over existing cells, updating each cell with the new column now in it's location and creating a column def for it.
* If there are more cells rendered then in the store, it will remove those extra cells
* If there are less cells rendered then in the store, it will create new ones.
* This will ensure we don't create or remove cells unless we need to, saving on DOM operations.
*/
_rebuildCells(): void;
/**
* Updates the outOfView state of this row and sync it with the context
* If the context's state is different from the new outOfView state, will invoke a change detection cycle.
* @internal
*/
_setOutOfViewState(outOfView: boolean): void;
/**
* Updates the `outOfView` flag of the context attached to this row
*
* This method is backward compatible to support browser without the IntersectionObservable API.
*
* If the browser DOES NOT support IntersectionObserver it will calculate the state using bounding rect APIs (force param has no effect, always true).
* If the browser support IntersectionObserver it will do nothing when force is not set to true but when * set to true it will use
* the IntersectionObserver `takeRecords` method to update the outOfView state.
*
* > NOTE that this method has a direct impact on performance as it uses DOM apis that trigger layout reflows.
* Use with caution.
*/
updateOutOfView(force?: boolean): void;
protected onCtor(): void;
protected detectChanges(): void;
protected updateHostClass(): void;
protected cellCreated(column: PblColumn, cell: ComponentRef): void;
protected cellDestroyed(cell: ComponentRef, previousIndex: number): void;
protected cellMoved(previousItem: ComponentRef, currentItem: ComponentRef, previousIndex: number, currentIndex: number): void;
protected identityUpdated(): void;
protected attachColumn(column: PblColumn, cell: ComponentRef): void;
static ɵfac: i0.ɵɵFactoryDeclaration, never>;
static ɵcmp: i0.ɵɵComponentDeclaration, "pbl-ngrid-row[row]", ["pblNgridRow"], {}, {}, never, [".pbl-ngrid-row-prefix", ".pbl-ngrid-row-suffix"], false>;
}