import 'reflect-metadata'; export interface IFormOptions { title?: string; fields?: IFormFieldOptions[]; saveButton?: boolean; isPanel?: boolean; hideTitle?: boolean; showToolbar?: boolean; toolbarClass?: string; isPanelOpen?: boolean; keys?: boolean; groups?: { [name: string]: IFormGroupOptions; }; keyValuesType?(): object; triggerCallback?(obj: object, field: IFormFieldOptions): undefined; } export interface IFormObject { _form?: IFormOptions; save?(obj?: any): Promise; } export interface IFormFieldBaseOptions { title: string; subTitle?: string; _object?: any; _index?: number; _key?: string; _target?: any; _model?: any; } export interface IFormUnionFieldOptions extends IFormFieldBaseOptions { title: string; types: IFormFieldOptions[]; } export interface IFormGroupOptions { visible?(object: IFormObject, form: IFormOptions): boolean; } export interface IFormFieldOptions extends IFormFieldBaseOptions { type?: 'string' | 'textarea' | 'number' | 'slider' | 'chips' | 'colorpicker' | 'combobox' | 'combobox-objects' | 'checkboxes-horizontal' | 'checkbox' | 'object' | 'selection' | 'array' | 'keyvalue' | 'form' | 'union' | 'keysobject' | 'datetimepicker' | 'datepicker' | 'button-trigger' | 'rating' | 'component'; defaultValue?: any; description?: string; required?: boolean; group?: string; min?: number; max?: number; step?: number; sortWeight?: number; options?: any[] | (() => any[]); arrayType?: IFormOptions; form?: IFormOptions; canDelete?: boolean; clearable?: boolean; canAdd?: boolean; canEditKey?: boolean; placeholder?: string; addUsingDialog?: boolean; readonly?: boolean; keyText?: string; keyValue?: string; icon?: string; colors?: string[]; component?: any; locale?: string; requirements?: ((value: object) => boolean)[]; _appendIcon?: string; _isError?: boolean; keyValuesType?(): object; typeSelector?(value: object): string; triggerCallback?(obj: object, field: IFormFieldOptions): any; } export declare function Form(options: IFormOptions): (target: any) => void; export declare function FormField(options: IFormFieldOptions): any; export declare function FormUnionFields(options: IFormUnionFieldOptions): (object: any, key: string, target: any) => void;