import { z } from '@strapi/utils';
import type { Core, Schema, Struct } from '@strapi/types';
import type { ContentManagerModelForMcp } from '../types';
/**
 * Builds a structured Zod object schema for a Strapi component UID.
 * Declared as a regular function so it is hoisted above `attributeToInputSchema`
 * — the two functions are mutually recursive (component attrs recurse into
 * attributeToInputSchema; attributeToInputSchema calls this for 'component' cases).
 *
 * @param strapi - Strapi instance (components registry available post-load).
 * @param componentUid - e.g. "common.seo".
 * @param visited - cycle-guard; prevents infinite recursion on self-referencing components.
 */
export declare function buildComponentInputSchema(strapi: Core.Strapi, componentUid: string, visited?: Set<string>): z.ZodTypeAny;
/**
 * Maps a single Strapi attribute to a Zod input schema, carrying constraints
 * (min, max, minLength, maxLength, required, enum values, etc.).
 *
 * Mirrors the `mapAttributeToInputSchema` logic from
 * `packages/core/core/src/core-api/routes/validation/mappers.ts` — kept inline
 * here to avoid a cross-package import from @strapi/content-manager into
 * @strapi/core (which is not a listed dependency).
 *
 */
export declare const attributeToInputSchema: (strapi: Core.Strapi, attr: Schema.Attribute.AnyAttribute, visited?: Set<string>) => z.ZodTypeAny;
/**
 * Derives a per-content-type `data` Zod schema from the model's writable attributes.
 * Uses `contentTypes.isWritableAttribute` to filter system-managed keys
 * (id, documentId, timestamps, createdBy, updatedBy, localizations, locale, etc.).
 * Unknown keys are rejected (strict mode) — invalid field names fail at the MCP boundary.
 */
export declare const buildDataSchema: (strapi: Core.Strapi, schema: Struct.ContentTypeSchema | ContentManagerModelForMcp, attributes: Struct.SchemaAttributes, permittedFields?: Set<string> | null) => z.ZodTypeAny;
//# sourceMappingURL=data-schema.d.ts.map