declare type AnyOptions = Record; export declare interface ClassType { new (...args: any): T; } export declare type ClassTypeResolver = (of?: void) => ClassType | Function; export declare const ExecuteInEditMode: ClassDecorator; export declare function Field(): PropertyDecorator; export declare function Field(options: FieldOptions): PropertyDecorator; export declare function Field(returnTypeFunction?: ReturnTypeFunc): PropertyDecorator; export declare function Field(returnTypeFunction?: ReturnTypeFunc | FieldOptions, maybeOptions?: FieldOptions): PropertyDecorator; export declare interface FieldMetadata extends NumberOptions, FillterOptions, FilltersOptions, AnyOptions { name: string; type: string; children?: FieldMetadata[]; isFolder?: boolean; isArray: boolean; addable?: boolean; } export declare interface FieldOptions extends NumberOptions, FillterOptions, FilltersOptions, AnyOptions { type?: string; } export declare interface FillterOptions { filter?(val: any): any; } export declare interface FilltersOptions { filters?: ((val: any) => any)[]; } export declare function getPropertiesOf & { componentName?: string; }>(target: T, isRoot?: boolean): FieldMetadata; declare interface NumberOptions { min?: number; max?: number; step?: number; } export declare interface RecursiveArray extends Array | TValue> { } export declare type ReturnTypeAsync any> = T extends (...args: any) => Promise ? R : T extends (...args: any) => infer R ? R : any; export declare type ReturnTypeFunc = (returns?: void) => ReturnTypeFuncValue; export declare type ReturnTypeFuncValue = TypeValue | RecursiveArray; export declare const shouldExecuteInEditMode: (target: ClassType) => boolean; export declare interface TypeDecoratorParams { returnTypeFunc?: ReturnTypeFunc; options: FieldOptions; } export declare type TypeValue = ClassType | Function | object | symbol; export declare type TypeValueThunk = (type?: void) => TypeValue; export { }