import { type SkillBaseContext, type SkillBasePermission, type SkillFilesystemProvider } from "../_shared/skillCore.js";
import type { SkillToolResult } from "../_shared/baseToolAdapter.js";
export type SkillGenerateFileKind = "instruction" | "script" | "template" | "example" | "metadata" | "reference" | "asset";
export type SkillGenerateRequestedFile = {
    path: string;
    kind: SkillGenerateFileKind;
    purpose?: string;
    content?: string;
};
export type SkillGenerateTarget = {
    skillName: string;
    purpose: string;
    destinationRoot: string;
    description?: string;
    files: readonly SkillGenerateRequestedFile[];
    tags: readonly string[];
};
export type SkillGenerateRequest = {
    target?: unknown;
    context?: SkillBaseContext;
    provider?: SkillFilesystemProvider;
};
export type SkillGenerateErrorCode = "MISSING_SKILL_NAME" | "INVALID_SKILL_NAME" | "MISSING_PURPOSE" | "MISSING_DESTINATION_ROOT" | "UNSAFE_SKILL_PATH" | "SKILL_ROOT_OUTSIDE_SCOPE" | "INVALID_REQUESTED_FILE" | "TOO_MANY_FILES" | "PERMISSION_DENIED" | "GOVERNANCE_REJECTED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_REJECTED";
export type SkillGenerateOutput = {
    kind: "agentCore.basicTool.skill.generate.output";
    target: SkillGenerateTarget;
    runtimeEntry: {
        port: "BaseToolExecutorPort.filesystem.writeText";
        runtimeOwnsFilesystem: true;
    };
    generationEnvelope: {
        scaffoldVersion: "skill-scaffold-v1";
        skillDirectory: string;
        fileCount: number;
        wouldWriteFiles: readonly string[];
        writtenFiles?: readonly string[];
    };
    dryRun: boolean;
    executionBlocked: boolean;
    permissionsRequired: readonly SkillBasePermission[];
    unsafeSideEffects: true;
};
export type SkillGenerateResult = SkillToolResult<SkillGenerateOutput, SkillGenerateErrorCode>;
export declare const skillGenerateDescriptor: {
    readonly toolId: "skill.generate";
    readonly capability: "generate-skill";
    readonly defaultDryRun: true;
    readonly permissionsRequired: readonly ["skill:write", "filesystem:write"];
    readonly defaultFiles: readonly [{
        readonly path: "SKILL.md";
        readonly kind: "instruction";
    }];
    readonly maxRequestedFiles: 32;
};
export declare function executeSkillGenerate(request?: SkillGenerateRequest): Promise<SkillGenerateResult>;
export declare const planSkillGeneration: typeof executeSkillGenerate;
