///
import { EventEmitter } from "events";
import type { CrawlerOptions, RequestConfig, CrawlerResponse } from "./types/crawler.js";
declare class Crawler extends EventEmitter {
private _limiters;
private _UAIndex;
private _proxyIndex;
options: CrawlerOptions;
seen: any;
constructor(options?: CrawlerOptions);
private _detectHtmlOnHeaders;
private _schedule;
private _execute;
private _handler;
get queueSize(): number;
/**
* @param rateLimiterId
* @param property
* @param value
* @description Set the rate limiter property.
* @version 2.0.0 Only support `rateLimit` change.
* @example
* ```js
* const crawler = new Crawler();
* crawler.setLimiter(0, "rateLimit", 1000);
* ```
*/
setLimiter(rateLimiterId: number, property: string, value: unknown): void;
/**
* @param options
* @returns if there is a "callback" function in the options, return the result of the callback function. \
* Otherwise, return a promise, which resolves when the request is successful and rejects when the request fails.
* In the case of the promise, the resolved value will be the response object.
* @description Send a request directly.
* @example
* ```js
* const crawler = new Crawler();
* crawler.send({
* url: "https://example.com",
* callback: (error, response, done) => { done(); }
* });
* await crawler.send("https://example.com");
* ```
*/
send: (options: RequestConfig) => Promise;
/**
* @deprecated
* @description Old interface version. It is recommended to use `Crawler.send()` instead.
* @see Crawler.send
*/
direct: (options: RequestConfig) => Promise;
/**
* @param options
* @description Add a request to the queue.
* @example
* ```js
* const crawler = new Crawler();
* crawler.add({
* url: "https://example.com",
* callback: (error, response, done) => { done(); }
* });
* ```
*/
add: (options: RequestConfig) => void;
/**
* @deprecated
* @description Old interface version. It is recommended to use `Crawler.add()` instead.
* @see Crawler.add
*/
queue: (options: RequestConfig) => void;
}
export default Crawler;
//# sourceMappingURL=crawler.d.ts.map