/**
 * SDK Content Config Validation
 *
 * Zod schemas for validating SDK content configuration.
 */
import { z } from 'zod';
import type { ContentConfig, ContentTypeConfig } from './content-types';
import { TEMPLATE_BINDING_META_PATHS } from './content-types';
import { type BindingTransformName } from '../contracts/bindings';
export declare const contentTypeConfigSchema: z.ZodType<ContentTypeConfig>;
type BindingSourceType = {
    source: 'field';
    path: string;
} | {
    source: 'meta';
    path: typeof TEMPLATE_BINDING_META_PATHS[number];
} | {
    source: 'literal';
    value: unknown;
} | {
    source: 'transform';
    path: string;
    transform: BindingTransformName;
} | {
    source: 'fallback';
    sources: BindingSourceType[];
};
export declare const bindingSourceSchema: z.ZodType<BindingSourceType>;
/**
 * Template block config validation.
 */
export declare const templateBlockConfigSchema: z.ZodObject<{
    identifier: z.ZodString;
    kind: z.ZodString;
    scope: z.ZodEnum<{
        entry: "entry";
        template: "template";
    }>;
    bindings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<BindingSourceType, unknown, z.core.$ZodTypeInternals<BindingSourceType, unknown>>>>;
    content: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
}, z.core.$strip>;
/**
 * Template config validation with unique identifier check.
 */
export declare const templateConfigSchema: z.ZodObject<{
    blocks: z.ZodArray<z.ZodObject<{
        identifier: z.ZodString;
        kind: z.ZodString;
        scope: z.ZodEnum<{
            entry: "entry";
            template: "template";
        }>;
        bindings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<BindingSourceType, unknown, z.core.$ZodTypeInternals<BindingSourceType, unknown>>>>;
        content: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export declare const blockConfigSchema: z.ZodObject<{
    kind: z.ZodString;
    content: z.ZodRecord<z.ZodString, z.ZodAny>;
    orderIndex: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
export declare const pageConfigSchema: z.ZodObject<{
    identifier: z.ZodString;
    title: z.ZodString;
    path: z.ZodString;
    purpose: z.ZodDefault<z.ZodString>;
    blocks: z.ZodOptional<z.ZodArray<z.ZodObject<{
        kind: z.ZodString;
        content: z.ZodRecord<z.ZodString, z.ZodAny>;
        orderIndex: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>>>;
    status: z.ZodDefault<z.ZodEnum<{
        draft: "draft";
        published: "published";
    }>>;
    metaTitle: z.ZodOptional<z.ZodString>;
    metaDescription: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export declare const entryConfigSchema: z.ZodObject<{
    identifier: z.ZodString;
    contentType: z.ZodString;
    data: z.ZodRecord<z.ZodString, z.ZodAny>;
    status: z.ZodDefault<z.ZodEnum<{
        draft: "draft";
        published: "published";
    }>>;
    slug: z.ZodOptional<z.ZodString>;
    summary: z.ZodOptional<z.ZodString>;
    title: z.ZodOptional<z.ZodAny>;
    metaTitle: z.ZodOptional<z.ZodString>;
    metaDescription: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export declare const navigationItemConfigSchema: z.ZodType<{
    label: string;
    link: {
        kind: 'page';
        identifier: string;
    } | {
        kind: 'entry';
        contentType: string;
        identifier: string;
    } | {
        kind: 'external';
        href: string;
    } | {
        kind: 'url';
        href: string;
    } | {
        kind: 'portal';
        path?: string;
        labels?: {
            loggedOut?: string;
            loggedIn?: string;
        };
    } | {
        kind: 'cart';
        badge: 'show-count' | 'hidden';
        label: {
            kind: 'icon-only';
        } | {
            kind: 'icon-with-label';
            label: string;
        };
    } | {
        kind: 'dropdown';
    };
    isCta?: boolean;
    children?: Array<{
        label: string;
        link: {
            kind: 'page';
            identifier: string;
        } | {
            kind: 'entry';
            contentType: string;
            identifier: string;
        } | {
            kind: 'external';
            href: string;
        } | {
            kind: 'url';
            href: string;
        } | {
            kind: 'portal';
            path?: string;
            labels?: {
                loggedOut?: string;
                loggedIn?: string;
            };
        } | {
            kind: 'cart';
            badge: 'show-count' | 'hidden';
            label: {
                kind: 'icon-only';
            } | {
                kind: 'icon-with-label';
                label: string;
            };
        } | {
            kind: 'dropdown';
        };
        isCta?: boolean;
        children?: unknown[];
    }>;
}>;
export declare const navigationMenuConfigSchema: z.ZodObject<{
    identifier: z.ZodString;
    name: z.ZodString;
    isPrimary: z.ZodOptional<z.ZodBoolean>;
    isFooter: z.ZodOptional<z.ZodBoolean>;
    items: z.ZodArray<z.ZodType<{
        label: string;
        link: {
            kind: "page";
            identifier: string;
        } | {
            kind: "entry";
            contentType: string;
            identifier: string;
        } | {
            kind: "external";
            href: string;
        } | {
            kind: "url";
            href: string;
        } | {
            kind: "portal";
            path?: string;
            labels?: {
                loggedOut?: string;
                loggedIn?: string;
            };
        } | {
            kind: "cart";
            badge: "show-count" | "hidden";
            label: {
                kind: "icon-only";
            } | {
                kind: "icon-with-label";
                label: string;
            };
        } | {
            kind: "dropdown";
        };
        isCta?: boolean;
        children?: Array<{
            label: string;
            link: {
                kind: "page";
                identifier: string;
            } | {
                kind: "entry";
                contentType: string;
                identifier: string;
            } | {
                kind: "external";
                href: string;
            } | {
                kind: "url";
                href: string;
            } | {
                kind: "portal";
                path?: string;
                labels?: {
                    loggedOut?: string;
                    loggedIn?: string;
                };
            } | {
                kind: "cart";
                badge: "show-count" | "hidden";
                label: {
                    kind: "icon-only";
                } | {
                    kind: "icon-with-label";
                    label: string;
                };
            } | {
                kind: "dropdown";
            };
            isCta?: boolean;
            children?: unknown[];
        }>;
    }, unknown, z.core.$ZodTypeInternals<{
        label: string;
        link: {
            kind: "page";
            identifier: string;
        } | {
            kind: "entry";
            contentType: string;
            identifier: string;
        } | {
            kind: "external";
            href: string;
        } | {
            kind: "url";
            href: string;
        } | {
            kind: "portal";
            path?: string;
            labels?: {
                loggedOut?: string;
                loggedIn?: string;
            };
        } | {
            kind: "cart";
            badge: "show-count" | "hidden";
            label: {
                kind: "icon-only";
            } | {
                kind: "icon-with-label";
                label: string;
            };
        } | {
            kind: "dropdown";
        };
        isCta?: boolean;
        children?: Array<{
            label: string;
            link: {
                kind: "page";
                identifier: string;
            } | {
                kind: "entry";
                contentType: string;
                identifier: string;
            } | {
                kind: "external";
                href: string;
            } | {
                kind: "url";
                href: string;
            } | {
                kind: "portal";
                path?: string;
                labels?: {
                    loggedOut?: string;
                    loggedIn?: string;
                };
            } | {
                kind: "cart";
                badge: "show-count" | "hidden";
                label: {
                    kind: "icon-only";
                } | {
                    kind: "icon-with-label";
                    label: string;
                };
            } | {
                kind: "dropdown";
            };
            isCta?: boolean;
            children?: unknown[];
        }>;
    }, unknown>>>;
}, z.core.$strip>;
export declare const siteSettingsConfigSchema: z.ZodObject<{
    homepagePath: z.ZodOptional<z.ZodString>;
    siteTitle: z.ZodOptional<z.ZodString>;
    siteDescription: z.ZodOptional<z.ZodString>;
    defaultTemplates: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>;
export declare const contentConfigSchema: z.ZodType<ContentConfig>;
export type ContentTypeConfigInput = z.input<typeof contentTypeConfigSchema>;
export type ContentTypeConfigOutput = z.output<typeof contentTypeConfigSchema>;
export type PageConfigInput = z.input<typeof pageConfigSchema>;
export type PageConfigOutput = z.output<typeof pageConfigSchema>;
export type EntryConfigInput = z.input<typeof entryConfigSchema>;
export type EntryConfigOutput = z.output<typeof entryConfigSchema>;
export type NavigationMenuConfigInput = z.input<typeof navigationMenuConfigSchema>;
export type NavigationMenuConfigOutput = z.output<typeof navigationMenuConfigSchema>;
export type ContentConfigInput = z.input<typeof contentConfigSchema>;
export type ContentConfigOutput = z.output<typeof contentConfigSchema>;
export type BindingSourceInput = z.input<typeof bindingSourceSchema>;
export type BindingSourceOutput = z.output<typeof bindingSourceSchema>;
export type TemplateBlockConfigInput = z.input<typeof templateBlockConfigSchema>;
export type TemplateBlockConfigOutput = z.output<typeof templateBlockConfigSchema>;
export type TemplateConfigInput = z.input<typeof templateConfigSchema>;
export type TemplateConfigOutput = z.output<typeof templateConfigSchema>;
export {};
