///
///
///
import type * as fs from 'fs';
import type * as net from 'net';
import type { PassThrough } from 'stream';
import type { ParamsIRC } from './connect';
import Connect from './connect';
import type { FileInfo } from './interfaces/fileinfo';
import type { Job } from './interfaces/job';
import ProgressBar from './lib/progress';
export type ParamsTimeout = ParamsIRC & {
/**
* Number of retries when a download fails
* @default `1`
* @example
* ```js
* // we've set params.retry = 2
* xdccJS.download('xdcc|bot', '20, 25')
* // if download of pack '20' fails it will retry twice before skipping to pack '25'
*/
retry: number;
/**
* Queue Regex
*/
queue?: RegExp;
};
interface TimeoutSetup {
candidate: Job;
eventType: 'error' | 'cancel';
message: string;
padding?: number;
executeLater?: () => void;
disconnectAfter?: {
stream: fs.WriteStream | PassThrough;
socket?: net.Socket;
server?: net.Server;
pick?: number | undefined;
bar?: ProgressBar;
};
delay: number;
fileInfo?: FileInfo;
}
export declare class TimeOut extends Connect {
protected portInUse: number[];
protected retry: number;
protected queue?: RegExp;
constructor(params: ParamsTimeout);
protected SetupTimeout(obj: TimeoutSetup): void;
protected DisableTimeOutOnQueue(job: Job, regex: RegExp): void;
private TOendStreams;
private TOstart;
private routine;
protected redownload(candidate: Job, fileInfo?: FileInfo): void;
protected static makeClearable(candidate: Job): void;
}
export {};