/**
 * Parity-drift sensor for `totem doctor --parity` (mmnto-ai/totem-strategy#448).
 *
 * Detection is wired across all three tractability classes (mmnto-ai/totem#2073):
 *   - **version-pinned** (PR-1, mmnto-ai/totem#2069): each deps contract whose id
 *     resolves an `@mmnto/*` package name runs through the core
 *     `detectVersionPinnedContract` engine (pin-currency verdict, local-only floor).
 *   - **mechanical content-equality** (mmnto-ai/totem#2073): three artifact shapes,
 *     all local-read-only against the running `@mmnto/cli`'s OWN in-process template:
 *       · **skills** (`claude-skills`): managed-block equality of
 *         `.claude/skills/<name>/SKILL.md` via `detectMechanicalContract`.
 *       · **git-hooks**: per-repo REGENERATED whole-file/region equality of the four
 *         `.git/hooks/*` (package-manager + tier parameterized) via
 *         `detectGeneratedArtifactContract` — catches stale-version drift (#1854).
 *       · **session-start-orientation**: STATIC whole-file equality of the
 *         `.claude/hooks/SessionStart.cjs` + `.gemini/hooks/SessionStart.js` templates,
 *         also via `detectGeneratedArtifactContract` (no parameterization).
 *   - **manual-attestation** (mmnto-ai/totem#2080): the no-mechanical-sensor class —
 *     `detectManualAttestationContract` surfaces the doctrine-currency row / vendor-SDK
 *     pin as `info` (or honest-absent `skip`), NEVER pass/warn/fail (the "never fails"
 *     contract; structurally cannot gate under `--strict`).
 *
 * The remaining contracts — the file-value-equality bot-configs (`cr-profile` etc.)
 * and the structural-presence dimensions — keep the `skip` "not yet implemented" stub;
 * their detection is a follow-on.
 *
 * The parity sensor owns its OWN render + result type (`ParityLine`) carrying a
 * WIDER status vocabulary (pass/warn/fail/info/unknown/skip) than the shared
 * `CheckStatus`, so the verdict-state split (#2073 req #1) never ripples
 * `CheckStatus` across the unrelated doctor checks.
 *
 * Sensor-not-gate: the detectors return `skip`/`warn`/`pass`/`info`/`unknown` —
 * never `fail`. The `--strict` exit-code decision lives at the CLI edge: a
 * `warn` from a `blocking: true` contract is promoted to `fail` (non-zero) ONLY
 * under `--strict`. `info`/`unknown` are never gated. Honest-absent (Tenet 14):
 * unconfigured → exactly one `skip` line; configured-but-missing / unparseable /
 * unsupported-schema → `warn`, never a crash. Dynamic-import `@mmnto/totem` to
 * keep core off the CLI cold-start graph, matching the other doctor checks.
 */
import type { ParityContractVerdict } from '@mmnto/totem';
/**
 * A parity output line — the per-contract verdict plus its display name. Carries
 * the WIDER `ParityContractVerdict` status vocabulary (pass/warn/fail/info/
 * unknown/skip) rather than the shared `CheckStatus`, so the sensor honors the
 * verdict-state split (#2073 req #1) without rippling `CheckStatus` across the
 * other doctor checks. The parity command owns its own renderer.
 */
export interface ParityLine extends ParityContractVerdict {
    name: string;
}
/**
 * Result of a parity check: the rendered `ParityLine`s plus the set of contract
 * ids that produced a drift `warn` AND are `blocking: true`. The command
 * promotes exactly these to `fail` under `--strict` — carrying the ids here
 * avoids re-loading the manifest at the CLI edge to recover the `blocking` flag.
 */
export interface ParityCheckResult {
    results: ParityLine[];
    /** Contract ids whose `warn` is `--strict`-promotable (blocking + drift). */
    blockingDriftIds: string[];
    /**
     * Whether a repo-local `orient.parityManifest` field was configured (i.e.
     * `configValue !== undefined` after the global-leak guard). NOT whether the
     * manifest file loaded — a configured-but-broken manifest is `configured: true`
     * so the `--strict` fold surfaces the error instead of silently no-op'ing.
     * Lets the CLI edge fold parity into `--strict` only for repos that opted in
     * (mmnto-ai/totem#2085, mmnto-ai/totem-strategy#545 Half 2).
     */
    configured: boolean;
}
/**
 * Resolve, parse, and report the parity manifest as `ParityLine`s.
 *
 * Returns `{ results, blockingDriftIds }`: `results[0]` is always the section
 * summary line; in the `ok` path it is followed by one line per contract (or
 * per artifact, for multi-artifact mechanical contracts) — a pin-currency
 * verdict for the deps version-pinned contracts, a content-equality verdict for
 * the mechanical skills contracts, and a `skip` stub for everything else. All
 * non-`ok` paths return a single summary entry and an empty `blockingDriftIds`.
 *
 * @param cwd The directory to resolve config + manifest against (config/repo root).
 */
export declare function checkParity(cwd: string): Promise<ParityCheckResult>;
export interface ParityCliOptions {
    /**
     * Strict mode (Proposal 273 / 279 `--strict` semantics): promote drift to a
     * gate failure (non-zero exit) via a thrown TotemError.
     *
     * Sensor-not-gate is the default: a drift `warn` reports and exits 0. Under
     * `--strict`, a `warn` from a `blocking: true` contract (its id carried in
     * `checkParity`'s `blockingDriftIds`) is rendered as `FAIL` and promoted to a
     * non-zero exit. Non-blocking drift stays a `warn` even under `--strict`, and
     * `info` (attested fork) / `unknown` (unprovable) NEVER promote — the
     * contract's `blocking` flag on a `warn`, not the flag alone, gates the exit.
     */
    strict?: boolean;
    /**
     * Folded-into-`--strict` mode (mmnto-ai/totem#2085, mmnto-ai/totem-strategy#545
     * Half 2): when set, the command no-ops (renders nothing, throws nothing, exits 0)
     * if no repo-local `orient.parityManifest` is configured — so `doctor --strict`
     * exercises parity for opted-in repos while staying byte-identical for non-adopters
     * (satur8d's zero-churn condition). Default (omitted) preserves the standalone
     * `doctor --parity` behavior, which still renders the honest-absent SKIP line.
     */
    onlyWhenConfigured?: boolean;
    /** Test seam — production callers omit and the command uses `process.cwd()`. */
    cwdForTest?: string;
}
/**
 * CLI entry — runs `checkParity`, renders each `ParityLine`, and throws a
 * `TotemError` when a blocking contract drifted under `--strict` so the
 * top-level `handleError` produces the non-zero exit code (no direct
 * `process.exit` per AGENTS.md).
 */
export declare function doctorParityCliCommand(options?: ParityCliOptions): Promise<void>;
//# sourceMappingURL=doctor-parity.d.ts.map