export declare const PROPERTY_METADATA_KEY: unique symbol; export declare const PROPERTY_PRESENTATION_KEY: unique symbol; export declare const OBJECT_DISPLAYNAME_METADATA_KEY: unique symbol; export declare const OBJECT_DISPLAYSHORTNAME_METADATA_KEY: unique symbol; export declare const OBJECT_DISPLAYHINT_METADATA_KEY: unique symbol; export declare const OBJECT_DISPLAYORDER_METADATA_KEY: unique symbol; export declare type StringFormatType = ((name: string, ...args: any[]) => string) | string; export interface IJsonSchemaDefinitionValidator { [key: string]: any; } export interface JsonSchemaDefinitionDisplay { displayName?: StringFormatType; displayShortName?: StringFormatType; displayHintName?: StringFormatType; displayOrder?: number; } export interface JsonSchemaDefinitionItem { display?: JsonSchemaDefinitionDisplay; validators?: IJsonSchemaDefinitionValidator; } export interface JsonSchemaDefinition { [key: string]: JsonSchemaDefinitionItem; } export declare function getReflectdDisplayName(target: any, propertyName: string, defaultName: string): string; export declare function displayName(name: StringFormatType): (target: any, propertyName: string, descriptor: TypedPropertyDescriptor) => void; export declare function displayShortName(name: StringFormatType): (target: any, propertyName: string, descriptor: TypedPropertyDescriptor) => void; export declare function displayHint(hint: StringFormatType): (target: any, propertyName: string, descriptor: TypedPropertyDescriptor) => void; export declare function displayOrder(num: number): (target: any, propertyName: string, descriptor: TypedPropertyDescriptor) => void; export declare function sealed(constructor: Function): void; export declare function classDecorator {}>(constructor: T): { new (...args: any[]): { newProperty: string; hello: string; }; } & T; export declare function enumerable(value: boolean): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void; export declare function configurable(value: boolean): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void; export declare function propertySet(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): void; export declare function readonlyObject(Target: TFunction): TFunction; export declare function defineProperty(target: object, propertyKey: string): void; export declare function extend(first: T, second: U): T & U; export declare function getProperty(o: T, name: K): T[K]; export declare function setProperty(obj: T, key: K, value: T[K]): void; export declare function getObjetctNestedPath(theObject: any, path: string, separator?: string): any; export declare function getObjectLastParentOfPath(theObject: any, path: string, separator: string): any; export declare function getObjectLastKeyOfPath(theObject: any, path: string, separator: string): string; export declare function isObjectType(item: any): boolean; export declare function deepAssign(target: T, source1: U): T & U; export declare function deepAssign(target: T, source1: U, source2: V): T & U & V; export declare function deepAssign(target: T, source1: U, source2: V, source3: W): T & U & V & W; export declare function deepAssign(target: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X; export declare function deepAssign(target: T, source1: U, source2: V, source3: W, source4: X, source5: Y): T & U & V & W & X & Y; export declare function deepAssign(target: T, source1: U, source2: V, source3: W, source4: X, source5: Y, source6: Z): T & U & V & W & X & Y & Z; export declare function deepAssign(target: T, ...sources: any[]): T & any; export declare function cloneObject(obj: T): T; export declare function toCloneObject(target: T): T; export declare function toDeepAssign(target: T, ...sources: any[]): T; export declare function deepEqual(x: Record, y: Record): boolean; export declare function createInstance(c: new () => T): T; declare const groupBy: (fn: Function) => (list: any[]) => any; declare const values: (obj: object) => any[]; declare const pipe: (f1: Function, ...fns: Function[]) => (...args: any[]) => any; declare const path: (nodes: any[]) => (obj: object) => any; export { groupBy, values, pipe, path };