diff --git a/src/bot.ts b/src/bot.ts
index 83dc42072303cc9030a750690b10a0ef43a1a382..148eb1e5fb1103d17bfe042a65390cd8aace6944 100644
--- a/src/bot.ts
+++ b/src/bot.ts
@@ -40,31 +40,6 @@ export const DEFAULT_WORKERBEE_OPTIONS = {
 
 export const DEFAULT_BLOCK_INTERVAL_TIMEOUT = 1500;
 
-interface IWorkerBeeEvents {
-  "stop": () => void | Promise<void>;
-  "start": () => void | Promise<void>;
-  "block": (blockData: IBlockData) => void | Promise<void>;
-  "transaction": (transactionData: ITransactionData) => void | Promise<void>;
-  "error": (error: WorkerBeeError) => void | Promise<void>;
-}
-
-/* eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging */
-export declare interface WorkerBee {
-  on<U extends keyof IWorkerBeeEvents>(
-    event: U, listener: IWorkerBeeEvents[U]
-  ): this;
-
-  once<U extends keyof IWorkerBeeEvents>(
-    event: U, listener: IWorkerBeeEvents[U]
-  ): this;
-
-  off<U extends keyof IWorkerBeeEvents>(
-    event: U, listener: IWorkerBeeEvents[U]
-  ): this;
-}
-
-
-/* eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging */
 export class WorkerBee extends EventEmitter implements IWorkerBee {
   public running: boolean = false;
 
diff --git a/src/interfaces.ts b/src/interfaces.ts
index cef311cf2b936352424f2d0ad56c0573d1dcf521..82c5e9f2a8b15eaed88f08c5159d37c0b356e5e6 100644
--- a/src/interfaces.ts
+++ b/src/interfaces.ts
@@ -1,8 +1,8 @@
-import type EventEmitter from "events";
 import type { IBeekeeperUnlockedWallet } from "@hiveio/beekeeper";
 import type { ApiAccount, ApiBlock, ApiTransaction, IHiveChainInterface, ITransaction, operation } from "@hiveio/wax";
 import type { Subscribable } from "rxjs";
 import type { IStartConfiguration } from "./bot";
+import type { WorkerBeeError } from "./errors";
 
 export interface IBlockData {
   number: number;
@@ -64,7 +64,7 @@ export interface IQueenBee {
 
 export interface IBroadcastOptions {
   /**
-   * Can be either absolute time that will be passed to the {@link Date} constructor
+   * Can be either absolute time that will be passed to the Date constructor
    * or relative time, like: "+10s", "+2m", "+1h"
    *
    * @type {string | number | Date}
@@ -73,7 +73,15 @@ export interface IBroadcastOptions {
   throwAfter?: string | number | Date;
 }
 
-export interface IWorkerBee extends EventEmitter {
+export interface IWorkerBeeEvents {
+  "stop": () => void | Promise<void>;
+  "start": () => void | Promise<void>;
+  "block": (blockData: IBlockData) => void | Promise<void>;
+  "transaction": (transactionData: ITransactionData) => void | Promise<void>;
+  "error": (error: WorkerBeeError) => void | Promise<void>;
+}
+
+export interface IWorkerBee {
   readonly running: boolean;
   readonly configuration: Readonly<IStartConfiguration>;
 
@@ -123,41 +131,17 @@ export interface IWorkerBee extends EventEmitter {
    */
   [Symbol.asyncIterator](): AsyncIterator<IBlockData>;
 
-  /**
-   * Triggers on any bot start
-   *
-   * @param event event name
-   * @param handler handler to be called before automation start
-   */
-  on(event: "start", handler: () => void): this;
-  /**
-   * Triggers on any bot stop
-   *
-   * @param event event name
-   * @param handler handler to be called after complete stop of the automation
-   */
-  on(event: "stop", handler: () => void): this;
-  /**
-   * Triggers on any bot-related error
-   *
-   * @param event event name
-   * @param handler handler to be called on error event
-   */
-  on(event: "error", handler: (error: Error) => void): this;
-  /**
-   * Triggers on new block detected
-   *
-   * @param event event name
-   * @param handler handler to be called on new block event
-   */
-  on(event: "block", handler: (data: IBlockData) => void): this;
-  /**
-   * Triggers on new transaction detected
-   *
-   * @param event event name
-   * @param handler handler to be called on new block event
-   */
-  on(event: "transaction", handler: (data: ITransactionData) => void): this;
+  on<U extends keyof IWorkerBeeEvents>(
+    event: U, listener: IWorkerBeeEvents[U]
+  ): this;
+
+  once<U extends keyof IWorkerBeeEvents>(
+    event: U, listener: IWorkerBeeEvents[U]
+  ): this;
+
+  off<U extends keyof IWorkerBeeEvents>(
+    event: U, listener: IWorkerBeeEvents[U]
+  ): this;
 }
 
 export interface IWorkerBeeConstructor {