import { SerializableEngine } from "jm-castle-ac-dc-types"; import { Persistence } from "../../persistence/Types.mjs"; import { ControlContext } from "../ControlContext.mjs"; import { EngineContext } from "../EngineContext.mjs"; import { ControlContextConsumer, Engine, EngineContextConsumer } from "../Types.mjs"; import { PersistPart } from "./Types.mjs"; export interface RunPartsResponse { duration: number; errors?: string[]; } export interface PersistEngineProps { engineId: string; persistences: Record; parts?: { onEngineContext?: PersistPart[]; onControlContext?: PersistPart[]; }; } export declare class PersistEngine implements Engine, EngineContextConsumer, ControlContextConsumer { constructor(props: PersistEngineProps); private engineId; private persistences; private lastStartedAt; private lastLapEndAt; private running; private shouldRun; private lap; private durations; private errors; private parts; private runPartsOnEngineContext; private runPartsOnControlContext; private lapEnd; private runOnEngineContext; private runOnControlContext; onContextChange: (context: EngineContext) => Promise; onControlContextChange: (context: ControlContext) => Promise; private waitAndCheckRunning; start: () => Promise; stop: () => Promise; status: () => Promise<{ lastStartedAt: number; lastLapEndAt: number; running: boolean; duration: { laps: number; consumed: { total: number; lapStart: number; lapEnd: number; }; }; errors: { lap: number; errors: string[]; }[]; }>; settings: () => Promise<{ lapDuration: number; }>; getSerializable: () => Promise; }