export declare function attribute(): { (target: Function): void; (target: Object, propertyKey: string | symbol): void; }; export declare function getAttribute(target: any, propertyKey: string): any; export declare function typeName(typeName: string): { (target: Function): void; (target: Object, propertyKey: string | symbol): void; }; export declare function getTypeName(target: any, propertyKey: string): any; export declare function typeMeta(typeMeta: any): { (target: Function): void; (target: Object, propertyKey: string | symbol): void; }; export declare function getTypeMeta(target: any, propertyKey: string): any; export declare type Readonly = { readonly [P in keyof T]: T[P]; }; export declare type Deferred = { [P in keyof T]: Promise; }; export declare type Proxify = { [P in keyof T]: { get(): T[P]; set(v: T[P]): void; }; }; export declare type Nullable = { [P in keyof T]: T[P] | null; }; export declare type Partial = { [P in keyof T]?: T[P]; }; export declare type Maybe = T | void; export declare function isDefined(x: Maybe): x is T; export declare function isUndefined(x: Maybe): x is void; export declare function getOrElse(x: Maybe, defaultValue: T): T; export declare type Tree = { Value: T; Left: Tree; Right: Tree; }; export declare type LinkedList = T & { Next: LinkedList; Previous?: LinkedList; };