export type Tier = "present" | "missing" | "template-default" | "likely-default" | "dead-image";
/** The five tags the checklist reads. `twitter:card` is read but reported only through `social`. */
export type FieldKey = "title" | "description" | "image";
export interface Finding {
field: FieldKey;
tier: Tier;
/** The value found, if any. Both default tiers PRINT it — evidence is what makes them safe. */
value?: string;
/** The tag as it appears in the source, e.g. ``. */
tag: string;
}
export interface FileFindings {
/** The dist-relative html path, e.g. `index.html`. */
file: string;
findings: Finding[];
}
export interface ParsedMeta {
title?: string;
ogTitle?: string;
description?: string;
ogDescription?: string;
ogImage?: string;
ogUrl?: string;
twitterCard?: string;
}
export declare function parseMeta(html: string): ParsedMeta;
export interface ClassifyContext {
/** Every normalized path in the manifest — what makes the dead-og:image check structural. */
manifestPaths: ReadonlySet;
/** `.`, for the og:url host heuristic. Absent skips that check. */
expectedHost?: string;
}
/**
* CLASSIFY, per 2A:
* absent -> MISSING
* value in the bundled corpus -> TEMPLATE-DEFAULT (high confidence)
* value matches a generic shape -> LIKELY-DEFAULT (low confidence)
* else -> PRESENT
*
* Plus the one structural certainty: an og:image naming a path that is not in the
* manifest is a dead social image, and the manifest either contains it or it does
* not.
*/
export declare function classify(meta: ParsedMeta, ctx: ClassifyContext): Finding[];
/**
* The manifest path an og:image refers to, or undefined when it is an absolute
* URL on some other host — which the CLI cannot check and must not guess about.
*/
export declare function localManifestPath(value: string): string | undefined;
/** Every `.html` in the manifest, classified. Multiple files group under their filename. */
export declare function classifyDist(distDir: string, manifestPaths: ReadonlySet, readFile: (abs: string) => Promise, join: (dir: string, rel: string) => string, ctx?: Omit): Promise;