import { EntityConstructor, IBasicI18NContract, UnnamedPartial } from "./base"; import { IMetaTypeEnumInfo, IMetaTypeMapInfo, IPropertyBase, MetaEntityRefType } from "../base/common"; 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; useEnums: IMetaTypeEnumInfo | null; useMap: IMetaTypeMapInfo | null; useRef: boolean | MetaEntityRefType; useExpression: boolean; required: boolean; } 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): Record; export declare function resolveAttachProperties(target: EntityConstructor): Record; export declare function resolvePropertyGroups(target: EntityConstructor): Record;