/** The shape of plugin metadata objects in plugin-manifest.json */ export interface IPluginMetaData { id?: string; /** @deprecated use `id` instead */ name?: string; version: string; url?: string; /** @deprecated if using a plugin-manifest.json baked into a deck instance, use `url` instead */ devUrl?: string; module?: any; } type ISource = 'gate' | 'deck'; export interface INormalizedPluginMetaData { id: string; source: ISource; version: string; url?: string; module?: any; } export declare class PluginRegistry { private pluginManifests; getRegisteredPlugins(): INormalizedPluginMetaData[]; registerPluginMetaData(source: ISource, pluginMetaData: IPluginMetaData): INormalizedPluginMetaData | undefined; normalize(source: ISource, pluginMetaData: IPluginMetaData): INormalizedPluginMetaData; validateMetaData(pluginMetaData: IPluginMetaData): void; /** Loads plugin manifest file served as a custom deck asset */ loadPluginManifestFromDeck(): Promise; /** Loads plugin manifest file served from gate */ loadPluginManifestFromGate(): Promise; /** * Loads plugin manifests from Gate and from `/plugin-manifest.json` in the deck resources * * plugin-manifest.json should contain an array of IPluginMetaData objects, i.e., * [{ 'name': 'myPlugin', 'version': '1.2.3', 'url': '/plugins/index.js' }] */ loadPluginManifest(source: ISource, location: string, pluginsMetaDataPromise: PromiseLike): Promise; loadPlugins(): Promise; private load; private loadModuleFromUrl; } export {};