import type { ComputedRef } from 'vue'; import type { FullBlokkliAdapter, BlokkliAdapterExtension, AdapterExtensionMethods, AdapterContext, BlokkliAdapterExtensionFactory } from '#blokkli/editor/adapter'; export type AdapterExtensionDefinition = { namespace: string; factory: BlokkliAdapterExtensionFactory; }; export interface AdaptersProvider { /** * The base adapter. */ adapter: FullBlokkliAdapter; /** * All registered extensions. */ extensions: BlokkliAdapterExtension[]; /** * Get aggregated results from base adapter + all extensions. * Results from extensions have their IDs prefixed with namespace. */ getAggregated>(methodName: K): Promise; /** * Call a method, routing to the correct source based on namespace in pluginId. * If pluginId has namespace prefix, calls extension; otherwise calls base adapter. */ callNamespaced>(methodName: K, args: { pluginId: string; } & Record): Promise; /** * Get extension by namespace. */ getExtension(namespace: string): BlokkliAdapterExtension | undefined; } export default function adaptersProvider(adapter: FullBlokkliAdapter, extensionDefinitions: AdapterExtensionDefinition[], context: ComputedRef): Promise;