/** * Pure extraction of brand signals from fetched pages (M4). * * No network, no persistence, no LLM - just deterministic reading of the M2 * {@link ExtractedPage} shapes. Competitor discovery (the one judge call) lives * in {@link ../competitors} and is never done here. */ import type { ExtractedPage } from '../fetcher/index.js'; import type { ProfileSources } from '../types.js'; /** What {@link extractSignals} pulls off the pages, with a source per field. */ export interface ExtractedSignals { brand: string; aliases: string[]; category?: string; offerings?: string[]; locale?: string; sources: ProfileSources; } /** A best-effort brand name from the domain alone (the last-resort fallback). */ export declare function brandFromDomain(domain: string): string; /** Extract deterministic brand signals from homepage + sampled pages. */ export declare function extractSignals(domain: string, pages: ExtractedPage[]): ExtractedSignals;