import { z } from 'zod';

/**
 * Generic Schema Registry for dynamic schema management
 * This registry allows applications to register their own schemas
 */
declare class SchemaRegistry {
    private schemas;
    private fieldMappings;
    /**
     * Register a schema with optional field mapping
     */
    register<T>(name: string, schema: z.ZodType<T>, fieldMapping?: Record<string, string>): void;
    /**
     * Validate data against a registered schema
     */
    validate<T>(schemaName: string, data: unknown): T;
    /**
     * Get a registered schema
     */
    getSchema(name: string): z.ZodType | undefined;
    /**
     * Get field mapping for a schema
     */
    getFieldMapping(name: string): Record<string, string> | undefined;
    /**
     * List all registered schema names
     */
    listSchemas(): string[];
    /**
     * Check if a schema is registered
     */
    hasSchema(name: string): boolean;
    /**
     * Clear all registered schemas
     */
    clear(): void;
}
declare const defaultSchemaRegistry: SchemaRegistry;
/**
 * Helper to create a schema registry with initial schemas
 */
declare function createSchemaRegistry(schemas?: Record<string, z.ZodType>, mappings?: Record<string, Record<string, string>>): SchemaRegistry;

export { SchemaRegistry, createSchemaRegistry, defaultSchemaRegistry };
