/**
 * Model-driven JSON mapping structure that mirrors TypeScript model definitions.
 * This approach provides intuitive, hierarchical mapping that closely resembles the target data structure.
 */
import { JsonMapping } from './PostgresJsonQueryBuilder';
/**
 * Supported field types for database column mapping.
 */
export type FieldType = 'string' | 'number' | 'boolean' | 'object' | 'array' | 'auto';
/**
 * Field mapping configuration that can be either a simple column name or enhanced mapping with type control.
 */
export type FieldMapping = string | {
    column: string;
    type?: FieldType;
} | {
    from: string;
    type?: FieldType;
};
/**
 * Nested object or array structure definition.
 */
export interface NestedStructure {
    type: 'object' | 'array';
    from: string;
    structure: StructureFields;
}
/**
 * Structure fields can contain either field mappings or nested structures.
 */
export type StructureFields = {
    [key: string]: FieldMapping | NestedStructure;
};
/**
 * Model-driven JSON mapping that mirrors TypeScript interface structure.
 * This design makes it easy to understand the relationship between models and database columns.
 */
export interface ModelDrivenJsonMapping {
    typeInfo: {
        interface: string;
        importPath: string;
    };
    structure: StructureFields;
}
/**
 * Type protection configuration extracted from the model-driven mapping.
 */
export interface TypeProtectionConfig {
    protectedStringFields: string[];
}
/**
 * Convert a model-driven JSON mapping to the traditional JsonMapping format.
 * This enables backward compatibility with existing PostgresJsonQueryBuilder.
 */
export declare function convertModelDrivenMapping(modelMapping: ModelDrivenJsonMapping): {
    jsonMapping: JsonMapping;
    typeProtection: TypeProtectionConfig;
};
/**
 * Validate that a model-driven mapping structure is well-formed.
 */
export declare function validateModelDrivenMapping(mapping: ModelDrivenJsonMapping): string[];
