import type { Skill, SkillDiagnostic, LoadSkillsResult, SkillConfig } from './types.js';
export declare function loadSkills(options: {
    workspaceDir?: string;
    globalDir?: string;
    builtinDir?: string;
    extraDirs?: string[];
}): LoadSkillsResult;
export interface SkillLoader {
    init: (workspace: string, builtin: string | null) => LoadSkillsResult;
    load: () => LoadSkillsResult;
    reload: () => LoadSkillsResult;
    /** Recompute `<available_skills>` from disk-loaded skills and current ~/.xopc/skills.json (no filesystem rescan). */
    refreshPromptFromConfig: () => void;
    getSkills: () => Skill[];
    getPrompt: () => string;
    getDiagnostics: () => SkillDiagnostic[];
    getLastLoadTime: () => number;
    getSkillByName: (name: string) => Skill | undefined;
    getEnabledSkills: (config?: Record<string, SkillConfig>) => Skill[];
}
export declare function createSkillLoader(): SkillLoader;
export type { Skill, SkillMetadata, SkillConfig, SkillInstallSpec, SkillInstallResult, SkillInstallRequest, LoadSkillsResult, SkillSnapshot, } from './types.js';
export { installSkill, findInstallSpec, hasBinary, getDefaultInstallerPreferences, type InstallerPreferences, type InstallContext, } from './installer.js';
export { scanSkillDirectory, formatScanSummary, collectSkillInstallWarnings, type ScanSummary, type SecurityFinding, type Severity, } from './scanner.js';
export { resolveSkillConfig, applySkillEnvOverrides, getSkillEnvironment, createSkillConfigManager, isSkillEnabled, validateSkillConfig, type SkillConfigFile, } from './config.js';
export { SkillTestFramework, SkillTestRunner, formatTestResults, formatTestResultsJson, formatTestResultsTap, type TestResult, type TestStatus, type SkillTestReport, type TestOptions, type TestRunnerOptions, } from './test-framework.js';
