import { LocalDatapointId, MariaDatabaseSpec, PersistentRow, Row_DatapointControlLog, Row_DatapointLog, Row_Sample, SerializableEngine } from "jm-castle-ac-dc-types"; import { InsertResponse, Table } from "jm-castle-types"; import { Pool } from "mariadb"; import { ControlContext } from "../../engines/ControlContext.mjs"; import { EngineContext } from "../../engines/EngineContext.mjs"; import { Engine } from "../../engines/Types.mjs"; import { Persistence, PersistencePart, PersistencePartRunResponse } from "../Types.mjs"; import { Filter_LoggedAt_FromTo_Seconds, Filter_NameLike } from "./query/QueryUtils.mjs"; export interface RunPartsResponse { duration: number; errors?: string[]; } export declare const AllTables: Table[]; export interface MariaDbClientProps { engineId: string; spec: MariaDatabaseSpec; } export declare class MariaDbClient implements Persistence, Engine { constructor(props: MariaDbClientProps); private engineId; private setupPool; private databasePool; private lastStartedAt; private lastLapEndAt; private spec; private running; private shouldRun; private lap; private durations; private errors; private parts; private handlePoolError; type: () => string; tables: { sample: { insert: (values: Row_Sample & PersistentRow) => Promise>; update: (values: Row_Sample & PersistentRow) => Promise>; select: (filter: Filter_NameLike) => Promise>; selectByKey: (sampleId: string) => Promise>; all: () => Promise>; }; }; datapoint_log: { makePersistPart: (...datapoints: string[]) => { run: (context: EngineContext) => Promise; }; insertNow: (values: Row_DatapointLog) => Promise>; select: (filter: Filter_LoggedAt_FromTo_Seconds) => Promise>; }; datapoint_control_log: { makePersistPart: (datapoints: Record) => { run: (context: ControlContext) => Promise; }; insertNow: (values: Row_DatapointControlLog) => Promise>; select: (filter: Filter_LoggedAt_FromTo_Seconds) => Promise>; }; getDatabaseName: () => string; getDatabasePool: () => Pool; getSetupPool: () => Pool; addPart: (...parts: PersistencePart[]) => void; private runParts; private run; private waitAndCheckRunning; start: () => Promise; stop: () => Promise; disconnect: () => 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; }