import { default as CortexElement } from '../../../../base/src/cortex-element.ts';
import { BlockType, ToolbarConfiguration } from '../../../../types/src/content-builder';
import { LocalizeController } from '../../../../utils/src/custom-element/i18n';
import { Component, ComponentDefinition, ComponentView, ComponentViewDefinition, Editor } from 'grapesjs';

export type EditorPluginOptions = {
    localize: LocalizeController;
    multiLanguage?: boolean;
    toolbarConfigs?: ToolbarConfiguration;
};
type BlockPluginOptions = {
    extend?: string;
    id: BlockType;
    init?: (model: Component) => void;
    isComponent?: (el: Element) => boolean;
    removed?: (model: Component) => void;
    tagName: string;
    view?: (Partial<ComponentViewDefinition> & ThisType<ComponentViewDefinition & ComponentView<Component>>);
};
declare const createPlugin: <T extends CortexElement>(editor: Editor, editorOptions: EditorPluginOptions, blockOptions: BlockPluginOptions, extraAttributes?: Record<string, unknown>, overriddenDefaults?: Partial<ComponentDefinition>) => void;
export default createPlugin;
