/** Prefix applied to Lisa command-as-skill names (e.g. `lisa-git-commit`). */
export declare const LISA_COMMAND_SKILL_PREFIX = "lisa-";
/** Prefix applied to Lisa command display names (e.g. `lisa:git:commit`). */
export declare const LISA_COMMAND_DISPLAY_PREFIX = "lisa:";
/**
 * Suffixes that mark a plugin directory as a per-harness fanout VARIANT rather
 * than a canonical source. Lisa generates `<plugin>-agy`, `<plugin>-copilot`,
 * and `<plugin>-cursor` variants from the canonical `<plugin>` for those
 * harnesses (see the stack-per-agent fanout). They are reformatted copies — the
 * copilot variant even renames agents to `*.agent.md` — so an overlay that reads
 * the canonical Markdown format (Codex, OpenCode) must ingest the canonical
 * plugins, not these variants, or it ships duplicates / harness-specific copies.
 */
export declare const HARNESS_VARIANT_PLUGIN_SUFFIXES: readonly ["-agy", "-copilot", "-cursor"];
/**
 * Predicate: is `pluginName` a per-harness fanout variant (agy/copilot/cursor)?
 * Canonical plugins (`lisa`, `lisa-typescript`, `lisa-wiki`, …) return false.
 * @param pluginName - Plugin directory name under `plugins/`.
 * @returns True when the plugin is a harness-specific variant, not a source.
 */
export declare function isHarnessVariantPlugin(pluginName: string): boolean;
/**
 * A plugin-name filter: given a plugin directory name, return true to include
 * it in discovery. Used to restrict an overlay to canonical (non-variant)
 * plugins.
 */
export type PluginFilter = (pluginName: string) => boolean;
/** A single discovered bundled-skill folder source. */
export interface BundledSkillSource {
    /** Skill name (matches the SKILL.md `name` frontmatter and folder name). */
    readonly skillName: string;
    /** Absolute path to the source skill folder. */
    readonly sourceDir: string;
    /** Relative file paths inside the skill folder (recursive). */
    readonly files: readonly string[];
}
/** A discovered Lisa command source to be converted into a skill. */
export interface LisaCommandSource {
    /** Final skill name including the `lisa-` prefix. */
    readonly skillName: string;
    /** Absolute path to the source command `.md` file. */
    readonly sourcePath: string;
    /** Original path components for display (e.g. "lisa:jira:create"). */
    readonly displayName: string;
}
/**
 * Load a skill distribution policy file that marks Lisa-maintainer-only skills
 * as non-distributable.
 *
 * Missing or malformed policy files fail open to an empty set so tests and
 * minimal package layouts remain usable.
 * @param lisaDir - Absolute path to the Lisa repo / installed package.
 * @param policyRelativePath - Path to the policy JSON, relative to `lisaDir`.
 * @returns Skill directory names that must not be installed into host projects.
 */
export declare function loadSkillDenylist(lisaDir: string, policyRelativePath: string): Promise<ReadonlySet<string>>;
/**
 * Walk `plugins/<plugin>/skills/<name>/` discovering each skill folder.
 *
 * De-duplicates by skill name with last-wins semantics: the base `lisa` plugin
 * is always processed first, then remaining plugins in alphabetical order, so
 * any stack-specific or third-party plugin overrides the base regardless of how
 * the name sorts.
 * @param lisaDir - Absolute path to the Lisa repo / installed package.
 * @param denylistedSkills - Skill names that must not ship to host projects.
 * @param pluginFilter - Optional predicate to restrict which plugin directories
 *   are walked. Defaults to including every plugin.
 * @returns De-duplicated bundled-skill sources, sorted by skill name.
 */
export declare function discoverBundledSkills(lisaDir: string, denylistedSkills: ReadonlySet<string>, pluginFilter?: PluginFilter): Promise<readonly BundledSkillSource[]>;
/**
 * Walk `plugins/<plugin>/commands/**\/*.md` discovering each command file.
 * Nested directories produce dash-joined skill names: `commands/git/commit.md`
 * → `lisa-git-commit`.
 *
 * De-duplicates by final skill name with last-wins semantics (base `lisa`
 * first, then remaining plugins alphabetically) so stack-specific plugins
 * override the base regardless of name sort order.
 * @param lisaDir - Absolute path to the Lisa repo / installed package.
 * @param pluginFilter - Optional predicate to restrict which plugin directories
 *   are walked (e.g. canonical-only for the OpenCode native command surface).
 *   Defaults to including every plugin.
 * @returns De-duplicated command-derived skill sources, sorted by skill name.
 */
export declare function discoverLisaCommands(lisaDir: string, pluginFilter?: PluginFilter): Promise<readonly LisaCommandSource[]>;
/**
 * Strip a redundant leading `lisa` segment from nested command paths.
 * `commands/lisa/git/commit.md` and `commands/git/commit.md` both normalize to
 * `["git", "commit"]` so display/skill names stay `lisa:git:commit` /
 * `lisa-git-commit`.
 * @param segments - Command path without the `.md` extension.
 * @returns Segments with an optional leading `lisa` directory removed.
 */
export declare function normalizeLisaCommandSegments(segments: readonly string[]): readonly string[];
/**
 * Convert command path segments into the cross-runtime skill alias.
 * @param segments - Command path without the `.md` extension.
 * @returns Hyphenated skill name, e.g. `["git", "commit"]` → `lisa-git-commit`.
 */
export declare function commandSegmentsToLisaSkillName(segments: readonly string[]): string;
/**
 * Convert command path segments into the user-facing slash-command name.
 * @param segments - Command path without the `.md` extension.
 * @returns Colon-scoped command name, e.g. `["git", "commit"]` → `lisa:git:commit`.
 */
export declare function commandSegmentsToLisaDisplayName(segments: readonly string[]): string;
/**
 * Recursively list all file paths under `root` as relative paths. Pure
 * recursion (no mutable accumulator) so the result is referentially clean.
 * @param root - Absolute path to the directory to walk.
 * @returns Relative paths of every regular file under `root`.
 */
export declare function listFilesRecursive(root: string): Promise<readonly string[]>;
//# sourceMappingURL=lisa-skill-sources.d.ts.map