import { z } from 'zod';
import { type AtomicBlockContract, type BlockContract, type ContractField } from './contract.js';
import type { KernelPage, KernelSiteConfig } from './types.js';
export interface ContentValidationContracts {
    blockContracts?: readonly BlockContract[];
    atomicBlockContracts?: readonly AtomicBlockContract[];
}
export interface ContentSchemas {
    siteConfigSchema: z.ZodTypeAny;
    atomicBlockSchema: z.ZodTypeAny;
    pageBlockSchema: z.ZodTypeAny;
    pageSchema: z.ZodTypeAny;
    schemaFromContractField(field: ContractField): z.ZodTypeAny;
    schemaFromContractFields(fields: Record<string, ContractField>): z.ZodTypeAny;
    parseKernelSiteConfig(value: unknown, source?: string): KernelSiteConfig;
    parseKernelPage(value: unknown, source?: string): KernelPage;
}
export declare const linkSchema: z.ZodObject<{
    id: z.ZodString;
    label: z.ZodString;
    href: z.ZodString;
}, z.core.$loose>;
export declare const imageSchema: z.ZodObject<{
    src: z.ZodString;
    alt: z.ZodString;
}, z.core.$loose>;
export declare const optionalImageSchema: z.ZodObject<{
    src: z.ZodString;
    alt: z.ZodOptional<z.ZodString>;
}, z.core.$loose>;
export declare const siteConfigSchema: z.ZodObject<{
    id: z.ZodString;
    $type: z.ZodLiteral<"site">;
    status: z.ZodString;
    title: z.ZodString;
    domain: z.ZodString;
    defaultLocale: z.ZodString;
    brandHref: z.ZodOptional<z.ZodString>;
    brandLogo: z.ZodOptional<z.ZodObject<{
        src: z.ZodString;
        alt: z.ZodOptional<z.ZodString>;
    }, z.core.$loose>>;
    navigation: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        label: z.ZodString;
        href: z.ZodString;
    }, z.core.$loose>>>;
    utilities: z.ZodOptional<z.ZodArray<z.ZodObject<{
        variant: z.ZodOptional<z.ZodEnum<{
            primary: "primary";
            secondary: "secondary";
            tertiary: "tertiary";
            outline: "outline";
            ghost: "ghost";
        }>>;
        id: z.ZodString;
        label: z.ZodString;
        href: z.ZodString;
    }, z.core.$loose>>>;
    promo: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    footer: z.ZodOptional<z.ZodObject<{
        columns: z.ZodOptional<z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            title: z.ZodOptional<z.ZodString>;
            groups: z.ZodOptional<z.ZodArray<z.ZodObject<{
                id: z.ZodString;
                title: z.ZodString;
                links: z.ZodArray<z.ZodObject<{
                    id: z.ZodString;
                    label: z.ZodString;
                    href: z.ZodString;
                }, z.core.$loose>>;
            }, z.core.$loose>>>;
            links: z.ZodOptional<z.ZodArray<z.ZodObject<{
                id: z.ZodString;
                label: z.ZodString;
                href: z.ZodString;
            }, z.core.$loose>>>;
        }, z.core.$loose>>>;
        social: z.ZodOptional<z.ZodArray<z.ZodObject<{
            icon: z.ZodOptional<z.ZodString>;
            id: z.ZodString;
            label: z.ZodString;
            href: z.ZodString;
        }, z.core.$loose>>>;
        legalLinks: z.ZodOptional<z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            label: z.ZodString;
            href: z.ZodString;
        }, z.core.$loose>>>;
        copyright: z.ZodOptional<z.ZodString>;
    }, z.core.$loose>>;
    seo: z.ZodOptional<z.ZodObject<{
        title: z.ZodOptional<z.ZodString>;
        description: z.ZodOptional<z.ZodString>;
        siteName: z.ZodOptional<z.ZodString>;
    }, z.core.$loose>>;
}, z.core.$loose>;
export declare function createContentSchemas(contracts?: ContentValidationContracts): ContentSchemas;
export declare function formatZodError(source: string, error: z.ZodError): string;
export declare function parseWithSchema(schema: z.ZodTypeAny, value: unknown, source: string): unknown;
export declare const atomicBlockSchema: z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
export declare const pageBlockSchema: z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
export declare const pageSchema: z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
export declare const schemaFromContractField: (field: ContractField) => z.ZodTypeAny;
export declare const schemaFromContractFields: (fields: Record<string, ContractField>) => z.ZodTypeAny;
export declare const parseKernelSiteConfig: (value: unknown, source?: string) => KernelSiteConfig;
export declare const parseKernelPage: (value: unknown, source?: string) => KernelPage;
