import { ConstructorOrObject } from "../../typing/common";
import { MetadataAccessor } from "./interface";
export declare class PropertyMetadata implements MetadataAccessor {
    private storage;
    private _propertyKey;
    get propertyKey(): string;
    constructor(
    /** Constructor or object */
    target: ConstructorOrObject, 
    /** Property name */
    name: string);
    private getData;
    private setData;
    getMetadata<T = any>(key: string): T;
    setMetadata(key: string, value: any): void;
    hasMetadata(key: string): boolean;
    /**
     * Gets the properties metadata of a type or object.
     * @param target Constructor or object
     * @returns
     */
    static getPropertiesMetadata(target: ConstructorOrObject): PropertyMetadata[];
}
