/**
 * Constructor parameters for the Profile Manager - Populated by the Imperative API methods (if invoked from your CLI app) OR you can
 * invoke the manager directly (assuming you supply all required parms).
 * @export
 * @interface IProfileManager
 */
import { Logger } from "../../../../logger";
import { IProfileTypeConfiguration } from "../config/IProfileTypeConfiguration";
export interface IProfileManager<T extends IProfileTypeConfiguration> {
    /**
     * The profile type for this manager - the configuration document for the type can either be supplied on the
     * "typeConfigurations" property on this object OR the mananger will attempt to extract it from the profile
     * root directory type meta file. If the type configuration cannot be located, an exception will be thrown.
     *
     * @type {string}
     * @memberof IProfileManager
     */
    type: string;
    /**
     * The logger object to use in the profile manager. Normally the imperative logger, but can be any
     * arbitrary log4js logger.
     *
     * @type {Logger}
     * @memberof IProfileManager
     */
    logger?: Logger;
    /**
     * Contains all profile type configuration documents - used to obtain the schema for the profile type passed on the
     * profile manager and for dependency loading of profiles of other types.
     *
     * If this parameter is NOT supplied to the constructor of the Profile Manager, the manager will attempt to read
     * the configurations from each of the profile type meta files when the object is being instaitiated. If it fails
     * to locate a configuration for the profile type specified, manager creation will fail. You can either supply
     * the configurations to the constructor OR execute the "initialize" static API to create all type directories and
     * their meta configuration files.
     *
     * @type {IImperativeProfileConfig[]}
     * @memberof IProfileManager
     */
    typeConfigurations?: T[];
    /**
     * Product display name of CLI
     * @type {string}
     * @memberof IProfileManager
     */
    productDisplayName?: string;
}
//# sourceMappingURL=IProfileManager.d.ts.map