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<T> = {
    readonly [P in keyof T]: T[P];
};
export declare type Deferred<T> = {
    [P in keyof T]: Promise<T[P]>;
};
export declare type Proxify<T> = {
    [P in keyof T]: {
        get(): T[P];
        set(v: T[P]): void;
    };
};
export declare type Nullable<T> = {
    [P in keyof T]: T[P] | null;
};
export declare type Partial<T> = {
    [P in keyof T]?: T[P];
};
export declare type Maybe<T> = T | void;
export declare function isDefined<T>(x: Maybe<T>): x is T;
export declare function isUndefined<T>(x: Maybe<T>): x is void;
export declare function getOrElse<T>(x: Maybe<T>, defaultValue: T): T;
export declare type Tree<T> = {
    Value: T;
    Left: Tree<T>;
    Right: Tree<T>;
};
export declare type LinkedList<T> = T & {
    Next: LinkedList<T>;
    Previous?: LinkedList<T>;
};
