import * as React from 'react';
import { IgrTemplateCellUpdatingEventArgs } from "./igr-template-cell-updating-event-args";
import { IgrDataGridColumn, IIgrDataGridColumnProps } from "./igr-data-grid-column";
import { TemplateColumn } from "./TemplateColumn";
import { IgrCellInfo } from './igr-cell-info';
/**
 * A column with customizable content.
*/
export declare class IgrTemplateColumn extends IgrDataGridColumn<IIgrTemplateColumnProps> {
    protected createImplementation(): TemplateColumn;
    get i(): TemplateColumn;
    constructor(props: IIgrTemplateColumnProps);
    private beforeStyleKeyRequested;
    render(): React.DetailedReactHTMLElement<{
        children: any[];
    }, HTMLElement>;
    private _templateRef;
    private _templateCells;
    private _activeCellContent;
    private _activeCellContentElements;
    private _templateCellInitialData;
    private _templateCellInitialTemplate;
    private beforeCellUpdating;
    private _currCellInfo;
    private updateCellInfo;
    private cellInfoChanged;
    private dummyStyleKeyRequested;
    private dummyCellUpdating;
    private get hasTemplate();
    private _template;
    get template(): React.FunctionComponent<IIgrCellTemplateProps> | React.Component<IIgrCellTemplateProps>;
    set template(value: React.FunctionComponent<IIgrCellTemplateProps> | React.Component<IIgrCellTemplateProps>);
    private _templateSelector;
    get templateSelector(): (column: IgrTemplateColumn, value: any) => React.FunctionComponent<IIgrCellTemplateProps> | React.Component<IIgrCellTemplateProps>;
    set templateSelector(value: (column: IgrTemplateColumn, value: any) => React.FunctionComponent<IIgrCellTemplateProps> | React.Component<IIgrCellTemplateProps>);
    private _hasSelector;
    private onTemplateChanged;
    private _selectorStyles;
    private _selectorTemplates;
    private _keyCount;
    private updateTemplates;
    private ensureTemplateEvents;
    private _cellUpdating;
    private _cellUpdating_wrapped;
    /**
     * Called when the cell content is being created or updated.
    */
    get cellUpdating(): (s: IgrTemplateColumn, e: IgrTemplateCellUpdatingEventArgs) => void;
    set cellUpdating(ev: (s: IgrTemplateColumn, e: IgrTemplateCellUpdatingEventArgs) => void);
}
export interface IIgrCellTemplateProps {
    dataContext: IgrCellInfo;
}
export interface IIgrTemplateColumnProps extends IIgrDataGridColumnProps {
    template?: React.FunctionComponent<IIgrCellTemplateProps> | React.Component<IIgrCellTemplateProps>;
    templateSelector?: (column: IgrTemplateColumn, value: any) => React.FunctionComponent<IIgrCellTemplateProps> | React.Component<IIgrCellTemplateProps>;
    children?: React.ReactNode;
    /**
 * Called when the cell content is being created or updated.
*/
    cellUpdating?: (s: IgrTemplateColumn, e: IgrTemplateCellUpdatingEventArgs) => void;
}
