import { z } from "zod";
import { type BlockManifest, type FieldDefinition } from "./schema";
type ValidatorOptions = {
    allowNull?: boolean;
    /**
     * When true, required fields can be missing (undefined).
     * Use for autosave scenarios where content may be incomplete.
     */
    allowIncomplete?: boolean;
    /**
     * Validation mode:
     * - 'strict' (default): Enforce all required field constraints
     * - 'draft': Preprocess empty values to undefined, use allowIncomplete for lenient validation
     *
     * Use 'draft' mode in preview/editing contexts where users need to temporarily
     * have empty fields without validation errors causing blocks to disappear.
     */
    mode?: 'strict' | 'draft';
};
export declare function createManifestValidator(manifestOrFields: BlockManifest | FieldDefinition[], options?: ValidatorOptions): z.ZodType<Record<string, unknown>>;
/**
 * Schema for internal links (created via dashboard link picker).
 * These have pre-resolved hrefs from the route map.
 */
export declare const internalLinkSchema: z.ZodObject<{
    kind: z.ZodLiteral<"internal">;
    routeId: z.ZodString;
    entityId: z.ZodOptional<z.ZodString>;
    entityType: z.ZodOptional<z.ZodEnum<{
        page: "page";
        content: "content";
    }>>;
    href: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
    title: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
    typeLabel: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
    contentTypeKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
    contentTypeName: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
    updatedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
}, z.core.$loose>;
/**
 * Schema for external links (absolute URLs).
 */
export declare const externalLinkSchema: z.ZodObject<{
    kind: z.ZodLiteral<"external">;
    href: z.ZodString;
}, z.core.$loose>;
/**
 * Schema for custom URL links (relative or absolute paths).
 */
export declare const customLinkSchema: z.ZodObject<{
    kind: z.ZodLiteral<"url">;
    href: z.ZodString;
}, z.core.$loose>;
/**
 * Schema for SDK page links (resolved at render time via pagesByIdentifier).
 * Used in SDK content configs to link to pages by identifier.
 */
export declare const pageLinkSchema: z.ZodObject<{
    kind: z.ZodLiteral<"page">;
    identifier: z.ZodString;
}, z.core.$loose>;
/**
 * Schema for SDK entry links (resolved at render time via entriesByIdentifier).
 * Used in SDK content configs to link to content entries by type and identifier.
 */
export declare const entryLinkSchema: z.ZodObject<{
    kind: z.ZodLiteral<"entry">;
    contentType: z.ZodString;
    identifier: z.ZodString;
}, z.core.$loose>;
/**
 * Composite schema for all link types.
 * Use this for validating link fields in block content.
 */
export declare const linkSchema: z.ZodUnion<readonly [z.ZodObject<{
    kind: z.ZodLiteral<"internal">;
    routeId: z.ZodString;
    entityId: z.ZodOptional<z.ZodString>;
    entityType: z.ZodOptional<z.ZodEnum<{
        page: "page";
        content: "content";
    }>>;
    href: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
    title: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
    typeLabel: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
    contentTypeKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
    contentTypeName: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
    updatedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
}, z.core.$loose>, z.ZodObject<{
    kind: z.ZodLiteral<"external">;
    href: z.ZodString;
}, z.core.$loose>, z.ZodObject<{
    kind: z.ZodLiteral<"url">;
    href: z.ZodString;
}, z.core.$loose>, z.ZodObject<{
    kind: z.ZodLiteral<"page">;
    identifier: z.ZodString;
}, z.core.$loose>, z.ZodObject<{
    kind: z.ZodLiteral<"entry">;
    contentType: z.ZodString;
    identifier: z.ZodString;
}, z.core.$loose>]>;
export {};
