export declare const getDefaultConfig: (configFilePath: string) => iConfigOpts;
export interface iEnvCollection {
    [name: string]: iEnvOpts;
}
export interface iEnvOpts {
    name: string;
    defaultDomain?: string;
}
export interface iSuiteCollection {
    [name: string]: iSuiteOpts;
}
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;
    schemas?: string;
}
export interface iConfigOpts {
    project: iProjectOpts;
    environments: iEnvCollection;
    suites: iSuiteCollection;
}
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;
    schemas: string;
    get isSourceAndOutput(): boolean;
    get isTypeScript(): 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;
    };
    get defaultEnvironment(): EnvConfig | undefined;
    constructor(opts: iConfigOpts, configPath: string);
    getConfigFolder(): string;
    getConfigPath(): string;
    getRootFolder(): string;
    getTestsFolder(): string;
    getSourceFolder(): string;
    getImagesFolder(): string;
    getSchemasFolder(): string;
    getCacheFolder(): string;
    getSuite(suiteName: string): SuiteConfig;
    addTagToSuite(suite: string | string[], tag: string): void;
    addEnvironment(opts: iEnvOpts): void;
    addSuite(opts: iSuiteOpts): void;
    removeEnvironment(name: string): void;
    removeSuite(name: string): void;
    getEnvironments(): EnvConfig[];
    getEnvironmentNames(): string[];
    getTags(): string[];
    getSuites(): SuiteConfig[];
    getSuiteNames(): string[];
    isValid(): boolean;
    toFileObject(): iConfigOpts;
    toString(): string;
    onSave(callback: Function): void;
    save(): Promise<void>;
    writeTsConfig(): Promise<string>;
    tsc(): Promise<string>;
}
