/** * Topic taxonomy per SPEC/uvrn-receipt-v1.md §4: controlled starter domains plus an open * `custom/` extension. Validation normalizes; it never rejects — recorded, not hidden. */ import type { Topic } from '../types'; /** The controlled starter domains (decision D-4). */ export declare const STARTER_DOMAINS: readonly ["markets", "products", "news", "research", "claims"]; /** * parseTopic splits a serialized topic string into its structured form. * Extra segments beyond the third are folded into `instrument`. */ export declare function parseTopic(serialized: string): Topic; /** formatTopic serializes a structured Topic to its `domain[/subject[/instrument]]` string. */ export declare function formatTopic(topic: Topic): string; /** * NormalizedTopic reports the accepted serialized form plus whether normalization changed it. */ export interface NormalizedTopic { topic: string; /** True when the input was rewritten (sanitized segments or moved under `custom/`). */ normalized: boolean; } /** * normalizeTopic accepts any topic (string or structured) and returns the canonical serialized * form. Unknown domains are preserved under `custom/`; nothing is ever rejected. */ export declare function normalizeTopic(input: string | Topic): NormalizedTopic; /** * isValidTopicString checks that a serialized topic is already in canonical form * (starter or custom domain, sanitized segments). Use normalizeTopic to repair, not reject. */ export declare function isValidTopicString(serialized: string): boolean; //# sourceMappingURL=index.d.ts.map