import { Configurable, IConfigurable, IOptions } from './Configurable'; import { IScrap, Scrap } from './Scrap'; export interface IScraperData { name: string; domains: string[]; urlPattern: RegExp; } export declare type IScraperOptions = IOptions; export interface IScraper extends IScraperData, IConfigurable { scrap: (url: string, options?: SO) => Promise>; } export declare abstract class Scraper extends Configurable implements IScraper { abstract name: string; abstract domains: string[]; abstract urlPattern: RegExp; isApplicable(url: string): boolean; isApplicableDomain(domain: string): boolean; getUrlData(url: string, throwIfNull: true): RegExpExecArray; getUrlData(url: string, throwIfNull: false): RegExpExecArray | null; scrap(url: string, options?: SO): Promise>; protected getScrap(url: string, dataSupplier: () => Promise): Promise>; protected abstract exec(url: string, options: SO): Promise; }