import { type ScaffoldOutcome } from './host-hooks.js';
import { type Ecosystem } from './init-detect.js';
export type { AiToolInfo, HookInstallerResult } from './init-detect.js';
export { buildNpxCommand, detectEmbeddingTier } from './init-detect.js';
export { AI_PROMPT_BLOCK, generateConfig, generateConfigForFormat, REFLEX_VERSION, } from './init-templates.js';
export declare const OLLAMA_FLOOR_DEFAULT_BASE_URL = "http://localhost:11434";
export declare function probeOllamaFloor(): Promise<{
    available: boolean;
    baseUrl: string;
    message: string;
}>;
/**
 * Scaffold a file with idempotency — skips if the marker is already present.
 * Creates parent directories as needed.
 */
export declare function scaffoldFile(filePath: string, content: string, marker?: string): {
    action: 'created' | 'exists' | 'skipped';
    err?: string;
};
/**
 * Merge Totem hooks into .claude/settings.local.json without overwriting
 * existing user-defined hooks. Installs the Bash matcher for shield-gate.
 */
export declare function scaffoldClaudeHooks(filePath: string): ScaffoldOutcome;
/**
 * Merge the PreWriteShield hook into .claude/settings.json (committed,
 * team-level) without overwriting existing user-defined hooks. Installs
 * the Write|Edit matcher for write-time xrepo-qualify-refs enforcement.
 *
 * Distinct from scaffoldClaudeHooks: that targets settings.local.json
 * (per-developer environment safety); this targets settings.json
 * (team-level governance, sealed at mmnto-ai/totem-strategy#145).
 */
export declare function scaffoldClaudeWriteShield(filePath: string): ScaffoldOutcome;
/**
 * Merge the Claude SessionStart hook entry into .claude/settings.json
 * (committed, team-level) without overwriting existing user-defined
 * hooks. Symmetric with the Gemini-side .gemini/hooks/SessionStart.js
 * install (mmnto-ai/totem#1845 slice 1) — orientation IS a team-level
 * guarantee, so it shares the committed settings.json placement with
 * Phase B's PreWriteShield.
 */
export declare function scaffoldClaudeSessionStart(filePath: string): ScaffoldOutcome;
/**
 * Install or refresh a Claude Code skill file at the target path using
 * marker-based replacement. The canonical content lives between
 * `SKILL_MARKER_START` and `SKILL_MARKER_END`; content AFTER the end marker
 * is user-customization territory and survives across refreshes (Phase C
 * slice 3 design doc, mmnto-ai/totem#1890).
 *
 * Outcomes:
 * - `created` — file didn't exist; wrote canonical
 * - `refreshed` — file existed with markers; replaced inside-marker content,
 *   preserved everything after the end marker
 * - `unchanged` — file existed with markers and the merged content was
 *   byte-identical to the existing content
 * - `preserved` — file exists without the end marker (user-authored,
 *   pre-marker scaffold, or malformed); skipped to preserve user content.
 *   Surfaces a warning hint via `err` so callers can log a migration nudge.
 */
export declare function scaffoldClaudeSkill(filePath: string, canonicalContent: string, options?: {
    force?: boolean;
}): {
    action: 'created' | 'refreshed' | 'unchanged' | 'preserved';
    /** True only when the no-marker guard was suppressed by `options.force`.
     *  Lets callers emit the destructive-by-consent warning + summary line
     *  surface (W3.5, mmnto-ai/totem#2008). */
    forceSuppressed?: boolean;
    err?: string;
};
export declare function scaffoldMcpConfig(filePath: string, serverEntry: Record<string, unknown>): {
    action: 'created' | 'merged' | 'skipped';
    err?: string;
};
/**
 * Install the Universal AI Developer Baseline lessons into the lessons file.
 * Returns 'installed', 'exists' (already present), or 'skipped' (user declined).
 * In non-TTY mode (CI), defaults to installing without prompting.
 */
export declare function installBaselineLessons(baselinePath: string, rl: import('node:readline/promises').Interface, ecosystems?: Ecosystem[]): Promise<'installed' | 'exists' | 'skipped'>;
export type ReflexStatus = 'current' | 'outdated' | 'missing';
/** Detect whether the reflex block in a file is current, outdated, or missing. */
export declare function detectReflexStatus(content: string): ReflexStatus;
/**
 * Upgrade a reflex block from legacy (v1, no boundaries) or older versioned
 * blocks to the current version. Returns the updated file content.
 *
 * Strategy:
 * - If start/end boundaries exist, replace between them (clean swap).
 * - If only the legacy sentinel exists (v1), find the block start and
 *   look for the next user-owned `## ` heading or EOF as the boundary.
 * - If the boundary can't be determined cleanly, append the new block
 *   and set `clean: false` so the caller can warn about manual cleanup.
 */
export declare function upgradeReflexes(content: string): {
    content: string;
    clean: boolean;
};
export declare function initCommand(options?: {
    bare?: boolean;
    pilot?: boolean;
    strict?: boolean;
    global?: boolean;
    /** Force-overwrite distributed skill files lacking canonical markers
     *  (W3.5, mmnto-ai/totem#2008). Default behavior preserves user-authored
     *  or pre-marker scaffold files; force-mode suppresses ONLY the no-marker
     *  guard. Marker-bearing files refresh via the normal path regardless. */
    forceSkillRefresh?: boolean;
    /** Install action-gate PreToolUse hooks (PR-C, mmnto-ai/totem#2048): a
     *  comma-list of gate names (validated against `knownGateEvents()`) or
     *  the literal `all`. Routes through the SAME `installGates` path the
     *  `gate install` verb uses — no second copy of the merge logic. */
    gates?: string;
    /** Wire `orient.parityManifest` to the installed doctrine pin and exit
     *  (mmnto-ai/totem#2088, Proposal 292 S1). Non-interactive; honest-absent
     *  when the `@mmnto/strategy-doctrine` pin is not installed. */
    doctrine?: boolean;
    /** Override home directory for testing. */
    _homeDir?: string;
}): Promise<void>;
//# sourceMappingURL=init.d.ts.map