+import type { IPoolInternal } from '../pool-internal'
+import type { IPoolWorker } from '../pool-worker'
+
/**
* Enumeration of worker choice strategies.
*/
export type WorkerChoiceStrategy = keyof typeof WorkerChoiceStrategies
/**
- * Pool tasks usage statistics requirements.
+ * Pool worker tasks usage statistics requirements.
*/
export interface RequiredStatistics {
runTime: boolean
+ avgRunTime: boolean
}
/**
* Worker choice strategy interface.
*/
-export interface IWorkerChoiceStrategy {
+export interface IWorkerChoiceStrategy<
+ Worker extends IPoolWorker,
+ Data = unknown,
+ Response = unknown
+> {
+ /**
+ * The pool instance.
+ */
+ readonly pool: IPoolInternal<Worker, Data, Response>
/**
- * Is the pool attached to the strategy dynamic?.
+ * Is the pool bound to the strategy dynamic?.
*/
readonly isDynamicPool: boolean
/**