import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone, OnDestroy, OnInit } from '@angular/core';
import { UntypedFormGroup } from '@angular/forms';
import { ActivatedRoute, Router, UrlSegment } from '@angular/router';
import { BehaviorSubject, Observable, Subscription } from 'rxjs';
import { IComponent } from '../../interfaces/component.interface';
import { IFormDataComponent } from '../../interfaces/form-data-component.interface';
import { IFormDataTypeComponent } from '../../interfaces/form-data-type-component.interface';
import { OFormLayoutManagerBase } from '../../layouts/form-layout/o-form-layout-manager-base.class';
import { DialogService } from '../../services/dialog.service';
import { NavigationService } from '../../services/navigation.service';
import { PermissionsService } from '../../services/permissions/permissions.service';
import { SnackBarService } from '../../services/snackbar.service';
import { FormValueOptions } from '../../types/form-value-options.type';
import { OFormInitializationOptions } from '../../types/o-form-initialization-options.type';
import { OFormPermissions } from '../../types/o-form-permissions.type';
import { OPermissions } from '../../types/o-permissions.type';
import { OFormContainerComponent } from '../form-container/o-form-container.component';
import { OFormCacheClass } from './cache/o-form.cache.class';
import { CanComponentDeactivate, CanDeactivateFormGuard } from './guards/o-form-can-deactivate.guard';
import { OFormNavigationClass } from './navigation/o-form.navigation.class';
import { OFormMessageService } from './services/o-form-message.service';
import { OFormToolbarBase } from './toolbar/o-form-toolbar-base.class';
import { OFormToolbarComponent } from './toolbar/o-form-toolbar.component';
import { OFormValidation } from '../../types/error-form-validation.type';
import * as i0 from "@angular/core";
interface IFormDataComponentHash {
    [attr: string]: IFormDataComponent;
}
export declare const DEFAULT_INPUTS_O_FORM: string[];
export declare const DEFAULT_OUTPUTS_O_FORM: string[];
export declare class OFormComponent implements OnInit, OnDestroy, CanComponentDeactivate, AfterViewInit {
    protected router: Router;
    protected actRoute: ActivatedRoute;
    protected zone: NgZone;
    protected cd: ChangeDetectorRef;
    protected injector: Injector;
    protected elRef: ElementRef;
    static DEFAULT_LAYOUT_DIRECTION: string;
    static guardClassName: string;
    showHeader: boolean;
    headerMode: string;
    headerPosition: 'top' | 'bottom';
    labelheader: string;
    labelHeaderAlign: string;
    headeractions: string;
    showHeaderActionsText: string;
    entity: string;
    keys: string;
    columns: string;
    setValueOrder: string;
    service: string;
    stayInRecordAfterEdit: boolean;
    afterInsertMode: 'new' | 'detail' | 'close';
    serviceType: string;
    protected queryOnInit: boolean;
    protected parentKeys: string;
    protected queryMethod: string;
    protected insertMethod: string;
    protected updateMethod: string;
    protected deleteMethod: string;
    protected _layoutDirection: string;
    protected _layoutAlign: string;
    protected editableDetail: boolean;
    protected keysSqlTypes: string;
    undoButton: boolean;
    showHeaderNavigation: boolean;
    oattr: string;
    includeBreadcrumb: boolean;
    detectChangesOnBlur: boolean;
    confirmExit: boolean;
    setValueOrderArray: string[];
    set ignoreOnExit(val: string[]);
    get ignoreOnExit(): string[];
    protected _ignoreOnExit: string[];
    queryFallbackFunction: (error: any) => void;
    ignoreDefaultNavigation: boolean;
    messageServiceType: string;
    formDataValidationFunction: (data: any) => OFormValidation;
    isDetailForm: boolean;
    keysArray: string[];
    colsArray: string[];
    dataService: any;
    _pKeysEquiv: {};
    keysSqlTypesArray: Array<string>;
    protected _messageService: OFormMessageService;
    formGroup: UntypedFormGroup;
    onDataLoaded: EventEmitter<object>;
    beforeCloseDetail: EventEmitter<any>;
    beforeGoEditMode: EventEmitter<any>;
    beforeInsertMode: EventEmitter<null>;
    beforeUpdateMode: EventEmitter<null>;
    beforeInitialMode: EventEmitter<null>;
    onInsertMode: EventEmitter<null>;
    onUpdateMode: EventEmitter<null>;
    onInitialMode: EventEmitter<null>;
    onFormModeChange: EventEmitter<number>;
    onBeforeInsert: EventEmitter<any>;
    onBeforeUpdate: EventEmitter<any>;
    onBeforeDelete: EventEmitter<any>;
    onInsert: EventEmitter<any>;
    onUpdate: EventEmitter<any>;
    onDelete: EventEmitter<any>;
    onCancel: EventEmitter<null>;
    protected loadingSubject: BehaviorSubject<boolean>;
    loading: Observable<boolean>;
    formData: object;
    navigationData: Array<any>;
    currentIndex: number;
    mode: number;
    protected dialogService: DialogService;
    protected navigationService: NavigationService;
    protected snackBarService: SnackBarService;
    protected _formToolbar: OFormToolbarBase;
    protected _components: IFormDataComponentHash;
    protected _compSQLTypes: object;
    formParentKeysValues: object;
    onFormInitStream: EventEmitter<boolean>;
    protected reloadStream: Observable<any>;
    protected reloadStreamSubscription: Subscription;
    protected querySubscription: Subscription;
    protected loaderSubscription: Subscription;
    protected dynamicFormSubscription: Subscription;
    protected deactivateGuard: CanDeactivateFormGuard;
    deactivateGuardId: string;
    protected formCache: OFormCacheClass;
    protected formNavigation: OFormNavigationClass;
    formContainer: OFormContainerComponent;
    protected permissionsService: PermissionsService;
    protected permissions: OFormPermissions;
    innerFormEl: ElementRef;
    ignoreFormCacheKeys: Array<any>;
    canDiscardChanges: boolean;
    static Mode(): any;
    constructor(router: Router, actRoute: ActivatedRoute, zone: NgZone, cd: ChangeDetectorRef, injector: Injector, elRef: ElementRef);
    private getGlobalConfig;
    registerFormComponent(comp: any): void;
    registerSQLTypeFormComponent(comp: IFormDataTypeComponent): void;
    registerFormControlComponent(comp: IFormDataComponent): void;
    unregisterFormComponent(comp: IComponent): void;
    getAttribute(): string;
    unregisterFormControlComponent(comp: IFormDataComponent): void;
    unregisterSQLTypeFormComponent(comp: IFormDataTypeComponent): void;
    registerToolbar(fToolbar: OFormToolbarComponent): void;
    getComponents(): IFormDataComponentHash;
    load(): any;
    getDataValue(attr: string): any;
    getDataValues(): object;
    clearData(): void;
    canDeactivate(): Observable<boolean> | Promise<boolean> | boolean;
    showConfirmDiscardChanges(): Promise<boolean>;
    executeToolbarAction(action: string, options?: any): Observable<any>;
    ngOnInit(): void;
    addDeactivateGuard(): void;
    destroyDeactivateGuard(): void;
    hasDeactivateGuard(): boolean;
    initialize(): void;
    reinitialize(options: OFormInitializationOptions): void;
    configureService(): void;
    get messageService(): OFormMessageService;
    ngOnDestroy(): void;
    destroy(): void;
    ngAfterViewInit(): void;
    _setComponentsEditable(state: boolean): void;
    setFormMode(mode: number): void;
    setData(data: any): void;
    _setData(data: any): void;
    _emitData(data: any): void;
    _backAction(): void;
    back(options?: any): void;
    _closeDetailAction(options?: any): void;
    closeDetail(options?: any): void;
    _stayInRecordAfterInsert(insertedKeys: object): void;
    _reloadAction(useFilter?: boolean): void;
    reload(useFilter?: boolean): void;
    _goInsertMode(options?: any): void;
    goInsertMode(options?: any): void;
    _clearFormAfterInsert(): void;
    _clearAndCloseFormAfterInsert(): void;
    _insertAction(): void;
    insert(): void;
    validateBeforeAction(values: object): boolean;
    _goEditMode(): void;
    goEditMode(): void;
    _editAction(): void;
    update(): void;
    _deleteAction(): Observable<any>;
    delete(): Observable<any>;
    queryData(filter: any): void;
    getAttributesToQuery(): Array<any>;
    insertData(values: any, sqlTypes?: object): Observable<any>;
    getAttributesValuesToInsert(): object;
    getAttributesSQLTypes(): object;
    updateData(filter: any, values: any, sqlTypes?: object): Observable<any>;
    getAttributesValuesToUpdate(): object;
    deleteData(filter: any): Observable<any>;
    toJSONData(data: any): {};
    toFormValueData(data: any): object;
    getKeysValues(): any;
    isInQueryMode(): boolean;
    isInInsertMode(): boolean;
    isInUpdateMode(): boolean;
    isInInitialMode(): boolean;
    setQueryMode(): void;
    setInsertMode(): void;
    setUpdateMode(): void;
    setInitialMode(): void;
    registerDynamicFormComponent(dynamicForm: any): void;
    unregisterDynamicFormComponent(dynamicForm: any): void;
    getRequiredComponents(): object;
    get layoutDirection(): string;
    set layoutDirection(val: string);
    get layoutAlign(): string;
    set layoutAlign(val: string);
    get showFloatingToolbar(): boolean;
    get showNotFloatingToolbar(): boolean;
    isEditableDetail(): boolean;
    isInitialStateChanged(ignoreAttrs?: string[]): boolean;
    _undoLastChangeAction(): void;
    undo(): void;
    get isCacheStackEmpty(): boolean;
    undoKeyboardPressed(): void;
    getFormToolbar(): OFormToolbarBase;
    getFormManager(): OFormLayoutManagerBase;
    getFormNavigation(): OFormNavigationClass;
    getFormCache(): OFormCacheClass;
    getUrlParam(arg: string): any;
    getUrlParams(): object;
    setUrlParamsAndReload(val: object): void;
    getRegisteredFieldsValues(): {};
    getFieldValue(attr: string): any;
    getFieldValues(attrs: string[]): any;
    setFieldValue(attr: string, value: any, options?: FormValueOptions): void;
    setFieldValues(values: any, options?: FormValueOptions): void;
    clearFieldValue(attr: string, options?: FormValueOptions): void;
    clearFieldValues(attrs: string[], options?: FormValueOptions): void;
    getFieldReference(attr: string): IFormDataComponent;
    getFieldReferences(attrs: string[]): IFormDataComponentHash;
    getFormComponentPermissions(attr: string): OPermissions;
    getActionsPermissions(): OPermissions[];
    protected determinateFormMode(): void;
    protected determinateModeFromUrlSegment(segment: UrlSegment): void;
    protected _updateFormData(newFormData: object): void;
    private setDataInFormDataComponent;
    protected initializeFields(): void;
    protected clearComponentsOldValue(): void;
    protected postCorrectInsert(result: any): void;
    protected postIncorrectInsert(result: any): void;
    protected postIncorrectDelete(result: any): void;
    protected postIncorrectUpdate(result: any): void;
    protected postCorrectUpdate(result: any): void;
    protected postCorrectDelete(result: any): void;
    protected markFormLayoutManagerToUpdate(): void;
    protected objectToFormValueData(data?: object): object;
    protected getCurrentKeysValues(): object;
    protected refreshComponentsEditableState(): void;
    protected isInsertModePath(path: string): boolean;
    protected isUpdateModePath(path: string): boolean;
    private showError;
    static ɵfac: i0.ɵɵFactoryDeclaration<OFormComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OFormComponent, "o-form", never, { "showHeader": "show-header"; "headerMode": "header-mode"; "headerPosition": "header-position"; "labelheader": "label-header"; "labelHeaderAlign": "label-header-align"; "headeractions": "header-actions"; "showHeaderActionsText": "show-header-actions-text"; "entity": "entity"; "keys": "keys"; "columns": "columns"; "service": "service"; "stayInRecordAfterEdit": "stay-in-record-after-edit"; "afterInsertMode": "after-insert-mode"; "serviceType": "service-type"; "queryOnInit": "query-on-init"; "parentKeys": "parent-keys"; "queryMethod": "query-method"; "insertMethod": "insert-method"; "updateMethod": "update-method"; "deleteMethod": "delete-method"; "layoutDirection": "layout-direction"; "layoutAlign": "layout-align"; "editableDetail": "editable-detail"; "keysSqlTypes": "keys-sql-types"; "undoButton": "undo-button"; "showHeaderNavigation": "show-header-navigation"; "oattr": "attr"; "includeBreadcrumb": "include-breadcrumb"; "detectChangesOnBlur": "detect-changes-on-blur"; "confirmExit": "confirm-exit"; "ignoreOnExit": "ignore-on-exit"; "queryFallbackFunction": "query-fallback-function"; "ignoreDefaultNavigation": "ignore-default-navigation"; "messageServiceType": "message-service-type"; "setValueOrder": "set-value-order"; "formDataValidationFunction": "form-data-validation-function"; }, { "onDataLoaded": "onDataLoaded"; "beforeCloseDetail": "beforeCloseDetail"; "beforeGoEditMode": "beforeGoEditMode"; "onFormModeChange": "onFormModeChange"; "onBeforeInsert": "onBeforeInsert"; "onBeforeUpdate": "onBeforeUpdate"; "onBeforeDelete": "onBeforeDelete"; "onInsert": "onInsert"; "onUpdate": "onUpdate"; "onDelete": "onDelete"; "beforeInsertMode": "beforeInsertMode"; "beforeUpdateMode": "beforeUpdateMode"; "beforeInitialMode": "beforeInitialMode"; "onInsertMode": "onInsertMode"; "onUpdateMode": "onUpdateMode"; "onInitialMode": "onInitialMode"; "onCancel": "onCancel"; }, never, ["[o-form-toolbar-buttons]", "*"], false, never>;
}
export {};
