/**
 * Pure JSON serialiser for `olam lanes list <world> --json`.
 *
 * Kept separate from the command action so the wire contract is
 * unit-testable without a network round-trip (mirrors the pattern
 * used by `repos-list-json.ts`, `auth-list-json.ts`, `services.ts`).
 *
 * WHY this exists: agent/script drivers (Rico, flywheel chain skills,
 * CI pipelines) need to enumerate running lanes in a world before
 * dispatching work or routing a follow-up task to the right lane.
 * The human renderer uses printInfo/printHeader which emit ANSI codes
 * and may reflow — scraping it is brittle. This serialiser gives
 * drivers a stable, colour-free array with the exact fields needed to
 * pick a lane without re-querying host-cp.
 *
 * Secret redaction: lane records contain no secrets (names, tasks, and
 * status strings are all operator-visible). No redaction needed.
 */
/**
 * Per-lane row in the `lanes list --json` payload.
 * Field names are load-bearing — add new fields freely, never rename.
 */
export interface LaneListJsonEntry {
    /** Lane name (lowercase + digits + hyphens). */
    readonly name: string;
    /** Task prompt the lane was created with. */
    readonly task: string;
    /**
     * Lifecycle status string as reported by host-cp.
     * Typically 'running' | 'idle' | 'stopped' but treated as opaque string
     * here — drivers should compare against known values defensively.
     */
    readonly status: string;
    /** Underlying tmux session name (e.g. "claude-lane-main"). */
    readonly tmuxSession: string;
    /** ISO-8601 creation timestamp, as returned by host-cp. */
    readonly createdAt: string;
    /**
     * True for the world's main lane (spawned by dispatch, not by
     * `olam lanes create`). False or absent → user-created lane.
     */
    readonly isMain: boolean;
}
/** Top-level shape emitted by `olam lanes list <world> --json`. */
export interface LanesListJson {
    /** World id that was queried. */
    readonly worldId: string;
    /** Number of lanes returned. */
    readonly count: number;
    readonly lanes: readonly LaneListJsonEntry[];
}
/** Input shape as returned by host-cp GET /lanes. Field names match the API. */
export interface HostCpLaneInfo {
    readonly name: string;
    readonly task: string;
    readonly status: string;
    readonly tmuxSession: string;
    readonly createdAt: string;
    readonly isMain?: boolean;
}
/**
 * Serialise host-cp's lane list to the stable `--json` wire shape.
 *
 * @param worldId  The world id that was queried (echoed back for driver convenience).
 * @param lanes    Lane array from host-cp (may be empty).
 * @returns        JSON string — no trailing newline (caller adds it).
 */
export declare function renderLanesListJson(worldId: string, lanes: readonly HostCpLaneInfo[]): string;
//# sourceMappingURL=lanes-list-json.d.ts.map