/**
 * Single source of truth mapping Sybase ASE system type names to:
 *   - the drizzle-sybase column factory (`int`, `varchar`, ...),
 *   - the corresponding Zod validator,
 *   - the TypeScript value type.
 *
 * Every code generator (column builders, Zod schemas, import collection) reads
 * from this one registry, so adding a type — or fixing a mapping — happens in
 * exactly one place and can never drift between generators.
 *
 * The set of factory names here is kept in lock-step with the exports of
 * `../columns/index.ts`.
 */
import type { ColumnMeta } from "./types.js";
/** How a Sybase type renders its size modifier in a column builder call. */
export type SizeKind = 
/** No size argument, e.g. `int("c")`. */
"none"
/** `{ length: n }`, e.g. `varchar("c", { length: 10 })`. */
 | "length"
/** `{ precision: p, scale: s }`, e.g. `numeric("c", { precision: 10, scale: 2 })`. */
 | "precision";
/** The JS value category a column maps to (drives the Zod validator). */
export type ValueKind = "number" | "boolean" | "date" | "buffer" | "string";
export interface TypeMapping {
    /** drizzle-sybase column factory name (also the import identifier). */
    factory: string;
    size: SizeKind;
    value: ValueKind;
    /**
     * National (Unicode) char types store byte length in the catalog but the
     * builder/zod expect character length, so the byte length is halved.
     */
    nationalChar?: boolean;
}
/**
 * Sybase base system type name (lower-cased) -> mapping.
 *
 * Keys are the canonical system type names returned after UDT resolution.
 */
export declare const SYBASE_TYPE_MAP: Readonly<Record<string, TypeMapping>>;
/**
 * Fallback used when a Sybase type is not in the registry. We render it as a
 * variable-length string so the generated schema still compiles, but emit a
 * warning so unmapped types are not silently misrepresented.
 */
export declare const FALLBACK_MAPPING: TypeMapping;
/** Resolve a column's type mapping, falling back to `varchar` for unknown types. */
export declare function resolveMapping(typeName: string): {
    mapping: TypeMapping;
    isFallback: boolean;
};
/**
 * Effective character length for a column, halving the catalog byte length for
 * national (Unicode) char types. Never returns less than 1 — a zero/negative
 * catalog length would otherwise emit `{ length: 0 }`, which is not a valid
 * column width.
 */
export declare function effectiveLength(col: ColumnMeta, mapping: TypeMapping): number;
//# sourceMappingURL=type-map.d.ts.map