import type { SkillRepository } from '../repositories/SkillRepository.js'; import type { SkillDependencyRepository } from '../repositories/SkillDependencyRepository.js'; import type { RiskScoreHistoryRepository } from '../repositories/RiskScoreHistoryRepository.js'; import type { Database } from '../db/database-interface.js'; import { type ProgressCallback, type InstallOptions, type InstallResult, type InstallFromContentOptions, type UninstallOptions, type UninstallResult, type RegistryLookup, type CoInstallRecorder, type QuarantineStatus, type AiDefenceFeedback } from './skill-installation.types.js'; import { type ClientId } from '../install/paths.js'; export interface SkillInstallationServiceParams { db: Database; skillRepo: SkillRepository; skillDependencyRepo: SkillDependencyRepository; skillsDir?: string; manifestPath?: string; onProgress?: ProgressCallback; registryLookup?: RegistryLookup; coInstallRecorder?: CoInstallRecorder; sessionInstalledSkillIds?: string[]; quarantineLookup?: (skillId: string) => QuarantineStatus | null; riskHistoryRepo?: RiskScoreHistoryRepository; aiDefenceFeedback?: AiDefenceFeedback; /** * SMI-5894 (Wave 1 Step 3): the client this install/uninstall targets. * Defaults to the canonical client (`claude-code`) — every existing * caller that doesn't pass it (MCP's install/uninstall tools, and any * pre-Wave-1 test) keeps writing/reading manifest entries under the * legacy bare-name key, unchanged. Only used for manifest keying * (`manifestKeyFor`) and post-install tips — callers still supply their * own already-resolved `skillsDir` (e.g. via `resolveClientPath`/ * `getInstallPath`); this does not re-derive `skillsDir` from `client`. */ client?: ClientId; companionBaseDir?: string; } export declare class SkillInstallationService { private readonly db; private readonly skillRepo; private readonly skillDependencyRepo; private readonly skillsDir; private readonly manifest; private readonly onProgress; private readonly registryLookup?; private readonly coInstallRecorder?; private readonly sessionInstalledSkillIds; private readonly quarantineLookup?; private readonly riskHistoryRepo?; private readonly aiDefenceFeedback?; private readonly client; private readonly companionBaseDir; constructor(params: SkillInstallationServiceParams); install(skillId: string, options?: InstallOptions): Promise; /** * SMI-5905 Wave 1: install an already-resolved private-registry skill's * content to disk. Thin delegate — see skill-installation.content.ts for * the full implementation and its documented scope trim vs. install(). */ installFromContent(options: InstallFromContentOptions): Promise; uninstall(skillName: string, options?: UninstallOptions): Promise; } //# sourceMappingURL=skill-installation.service.d.ts.map