import type { GptClient } from './GptClient';
/**
 * A GPT client plugin provides a factory for creating {@link GptClient}
 * instances for a custom config type. Plugins are registered with a string
 * key that matches the `type` field on configuration objects.
 *
 * Plugins are self-contained — they define their own config shape and
 * validate it internally.
 */
export interface GptClientPlugin {
    /** The config type string this plugin handles (e.g., 'MY_CUSTOM_GPT'). */
    type: string;
    /** Creates a GptClient instance from the given configuration object. */
    createClient(config: Record<string, unknown>): Promise<GptClient>;
}
/**
 * An immutable registry of GPT client plugins, keyed by config type.
 * Created once at startup and threaded through the application.
 */
export declare class GptClientPluginRegistry {
    private readonly plugins;
    constructor(plugins: GptClientPlugin[]);
    /** Look up a registered GPT client plugin by config type. */
    get(type: string): GptClientPlugin | undefined;
}
//# sourceMappingURL=GptClientPlugin.d.ts.map