/**
 * Parser for the posted-review-body marker block.
 *
 * The marker block is an HTML comment opened by `<!-- oat-review-metadata`
 * carrying simple single-line YAML-ish scalars (see design.md → Data Models →
 * Posted-review-body). GitHub renders the comment as nothing but preserves it
 * across round-trips, so it is the durable routing channel between the
 * provide-remote skills (writers) and the receive-remote skills (readers).
 *
 * This is intentionally a tolerant single-line scalar parser — NOT a full YAML
 * parser. The schema is flat (no nested structures), so a line-oriented reader
 * is sufficient and avoids a dependency the schema does not need.
 */
/** Token that opens the marker comment block. */
export declare const MARKER_BLOCK_OPEN = "oat-review-metadata";
export type ReviewInvocation = 'manual' | 'auto';
export interface MarkerBlock {
    /** Always `true` for an OAT provide-remote review; the discriminator. */
    oat_provide_remote: true;
    /** Full 40-char hex SHA of the reviewed PR HEAD. */
    oat_review_head_sha: string;
    /** Scope token (`pNN`, `final`, …) or the `ad-hoc` sentinel. */
    oat_review_scope: string;
    /**
     * Project path — present only on the project rail. Key existence (not a
     * `null` value) discriminates project rail from ad-hoc rail.
     */
    oat_project?: string;
    /** How the review was invoked. Defaults to `manual` when omitted. */
    oat_review_invocation: ReviewInvocation;
    /** Forward-compat bag for unknown marker keys. Omitted when none seen. */
    extras?: Record<string, string>;
}
/**
 * Parse the first OAT marker block out of a posted-review body.
 *
 * Returns `null` when the body is not an OAT provide-remote review — either
 * because no marker block exists, because `oat_provide_remote` is not `true`,
 * or because the recorded head SHA is not a valid 40-char hex SHA (a value the
 * caller could not safely narrow against; returning null lets the caller fall
 * back to full-scope review).
 */
export declare function parseMarkerBlock(body: string): MarkerBlock | null;
//# sourceMappingURL=marker-parser.d.ts.map