import { EventEmitter } from '../../stencil-public-runtime';
import { type DSourceState } from "../../store/index";
import type { AllDimensionType, CellTemplateProp, DimensionCols, DimensionRows } from "../../types/index";
import type { ViewportState, DimensionSettingsState, BeforeRowRenderEvent, Providers, ColumnRegular, DataType, BeforeCellRenderEvent, DragStartEvent, VirtualPositionItem, SelectionStoreState } from "../../types/index";
import type { Observable } from '../../utils';
/**
 * This component is responsible for rendering data
 * Rows, columns, groups and cells
 */
export declare class RevogrData {
    /**
     * Readonly mode
     */
    readonly: boolean;
    /**
     * Range allowed
     */
    range: boolean;
    /**
     * Defines property from which to read row class
     */
    rowClass: string;
    /**
     * Additional data to pass to renderer
     * Used in plugins such as vue or react to pass root app entity to cells
     */
    additionalData: any;
    /** Stores */
    /** Selection, range, focus for row selection */
    rowSelectionStore: Observable<SelectionStoreState>;
    /** Viewport Y */
    viewportRow: Observable<ViewportState>;
    /** Viewport X */
    viewportCol: Observable<ViewportState>;
    /** Dimension settings Y */
    dimensionRow: Observable<DimensionSettingsState>;
    /** Static stores, not expected to change during component lifetime */
    /**
     * Column source
     */
    colData: Observable<DSourceState<ColumnRegular, DimensionCols>>;
    /**
     * Data rows source
     */
    dataStore: Observable<DSourceState<DataType, DimensionRows>>;
    /**
     * Row data type
     */
    type: DimensionRows;
    /**
     * Column data type
     */
    colType: DimensionCols | 'rowHeaders';
    /**
     * Prevent rendering until job is done.
     * Can be used for initial rendering performance improvement.
     * When several plugins require initial rendering this will prevent double initial rendering.
     */
    jobsBeforeRender: (Promise<any> | (() => Promise<any>))[];
    /**
     * Before each row render
     */
    beforerowrender: EventEmitter<BeforeRowRenderEvent>;
    /**
     * When data render finished for the designated type
     */
    afterrender: EventEmitter<{
        type: DimensionRows;
    }>;
    /**
     * Before each cell render function. Allows to override cell properties
     */
    beforeCellRender: EventEmitter<BeforeCellRenderEvent<CellTemplateProp>>;
    /**
     * Before data render
     */
    beforeDataRender: EventEmitter<AllDimensionType>;
    /**
     * Event emitted on cell drag start
     */
    dragStartCell: EventEmitter<DragStartEvent>;
    /**
     * Pointed cell update.
     */
    updateCell(e: {
        row: number;
        col: number;
    }): Promise<void>;
    element: Element;
    providers: Providers;
    private columnService;
    private rowHighlightPlugin;
    /**
     * Rendered rows - virtual index vs vnode
     */
    private renderedRows;
    private rangeUnsubscribe;
    onDataStoreChange(): void;
    onColDataChange(): void;
    onStoreChange(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    componentWillRender(): Promise<any[]>;
    componentDidRender(): void;
    render(): any;
    triggerBeforeCellRender(model: CellTemplateProp, row: VirtualPositionItem, column: VirtualPositionItem): CustomEvent<BeforeCellRenderEvent<CellTemplateProp<DataType<any, import("@type").ColumnProp>, ColumnRegular<import("@type").ColumnProp, DataType<any, import("@type").ColumnProp>>, import("@type").ColumnProp>>>;
}
