/** Stable shape written to disk; bump schemaVersion if breaking changes are made. */
export interface BuildOutputRecord {
    schemaVersion: 1;
    jobId: string;
    appId: string;
    platform: 'ios' | 'android';
    buildMode: 'debug' | 'release';
    status: string;
    outputUrl: string | null;
    qrCodeAscii: string | null;
    qrCodePngPath: string | null;
    finishedAt: string;
}
export interface WriteBuildOutputRecordInput {
    jobId: string;
    appId: string;
    platform: 'ios' | 'android';
    buildMode: 'debug' | 'release';
    status: string;
    outputUrl: string | null;
}
/**
 * Write a build-output record to `recordPath` (JSON) and, when a URL is available,
 * a PNG QR code to `<recordPath>.qr.png`. Returns the parsed record exactly as
 * written so callers can log a summary without re-reading the file.
 *
 * Failures rendering the PNG are non-fatal — the JSON is always written. The
 * record's `qrCodePngPath` field is null when the PNG could not be produced.
 */
export declare function writeBuildOutputRecord(recordPath: string, input: WriteBuildOutputRecordInput, onWarn?: (msg: string) => void): Promise<BuildOutputRecord>;
/**
 * Returns a deterministic temp-file path for the build output record for a
 * given (appId, platform) pair. Both the build hand-off (command emit) and
 * the confirm (record read) call this helper so that the path is never passed
 * back and forth across an MCP boundary.
 *
 * appId is sanitized: all `/` and `\` characters are replaced with `_`, and
 * any `..` sequences are replaced with `_`, to prevent path traversal.
 */
export declare function defaultBuildRecordPath(appId: string, platform: 'ios' | 'android'): string;
/**
 * Read a build output record from `path`. Returns the parsed `BuildOutputRecord`
 * if the file exists, is valid JSON, and the parsed object contains a string
 * `jobId` property. Returns `null` in all other cases (missing file, parse
 * error, missing/wrong-type jobId).
 */
export declare function readBuildOutputRecord(path: string): Promise<BuildOutputRecord | null>;
