import type { ExtensionAutoConvertHandler, ExtensionKey, ExtensionManifest, ExtensionType } from './types/extension-manifest';
import type { Parameters } from './types/extension-parameters';
import type { ExtensionProvider } from './types/extension-provider';
export default class DefaultExtensionProvider<T extends Parameters> implements ExtensionProvider<T> {
    protected manifestsPromise: Promise<ExtensionManifest<T>[]>;
    protected manifestsCache: ExtensionManifest<T>[];
    protected autoConvertHandlers?: ExtensionAutoConvertHandler[];
    constructor(manifests: ExtensionManifest<T>[] | Promise<ExtensionManifest<T>[]>, 
    /**
     * Allows for an optional list of pre compiled auto convert handlers to be passed.
     * Useful for performance improvements or to support legacy converters.
     *
     * Warning: If this attribute is passed, this provider will ignore auto convert patterns from the manifests.
     */
    autoConvertHandlers?: ExtensionAutoConvertHandler[]);
    getExtensions(): Promise<ExtensionManifest<T>[]>;
    preload(): Promise<void>;
    getPreloadedExtension(type: ExtensionType, key: ExtensionKey): ExtensionManifest<T> | undefined;
    getExtension(type: ExtensionType, key: ExtensionKey): Promise<ExtensionManifest<T>>;
    private getExtensionFromManifest;
    search(keyword: string): Promise<ExtensionManifest<T>[]>;
    getAutoConverter(): Promise<ExtensionAutoConvertHandler[]>;
}
