import { FileEvent, type FileChangeKind, type JsonValue, type PathSpec } from '../types.ts';
/**
 * Lift a mount-relative path onto the mount `root` sits behind.
 *
 * Mirrors Python `virtual_of` (`events/payload.py`).
 */
export declare function virtualOf(root: PathSpec, relative: string): string;
/**
 * Build one framed `FileEvent` for a mount-relative path.
 *
 * The timestamp is when the mapping ran, not when the service says the change
 * happened: `FileEvent` documents its stamp as the observation time, and a
 * service clock would be a different clock from every other producer's.
 *
 * Mirrors Python `event_at` (`events/payload.py`).
 */
export declare function eventAt(root: PathSpec, relative: string, kind: FileChangeKind, previous?: string | null): FileEvent;
/**
 * Read one field from a notification body, or null.
 *
 * A payload arrives as whatever the service sent, so it may not be an object
 * at all; a reader that assumed one would throw on a malformed delivery
 * rather than skipping it.
 *
 * Mirrors Python `field` (`events/payload.py`).
 */
export declare function field(payload: JsonValue, name: string): JsonValue;
/**
 * Read one string field from a notification body, or null.
 *
 * Mirrors Python `text_field` (`events/payload.py`).
 */
export declare function textField(payload: JsonValue, name: string): string | null;
//# sourceMappingURL=payload.d.ts.map