-import DynamicThreadPool from './dynamic'
-import FixedThreadPool from './fixed'
-import { ThreadWorker } from './workers'
-
-export {
- Draft,
- FixedThreadPoolOptions,
- WorkerWithMessageChannel
-} from './fixed'
-export { DynamicThreadPoolOptions } from './dynamic'
-export { ThreadWorkerOptions } from './workers'
-export { FixedThreadPool, DynamicThreadPool, ThreadWorker }
-
-module.exports = { FixedThreadPool, DynamicThreadPool, ThreadWorker }
+export type {
+ ErrorHandler,
+ ExitHandler,
+ IWorker,
+ OnlineHandler,
+ PoolOptions
+} from './pools/abstract-pool'
+export { DynamicClusterPool } from './pools/cluster/dynamic'
+export { FixedClusterPool } from './pools/cluster/fixed'
+export type { ClusterPoolOptions } from './pools/cluster/fixed'
+export type { IPool } from './pools/pool'
+export { WorkerChoiceStrategies } from './pools/selection-strategies'
+export type { WorkerChoiceStrategy } from './pools/selection-strategies'
+export { DynamicThreadPool } from './pools/thread/dynamic'
+export { FixedThreadPool } from './pools/thread/fixed'
+export type { ThreadWorkerWithMessageChannel } from './pools/thread/fixed'
+export { AbstractWorker } from './worker/abstract-worker'
+export { ClusterWorker } from './worker/cluster-worker'
+export { ThreadWorker } from './worker/thread-worker'
+export { KillBehaviors } from './worker/worker-options'
+export type { KillBehavior, WorkerOptions } from './worker/worker-options'