import { PackageJsonLookup, NewlineKind, INodePackageJson } from '@rushstack/node-core-library';
import { MessageRouter } from '../collector/MessageRouter';
/**
 * Represents analyzed information for a package.json file.
 * This object is constructed and returned by PackageMetadataManager.
 */
export declare class PackageMetadata {
    /**
     * The absolute path to the package.json file being analyzed.
     */
    readonly packageJsonPath: string;
    /**
     * The parsed contents of package.json.  Note that PackageJsonLookup
     * only includes essential fields.
     */
    readonly packageJson: INodePackageJson;
    /**
     * If true, then the package's documentation comments can be assumed
     * to contain API Extractor compatible TSDoc tags.
     */
    readonly aedocSupported: boolean;
    constructor(packageJsonPath: string, packageJson: INodePackageJson, aedocSupported: boolean);
}
/**
 * This class maintains a cache of analyzed information obtained from package.json
 * files.  It is built on top of the PackageJsonLookup class.
 *
 * @remarks
 *
 * IMPORTANT: Don't use PackageMetadataManager to analyze source files from the current project:
 * 1. Files such as tsdoc-metadata.json may not have been built yet, and thus may contain incorrect information.
 * 2. The current project is not guaranteed to have a package.json file at all.  For example, API Extractor can
 *    be invoked on a bare .d.ts file.
 *
 * Use ts.program.isSourceFileFromExternalLibrary() to test source files before passing the to PackageMetadataManager.
 */
export declare class PackageMetadataManager {
    static tsdocMetadataFilename: string;
    private readonly _packageJsonLookup;
    private readonly _messageRouter;
    private readonly _packageMetadataByPackageJsonPath;
    constructor(packageJsonLookup: PackageJsonLookup, messageRouter: MessageRouter);
    private static _resolveTsdocMetadataPathFromPackageJson;
    /**
     * @param tsdocMetadataPath - An explicit path that can be configured in api-extractor.json.
     * If this parameter is not an empty string, it overrides the normal path calculation.
     * @returns the absolute path to the TSDoc metadata file
     */
    static resolveTsdocMetadataPath(packageFolder: string, packageJson: INodePackageJson, tsdocMetadataPath?: string): string;
    /**
     * Writes the TSDoc metadata file to the specified output file.
     */
    static writeTsdocMetadataFile(tsdocMetadataPath: string, newlineKind: NewlineKind): void;
    /**
     * Finds the package.json in a parent folder of the specified source file, and
     * returns a PackageMetadata object.  If no package.json was found, then undefined
     * is returned.  The results are cached.
     */
    tryFetchPackageMetadata(sourceFilePath: string): PackageMetadata | undefined;
    /**
     * Returns true if the source file is part of a package whose .d.ts files support AEDoc annotations.
     */
    isAedocSupportedFor(sourceFilePath: string): boolean;
}
//# sourceMappingURL=PackageMetadataManager.d.ts.map