/** A single file entry within a skill ZIP package. */
export interface SkillFileEntry {
    /** Relative path within the ZIP (e.g. "SKILL.md", "scripts/validate.py"). */
    readonly path: string;
    /** Uncompressed file size in bytes. */
    readonly size: number;
    /** Whether this entry represents a directory. */
    readonly isDirectory: boolean;
}
/** Preview metadata extracted from a validated skill package. */
export interface SkillUploadPreview {
    /** Skill name extracted from SKILL.md YAML frontmatter. */
    readonly name: string;
    /** Skill description extracted from SKILL.md YAML frontmatter. */
    readonly description: string;
    /** All files contained in the ZIP package. */
    readonly files: SkillFileEntry[];
    /** Raw SKILL.md content (frontmatter + body). */
    readonly skillMdContent: string;
    /** Total uncompressed size of all files in bytes. */
    readonly totalSize: number;
}
/** Return value of {@link useSkillUpload}. */
export interface UseSkillUploadReturn {
    /** Validated preview of the uploaded package, or `null` before upload. */
    readonly preview: SkillUploadPreview | null;
    /** Validation error message, or `null` if valid/not yet uploaded. */
    readonly validationError: string | null;
    /** `true` while the file is being read and validated. */
    readonly isProcessing: boolean;
    /** Process a file selected by the user (triggers validation). */
    readonly processFile: (file: File) => Promise<void>;
    /** Reset to initial state (clear preview and errors). */
    readonly reset: () => void;
    /** Raw ZIP bytes ready for push, or `null` before successful validation. */
    readonly artifact: Uint8Array | null;
}
/**
 * Behavior hook for the skill upload workflow.
 *
 * Handles file reading, ZIP unpacking, structure validation, and
 * metadata extraction. Produces a {@link SkillUploadPreview} that
 * the UI can render, and exposes the raw artifact bytes for pushing.
 *
 * Validation rules (Anthropic Agent Skills spec):
 * - File must be a valid ZIP archive (checked via magic bytes)
 * - ZIP must contain `SKILL.md` at the root level
 * - SKILL.md must have YAML frontmatter with a valid `name` field
 * - Name must be lowercase letters/numbers/hyphens, max 64 chars
 *
 * @example
 * ```tsx
 * const upload = useSkillUpload();
 *
 * const handleDrop = (file: File) => upload.processFile(file);
 *
 * if (upload.preview) {
 *   // Show preview UI
 *   console.log(upload.preview.name, upload.preview.files);
 * }
 *
 * if (upload.artifact) {
 *   // Ready to push
 *   await push({ org: "acme", artifact: upload.artifact });
 * }
 * ```
 */
export declare function useSkillUpload(): UseSkillUploadReturn;
//# sourceMappingURL=useSkillUpload.d.ts.map