import type { JSONSchema7 } from 'json-schema';
import type { JsonImportReport, InMemorySchema } from './JsonSchemaImporter.js';
import { JsonSchemaImporter } from './JsonSchemaImporter.js';
import { SchemaFilteringStrategy, type SchemaFilteringOptions, FILTERING_STRATEGIES } from './SchemaFilteringStrategy.js';
import type { DataDomain } from '../DataDomain.js';
/**
 * Extended JsonSchemaImporter that supports filtering out non-structural schemas.
 * This version can eliminate schemas that don't contribute meaningful structure
 * to the data model, such as empty objects or conceptual marker types.
 */
export declare class FilteringJsonSchemaImporter extends JsonSchemaImporter {
    private filteringStrategy;
    constructor(domain: DataDomain, filteringOptions?: SchemaFilteringOptions);
    /**
     * Creates an importer with a predefined filtering strategy.
     */
    static withStrategy(domain: DataDomain, strategyName: keyof typeof FILTERING_STRATEGIES): FilteringJsonSchemaImporter;
    /**
     * Creates an importer optimized for API development.
     * Excludes schemas that don't contribute to API structure.
     */
    static forApiModeling(domain: DataDomain): FilteringJsonSchemaImporter;
    /**
     * Creates an importer optimized for database schema generation.
     * Very strict filtering - only includes schemas with concrete properties.
     */
    static forDatabaseModeling(domain: DataDomain): FilteringJsonSchemaImporter;
    /**
     * Override the base import method to apply filtering.
     */
    import(schemas: InMemorySchema[], modelName: string): Promise<JsonImportReport>;
    /**
     * Pre-filters schemas before they are processed by the base importer.
     */
    private preFilterSchemas;
    /**
     * Post-processes the import report to clean up any remaining filtered entities.
     */
    private postFilterReport;
    /**
     * Determines if an entity should be filtered out based on its characteristics.
     */
    private shouldFilterEntity;
    /**
     * Gets a human-readable reason for filtering an entity.
     */
    private getEntityFilterReason;
    /**
     * Removes associations that reference entities that were filtered out.
     */
    private cleanupOrphanedAssociations;
}
/**
 * Utility functions for working with filtered imports.
 */
export declare const SchemaFilteringUtils: {
    /**
     * Analyzes a JSON schema to determine if it would be filtered by the given strategy.
     */
    wouldBeFiltered(schema: JSONSchema7, strategy: SchemaFilteringStrategy): boolean;
    /**
     * Gets statistics about what would be filtered from a set of schemas.
     */
    getFilteringStats(schemas: {
        id: string;
        schema: JSONSchema7;
    }[], strategy: SchemaFilteringStrategy): {
        total: number;
        filtered: number;
        remaining: number;
        filteredSchemas: {
            id: string;
            reason: string;
        }[];
    };
    /**
     * Creates a report showing what would be filtered from a schema collection.
     */
    createFilteringReport(schemas: {
        id: string;
        schema: JSONSchema7;
    }[], strategy: SchemaFilteringStrategy): string;
};
//# sourceMappingURL=FilteringJsonSchemaImporter.d.ts.map