import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _createClass from "@babel/runtime/helpers/createClass";
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
import _get from "@babel/runtime/helpers/get";
import _inherits from "@babel/runtime/helpers/inherits";
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
import { EventEmitter } from 'events';
import { SharedAnnotationManager } from './manager';
export var AnnotationUpdateEmitter = /*#__PURE__*/function (_EventEmitter) {
  function AnnotationUpdateEmitter() {
    _classCallCheck(this, AnnotationUpdateEmitter);
    return _callSuper(this, AnnotationUpdateEmitter, arguments);
  }
  _inherits(AnnotationUpdateEmitter, _EventEmitter);
  return _createClass(AnnotationUpdateEmitter, [{
    key: "on",
    value: function on(event, listener) {
      return _superPropGet(AnnotationUpdateEmitter, "on", this, 3)([event, listener]);
    }
  }, {
    key: "off",
    value: function off(event, listener) {
      return _superPropGet(AnnotationUpdateEmitter, "removeListener", this, 3)([event, listener]);
    }
  }]);
}(EventEmitter);

// type ActionResult = { step: Step; doc: JSONDocNode } | false;

// | false;

// ### Events

// ### Hook Results

/**
 * This is the list of methods which exist on the Manager interface. These are the methods that can be hooked into.
 */

/*
 * This is the public interface for the AnnotationManager. It provides methods for interacting with the manager.
 */

/**
 * This is a factory method which creates a new instance of the AnnotationManager.
 *
 * @example
 * const annotationManager: AnnotationManager = createAnnotationManager();
 */
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
export function createAnnotationManager() {
  return new SharedAnnotationManager();
}