import { EventEmitter, InjectionToken } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { OFormLayoutManagerBase } from '../layouts/form-layout/o-form-layout-manager-base.class';
import { OFormNavigationClass } from '../components/form/navigation/o-form.navigation.class';
import { OPermissions } from '../types/o-permissions.type';
import { IFormDataComponent } from './form-data-component.interface';
import { IFormDataTypeComponent } from './form-data-type-component.interface';
import { IComponent } from './component.interface';
import { IFormDataComponentHash } from './form-data-component-hash.interface';
export interface IOFormParent {
    formGroup: FormGroup;
    oattr: string;
    onDataLoaded: EventEmitter<object>;
    beforeCloseDetail: EventEmitter<any>;
    beforeUpdateMode: EventEmitter<null>;
    service: string;
    entity: string;
    keysArray: string[];
    keysSqlTypesArray: string[];
    isInInsertMode(): boolean;
    isInUpdateMode(): boolean;
    isEditableDetail(): boolean;
    registerFormComponent(comp: IComponent): void;
    unregisterFormComponent(comp: IComponent): void;
    registerFormControlComponent(comp: IFormDataComponent): void;
    unregisterFormControlComponent(comp: IFormDataComponent): void;
    registerSQLTypeFormComponent(comp: IFormDataTypeComponent): void;
    unregisterSQLTypeFormComponent(comp: IFormDataTypeComponent): void;
    getFormComponentPermissions(attr: string): OPermissions;
    getComponents(): IFormDataComponentHash;
    getDataValues(): any;
    getAttributesSQLTypes(): object;
    getFormManager(): OFormLayoutManagerBase;
    getFormNavigation(): OFormNavigationClass;
}
export declare const O_FORM_CONTEXT: InjectionToken<IOFormParent>;
