import { HtmlTools, PropertyMap } from '../index.js';
import { AppearsOn, Resource } from '../../model/index.js';
import { PropertyFilter } from '../graph/filter-by-property.js';
export interface FoundPattern extends HtmlTools.ElementData {
pattern: string;
selector: string;
}
export type ConditionalPatternGroup = PropertyFilter & {
patterns?: PatternDefinition[];
pattern?: PatternDefinition;
};
export declare function isConditionalPatternGroup(input: unknown): input is ConditionalPatternGroup;
export declare function isPatternDefinition(input: unknown): input is PatternDefinition;
/**
* Description of a specific markup pattern, like design element or page component.
*/
export interface PatternDefinition extends HtmlTools.ElementDataOptions {
/**
* A unique name for the pattern
*/
name: string;
description?: string;
patternKey?: string;
/**
* Indicates that the definition is a named variation of a more generic pattern.
*/
variant?: string;
/**
* A CSS selector used to identify the pattern
*/
selector: string;
/**
* When an instance of this pattern is found, remove its markup from the DOM
* so it won't be matched multiple times.
*/
exclusive?: boolean;
/**
* When a pattern instance is found, attempt to extract additional information
* via property comparisons or DOM sub-queries.
*/
properties?: Record;
}
export declare function findAndSavePagePatterns(input: Resource, patterns: PatternDefinition | (PatternDefinition | ConditionalPatternGroup)[]): Promise;
/**
* Identify and extract instances of markup patterns inside an HTML page.
*/
export declare function findPagePatterns(input: string | cheerio.Root | Resource, patterns: PatternDefinition | PatternDefinition[]): AppearsOn[];
/**
* Identify and extract instances of markup patterns inside an HTML page.
*
* @param html - Raw HTML markup, or a Cheerio object
* @param patterns - One or more pattern definitions
*/
export declare function findPatternInstances(input: string | cheerio.Root | Resource, pattern: PatternDefinition): FoundPattern[];
//# sourceMappingURL=find-patterns.d.ts.map