import { DataSource } from "typeorm";
import { Trial } from "./Trial";
import { Source } from "./Source";
import { ModList } from "./ModList";
import { GameFlowCircuitRecord, GameFlowElectricRecord, GameFlowItemRecord, GameFlowPollutionRecord, GameFlowSystemRecord, IGameFlowRecordCounts, IGameFlowResults } from "./Dataset";
import { PostgresConnectionOptions } from "typeorm/driver/postgres/PostgresConnectionOptions";
import { BetterSqlite3ConnectionOptions } from "typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions";
export declare class FactoryDatabase {
    static get FactoryDB(): DataSource | undefined;
    static SourcesMap: Map<string, DataSource>;
    static DefaultSource: string;
    static initialize(datasources?: PostgresConnectionOptions[] | BetterSqlite3ConnectionOptions[]): Promise<void>;
    static setSourceAsDefault(name: string): void;
    static configureDataSource(name: string, datasource: PostgresConnectionOptions | BetterSqlite3ConnectionOptions): Promise<void>;
    static removeDataSource(name: string): Promise<void>;
    static checkIfTrialExists(sourceId: string, length: number, interval: number, recordItems?: boolean, recordElectric?: boolean, recordCircuits?: boolean, recordPollution?: boolean, recordSystem?: boolean): Promise<string>;
    static checkIfDefaultTrialExists(sourceId: string): Promise<string>;
    static deleteTrialData(trialId: string): Promise<Trial>;
    static loadDatasetMetadata(trialId: string): Promise<IGameFlowRecordCounts>;
    static loadDatasetRecords(trialId: string, category: string): Promise<IGameFlowResults | any>;
    static listTrials(count?: number): Promise<Trial[]>;
    static listSources(count?: number): Promise<Source[]>;
    static loadTrial(id: string, includeSource?: boolean): Promise<Trial>;
    static loadSource(id: string, includeModList?: boolean): Promise<Source>;
    static loadModList(id: string): Promise<ModList>;
    static deleteTrial(id: string): Promise<void>;
    static deleteSource(id: string): Promise<void>;
    static deleteModList(id: string): Promise<void>;
    static saveTrial(trial: Trial, saveExtra?: boolean): Promise<Trial>;
    static saveSource(source: Source, saveExtra?: boolean): Promise<Source>;
    static saveModList(modList: ModList): Promise<ModList>;
    static insertItemRecords(records: GameFlowItemRecord[]): Promise<void>;
    static insertElectricRecords(records: GameFlowElectricRecord[]): Promise<void>;
    static insertCircuitRecords(records: GameFlowCircuitRecord[]): Promise<void>;
    static insertPollutionRecords(records: GameFlowPollutionRecord[]): Promise<void>;
    static insertSystemRecords(records: GameFlowSystemRecord[]): Promise<void>;
    static findLargestTrialOfSource(sourceId: string): Promise<string>;
    static findStatusAndTrialOfExecution(execId: string): Promise<any>;
}
