/**
* Bidirectional translator between an ADP-style Markdown ADR and the
* setup-agents `SetupAgentsDecisionRecord` (JSONL) shape (GH-597 slice S4).
*
* ADP ADR sections: a `#
` heading, then `## Context`, `## Decision`,
* `## Consequences`, `## Alternatives`. The record has no dedicated slot for
* every ADR section, so section text without a direct field is carried inside
* `rationale` under a delimiter block. This makes both round-trips stable:
* record to markdown to record, and markdown to record to markdown.
*/
import type { SetupAgentsDecisionRecord } from '../types/index.js';
/**
* Delimiter that separates the free-form rationale (the ADR Context section)
* from carry-over fields that have no dedicated record slot. Everything after
* this marker inside `rationale` is machine-managed and re-expanded on the way
* back to Markdown; a human editing `rationale` should stay above it.
*/
export declare const ADR_CARRY_DELIMITER = "";
/**
* Convert an ADP-style Markdown ADR into a `SetupAgentsDecisionRecord`.
*
* Section mapping:
* - `# title` → `summary`
* - `## Context` → `rationale` body (also carried verbatim for round-trip)
* - `## Decision` → `outcome`
* - `## Consequences` → carried under the rationale delimiter (no record slot)
* - `## Alternatives` → `alternatives[]`
*
* `owner`, `id`, `createdAt`, `taskIds` are filled from options or defaults.
*/
export declare function adrMarkdownToRecord(md: string, options?: {
owner?: string;
id?: string;
createdAt?: string;
taskIds?: string[];
evidenceIds?: string[];
}): SetupAgentsDecisionRecord;
/**
* Render a `SetupAgentsDecisionRecord` back into an ADP-style Markdown ADR.
*
* Prefers carried values (from a prior `adrMarkdownToRecord`) so that
* `markdown → record → markdown` reproduces the original document, and falls
* back to the plain record fields (`summary`, `rationale`, `outcome`,
* `alternatives`) for records that never came from an ADR.
*/
export declare function recordToAdrMarkdown(record: SetupAgentsDecisionRecord): string;