import { CustomValueResolver } from './custom-value-resolver';
import { Optional } from './optional';
/**
 * Key used to describe custom value. Such key is explicitly defined and used
 * by type manager plugins to store strongly typed custom values within metadata.
 *
 * @type {CustomKey<TCustomValue>}
 */
export declare class CustomKey<TCustomValue> {
    /**
     * Description.
     *
     * @type {string}
     */
    readonly description: string;
    /**
     * Custom value resolver.
     *
     * @type {Optional<CustomValueResolver<TCustomValue>>}
     */
    readonly customValueResolver: Optional<CustomValueResolver<TCustomValue>>;
    /**
     * Constructor.
     *
     * @param {string} description Description.
     * @param {CustomValueResolver<TCustomValue>} customValueResolver Custom value resolver.
     */
    constructor(description: string, customValueResolver?: CustomValueResolver<TCustomValue>);
}
//# sourceMappingURL=custom-key.d.ts.map