+ * Enumeration of measurements.
+ */
+export const Measurements = Object.freeze({
+ runTime: 'runTime',
+ waitTime: 'waitTime',
+ elu: 'elu'
+} as const)
+
+/**
+ * Measurement.
+ */
+export type Measurement = keyof typeof Measurements
+
+/**
+ * Measurement options.
+ */
+export interface MeasurementOptions {
+ /**
+ * Set measurement median.
+ */
+ readonly median: boolean
+}
+
+/**
+ * Worker choice strategy options.
+ */
+export interface WorkerChoiceStrategyOptions {
+ /**
+ * Number of worker choice retries to perform if no worker is eligible.
+ *
+ * @defaultValue 6
+ */
+ readonly retries?: number
+ /**
+ * Measurement to use in worker choice strategy supporting it.
+ */
+ readonly measurement?: Measurement
+ /**
+ * Runtime options.
+ *
+ * @defaultValue \{ median: false \}
+ */
+ readonly runTime?: MeasurementOptions
+ /**
+ * Wait time options.
+ *
+ * @defaultValue \{ median: false \}
+ */
+ readonly waitTime?: MeasurementOptions
+ /**
+ * Event loop utilization options.
+ *
+ * @defaultValue \{ median: false \}
+ */
+ readonly elu?: MeasurementOptions
+ /**
+ * Worker weights to use for weighted round robin worker selection strategies.
+ * A weight is tasks maximum execution time in milliseconds for a worker node.
+ *
+ * @defaultValue Weights computed automatically given the CPU performance.
+ */
+ readonly weights?: Record<number, number>
+}
+
+/**
+ * Measurement statistics requirements.
+ *
+ * @internal