import type { GptConfigInput } from '../models/GptConfig';
import type { GptClient } from './GptClient';
import { GptClientPluginRegistry } from './GptClientPlugin';
/**
 * Interface for creating GPT clients from configuration objects.
 * This allows for dependency injection and easier testing.
 */
export interface GptClientFactory {
    /**
     * Creates and validates a GPT client from the given configuration.
     * @param config The GPT configuration to create a client from
     * @returns A validated GPT client instance
     * @throws Error if the configuration is invalid or the client cannot be created
     */
    createClient(config: GptConfigInput): Promise<GptClient>;
}
/**
 * Default implementation of GptClientFactory that creates GPT clients
 * based on configuration and validates them by performing a ping.
 *
 * Built-in types are handled directly; unknown types are delegated to
 * the GPT client plugin registry.
 */
export declare class GptClientFactoryImpl implements GptClientFactory {
    private readonly gptClientPlugins;
    constructor(gptClientPlugins?: GptClientPluginRegistry);
    createClient(config: GptConfigInput): Promise<GptClient>;
    /**
     * Resolves the correct GptClient implementation for the given config.
     * Built-in config types (matching {@link GptConfigSchema}) are handled
     * by known implementations; everything else is delegated to the
     * GPT client plugin registry.
     */
    private resolveClient;
    private createBuiltInClient;
}
//# sourceMappingURL=GptClientFactory.d.ts.map