/**
 * olam skills — sync, dry-run/diff, list-installed, show.
 *
 *   olam skills sync [--dry-run] [--atlas-user <u>]
 *   olam skills diff [--atlas-user <u>]            (alias of `sync --dry-run`)
 *   olam skills list                                (lists deployed artifacts)
 *   olam skills show <name>                         (shows details for a deployed artifact)
 */
import type { Command } from 'commander';
import { type SourceConfig } from '@olam/core/src/skill-sources/index.js';
/**
 * ADR-021 A10 — readline-based prompt for sync-time source-prefix consent.
 *
 * Branches on input.kind:
 *   - 'first-time' → "<source> suggests prefix '<p>:'<scope>. Adopt? [Y/n]"
 *   - 'changed'    → "<source> changed prefix from '<old>:' to '<new>:'. Accept change? [Y/n]"
 *
 * Default Y on empty input (matches the rest of the chain's onboard-friendly
 * defaults). Returns true on accept, false on reject.
 *
 * Injectable via `__olamTestSourcePrefixPrompt` globalThis for tests so the
 * sync-level integration tests can bypass readline.
 */
export type SyncSourcePrefixPromptFn = (input: {
    sourceName: string;
    sourceId: string;
    newConfig: SourceConfig;
    priorConfig?: SourceConfig;
    kind: 'first-time' | 'changed';
}) => Promise<boolean>;
export interface DeployedEntry {
    bucket: string;
    name: string;
    target: string;
    sourceId: string | undefined;
}
/**
 * Stable `--json` payload for `olam skills list`. One object per deployed
 * symlink. `sourceId` is `null` when the symlink target does not resolve to a
 * registered olam source (e.g. an operator-managed symlink). The array is
 * always emitted — empty `[]` when nothing is deployed — so scripts can parse
 * without special-casing prose output.
 */
export interface DeployedEntryJson {
    /** Artifact bucket: skills | agents | scripts | rules | commands */
    bucket: string;
    /** Basename of the deployed symlink */
    name: string;
    /** Absolute path the symlink resolves to */
    target: string;
    /**
     * The source ID (hex) that owns this artifact, or `null` when the symlink
     * does not trace back to a registered source.
     */
    sourceId: string | null;
}
export declare function listDeployed(): DeployedEntry[];
export declare function registerSkills(program: Command): void;
//# sourceMappingURL=skills.d.ts.map