/**
 * Instance Factory Loader
 *
 * Loads instance factory definitions from YAML files
 * and validates them against the JSON Schema.
 */
import type { InstanceFactory } from '../types/index.js';
/**
 * Load options for instance factories
 */
export interface LoadOptions {
    /** Base directory to search from */
    baseDir: string;
    /** Glob pattern to match instance factory files (default: **\/*.yaml) */
    pattern?: string;
    /** Whether to validate against schema (default: true) */
    validate?: boolean;
    /** Whether to ignore invalid files (default: false) */
    ignoreInvalid?: boolean;
}
/**
 * Load result for a single instance factory
 */
export interface LoadResult {
    /** The loaded instance factory */
    type: InstanceFactory;
    /** Source file path */
    filePath: string;
    /** Any warnings during load */
    warnings?: string[];
}
/**
 * Validation error for an implementation type
 */
export interface ValidationError {
    /** File that failed validation */
    filePath: string;
    /** Validation errors */
    errors: string[];
}
/**
 * Result of loading multiple implementation types
 */
export interface LoadManyResult {
    /** Successfully loaded types */
    types: LoadResult[];
    /** Files that failed validation */
    errors: ValidationError[];
}
/**
 * Load a single instance factory from a YAML file
 */
export declare function loadInstanceFactory(filePath: string, options?: {
    validate?: boolean;
}): Promise<LoadResult>;
/**
 * Load all instance factories from a directory
 */
export declare function loadInstanceFactories(options: LoadOptions): Promise<LoadManyResult>;
/**
 * Load instance factories from multiple directories
 *
 * Directories are searched in order, with earlier directories
 * taking precedence for duplicate type names.
 */
export declare function loadFromMultipleSources(sources: Array<{
    path: string;
    pattern?: string;
}>, options?: {
    validate?: boolean;
    ignoreInvalid?: boolean;
}): Promise<LoadManyResult>;
//# sourceMappingURL=loader.d.ts.map