import { ComponentFactoryResolver, ElementRef, EventEmitter, OnInit, QueryList, ViewContainerRef } from '@angular/core';
import { Strings } from '../../generated/strings';
import { FormFieldComponent } from '../form/form-field/form-field.component';
import { SchemaArrayProperty, SchemaFieldContext, SchemaObjectProperty, SchemaProperty } from '../schema/schema-models';
import * as i0 from "@angular/core";
/**
 * Schema Form Component
 * It takes the schema and data and other necessary inputs then dynamically renders the form UI.
 */
export declare class SchemaFieldHostComponent implements OnInit {
    private elementRef;
    private viewContainer;
    private componentFactoryResolver;
    private parent;
    private isInitialized;
    private internalData;
    private internalPropertySchema;
    private loaderComponentRef;
    private fieldHost;
    private dataTypeStore;
    context: SchemaFieldContext;
    formActionExecuted: EventEmitter<{
        action: string;
        data: any;
    }>;
    get propertySchema(): SchemaProperty;
    set propertySchema(value: SchemaProperty);
    get data(): any;
    set data(value: any);
    dataChange: EventEmitter<any>;
    dataMarkedAsDirty: EventEmitter<void>;
    constructor(elementRef: ElementRef, viewContainer: ViewContainerRef, componentFactoryResolver: ComponentFactoryResolver, parent: SchemaFieldHostComponent);
    ngOnInit(): void;
    isValid(): boolean;
    isDirty(): boolean;
    markAsPristine(): void;
    executeFormAction(action: string, data: any): void;
    getFormFieldLoaderComponent(): SchemaFieldLoaderComponentBase;
    private renderLoaderComponent;
    static ɵfac: i0.ɵɵFactoryDeclaration<SchemaFieldHostComponent, [null, null, null, { optional: true; skipSelf: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SchemaFieldHostComponent, "sme-schema-field-host", never, { "context": "context"; "propertySchema": "propertySchema"; "data": "data"; }, { "formActionExecuted": "formActionExecuted"; "dataChange": "dataChange"; "dataMarkedAsDirty": "dataMarkedAsDirty"; }, never, never, false, never>;
}
export declare class SchemaFieldLoaderComponentBase implements OnInit {
    static resourceKeyPrefix: string;
    static resourceActualTextPrefix: string;
    private static localizationCache;
    private shouldStartToApplyAsyncValidator;
    private strings;
    private badExpressions;
    private internalData;
    private internalContext;
    formFieldComponent: FormFieldComponent<Strings, any>;
    get data(): any;
    set data(value: any);
    dataChange: EventEmitter<any>;
    formActionExecuted: EventEmitter<{
        action: string;
        data: any;
    }>;
    parentSchemaFieldHostComponent: SchemaFieldHostComponent;
    get context(): SchemaFieldContext;
    set context(value: SchemaFieldContext);
    ngOnInit(): void;
    isValid(): boolean;
    shouldCustomAsyncValidationBeDisabled(): boolean;
    isDirty(): boolean;
    markAsPristine(): void;
    evalExpression(expression: string): any;
    /**
     * It resolves the object properties based on the given path with multiple levels of properties.
     * An example of path is "location.zipCode".
     */
    resolveComponentMember(path: string): any;
    resolveFunction(path: string): Function;
    localize(text: string): string;
    executeFormAction(action: string, data?: any): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SchemaFieldLoaderComponentBase, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SchemaFieldLoaderComponentBase, never, never, { "data": "data"; }, { "dataChange": "dataChange"; "formActionExecuted": "formActionExecuted"; }, never, never, false, never>;
}
export declare class SimplePropertySchemaFieldLoaderComponent extends SchemaFieldLoaderComponentBase {
    propertySchema: SchemaProperty;
    static ɵfac: i0.ɵɵFactoryDeclaration<SimplePropertySchemaFieldLoaderComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SimplePropertySchemaFieldLoaderComponent, never, never, { "propertySchema": "propertySchema"; }, {}, never, never, false, never>;
}
export declare class ObjectPropertySchemaFieldLoaderComponent extends SchemaFieldLoaderComponentBase {
    protected fieldHostComponents: QueryList<SchemaFieldHostComponent>;
    propertySchema: SchemaObjectProperty;
    isValid(): boolean;
    isDirty(): boolean;
    markAsPristine(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ObjectPropertySchemaFieldLoaderComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ObjectPropertySchemaFieldLoaderComponent, never, never, { "propertySchema": "propertySchema"; }, {}, never, never, false, never>;
}
export declare class ArrayPropertySchemaFieldLoaderComponent extends SchemaFieldLoaderComponentBase {
    private internalFieldHostComponents;
    private set fieldHostComponents(value);
    propertySchema: SchemaArrayProperty;
    isValid(): boolean;
    isDirty(): boolean;
    markAsPristine(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ArrayPropertySchemaFieldLoaderComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ArrayPropertySchemaFieldLoaderComponent, never, never, { "propertySchema": "propertySchema"; }, {}, never, never, false, never>;
}
