/**
 * Factory for creating plugin managers and builders
 *
 * Provides convenient factory methods for creating:
 * - Plugin managers with type safety
 * - Plugin manager builders for fluent configuration
 * - Type-safe managers with explicit input/output types
 */
import { PluginManager } from '../manager';
import { PluginManagerBuilder } from '../builder';
export declare class ManagerFactory {
    /**
     * Creates a new plugin manager instance
     *
     * @template TInput - Type of input data for plugins
     * @template TOutput - Type of output data from plugins
     * @template TMetadata - Type of execution metadata
     * @returns New plugin manager instance
     */
    static create<TInput = unknown, TOutput = unknown, TMetadata extends Record<string, unknown> = Record<string, unknown>>(): PluginManager<TInput, TOutput, TMetadata>;
    /**
     * Creates a new plugin manager builder for fluent configuration
     *
     * @template TInput - Type of input data for plugins
     * @template TOutput - Type of output data from plugins
     * @template TMetadata - Type of execution metadata
     * @returns New plugin manager builder instance
     */
    static builder<TInput = unknown, TOutput = unknown, TMetadata extends Record<string, unknown> = Record<string, unknown>>(): PluginManagerBuilder<TInput, TOutput, TMetadata>;
    /**
     * Creates type-safe factory methods for specific input/output types
     * Useful when working with known data structures
     *
     * @param inputType - Constructor for input type (for type inference)
     * @param outputType - Constructor for output type (for type inference)
     * @returns Object with typed create and builder methods
     */
    static typed<TInput, TOutput>(inputType: new () => TInput, outputType: new () => TOutput): {
        /**
         * Creates typed plugin manager
         */
        create: <TMetadata extends Record<string, unknown> = Record<string, unknown>>() => PluginManager<TInput, TOutput, TMetadata>;
        /**
         * Creates typed plugin manager builder
         */
        builder: <TMetadata extends Record<string, unknown> = Record<string, unknown>>() => PluginManagerBuilder<TInput, TOutput, TMetadata>;
    };
}
//# sourceMappingURL=manager.factory.d.ts.map