import { z } from 'zod';
export interface BlockRefOptions {
    /** Component names allowed in this slot. Omit to allow any registered component. */
    allow?: string[];
}
/**
 * Schema helper for nested component references within a parent component.
 *
 * Produces a Zod schema for a block entry: `{ id, component, props }`.
 * When `allow` is provided, `component` is constrained to an enum of the
 * listed names. This flows into the generated JSON schema, so the content
 * validator enforces the allowlist at build time.
 *
 * @example
 * ```ts
 * defineComponent({
 *   name: 'tabbed_panels',
 *   schema: z.object({
 *     tabs: z.array(z.object({
 *       id: z.string().min(1),
 *       label: z.string().min(1),
 *       blocks: z.array(blockRef({ allow: ['checklist', 'text_media'] })).min(1),
 *     })),
 *   }),
 * })
 * ```
 */
export declare function blockRef(options?: BlockRefOptions): z.ZodObject<{
    id: z.ZodString;
    component: z.ZodEnum<{
        [x: string]: string;
    }> | z.ZodString;
    props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
}, z.core.$strip>;
