import { Alias } from './alias';
import { GenericArgument } from './generic-argument';
import { GenericMetadata } from './generic-metadata';
import { TypeArgument } from './type-argument';
import { TypeFn } from './type-fn';
import { TypeManager } from './type-manager';
import { TypeMetadata } from './type-metadata';
/**
 * Metadata class.
 *
 * Encapsulates common methods and properties which can be used by all types of metadata.
 *
 * @type {Metadata}
 */
export declare class Metadata {
    /**
     * Type manager.
     *
     * @type {TypeManager}
     */
    readonly typeManager: TypeManager;
    /**
     * Type function map for types with aliases.
     *
     * @type {ReadonlyMap<Alias, TypeFn<any>>}
     */
    private readonly typeFnMap;
    /**
     * Constructor.
     *
     * @param {TypeManager} typeManager Type manager.
     * @param {ReadonlyMap<Alias, TypeFn<any>>} typeFnMap Type function map for types with aliases.
     */
    constructor(typeManager: TypeManager, typeFnMap: ReadonlyMap<Alias, TypeFn<any>>);
    /**
     * Resolves type metadatas for provided type arguments.
     *
     * @param {ReadonlyArray<TypeArgument<any>>} typeArguments Type arguments.
     *
     * @returns {ReadonlyArray<TypeMetadata<any>>} Resolved type metadatas.
     */
    resolveTypeMetadatas(typeArguments: ReadonlyArray<TypeArgument<any>>): ReadonlyArray<TypeMetadata<any>>;
    /**
     * Resolves type metadata for provided type argument.
     *
     * @param {TypeArgument<any>} typeArgument Type argument.
     *
     * @returns {TypeMetadata<any>} Resolved type metadata.
     */
    resolveTypeMetadata(typeArgument: TypeArgument<any>): TypeMetadata<any>;
    /**
     * Resolves type metadata using type resolver.
     *
     * @param {TypeMetadata<any>} typeArgument Type argument.
     *
     * @returns {TypeMetadata<any>} Type metadata resolved using type resolver.
     */
    private resolveTypeMetadataUsingTypeResolver;
    /**
     * Resolves type metadata using type function.
     *
     * @param {TypeMetadata<any>} typeArgument Type argument.
     *
     * @returns {TypeMetadata<any>} Type metadata resolved using type function.
     */
    private resolveTypeMetadataUsingTypeFn;
    /**
     * Resolves type metadata using alias.
     *
     * @param {TypeArgument<any>} typeArgument Type argument.
     *
     * @returns {TypeMetadata<any>} Type metadata resolved using alias.
     */
    private resolveTypeMetadataUsingAlias;
    /**
     * Resolves type metadata using unknown type function.
     *
     * @returns {TypeMetadata<any>} Type metadata resolved using unknown type function.
     */
    private resolveTypeMetadataUsingUnknownTypeFn;
    /**
     * Resolves generic metadatas based on provided generic arguments.
     *
     * @param {ReadonlyArray<GenericArgument<any>>} genericArguments Generic arguments.
     *
     * @returns {ReadonlyArray<GenericMetadata<any>>} Resolved generic metadatas.
     */
    resolveGenericMetadatas(genericArguments: ReadonlyArray<GenericArgument<any>>): ReadonlyArray<GenericMetadata<any>>;
}
//# sourceMappingURL=metadata.d.ts.map