import type { HookRegistry } from "../contracts/hooks.js";
import type { NotificationMethod, NotificationMethodMap } from "../protocol/notifications.js";
import type { MemoryLearningSink, PathService, ToolCatalog } from "../runtime/ports/index.js";
import type { WorkspaceSkill } from "../skills/skill-system/skill-types.js";
import { type SkillSubturnAgent } from "./skill-meta-subturn-service.js";
export { resolveSkillSubagentTypeForLifecycle } from "./skill-meta-subturn-service.js";
export interface SkillMetaToolBootstrapDeps {
    config: Record<string, unknown>;
    pathService: PathService;
    toolCatalog: ToolCatalog;
}
export type SkillLearningMemorySink = MemoryLearningSink;
export interface SkillMetaToolHost {
    getActiveProjectRoot(): string;
    getPluginSkills(): WorkspaceSkill[];
    getAgent(): SkillSubturnAgent | null;
    getCurrentSessionId(): string;
    getCurrentHooks(): HookRegistry | null;
    sendNotification<M extends NotificationMethod>(method: M, params: NotificationMethodMap[M]): void;
    getMemoryLearningSink(): SkillLearningMemorySink | null;
    getMemoryUserId(): string;
}
export interface SkillMetaToolRegistrationContext extends SkillMetaToolBootstrapDeps {
    host: SkillMetaToolHost;
}
export declare const skillMetaToolRegistrationModule: import("../runtime/ports/tool-contracts.js").ToolRegistrationModule<SkillMetaToolRegistrationContext>;
export declare function configureSkillMetaToolBootstrap(host: SkillMetaToolHost, deps: SkillMetaToolBootstrapDeps): void;
/**
 * Resolve a supporting-file path inside a skill folder.
 * Returns the absolute target, or null when the path escapes the skill dir
 * or targets SKILL.md itself (SKILL.md must go through the validated
 * content path, never the raw supporting-file write).
 */
export declare function resolveSupportingFilePath(skillDir: string, filePath: string): string | null;
