import { AfterContentInit, IterableDiffers, ElementRef, EventEmitter, OnInit, Renderer2, OnDestroy, ViewContainerRef, Type } from '@angular/core';
import { TableEditorRowDirective } from './row.directive';
import { AbstractTableCell } from '../control-value-accessors/abstract-table-cell';
import { AbstractNavigator } from '../navigators/navigator';
import { RowChangeEvent } from '../utils/row-change-event';
/**
* An interface implemented by an instruction set to trigger a movement in a {@link TableEditorDirective}. Both `row` and `cell` are optional. If both are left blank, the instruction set is interpreted as an exit command. If `cell` is left blank, the first enabled cell in the row will be selected. Only leaving `row` blank will throw an error.
*/
export interface TeExecutor {
row: TableEditorRowDirective | null;
cell: AbstractTableCell | null;
}
/**
* Place this directive on the top-level `table` element:
* ```html
```
* This directive only works in combination with `[teCell]` directives placed on `HTMLTableCellElement`s and `[teRow]` directives placed on `HTMLTableRowElement`s. See the [examples]{@link ../../demo/#/examples/basic}.
*/
export declare class TableEditorDirective implements AfterContentInit, OnInit, OnDestroy {
private element;
private renderer;
private differs;
private vc;
/** Bind to the `rowChange` attribrute to listen to `RowChangeEvent`s, see [the details]{@link RowChangeEvent}. */
rowChange: EventEmitter>;
/** @internal */
private navigators;
/** @internal */
private currentRow;
/** @internal */
private currentCell;
/** @internal */
private differ;
/** @internal */
private subscriptions;
/** @internal */
private unlistenNavigators;
/** @internal */
private _blockNavigation;
/** @internal */
/** @internal */
private blockNavigation;
/** @internal */
private rows;
/** @internal */
constructor(element: ElementRef, renderer: Renderer2, differs: IterableDiffers, vc: ViewContainerRef, navigators: Array>);
/**
* Use this method to programatically control the movements in the table. See the guide in the README for an example.
* @param TeExecutor target An instruction set that implements the [TeExecutor interface]{@link TeExecutor}.
*/
trigger(target: TeExecutor): void;
/**
* @internal @ignore
* A method used internally to cellify and inputify specific rows based on an [instruction set]{@link TeExecutor}.
* @param TeExecutor target
* @param NavigationAction action
*/
private executeFor;
/**
* @internal @ignore
* A method used internally to convert a {@link NavigationAction} into an [instruction set]{@link TeExecutor}
* @param NavigationAction action
* @returns void
*/
private actionParser;
/** @internal */
ngOnDestroy(): void;
/** @internal Instantiates the navigators. */
ngOnInit(): void;
/** @internal Subcribing to the rows and managing rows that are added dynamically. */
ngAfterContentInit(): void;
private subscribeToRow;
}