import { z } from 'zod'; export declare const DialectSchema: z.ZodObject<{ issueBoundary: z.ZodEnum<{ heading: "heading"; "checkbox-item": "checkbox-item"; }>; idPattern: z.ZodString; status: z.ZodUnion; label: z.ZodString; vocabulary: z.ZodRecord; }, z.core.$strict>, z.ZodObject<{ at: z.ZodLiteral<"checkbox">; vocabulary: z.ZodObject<{ checked: z.ZodString; unchecked: z.ZodString; }, z.core.$strict>; }, z.core.$strict>]>; hierarchy: z.ZodEnum<{ flat: "flat"; "heading-nesting": "heading-nesting"; }>; }, z.core.$strict>; export type Dialect = z.infer; export declare const DIALECTS: Record; /** Resolve a config `dialect` value: a NAME looks up the registry (unknown names ERROR, the * GrammarPack discipline), an inline object validates against the schema. */ export declare function resolveDialect(value: string | Dialect): { dialect: Dialect; name: string; }; export interface DialectIssue { id: string; title: string; /** Tracker state name. Never absent: an issue with no readable status token defaults to * `draft` with `statusExplicit: false` — nothing claimed, nothing gated. */ status: string; /** True iff the status came from an actual surface token (vocabulary hit / checkbox), false * when defaulted. Detection counts only explicit ones — the false-positive floor. */ statusExplicit: boolean; parent: string | null; children: string[]; body: string; lineStart: number; lineEnd: number; } export interface DialectDiagnostic { kind: 'duplicate_id' | 'status_unrecognized'; id: string; line: number; message: string; } export interface DialectParseResult { issues: DialectIssue[]; diagnostics: DialectDiagnostic[]; } /** THE engine: apply one dialect to one file's text. No dialect-specific branches — only * boundary-kind dispatch over the declared data. */ export declare function parseWithDialect(text: string, dialect: Dialect): DialectParseResult; export interface DialectDetection { name: string; dialect: Dialect; /** Ids of the issues that made the floor (explicit status only). */ ids: string[]; } /** Try every built-in dialect speculatively; a match needs >= 2 issues with an id AND an * EXPLICIT status (the false-positive floor — prose never volunteers both). A tie between * dialects is a null: guessing wrong is worse than staying quiet. */ export declare function detectDialect(text: string): DialectDetection | null;