type CanonicalDifferenceKind = 'none' | /** Same resource, different spelling: trailing slash, scheme, `www.`, host case. */ 'formatting' | /** Same host, genuinely different resource. The ordinary "Google overrode you". */ 'path' | /** Different host. Rare and usually serious — never fold this into `path`. */ 'cross_domain'; /** * Classify how a page's declared canonical differs from the one Google chose. * * Both values come straight from the URL Inspection API. A missing value on * either side is `none` — it preserves the both-non-null guard of the predicate * this replaces, and "Google has no opinion yet" is not a mismatch. */ declare function classifyCanonicalDifference(userCanonical: string | null | undefined, googleCanonical: string | null | undefined): CanonicalDifferenceKind; /** * Does this pair represent a canonical problem worth counting? * * `formatting` differences are excluded: they are the same resource spelled two * ways, and counting them is what inflated the headline number. Surface them * separately if they matter, but never in the mismatch count. */ declare function isCanonicalMismatch(userCanonical: string | null | undefined, googleCanonical: string | null | undefined): boolean; export { CanonicalDifferenceKind, classifyCanonicalDifference, isCanonicalMismatch };