import * as ts from 'typescript';
import { MetadataGenerator } from '../metadataGenerator';
import { Resolver } from "./type";
interface TypeNodeResolverContext {
    [name: string]: ts.TypeReferenceNode | ts.TypeNode;
}
export declare class TypeNodeResolver {
    private readonly typeNode;
    private readonly current;
    private readonly parentNode?;
    private context;
    private readonly referencer?;
    constructor(typeNode: ts.TypeNode, current: MetadataGenerator, parentNode?: ts.Node, context?: TypeNodeResolverContext, referencer?: ts.TypeNode);
    static clearCache(): void;
    resolve(): Resolver.Type;
    private static isSupportedUtilityType;
    private static getUtilityTypeOptions;
    private filterUtilityProperties;
    private static resolveSpecialReference;
    private static getLiteralValue;
    private getPrimitiveType;
    private getDateType;
    private static getDesignatedModels;
    private getEnumerateType;
    private getReferenceType;
    private getTypeAliasReference;
    private getModelReference;
    private static getRefTypeName;
    private attemptToResolveKindToPrimitive;
    private contextualizedName;
    private handleCachingAndCircularReferences;
    private createCircularDependencyResolver;
    private static nodeIsUsable;
    private static resolveLeftmostIdentifier;
    private static resolveRightMostIdentifier;
    private resolveModelTypeScope;
    private getModelTypeDeclaration;
    private getModelProperties;
    private propertyFromSignature;
    private propertyFromDeclaration;
    private getModelAdditionalProperties;
    private typeArgumentsToContext;
    private getModelInheritedProperties;
    private hasPublicModifier;
    private hasStaticModifier;
    private isAccessibleParameter;
    private getNodeDescription;
    private static getNodeFormat;
    private static getNodeExample;
}
export {};
