import { type AdapterInterface, type AdapterType, type FrontMcpAdapterResponse, type Reference } from '../interfaces'; type InitOptions = (T & { useFactory?: never; inject?: never; name: string; }) | { inject: () => readonly Reference[]; useFactory: (...args: any[]) => T; name: string; }; type AdapterClassWithOptions = { new (...args: any[]): any; prototype: { __options_brand?: T; }; }; type AdapterReturn = AdapterType; export declare abstract class DynamicAdapter implements AdapterInterface { abstract options: { name: string; } & TOptions; /** * Private property to ensure options are typed correctly. */ __options_brand: TOptions; /** * Static init() method to create an adapter provider. * * Each call to init() creates a unique adapter instance with its own token, * keyed by `${ClassName}:${options.name}`. This allows multiple adapters * of the same class with different configurations (e.g., multiple OpenAPI * adapters for different APIs). * * **IMPORTANT:** The `name` option must be unique per adapter class. * Registering two adapters with the same class and name will throw an error. * * @param options - Adapter options including required `name` field * @throws Error if `name` is missing/empty or if a duplicate name is detected */ static init>(this: TThis, options: InitOptions): AdapterReturn; /** * Abstract fetch method to be implemented by subclasses. * @returns A promise resolving to any type the will be used * to trnasform into tools, resources, prompts, etc. */ abstract fetch(): Promise | FrontMcpAdapterResponse; } export {}; //# sourceMappingURL=dynamic.adapter.d.ts.map