import type { TableSchema } from '../schema/types';
/**
 * Prisma Client exposes each model as a camelCase (first-letter-lowercased) property of the
 * generated client — `model products {}` becomes `client.products`. migrate.ts's
 * generatePrismaModel() writes `model ${schema.name}` verbatim (no transform), so this is the
 * one place that transform is defined; prismaAdapter.ts's runtime model lookup applies the same
 * transform so the two can never silently drift apart.
 */
export declare function toPrismaModelName(schemaName: string): string;
/**
 * Prisma field names must start with a letter — a leading underscore is a hard parse error
 * ("This line is not a valid field or attribute definition"), confirmed by running real
 * `prisma generate` against this package's own reserved columns (Phase 16.2). Every schema has
 * `_id` (defineTable() injects it unconditionally) plus `_created_at`/`_updated_at`/`_deleted_at`
 * when configured, so this isn't an edge case — it broke `lsdb migrate --prisma`'s output for
 * every table. generatePrismaModel() strips the leading underscore(s) for the Prisma field name
 * and preserves the real column name via `@map("_id")`, so the physical column Prisma reads/
 * writes is unchanged; prismaAdapter.ts uses the same transform to translate between the raw
 * column names the rest of this package uses (e.g. `_id`) and the Prisma Client property names
 * it actually exposes (e.g. `id`).
 */
export declare function toPrismaFieldName(columnName: string): string;
/** Per-schema column-name <-> Prisma-field-name lookup, built from toPrismaFieldName() above. */
export interface PrismaFieldMap {
    /** raw column name -> Prisma field name, e.g. '_id' -> 'id' */
    toField: Record<string, string>;
    /** Prisma field name -> raw column name, e.g. 'id' -> '_id' */
    toRaw: Record<string, string>;
}
export declare function buildPrismaFieldMap(schema: Pick<TableSchema, 'columns'>): PrismaFieldMap;
//# sourceMappingURL=prismaNaming.d.ts.map