/** The one decoder for a cron's stored sink JSON. * * A sink is armed as a CLI spec string (`node:` | `spawn:` | * `human`), validated and encoded to JSON once at arm time * (`api/handlers/crons.ts`), and thereafter read back in exactly two places: * the runner, which dispatches a delivery on it, and the DTO mapper, which * renders it. Both go through here so the stored shape has a single reader. * * A malformed stored value decodes as no-sink rather than throwing: a cron * that cannot deliver must still run, and must still list. */ export type ParsedSink = { kind: 'node'; node: string; } | { kind: 'spawn'; spawn: string; } | { kind: 'human'; } | null; /** Stored JSON → typed shape. `{}`, malformed JSON, and an unrecognised shape * all read as null (no sink). */ export declare function parseSink(sinkJson: string): ParsedSink; /** Stored JSON → the display spec the CLI armed with, or null when the cron * never delivers. The exact inverse of the arm-time encoding. */ export declare function sinkDisplay(sinkJson: string): string | null;