import { Type } from '@nestjs/common';
import { ClassDirectiveMetadata, ClassExtensionsMetadata, ClassMetadata, EnumMetadata, FieldResolverMetadata, MethodArgsMetadata, PropertyDirectiveMetadata, PropertyExtensionsMetadata, PropertyMetadata, ResolverClassMetadata, ResolverTypeMetadata, UnionMetadata } from '../metadata/index.js';
import { InterfaceMetadata } from '../metadata/interface.metadata.js';
import { ObjectTypeMetadata } from '../metadata/object-type.metadata.js';
export declare class TypeMetadataStorageHost {
    private readonly logger;
    private queries;
    private mutations;
    private subscriptions;
    private compiledResolvers?;
    private fieldResolvers;
    private readonly enums;
    private readonly unions;
    private readonly metadataByTargetCollection;
    addMutationMetadata(metadata: ResolverTypeMetadata): void;
    getMutationsMetadata(): ResolverTypeMetadata[];
    addQueryMetadata(metadata: ResolverTypeMetadata): void;
    getQueriesMetadata(): ResolverTypeMetadata[];
    addSubscriptionMetadata(metadata: ResolverTypeMetadata): void;
    getSubscriptionsMetadata(): ResolverTypeMetadata[];
    addResolverPropertyMetadata(metadata: FieldResolverMetadata): void;
    addArgsMetadata(metadata: ClassMetadata): void;
    getArgumentsMetadata(): ClassMetadata[];
    getArgumentsMetadataByTarget(target: Type<unknown>): ClassMetadata | undefined;
    addInterfaceMetadata(metadata: InterfaceMetadata): void;
    getInterfacesMetadata(): InterfaceMetadata[];
    getInterfaceMetadataByTarget(target: Function): InterfaceMetadata | undefined;
    addInputTypeMetadata(metadata: ClassMetadata): void;
    getInputTypesMetadata(): ClassMetadata[];
    getInputTypeMetadataByTarget(target: Type<unknown>): ObjectTypeMetadata | undefined;
    addObjectTypeMetadata(metadata: ObjectTypeMetadata): void;
    getObjectTypesMetadata(): ObjectTypeMetadata[];
    getObjectTypeMetadataByTarget(target: Type<unknown>): ObjectTypeMetadata | undefined;
    addEnumMetadata(metadata: EnumMetadata): void;
    getEnumsMetadata(): EnumMetadata[];
    addUnionMetadata(metadata: UnionMetadata): void;
    getUnionsMetadata(): UnionMetadata[];
    private resolveRegisterIn;
    private shouldIncludeInModules;
    private filterByModules;
    getObjectTypesMetadataByModules(modules: Function[]): ObjectTypeMetadata[];
    getInputTypesMetadataByModules(modules: Function[]): ClassMetadata[];
    getInterfacesMetadataByModules(modules: Function[]): InterfaceMetadata[];
    getArgumentsMetadataByModules(modules: Function[]): ClassMetadata[];
    getEnumsMetadataByModules(modules: Function[]): EnumMetadata[];
    getUnionsMetadataByModules(modules: Function[]): UnionMetadata[];
    addDirectiveMetadata(metadata: ClassDirectiveMetadata): void;
    addDirectivePropertyMetadata(metadata: PropertyDirectiveMetadata): void;
    addExtensionsMetadata(metadata: ClassExtensionsMetadata): void;
    addExtensionsPropertyMetadata(metadata: PropertyExtensionsMetadata): void;
    addResolverMetadata(metadata: ResolverClassMetadata): void;
    addClassFieldMetadata(metadata: PropertyMetadata): void;
    addMethodParamMetadata(metadata: MethodArgsMetadata): void;
    compile(orphanedTypes?: (Function | object)[]): void;
    loadClassPluginMetadata(metadata: ClassMetadata[]): void;
    applyPluginMetadata(prototype: Function, loadedClasses?: Set<Function>): void;
    compileClassMetadata(metadata: ClassMetadata[], options?: {
        overrideFields?: boolean;
    }): void;
    private getInheritedClassDirectives;
    clear(): void;
    private getClassFieldsByPredicate;
    private compileResolversMetadata;
    private compileFieldResolverMetadata;
    private compileExternalFieldResolverMetadata;
    private findModelFieldMetadata;
    /**
     * Reassigns every handler declared on a base class to the resolver class that implements it. See
     * {@link ResolverImplementationMap} for why that is necessary.
     */
    private compileExtendedResolversMetadata;
}
export declare const TypeMetadataStorage: TypeMetadataStorageHost;
//# sourceMappingURL=type-metadata.storage.d.ts.map