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 {