import { logging } from '@angular-devkit/core';
import type { ComponentExtractorBuilderSchema } from '../../index';
import { ParserOutput } from './component.parser';
import type { ComponentOutput } from '@o3r/components';
/**
 * Extracts components metadata
 */
export declare class ComponentExtractor {
    private readonly libraryName;
    private readonly logger;
    private readonly workspaceRoot;
    private readonly strictMode;
    /** List of libraries to extract component metadata from */
    private readonly libraries;
    /** List of loaded libraries configurations */
    private libConfigurations?;
    /** List of the loaded libraries component outputs*/
    private libComponentClassOutputs?;
    /**
     * Extracts components metadata constructor
     * @param libraryName The name of the library/app on which the extractor is run
     * @param libraries List of libraries to extract metadata from
     * @param logger
     * @param workspaceRoot
     * @param strictMode
     */
    constructor(libraryName: string, libraries: string[], logger: logging.LoggerApi, workspaceRoot: string, strictMode?: boolean);
    /**
     * Load configuration files from libraries.
     *
     */
    private loadLibraryConfigurations;
    /**
     * Load component classes files from libraries.
     *
     */
    private loadLibraryComponentClassOutputs;
    /**
     * Indicates if the given component is referencing configuration from a library.
     * @param component
     */
    private isLibConfigRef;
    /**
     * Returns a ComponentConfigOutput model built using the given ConfigurationInformation, filePath and type as well as the library being processed.
     * @param configuration
     * @param filePath
     * @param type
     */
    private createComponentConfigOutput;
    /**
     * Return a hash of the config output without the path
     * @param config
     */
    private hashConfiguration;
    /**
     * Add NestedConfiguration to map
     * @param nestedConfigurations Map
     * @param configurationInformationWrapper configurations to be added
     * @param filePath
     */
    private addNestedConfigToMap;
    /**
     * Consolidate the configuration data to the final format.
     * @param parsedData Data extracted from the source code
     */
    private consolidateConfig;
    /**
     * Consolidate the components data to the final format
     * @param parsedData Data extracted from the source code
     * @param placeholdersMetadataFile
     */
    private consolidateComponents;
    /**
     * Merge placeholders metadata information into the components metadata
     * @param componentClassOutputs
     * @param placeholdersMetadata
     * @private
     */
    private addPlaceholdersToComponent;
    /**
     * Filters out config not supported by CMS
     * @param configs
     * @param options
     * @private
     */
    private filterIncompatibleConfig;
    /**
     * Extract components metadata from a parser output
     * @param parserOutput Data extracted from the source code
     * @param options
     */
    extract(parserOutput: ParserOutput, options: ComponentExtractorBuilderSchema): Promise<ComponentOutput>;
}
//# sourceMappingURL=component.extractor.d.ts.map