///
import { EventEmitter } from 'events';
import { IConfig } from './interfaces';
import { BaseManagedFile } from '../../structures/file';
/**
* Helper class for managing the configuration file
*/
export declare class ConfigManager extends BaseManagedFile {
/** Path leading to the root of the package */
readonly rootDirectory: string;
/** Options supplied by a configuration file (.akitaneru.js) */
readonly options: IConfig;
/**
* Creates a configuration manager
* @param {IConstructorOptions} [options] - Optional options for the configuration manager.
*/
constructor(options?: IConfig, filePath?: string);
init(): Promise;
/** Gets the absolute path of the root of the framework. */
get akitaNeruRoot(): string;
/** Gets the project's root directory */
get projectRootDirectory(): string;
addEmitter(emitters: {
[key: string]: EventEmitter;
}): void;
static configure(config: IConfig): IConfig;
/** Get the root of the project using the framework's configuration file */
private getUserRootDirectory;
/** Gets the configuration file of the application */
private getConfigFile;
/** Fetches the token of the application if it's not supplied in the configuration file */
private fetchRootFile;
/** Fetches the ormconfig if there's any */
private fetchORMConfig;
/**
* Checks the validity of the configuration file
* TODO: Use TypeScript type comparasion shenenigans to validate the file instead
*/
private isValidConfiguration;
}