import { EventEmitter } from '../../../stencil.core';
import { CellRenderControl, CellRenderFn, CellRenderTest, EditData, EditingMode } from '../table.types';
import { DataSourceChange } from '../../../utils/data-source/data-source.types';
import { IntlFormatFn } from '../../locale/i18n.provider';
export declare class Editing implements CellRenderControl {
    private controller;
    private rowsWillChangeListener;
    private rowsDidChangeListener;
    private table;
    element: HTMLAnjEditingElement;
    history: DataSourceChange[];
    /**
     * The key of the record being edited (doesn't apply to batch mode). Is undefined when creating.
     */
    activeKey: number | string;
    /**
     * Renderer to use for cell content when the selected cell conditions are met
     */
    cell: CellRenderFn;
    /**
     * If true, the user cannot create records
     */
    createDisabled: boolean;
    /**
     * Can the user add a row? Defaults to false.
     */
    creating: boolean;
    /**
     * If true, the user cannot delete records
     */
    deleteDisabled: boolean;
    /**
     * Can the user delete a row? Defaults to false.
     */
    deleting: boolean;
    /**
     * The mode of editing
     * Possible values are: `"batch"`, `"row"`, and `"noop"`. Defaults to "noop"
     */
    mode: EditingMode;
    /**
     * If true, will emit a cancelable event to signal the table to update the underlying data
     */
    saving: boolean;
    /**
     * Can the user undo, defaults to true
     */
    undo: boolean;
    /**
     * Can the user edit? Defaults to false.
     */
    updating: boolean;
    /**
     * Rules to use for using this as a renderer
     */
    when: CellRenderTest;
    /**
     * @internal
     */
    translator: IntlFormatFn;
    /**
     * Emitted when the column has been created.
     */
    anjCellControlDidLoad: EventEmitter<void>;
    /**
     * Emitted when creation of a record is started
     */
    anjCreateStart: EventEmitter<EditData>;
    /**
     * Emitted when creation of a record is ended (except batch)
     */
    anjCreateEnd: EventEmitter<EditData>;
    /**
     * Emitted when the user deletes a row
     */
    anjDelete: EventEmitter<EditData>;
    /**
     * Emitted inits update ends (except batch)
     */
    anjUpdateStart: EventEmitter<EditData>;
    /**
     * Emitted inits update ends
     */
    anjUpdateEnd: EventEmitter<EditData>;
    /**
     * Emitted before attempting to save the data
     */
    anjEditWillSave: EventEmitter<DataSourceChange>;
    componentWillLoad(): void;
    componentDidLoad(): void;
    componentDidUnload(): void;
    private initController;
    private useAsRenderer;
    private onRowsWillChange;
    private onRowsDidChange;
    private onCreateStart;
    private onCreateEnd;
    private onUpdateStart;
    private onUpdateEnd;
    private onDelete;
    private onUndo;
    private onSuperSave;
    private save;
    private clearHistory;
    private pushHistory;
    private popHistory;
    private control;
    private calculateColWidth;
    render(): any[];
}
