import { IPropertyBase, IPropertyGroupBase } from "../../core/base"; import { EntityConstructor, IBasicI18NContract, UnnamedPartial } from "./base"; export declare const PROP_INPUT_DEFINE = "ambjs::property_input_define"; export declare const PROP_ATTACH_DEFINE = "ambjs::property_attach_define"; export declare const PROP_GROUP_DEFINE = "ambjs::property_define_group"; export interface IInputPropertyContract extends IPropertyGroupContract { group: string | null; allowValues: (string | number)[] | number[] | string[] | null; } export interface IAttachPropertyContract extends IPropertyGroupContract { } export interface IPropertyGroupContract extends IBasicI18NContract { } export declare type REALNAME = T & { /** real field key in class scope */ realName: string; }; export declare function Group(name: string): ClassDecorator; export declare function Group(params: UnnamedPartial): ClassDecorator; export declare function Input(): PropertyDecorator; export declare function Input(name: string): PropertyDecorator; export declare function Input(params: Partial): PropertyDecorator; export declare function Attach(): PropertyDecorator; export declare function Attach(name: string): PropertyDecorator; export declare function Attach(params: Partial): PropertyDecorator; export declare function defineInputProperty(target: EntityConstructor, metadata: REALNAME): void; export declare function defineAttachProperty(target: EntityConstructor, metadata: REALNAME): void; export declare function resolveInputProperty(target: EntityConstructor, name: string, defaults?: Partial): IPropertyBase; export declare function definePropertyGroup(target: EntityConstructor, metadata: IPropertyGroupContract): void; export declare function resolveInputProperties(target: EntityConstructor): { [prop: string]: IPropertyBase; }; export declare function resolveAttachProperties(target: EntityConstructor): { [prop: string]: IPropertyBase; }; export declare function resolvePropertyGroups(target: EntityConstructor): { [prop: string]: IPropertyGroupBase; };