///
import { RTEPlugin as Plugin } from "./RTE";
import { IConfig, IDisplayOnOptions, IDynamicFunction, IElementTypeOptions, IOnFunction, IRteElementType, IRteParam } from "./RTE/types";
import { InitializationData } from "./types";
import UiLocation from "./uiLocation";
declare type PluginConfigCallback = (sdk: UiLocation) => Promise | IConfig;
interface PluginDefinition {
id: string;
config: Partial;
callbacks: Partial;
asyncConfigCallback?: PluginConfigCallback;
childBuilders: PluginBuilder[];
}
declare class PluginBuilder {
private id;
private _config;
private _callbacks;
private _asyncConfigCallback?;
private _childBuilders;
constructor(id: string);
title(title: string): PluginBuilder;
icon(icon: React.ReactElement | null): PluginBuilder;
display(display: IDisplayOnOptions | IDisplayOnOptions[]): PluginBuilder;
elementType(elementType: IElementTypeOptions | IElementTypeOptions[] | IDynamicFunction): PluginBuilder;
render(renderFn: (element: React.ReactElement, attrs: {
[key: string]: any;
}, path: number[], rte: IRteParam) => React.ReactElement): PluginBuilder;
shouldOverride(shouldOverrideFn: (element: IRteElementType) => boolean): PluginBuilder;
on(type: T, callback: IOnFunction[T]): PluginBuilder;
configure(callback: PluginConfigCallback): PluginBuilder;
addPlugins(...builders: PluginBuilder[]): PluginBuilder;
/**
* Builds and returns a definition of the RTE Plugin, ready to be materialized
* into a concrete RTEPlugin instance later when the SDK and Plugin Factory are available.
* This method no longer performs the actual creation of RTEPlugin instances.
*/
build(): PluginDefinition;
}
declare function registerPlugins(...pluginDefinitions: PluginDefinition[]): (context: InitializationData, rte: IRteParam) => Promise<{
[key: string]: Plugin;
}>;
export { IConfig, IDisplayOnOptions, IDynamicFunction, IElementTypeOptions, IOnFunction, IRteElementType, IRteParam, Plugin, PluginBuilder, PluginDefinition, registerPlugins };
//# sourceMappingURL=rtePlugin.d.ts.map