/**
 * Pure JSON serialiser for `olam repos list --json`.
 *
 * Kept separate from the command action so the wire contract is
 * unit-testable without a filesystem round-trip (mirrors the pattern
 * used by `auth-list-json.ts`, `renderPsJson` in ps.ts, and
 * `servicesStatusJson` in services.ts).
 *
 * WHY this exists: agent/script drivers (CI pipelines, Rico, flywheel
 * chain skills) need to discover registered repo paths before spawning
 * worlds or dispatching work with `--repo`. The human table is colorized
 * and reflows per terminal width, so scraping it is brittle and breaks
 * when column widths change. This serialiser gives drivers a stable,
 * color-free array: each entry carries the name, resolved path, and
 * optional metadata needed to pick a repo without re-querying the registry.
 *
 * Secret redaction: the optional `url` field can carry HTTPS credentials
 * in the URL userinfo component (e.g. `https://token:x-oauth-basic@github.com/...`).
 * The serialiser redacts userinfo credentials with `***` before emitting,
 * matching the same pattern used by `olam skills source list --json`.
 * The `path` field is a local filesystem path and carries no secrets.
 */
import type { RepoEntry } from '@olam/core/src/global-config/schema.js';
/**
 * Per-repo row in the `repos list --json` payload.
 * Field names are load-bearing — add new fields freely, never rename.
 */
export interface RepoListJsonEntry {
    /** Registered repo name (lowercase, digits, dash). */
    readonly name: string;
    /** Resolved absolute filesystem path (may still be tilde-prefixed when stored as such). */
    readonly path: string;
    /**
     * Git remote URL, if registered, with credentials redacted.
     * null when the entry has no url field.
     */
    readonly url: string | null;
    /** Optional human-readable description. */
    readonly description: string | null;
    /** Default branch name (e.g. "main"). null when not set. */
    readonly defaultBranch: string | null;
    /** Unix epoch ms when the entry was first registered. */
    readonly addedAt: number;
    /** Unix epoch ms of the last update. */
    readonly updatedAt: number;
}
/** Top-level shape emitted by `olam repos list --json`. */
export interface ReposListJson {
    /** Number of registered repos. */
    readonly count: number;
    readonly repos: readonly RepoListJsonEntry[];
}
/**
 * Serialise the global repo registry to the stable `--json` wire shape.
 * Returns a JSON string (no trailing newline — caller adds it).
 */
export declare function renderReposListJson(entries: readonly RepoEntry[]): string;
//# sourceMappingURL=repos-list-json.d.ts.map