import { InitializerOptions } from '../../viewer';
import { FetchOptions } from '../../utils';
import { Plugin } from '../plugin';
import { Interaction } from '../interaction';
import { InteractionEditorInitializer } from './interaction-editor-initializer';
import { InteractionEditorLayerBuilder } from './interaction-editor-layer-builder';
import { InteractionEditorManager } from './interaction-editor-manager';
import { InteractionTypeField, InteractionTypeFieldProps } from './interaction-type';
export type InteractionEditorPluginParams = {
    api: FetchOptions | ((options: InitializerOptions) => FetchOptions);
    autoFetch?: boolean;
    interactions?: Interaction[];
};
export declare class InteractionEditorPlugin extends Plugin<InteractionEditorPluginParams> {
    protected initializers: (typeof InteractionEditorInitializer)[];
    protected layerBuilders: (typeof InteractionEditorLayerBuilder)[];
    private _interactionEditorManager?;
    private interactionTypes;
    get interactionEditorManager(): InteractionEditorManager | undefined;
    getInteractionTypes(): Map<string, InteractionTypeField>;
    addInteractionType(key: string, field?: InteractionTypeField | InteractionTypeFieldProps): void;
    removeInteractionType(key: string): void;
    protected init(): Promise<void>;
    protected onLoad(): void;
    protected destroyInteractionEditorManager(): void;
    protected destroy(): void;
}
