export interface iEnvOpts {
    name: string;
    defaultDomain?: string;
}
export interface iSuiteOpts {
    id?: string;
    name: string;
    description?: string;
    tags?: string[];
}
export interface iProjectOpts {
    id?: string;
    name: string;
    path: string;
    source?: string;
    output?: string;
    images?: string;
    cache?: string;
}
export interface iConfigOpts {
    configPath?: string;
    project: iProjectOpts;
    environments: iEnvOpts[];
    suites?: iSuiteOpts[];
}
export interface iConfigFile {
    project: iProjectOpts;
    environments: {
        [key: string]: iEnvOpts;
    };
    suites: {
        [key: string]: iSuiteOpts;
    };
}
export interface iScenarioOpts {
    description: string;
    path: string;
    type: string;
}
export declare class EnvConfig {
    protected config: FlagpoleConfig;
    name: string;
    defaultDomain: string;
    constructor(config: FlagpoleConfig, opts: iEnvOpts);
    toJson(): iEnvOpts;
}
export declare class SuiteConfig {
    protected config: FlagpoleConfig;
    id: string;
    name: string;
    tags: string[];
    constructor(config: FlagpoleConfig, opts: iSuiteOpts);
    getSourcePath(): string;
    getTestPath(): string;
    clearTags(): void;
    addTag(tag: string): void;
    toJson(): iSuiteOpts;
}
export declare class ProjectConfig {
    protected config: FlagpoleConfig;
    id: string;
    name: string;
    path: string;
    source: string | undefined;
    output: string | undefined;
    images: string;
    cache: string;
    get isSourceAndOutput(): boolean;
    get hasId(): boolean;
    constructor(config: FlagpoleConfig, opts: iProjectOpts);
    setTypeScriptFolders(rootFolder: string, srcFolder: string, outFolder: string): ProjectConfig;
    toJson(): iProjectOpts;
}
export declare class FlagpoleConfig {
    protected configPath: string;
    protected _onSave: Function[];
    project: ProjectConfig;
    suites: {
        [key: string]: SuiteConfig;
    };
    environments: {
        [key: string]: EnvConfig;
    };
    constructor(opts: iConfigOpts);
    getConfigFolder(): string;
    getConfigPath(): string;
    getRootFolder(): string;
    getTestsFolder(): string;
    getSourceFolder(): string;
    getImagesFolder(): string;
    getCacheFolder(): string;
    addEnvironment(opts: iEnvOpts): void;
    addSuite(opts: iSuiteOpts): void;
    removeEnvironment(name: string): void;
    removeSuite(name: string): void;
    getEnvironments(): EnvConfig[];
    getEnvironmentNames(): string[];
    getSuites(): SuiteConfig[];
    getSuiteNames(): string[];
    isValid(): boolean;
    toFileObject(): iConfigFile;
    toString(): string;
    onSave(callback: Function): void;
    save(): Promise<void>;
    writeTsConfig(): Promise<string>;
    tsc(): Promise<string>;
}
