import { AfterContentInit, ChangeDetectorRef, EventEmitter, OnDestroy, OnInit, QueryList } from '@angular/core';
import { Router } from '@angular/router';
import { FormDirective } from '@rxap/forms';
import { DataSource, DataSourceViewer } from '@rxap/pattern';
import { ToggleSubject } from '@rxap/rxjs';
import { Observable } from 'rxjs';
import { DataGridRowDefDirective } from './data-grid-row-def.directive';
import * as i0 from "@angular/core";
export declare enum DataGridMode {
    /**
     * The view cell template is used to display the property value
     */
    PLAIN = "plain",
    /**
     * The edit cell template is used to display the property value, but the form and all controls are marked as disabled
     */
    FORM = "form"
}
export declare class DataGridComponent<T extends Record<string, any>> implements OnInit, OnDestroy, AfterContentInit {
    private readonly cdr;
    private readonly router;
    private readonly formDirective?;
    isDevMode: boolean;
    header: boolean;
    dataSource?: DataSource<T>;
    data$: Observable<T>;
    viewer: DataSourceViewer;
    data?: T;
    displayProperties: string[] | null;
    hideEmptyProperties: boolean;
    rows: QueryList<DataGridRowDefDirective<T>>;
    editModeChange: EventEmitter<{
        mode: boolean;
        data?: T;
        done: () => void;
    }>;
    rows$: Observable<QueryList<DataGridRowDefDirective<T>>>;
    hasError$: Observable<boolean>;
    dataLoading$: Observable<boolean>;
    loading$: ToggleSubject;
    readonly isEditMode$: Observable<boolean>;
    readonly mode$: Observable<DataGridMode>;
    readonly isFormMode$: Observable<boolean>;
    readonly isPlainMode$: Observable<boolean>;
    private _editMode$;
    private _mode$;
    private _routerEventSubscription;
    constructor(cdr: ChangeDetectorRef, router: Router, formDirective?: FormDirective | undefined);
    set mode(value: DataGridMode | string);
    get isFormModeOrHasAnyEditCells(): boolean;
    get isFormMode(): boolean;
    get hasAnyEditCells(): boolean;
    get isEditMode(): boolean;
    set editMode(value: boolean);
    /**
     * @deprecated use the loading$ property instead
     */
    get loading(): boolean;
    ngAfterContentInit(): void;
    logCurrentFormState(): void;
    ngOnInit(): void;
    ngOnDestroy(): void;
    enableEditMode(skipPatchValue?: boolean): void;
    disableEditMode(): void;
    submit(): void;
    reset(): void;
    refresh(): void;
    cancel(): void;
    retry(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DataGridComponent<any>, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent<any>, "rxap-data-grid", never, { "header": { "alias": "header"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "viewer": { "alias": "viewer"; "required": false; }; "data": { "alias": "data"; "required": false; }; "displayProperties": { "alias": "displayProperties"; "required": false; }; "hideEmptyProperties": { "alias": "hideEmptyProperties"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; }, { "editModeChange": "editModeChange"; }, ["rows"], never, true, never>;
}
