import 'reflect-metadata'; export declare class MemberAttribute { protected attributeName: string; constructor(attributeName: string); private registerMember; getDecoratorValue(target: Object, key: string, presentedValue?: any): any; decorate(value?: any): Function; get decorator(): Function; static getMembers(target: Function | Object): any; static getAttributeValue(target: Object, memberName: string, attributeName: string): any; } export declare class AttributeFunctionChain { private steps; constructor(...steps: Array); invoke(definition: any, instance: any): any; } export declare class ParseAttribute extends MemberAttribute { constructor(); getDecoratorValue(target: Object, key: string, presentedValue?: any): any; } export declare const required: Function; export declare const defaultValueAttribute: MemberAttribute; export declare const defaultValue: any; export declare const parseAttribute: ParseAttribute; export declare const parse: Function; export declare const parseAs: any; export declare const typeArgument: MemberAttribute; export interface JSONPropertyMeta { propertyName: string; toJson?: (instance: any) => any; } export declare const jsonProperty: (propertyName: string, toJson?: (instance: T) => any) => (target: T, targetKey: any) => void; export declare function getJsonProperty(target: any, targetKey: any): JSONPropertyMeta;