/**
 * `zod-schemas` adapter — engines 6.30.2+, TODO #51 phase 2B.
 *
 * Consumes `facts.constSchemas` (populated by phase 1 from GitNexus's
 * Const nodes when capability is true) and merges Zod field declarations
 * into matching entity attributes. Closes the data-driven-codebase gap
 * Dom Williams flagged in the 2026-05-06 review: idle-meta uses Zod
 * heavily for runtime validation, and previously the analyse pipeline
 * dropped those declarations entirely.
 *
 * Matching: a schema named `<EntityName>Schema` (or `<EntityName>Shape`)
 * maps to a detected entity `<EntityName>`. Case-sensitive PascalCase
 * match; the `Schema` / `Shape` suffix is stripped before comparison.
 *
 * Parsing: regex-only on the immediate `z.object({...})` field list.
 * Handles the common Zod patterns:
 *   - z.string() / z.number() / z.boolean() / z.date() → scalar types
 *   - .optional() / .nullable() / .nullish() → required: false
 *   - .email() / .url() / .uuid() → no specly slot for those today
 *     (validation hints), but type stays String
 *   - z.array(z.X) → not surfaced as a specly attribute today (specly
 *     attributes are typically scalar); emit comment in description
 *   - z.literal('foo') / z.enum([...]) → emit as `values=[...]`-style
 *     hint in description (specly schema supports `values=` modifier)
 *
 * Not handled (silently skipped):
 *   - z.object spread (`...UserBase.shape`) — can't resolve without
 *     cross-schema graph walk
 *   - z.intersection / z.union — composite types
 *   - .merge() / .extend() — schema composition
 *   - Discriminated unions
 *
 * Skipped fields stay out of the merged entity. Other adapters (TSI
 * walker, etc.) may have already populated the entity from interface
 * declarations; this adapter ADDS Zod-only fields rather than
 * overwriting existing ones.
 */
export interface ZodFieldDeclaration {
    name: string;
    /** SpecVerse-vocabulary type (String / Number / Boolean / DateTime / Json). */
    declaredType: string;
    /** True when no .optional() / .nullable() / .nullish() modifier present. */
    required: boolean;
    /** Optional: when z.literal/.enum is detected, the allowed values. */
    values?: string[];
    /** Optional: detected library validation hint (email, url, uuid, etc.).
     *  Not consumed by specly today; preserved for future use. */
    validationHint?: string;
}
/**
 * Parse a `z.object({...})` declaration into its immediate field list.
 *
 * The content argument is the RAW RHS of `export const X = ...` — may
 * include leading whitespace, trailing semicolon, etc. Best-effort
 * brace-balance scan to find the object literal, then field-by-field
 * regex extraction. Returns empty array if the content doesn't match
 * `z.object({...})` shape.
 */
export declare function parseZodObjectShape(content: string): ZodFieldDeclaration[];
/**
 * For each schema in facts.constSchemas, find a matching entity and
 * merge in any field that's not already declared on the entity.
 *
 * Returns the count of entities enriched + total fields added — useful
 * for the prepass log line.
 */
export interface MergeSchemaIntoEntitiesInput {
    schemas: Array<{
        name: string;
        filePath: string;
        content: string;
        library?: string;
    }>;
    entities: Array<{
        name: string;
        filePath: string;
        sourceFramework: string;
        attributes?: Array<{
            name: string;
            declaredType?: string;
            required?: boolean;
            isUnique?: boolean;
            isPrimary?: boolean;
        }>;
    }>;
}
export interface MergeSchemaIntoEntitiesResult {
    entitiesEnriched: number;
    fieldsAdded: number;
}
export declare function mergeZodSchemasIntoEntities(input: MergeSchemaIntoEntitiesInput): MergeSchemaIntoEntitiesResult;
//# sourceMappingURL=zod-schemas.d.ts.map