import { z } from 'zod';
/**
 * Base content field schema (non-recursive properties)
 */
declare const BaseContentFieldSchema: z.ZodObject<{
    id: z.ZodString;
    type: z.ZodEnum<{
        number: "number";
        boolean: "boolean";
        date: "date";
        url: "url";
        media: "media";
        button: "button";
        link: "link";
        select: "select";
        textarea: "textarea";
        text: "text";
        richText: "richText";
        file: "file";
        datetime: "datetime";
        reference: "reference";
        repeater: "repeater";
        group: "group";
    }>;
    label: z.ZodOptional<z.ZodString>;
    description: z.ZodOptional<z.ZodString>;
    required: z.ZodOptional<z.ZodBoolean>;
    defaultValue: z.ZodOptional<z.ZodUnknown>;
    multiline: z.ZodOptional<z.ZodBoolean>;
    rows: z.ZodOptional<z.ZodNumber>;
    maxLength: z.ZodOptional<z.ZodNumber>;
    min: z.ZodOptional<z.ZodNumber>;
    max: z.ZodOptional<z.ZodNumber>;
    step: z.ZodOptional<z.ZodNumber>;
    mediaKinds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
        image: "image";
        video: "video";
        audio: "audio";
        document: "document";
        spreadsheet: "spreadsheet";
        archive: "archive";
    }>>>;
    fileKinds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
        audio: "audio";
        document: "document";
        spreadsheet: "spreadsheet";
        archive: "archive";
    }>>>;
    allowRelative: z.ZodOptional<z.ZodBoolean>;
    options: z.ZodOptional<z.ZodArray<z.ZodObject<{
        value: z.ZodString;
        label: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
    multiple: z.ZodOptional<z.ZodBoolean>;
    referenceKind: z.ZodOptional<z.ZodString>;
    reference: z.ZodOptional<z.ZodObject<{
        type: z.ZodString;
    }, z.core.$strip>>;
    valueFrom: z.ZodOptional<z.ZodEnum<{
        id: "id";
        identifier: "identifier";
        slug: "slug";
    }>>;
    ui: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    itemLabel: z.ZodOptional<z.ZodString>;
}, z.core.$loose>;
/**
 * Content field schema with recursive support for group fields
 */
type ContentFieldSchemaType = z.infer<typeof BaseContentFieldSchema> & {
    fields?: ContentFieldSchemaType[];
    schema?: {
        fields?: ContentFieldSchemaType[];
    };
};
declare const ContentFieldSchema: z.ZodType<ContentFieldSchemaType>;
declare const RoutingSchema: z.ZodObject<{
    enabled: z.ZodDefault<z.ZodBoolean>;
    pattern: z.ZodOptional<z.ZodString>;
    slugField: z.ZodOptional<z.ZodString>;
    pathField: z.ZodOptional<z.ZodString>;
    prefix: z.ZodOptional<z.ZodString>;
    subroutes: z.ZodOptional<z.ZodArray<z.ZodObject<{
        kind: z.ZodString;
        segmentType: z.ZodEnum<{
            slug: "slug";
            uuid: "uuid";
            "iso-date": "iso-date";
            "uuid-or-date": "uuid-or-date";
        }>;
        precedence: z.ZodOptional<z.ZodEnum<{
            "subroute-first": "subroute-first";
            "content-first": "content-first";
        }>>;
    }, z.core.$strip>>>;
}, z.core.$strip>;
export declare const ContentTypeSchemaZ: z.ZodObject<{
    version: z.ZodDefault<z.ZodNumber>;
    fields: z.ZodDefault<z.ZodArray<z.ZodType<ContentFieldSchemaType, unknown, z.core.$ZodTypeInternals<ContentFieldSchemaType, unknown>>>>;
    routing: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodDefault<z.ZodBoolean>;
        pattern: z.ZodOptional<z.ZodString>;
        slugField: z.ZodOptional<z.ZodString>;
        pathField: z.ZodOptional<z.ZodString>;
        prefix: z.ZodOptional<z.ZodString>;
        subroutes: z.ZodOptional<z.ZodArray<z.ZodObject<{
            kind: z.ZodString;
            segmentType: z.ZodEnum<{
                slug: "slug";
                uuid: "uuid";
                "iso-date": "iso-date";
                "uuid-or-date": "uuid-or-date";
            }>;
            precedence: z.ZodOptional<z.ZodEnum<{
                "subroute-first": "subroute-first";
                "content-first": "content-first";
            }>>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
    titleField: z.ZodOptional<z.ZodString>;
    widgets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    labels: z.ZodDefault<z.ZodObject<{
        singular: z.ZodString;
        plural: z.ZodString;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type RoutingConfig = z.infer<typeof RoutingSchema>;
export type ContentTypeSchema = z.infer<typeof ContentTypeSchemaZ>;
export type ContentFieldConfig = z.infer<typeof ContentFieldSchema>;
export declare function parseContentTypeSchema(input: unknown): ContentTypeSchema;
export {};
