import { Action } from '../../model/action';
import { FormProperty } from '../../model/form-property';
import { ArrayProperty } from '../../model/array-property';
import { ObjectProperty } from '../../model/object-property';
export declare abstract class Widget {
    id: string;
}
export declare class FieldsetLayoutWidget<T = Widget> extends Widget {
    formProperty: ObjectProperty;
    title: string;
    description: string;
    formProperties: FormProperty[];
    widget: T;
}
export declare abstract class ButtonLayoutWidget<T extends Widget = Widget> extends Widget {
    formProperty?: FormProperty;
    label?: string;
    action?: Action;
    widget: T;
}
export declare abstract class PropertyWidget<T extends Widget = Widget, U extends FormProperty = FormProperty> extends Widget {
    formProperty: U;
    errorMessages: string[];
    schema: {
        [key: string]: any;
        widget: T;
    };
    required?: boolean;
}
export declare class ArrayPropertyWidget<T extends Widget = Widget> extends PropertyWidget<T, ArrayProperty> {
}
export declare class ObjectPropertyWidget<T extends Widget = Widget> extends PropertyWidget<T, ObjectProperty> {
}
