/**
 * olam skills source — manage registered skill sources.
 *
 *   olam skills source list
 *   olam skills source add --name <n> --git-url <url> [--branch <b>]
 *   olam skills source remove <id>
 *   olam skills source pull <id>
 *   olam skills source show <id>
 */
import type { Command } from 'commander';
import { type SourceConfig } from '@olam/core/src/skill-sources/index.js';
/**
 * Source-config prefix gate (ADR-021) for `source add`. Fired AFTER clone
 * succeeds, BEFORE the post-add follow-up picker. Asks operator whether to
 * adopt the source's recommended prefix/scope when:
 *   - the source ships a parseable `shared/source-config.yaml`, AND
 *   - the source-config carries at least one prefix-related field, AND
 *   - the operator did NOT pass an explicit `--prefix` override on `source add`.
 *
 * Decision matrix (mirrors the sync-time gate in engine.syncSkills):
 *   1. `--auto-accept-source-prefix` flag set → silent adopt, method='flag'.
 *   2. TTY available + no flag → prompt; accept defaults to Y.
 *      Accept → adopt, method='interactive'.
 *      Reject → persist just lastSeenSourcePrefix so future syncs don't re-prompt
 *               until the source-config changes; method='interactive', action='rejected'.
 *   3. Non-TTY + no flag → skip silently; next `olam skills sync` triggers the
 *      sync-time gate (which has its own non-TTY/skip semantics).
 *
 * Injectable `__olamTestSourcePrefixPrompt` lets tests bypass readline.
 */
export type SourcePrefixPromptFn = (input: {
    sourceName: string;
    newConfig: SourceConfig;
}) => Promise<boolean>;
/**
 * Post-add interactive picker — surfaces two follow-ups after a
 * successful `source add` so operators don't have to remember the
 * separate `sync` + `install-hook` invocations:
 *
 *   1. Sync now? [Y/n]
 *   2. Install SessionStart hook so future sessions auto-sync? [Y/n]
 *      (only offered if hook not already installed at the chosen scope)
 *
 * Default Yes on both — onboard-friendly without forcing the umbrella
 * verb (`olam skills onboard`) on operators who want the picker shape.
 *
 * Non-interactive (no-TTY) callers skip both prompts silently and keep
 * the pre-Phase-D behavior. CLI flags `--sync-now` / `--no-sync-now`
 * / `--install-hook` / `--no-install-hook` give scripts explicit
 * control.
 */
export interface PostAddPromptInput {
    hookAlreadyInstalled: boolean;
}
export interface PostAddPromptResult {
    syncNow: boolean;
    installHook: boolean;
}
export type PostAddPromptFn = (input: PostAddPromptInput) => Promise<PostAddPromptResult>;
export declare function registerSkillsSource(program: Command): void;
//# sourceMappingURL=skills-source.d.ts.map