/**
 * Zod validation schemas for {@link Attachment} and related types.
 *
 * Kept in a separate file from the plain TypeScript types so that consumers
 * that do not need runtime validation (e.g. type-only imports) pay zero cost.
 *
 * All schemas are named `*Schema` and their inferred types are compatible with
 * the canonical TypeScript interfaces in `./attachment.ts`.
 *
 * Uses `z.discriminatedUnion('kind', [...])` for O(1) variant lookup on the
 * `kind` discriminant.
 *
 * @epic T760
 * @task T795
 */
import { z } from 'zod';
/**
 * Zod schema for {@link LocalFileAttachment}.
 *
 * Validates that `path` is non-empty, `sha256` is a 64-character hex string,
 * and `size` is a non-negative integer.
 */
export declare const localFileAttachmentSchema: z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
    kind: z.ZodLiteral<"local-file">;
    path: z.ZodString;
    sha256: z.ZodString;
    mime: z.ZodString;
    size: z.ZodNumber;
}, z.core.$strip>;
/**
 * Zod schema for {@link UrlAttachment}.
 *
 * Validates that `url` is a well-formed absolute URL. The optional `cachedSha256`
 * is validated as a 64-character hex string when present.
 */
export declare const urlAttachmentSchema: z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
    kind: z.ZodLiteral<"url">;
    url: z.ZodString;
    cachedSha256: z.ZodOptional<z.ZodString>;
    cachedAt: z.ZodOptional<z.ZodString>;
    mime: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
 * Zod schema for {@link BlobAttachment}.
 *
 * Validates that `sha256` is 64 hex characters, `storageKey` is non-empty,
 * and `size` is a non-negative integer.
 */
export declare const blobAttachmentSchema: z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
    kind: z.ZodLiteral<"blob">;
    sha256: z.ZodString;
    storageKey: z.ZodString;
    mime: z.ZodString;
    size: z.ZodNumber;
}, z.core.$strip>;
/**
 * Zod schema for {@link LlmsTxtAttachment}.
 *
 * Validates that `content` is non-empty, `sha256` is 64 hex characters, and
 * `source` is one of the two allowed literal values.
 */
export declare const llmsTxtAttachmentSchema: z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
    kind: z.ZodLiteral<"llms-txt">;
    source: z.ZodEnum<{
        url: "url";
        generated: "generated";
    }>;
    content: z.ZodString;
    sha256: z.ZodString;
}, z.core.$strip>;
/**
 * Zod schema for {@link LlmtxtDocAttachment}.
 *
 * Validates that `slug` is non-empty and `backend` is one of the two allowed
 * literal values. `pinnedVersion` is an opaque string when present.
 */
export declare const llmtxtDocAttachmentSchema: z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
    kind: z.ZodLiteral<"llmtxt-doc">;
    slug: z.ZodString;
    backend: z.ZodEnum<{
        local: "local";
        remote: "remote";
    }>;
    pinnedVersion: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
 * Zod discriminated-union schema for {@link Attachment}.
 *
 * Uses `z.discriminatedUnion('kind', [...])` for O(1) variant lookup.
 * Parse with `attachmentSchema.parse(input)` or
 * `attachmentSchema.safeParse(input)`.
 *
 * @example
 * ```ts
 * const att = attachmentSchema.parse({
 *   kind: 'local-file',
 *   path: 'docs/rfc-003.md',
 *   sha256: 'a'.repeat(64),
 *   mime: 'text/markdown',
 *   size: 8192,
 *   description: 'RFC draft v3',
 * });
 * ```
 */
export declare const attachmentSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
    kind: z.ZodLiteral<"local-file">;
    path: z.ZodString;
    sha256: z.ZodString;
    mime: z.ZodString;
    size: z.ZodNumber;
}, z.core.$strip>, z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
    kind: z.ZodLiteral<"url">;
    url: z.ZodString;
    cachedSha256: z.ZodOptional<z.ZodString>;
    cachedAt: z.ZodOptional<z.ZodString>;
    mime: z.ZodOptional<z.ZodString>;
}, z.core.$strip>, z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
    kind: z.ZodLiteral<"blob">;
    sha256: z.ZodString;
    storageKey: z.ZodString;
    mime: z.ZodString;
    size: z.ZodNumber;
}, z.core.$strip>, z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
    kind: z.ZodLiteral<"llms-txt">;
    source: z.ZodEnum<{
        url: "url";
        generated: "generated";
    }>;
    content: z.ZodString;
    sha256: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
    kind: z.ZodLiteral<"llmtxt-doc">;
    slug: z.ZodString;
    backend: z.ZodEnum<{
        local: "local";
        remote: "remote";
    }>;
    pinnedVersion: z.ZodOptional<z.ZodString>;
}, z.core.$strip>], "kind">;
/** Inferred TypeScript type from {@link attachmentSchema}. */
export type AttachmentSchemaInput = z.input<typeof attachmentSchema>;
/**
 * Zod schema for {@link AttachmentMetadata}.
 *
 * Validates the persisted registry row. The embedded `attachment` field is
 * validated recursively through the discriminated union.
 */
export declare const attachmentMetadataSchema: z.ZodObject<{
    id: z.ZodString;
    sha256: z.ZodString;
    attachment: z.ZodDiscriminatedUnion<[z.ZodObject<{
        description: z.ZodOptional<z.ZodString>;
        labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
        kind: z.ZodLiteral<"local-file">;
        path: z.ZodString;
        sha256: z.ZodString;
        mime: z.ZodString;
        size: z.ZodNumber;
    }, z.core.$strip>, z.ZodObject<{
        description: z.ZodOptional<z.ZodString>;
        labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
        kind: z.ZodLiteral<"url">;
        url: z.ZodString;
        cachedSha256: z.ZodOptional<z.ZodString>;
        cachedAt: z.ZodOptional<z.ZodString>;
        mime: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>, z.ZodObject<{
        description: z.ZodOptional<z.ZodString>;
        labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
        kind: z.ZodLiteral<"blob">;
        sha256: z.ZodString;
        storageKey: z.ZodString;
        mime: z.ZodString;
        size: z.ZodNumber;
    }, z.core.$strip>, z.ZodObject<{
        description: z.ZodOptional<z.ZodString>;
        labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
        kind: z.ZodLiteral<"llms-txt">;
        source: z.ZodEnum<{
            url: "url";
            generated: "generated";
        }>;
        content: z.ZodString;
        sha256: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        description: z.ZodOptional<z.ZodString>;
        labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
        kind: z.ZodLiteral<"llmtxt-doc">;
        slug: z.ZodString;
        backend: z.ZodEnum<{
            local: "local";
            remote: "remote";
        }>;
        pinnedVersion: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>], "kind">;
    createdAt: z.ZodString;
    refCount: z.ZodNumber;
}, z.core.$strip>;
/** Inferred TypeScript type from {@link attachmentMetadataSchema}. */
export type AttachmentMetadataSchemaInput = z.input<typeof attachmentMetadataSchema>;
/**
 * Zod schema for {@link AttachmentRef}.
 *
 * Validates the junction row linking one attachment to one owner. `ownerType`
 * is restricted to the six supported CLEO entity types.
 */
export declare const attachmentRefSchema: z.ZodObject<{
    attachmentId: z.ZodString;
    ownerType: z.ZodEnum<{
        pattern: "pattern";
        task: "task";
        session: "session";
        decision: "decision";
        observation: "observation";
        learning: "learning";
    }>;
    ownerId: z.ZodString;
    attachedAt: z.ZodString;
    attachedBy: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/** Inferred TypeScript type from {@link attachmentRefSchema}. */
export type AttachmentRefSchemaInput = z.input<typeof attachmentRefSchema>;
//# sourceMappingURL=attachment-schema.d.ts.map