import { RevealInstance } from '../types'; export type { RevealInstance }; /** * The plugin's init callback. * * Written as a method and then read back off with an indexed access so the * signature keeps its method-bivariance: `strictFunctionTypes` checks * function-typed *properties* contravariantly, which would reject a callback * that annotates `deck` with the full deck type from the author's own * reveal.js version rather than with `RevealInstance`. */ interface PluginInitHolder { init(plugin: PluginBase, deck: RevealInstance, config: TConfig): void | Promise; } export type PluginInit = PluginInitHolder['init']; interface PluginOptions { /** Unique identifier for the plugin */ id: string; /** Plugin initialization function */ init?(plugin: PluginBase, deck: RevealInstance, config: TConfig): void | Promise; /** Default configuration object */ defaultConfig?: TConfig; } export declare class PluginBase> { private readonly defaultConfig; private readonly pluginInit?; readonly pluginId: string; private mergedConfig; private userConfigData; /** Public data storage for plugin state */ data: Record; constructor(idOrOptions: string | PluginOptions, init?: PluginInit, defaultConfig?: TConfig); private initializeConfig; getCurrentConfig(): TConfig; getData(): Record | undefined; get userConfig(): Partial; getEnvironmentInfo: () => import('..').EnvironmentInfo; init(deck: RevealInstance): void | Promise; createInterface(additionalExports?: Record): Record; }