import { AsyncValidatorFn, ValidatorFn } from '@angular/forms';
import { EventEmitter } from '@angular/core';
export type FieldType = 'ShapePolygonPoints' | 'percent' | 'NodeShape' | 'LineStyle' | 'TextTransformation' | 'FontStyle' | 'FontWeight' | 'options' | 'Colour' | 'undefined' | 'object' | 'boolean' | 'number' | 'string' | 'function' | 'symbol' | 'bigint';
export declare class FormInfo {
    title: string;
    fieldsets: FieldsetInfo[];
    showSubmitButton: boolean;
    submitText: string;
    disableSubmitOnFormInvalid: boolean;
    otherFieldsetTitle: null;
    constructor(title: string, fieldsets: FieldsetInfo[], showSubmitButton?: boolean, submitText?: string, disableSubmitOnFormInvalid?: boolean, otherFieldsetTitle?: null);
}
export declare class FieldsetInfo {
    legend: string;
    fieldInfos: FieldInfo[];
    displayOnlyIfProperties?: string[] | undefined;
    constructor(legend: string, fieldInfos: FieldInfo[], displayOnlyIfProperties?: string[] | undefined);
    showFieldsetForModel(model: object): boolean;
}
export declare class FieldInfo {
    label?: string | Function | undefined;
    modelProperty?: string | undefined;
    type?: FieldType | undefined;
    tooltip?: string | undefined;
    validators?: Function | ValidatorFn[] | undefined;
    disableWhenInvalid: boolean;
    hideWhenNoModelProperty: boolean;
    placeholder?: string | undefined;
    inputType: string;
    inputSize: number;
    options?: object[] | undefined;
    optionArrayLabelField?: string | undefined;
    optionArrayValueField?: string | Function | undefined;
    private fieldTypes;
    updateOn: 'change' | 'blur' | 'submit';
    asyncValidators: AsyncValidatorFn[] | Function | undefined;
    constructor(label?: string | Function | undefined, modelProperty?: string | undefined, type?: FieldType | undefined, tooltip?: string | undefined, validators?: Function | ValidatorFn[] | undefined, disableWhenInvalid?: boolean, hideWhenNoModelProperty?: boolean, placeholder?: string | undefined, inputType?: string, inputSize?: number, options?: object[] | undefined, optionArrayLabelField?: string | undefined, optionArrayValueField?: string | Function | undefined);
    fieldType(model: object): FieldType;
    setValue(newValue: any, model: object, modelChange: EventEmitter<any>): void;
}
