import { Logger } from '@btc-vision/logger';
import { ThreaderOptions, WorkerScript } from './interfaces/IThread.js';
export declare abstract class BaseThreader<TOp extends string, TData, TResult> extends Logger {
    readonly logColor: string;
    protected abstract readonly workerScript: WorkerScript;
    private workers;
    private available;
    private pending;
    private queue;
    private idCounter;
    private initialized;
    private initializing;
    private tasksProcessed;
    private tasksFailed;
    private lastStatsLog;
    private readonly poolSize;
    private readonly statsInterval;
    private cleanupBound;
    protected constructor(options?: ThreaderOptions);
    get stats(): {
        pending: number;
        queued: number;
        available: number;
        total: number;
        processed: number;
        failed: number;
    };
    terminate(): Promise<void>;
    drain(): Promise<void>;
    protected runWithTransfer(op: TOp, data: TData, transferables: ArrayBuffer[]): Promise<TResult>;
    protected run(op: TOp, data: TData): Promise<TResult>;
    private bindCleanupHandlers;
    private init;
    private logStatsIfNeeded;
    private processQueue;
}
