import type { GoalTodoCanonicalReferenceInput, GoalTodoIndex, GoalTodoLegacyReferenceAdaptation, GoalTodoReferenceBatchResolution, GoalTodoReferenceResolution } from "./types.js"; export declare const CANONICAL_GOAL_TODO_ID_PATTERN: RegExp; export declare const VISIBLE_GOAL_TODO_PATH_PATTERN: RegExp; /** Injected randomness source; the store wires real crypto in a later phase. */ export type GoalTodoRandomBytes = (byteCount: number) => Uint8Array; /** Canonical TODO node id: todo_ + 12 lowercase hex characters from 6 injected random bytes. */ export declare function generateGoalTodoId(randomBytes: GoalTodoRandomBytes): string; export declare function isCanonicalGoalTodoId(id: string): boolean; export declare function isVisibleGoalTodoPath(path: string): boolean; /** Parse a visible dotted path (1, 1.2, 12.3.4) into positive integer segments. */ export declare function parseGoalTodoPath(path: string): number[] | undefined; /** * Resolve strict canonical fields without legacy interpretation or * id-to-path fallback. When both fields are present, each resolves * independently in the requested goal and must agree on the same node. */ export declare function resolveCanonicalGoalTodoReference(index: GoalTodoIndex, input?: GoalTodoCanonicalReferenceInput): GoalTodoReferenceResolution; /** Resolve and deduplicate a batch in input order; any failed item fails the whole batch atomically. */ export declare function resolveCanonicalGoalTodoReferences(index: GoalTodoIndex, inputs: readonly GoalTodoCanonicalReferenceInput[]): GoalTodoReferenceBatchResolution; /** * Explicit compatibility adapter for legacy mixed refs (todo_ shorthand * or bare path). Strict resolvers never call this adapter; its result is * flagged adapted so callers can distinguish conversion from acceptance. */ export declare function adaptLegacyGoalTodoReference(ref: string): GoalTodoLegacyReferenceAdaptation | undefined;