import type { Config } from '../config/schema.js'; import type { SkillDiagnostic, SkillMetadata, SkillToolConditions } from '../agent/skills/types.js'; import type { ProjectService } from './project-service.js'; export type ProjectSkillErrorCode = 'project_not_found' | 'project_workspace_required' | 'project_workspace_missing' | 'project_workspace_not_writable' | 'skill_not_found' | 'invalid_skill_id'; export declare class ProjectSkillError extends Error { readonly code: ProjectSkillErrorCode; readonly status: 400 | 403 | 404 | 409; constructor(code: ProjectSkillErrorCode, status: 400 | 403 | 404 | 409, message: string); } export interface ProjectSkillSummary { id: string; name: string; description: string; category?: string; disableModelInvocation: boolean; metadata: SkillMetadata; toolConditions?: SkillToolConditions; requiredEnvVarNames?: string[]; } export interface ProjectSkillListResult { workspaceRoot: string; skillsRoot: string; items: ProjectSkillSummary[]; diagnostics: SkillDiagnostic[]; } interface ProjectSkillServiceOptions { projects: ProjectService; getConfig: () => Config; refreshSkills: () => void | Promise; } export declare class ProjectSkillService { private readonly options; constructor(options: ProjectSkillServiceOptions); list(projectId: string): ProjectSkillListResult; getContent(projectId: string, skillId: string): ProjectSkillSummary & { bodyMarkdown: string; }; installZip(projectId: string, buffer: Buffer, input?: { skillId?: string; overwrite?: boolean; }): Promise; installMarketplace(projectId: string, input: { name: string; version?: string; provider?: string; overwrite?: boolean; }): Promise; installSource(projectId: string, input: { source: string; skillId?: string; ref?: string; subpath?: string; force?: boolean; }): Promise; remove(projectId: string, skillId: string): Promise; private findSkill; private resolveLocation; private isDirectSkill; private toSummary; } export {};