import type { Store } from "../lib/store.js"; import type { LoopRun } from "../types.js"; export { processStartTimeMs, sameProcessStart, verifiedProcessStart, START_TIME_TOLERANCE_MS } from "../lib/process-identity.js"; export interface PidFileRecord { pid: number; startedAt?: number; } export declare function readPidRecord(path?: string): PidFileRecord | undefined; export declare function readPid(path?: string): number | undefined; export declare function writePid(pid?: number, path?: string): void; export declare function removePid(path?: string): void; export declare function isAlive(pid: number, startedAt?: number): boolean; export interface DaemonProcessState { running: boolean; stale: boolean; pid?: number; } export declare function isDaemonRunning(path?: string): DaemonProcessState; export interface ReapableProcess { pid?: number; pgid?: number; processStartedAt?: string | number; } export declare function toReapableProcess(run: LoopRun): ReapableProcess; export declare function reapProcessGroups(entries: ReapableProcess[], opts?: { graceMs?: number; sleep?: (ms: number) => Promise; log?: (message: string) => void; }): Promise; export interface DaemonStatus extends DaemonProcessState { lease?: ReturnType; host: string; loops: { total: number; active: number; paused: number; stopped: number; expired: number; archived: number; }; runs: { total: number; running: number; failed: number; succeeded: number; abandoned: number; }; logPath: string; } export declare function daemonStatus(store: Store, path?: string): DaemonStatus; export declare function stopDaemon(opts?: { path?: string; timeoutMs?: number; reapGraceMs?: number; sleep?: (ms: number) => Promise; }): Promise<{ wasRunning: boolean; stopped: boolean; forced: boolean; pid?: number; reapedPgids?: number[]; }>;