import { Trial } from "./Trial";
import { ModList } from "./ModList";
import { GameFlowItemRecord, IGameFlowCircuitResults, IGameFlowCircuitTick, IGameFlowElectricResults, IGameFlowElectricTick, IGameFlowItemResults, IGameFlowItemTick, IGameFlowPollutionResults, IGameFlowPollutionTick, IGameFlowSystemResults, IGameFlowSystemTick } from "./Dataset";
import { Source } from "./Source";
export interface IFactoryStartParams {
    installDir?: string;
    dataDir?: string;
    username?: string;
    token?: string;
    hideConsole?: boolean;
    build?: string;
    updateInstall?: boolean;
}
export declare class Factory {
    static _initStatus: string;
    static get initStatus(): string;
    static set initStatus(val: string);
    static initialize(params: IFactoryStartParams): Promise<void>;
    static prepareTrial(t: Trial): Promise<void>;
    static compileTrial(t: Trial): Promise<void>;
    static runTrial(t: Trial): Promise<void>;
    static analyzeTrial(t: Trial, createSummaries?: boolean, saveToDB?: boolean): Promise<{
        items?: IGameFlowItemResults;
        electric?: IGameFlowElectricResults;
        circuits?: IGameFlowCircuitResults;
        pollution?: IGameFlowPollutionResults;
        system?: IGameFlowSystemResults;
    }>;
    static parseItemDataFile(filepath: string, trial: Trial): Promise<IGameFlowItemTick[] | GameFlowItemRecord[]>;
    static parseElectricDataFile(filepath: string, trial: Trial): Promise<IGameFlowElectricTick[]>;
    static parseCircuitDataFile(filepath: string, trial: Trial): Promise<IGameFlowCircuitTick[]>;
    static parsePollutionDataFile(filepath: string, trial: Trial): Promise<IGameFlowPollutionTick[]>;
    static parseSystemData(raw: string, trial: Trial): IGameFlowSystemTick[];
    static isTrialRunning: boolean;
    static get modsPath(): string;
    static get modsCachePath(): string;
    static get savesPath(): string;
    static get scenariosPath(): string;
    static get scriptOutputPath(): string;
    static factoryDataPath: string;
    static factoryInstallPath: string;
    static factoryVersion: string;
    protected static factoryExecutable: boolean;
    static clientDownloadCount: number;
    static modCache: Set<string>;
    static verifyInstall(forceLatestVersion?: boolean): Promise<any>;
    static setupLogger(hideConsole?: boolean): Promise<void>;
    static onStatusChange: (newStatus: string) => void;
    private static deleteScriptOutputFiles;
    private static deleteSaveFileClutter;
    static applyModsOfSource(source: Source): Promise<void>;
    static symlinkModFiles(modFiles?: string[]): Promise<void>;
    static refreshModCache(): Promise<void>;
    static stop(includeLogger?: boolean): Promise<void>;
    static installGame(version?: string, build?: string | undefined): Promise<void>;
    static copyScenarioSourceToFolder(folder: string): Promise<string>;
    static clearActiveMods(): Promise<void>;
    static cacheMod(mod: string): Promise<string | null>;
    static cacheModList(modList: ModList): Promise<ModList>;
    static listScenarios(): Promise<string[]>;
    static listSaves(): Promise<string[]>;
    static get factorioExecutablePath(): string;
    static factorioRunning: boolean;
    static runFactorio(params: string[]): Promise<IFactorioExecutionResults>;
    static writeKeyValuesToLuaFile(path: string, vars: any): Promise<string>;
    private static _replaceLuaKeyValue;
}
export interface IFactorioExecutionResults {
    execResults: string;
    start: Date;
    end: Date;
}
