import { type SkillBaseContext, type SkillBasePermission, type SkillFilesystemProvider } from "../_shared/skillCore.js";
import type { SkillToolResult } from "../_shared/baseToolAdapter.js";
export type SkillRemoveMode = "disable" | "unlink" | "purge";
export type SkillRemoveTarget = {
    skillId: string;
    registryRoot: string;
    mode: SkillRemoveMode;
    reason?: string;
};
export type SkillRemoveRequest = {
    target?: unknown;
    context?: SkillBaseContext;
    provider?: SkillFilesystemProvider;
};
export type SkillRemoveErrorCode = "MISSING_SKILL_ID" | "INVALID_SKILL_ID" | "MISSING_REGISTRY_ROOT" | "INVALID_MODE" | "SCOPE_REJECTED" | "PERMISSION_DENIED" | "GOVERNANCE_REJECTED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_REJECTED";
export type SkillRemoveOutput = {
    kind: "agentCore.basicTool.skill.remove.output";
    target: SkillRemoveTarget;
    runtimeEntry: {
        port: "BaseToolExecutorPort.filesystem.writeText/deletePath";
        runtimeOwnsFilesystem: true;
    };
    removalEnvelope: {
        action: SkillRemoveMode;
        skillId: string;
        skillRoot: string;
        plannedPath: string;
        deleted?: boolean;
    };
    dryRun: boolean;
    executionBlocked: boolean;
    permissionsRequired: readonly SkillBasePermission[];
    unsafeSideEffects: true;
};
export type SkillRemoveResult = SkillToolResult<SkillRemoveOutput, SkillRemoveErrorCode>;
export declare const skillRemoveDescriptor: {
    readonly toolId: "skill.remove";
    readonly capability: "remove-skill";
    readonly defaultDryRun: true;
    readonly permissionsRequired: readonly ["skill:write", "filesystem:write"];
};
export declare function executeSkillRemove(request?: SkillRemoveRequest): Promise<SkillRemoveResult>;
export declare const planSkillRemove: typeof executeSkillRemove;
