/** * Default mapping from IR `type.name` strings to Convex value validators * (`convex/values` `v.*` expressions). * * This table is the projection's sole interpreter of Manifest's open type * vocabulary for Convex. Core grammar carries `type.name` as an arbitrary * string; only the projection knows what any given name means for Convex. * * Consumers override per-property via `typeMappings` (the value is the literal * validator expression, e.g. `"v.number()"`). Anything not in this table and * not overridden produces a hard diagnostic — no fallback, no guessing. * * Numeric mapping — aligned with Manifest runtime semantics: * - `number` is INTENTIONALLY ABSENT. Bare `number` → hard * CONVEX_AMBIGUOUS_NUMBER so authors pick a precise name. * - `int`/`bigint`/`float`/`decimal`/`money` all → `v.number()` (Convex * Float64). The Manifest reference runtime treats every numeric type as an * ordinary JS number — decimal/money precision and integer width are * projection metadata, NOT runtime-enforced. Emitting `v.int64()` (bigint) * or `v.string()` (text transport) here would diverge from that and break * generated guard/mutation arithmetic at runtime (mixed bigint/number throws; * string operands concatenate or compare lexically). A consumer that truly * needs lossless decimal or 64-bit width can opt in per-property via * `typeMappings` (`"v.int64()"` / `"v.string()"`). * * Temporal values map to `v.number()` (epoch milliseconds), the Convex-idiomatic * timestamp representation. Override to `v.string()` for ISO-8601 storage. * * Entries here keep the IR side backend-neutral: keys are Manifest-language type * names, values are Convex validator expressions. */ export declare const DEFAULT_TYPE_MAPPING: Readonly>; /** * Resolve a Convex validator expression for an IR `type.name`, given optional * per-property overrides from projection config. Returns `undefined` when the * name is unknown and no override is supplied — the caller MUST emit a * diagnostic in that case (no fallback). */ export declare function resolveConvexValidator(irTypeName: string, overrides: Readonly> | undefined, propertyName: string): string | undefined; /** * Convex `.searchIndex` requires `searchField` to be a string column. * True when the default IR→Convex mapping is `v.string()`. */ export declare function isConvexSearchIndexFieldType(irTypeName: string): boolean; //# sourceMappingURL=type-mapping.d.ts.map