import * as ts from 'typescript';
import { Tsoa } from '@namecheap/tsoa-runtime';
import { SecurityGenerator } from './securityGenerator';
export interface MetadataGeneratorOptions {
    securityGenerator?: SecurityGenerator;
}
export declare class MetadataGenerator {
    private readonly compilerOptions?;
    private readonly ignorePaths?;
    readonly controllerNodes: ts.ClassDeclaration[];
    readonly typeChecker: ts.TypeChecker;
    readonly securityGenerator: SecurityGenerator | undefined;
    private readonly program;
    private referenceTypeMap;
    private circularDependencyResolvers;
    constructor(entryFile: string, compilerOptions?: ts.CompilerOptions | undefined, ignorePaths?: string[] | undefined, controllers?: string[], generatorOptions?: MetadataGeneratorOptions);
    Generate(): Tsoa.Metadata;
    private setProgramToDynamicControllersFiles;
    private extractNodeFromProgramSourceFiles;
    private checkForMethodSignatureDuplicates;
    private checkForPathParamSignatureDuplicates;
    TypeChecker(): ts.TypeChecker;
    AddReferenceType(referenceType: Tsoa.ReferenceType): void;
    GetReferenceType(refName: string): Tsoa.ReferenceType;
    OnFinish(callback: (referenceTypes: Tsoa.ReferenceTypeMap) => void): void;
    private buildControllers;
}
