import { toKebabCase, type ColumnNamingStrategy } from "@metaobjectsdev/metadata"; export { pluralize, toSnakeCase } from "@metaobjectsdev/metadata"; /** * Convert snake_case to camelCase. Preserves already-camelCase input. */ export declare function toCamelCase(s: string): string; /** * Capitalize the first character of a string (camelCase → PascalCase). */ export declare function toPascalCase(s: string): string; /** PascalCase entity → strategy-applied plural for DB table name. */ export declare function tableNameFromEntity(entityName: string, strategy?: ColumnNamingStrategy): string; /** camelCase or PascalCase field → strategy-applied DB column name. */ export declare function columnNameFromField(fieldName: string, strategy?: ColumnNamingStrategy): string; /** * PascalCase projection name → "v_" prefix + strategy applied (not pluralized). * E.g. "ProgramSummary" + snake_case → "v_program_summary". * With kebab-case the separator prefix is "v-" to stay consistent. */ export declare function viewNameFromProjection(projectionName: string, strategy: ColumnNamingStrategy): string; /** Codegen control over how an entity name lowers to its collection (table) * variable name. Both knobs are project-level codegen config (ADR-0001 — * naming is a per-port codegen concern, NOT a metadata attribute), so they * carry no cross-port conformance cost. */ export interface CollectionNameOptions { /** Auto-pluralize the camelCase entity name. Default `true` (e.g. * `AgentConfig` → `agentConfigs`). Set `false` to keep it singular * (`agentConfig`). */ pluralize?: boolean; /** Per-entity exact var-name overrides, keyed by the bare entity name. Wins * over `pluralize` — the escape hatch for the handful of tables a global * rule gets wrong (e.g. `{ AuditLog: "auditLog", LlmTierConfig: "llmTierConfig" }`). */ overrides?: Record; } /** PascalCase entity → camelCase Drizzle table variable. Auto-pluralizes by * default; `opts` lets a project turn pluralization off globally and/or pin * exact names per entity. With no `opts` the behavior is the historical * always-pluralize (callers like the relation-resolver that only need the * cosmetic query-API member name pass nothing). */ export declare function variableNameFromEntity(entityName: string, opts?: CollectionNameOptions): string; /** Generated read-by-PK helper name: `findById`. */ export declare function findByIdFnName(entityName: string): string; /** Generated list helper name: `list` (PascalCase plural). */ export declare function listFnName(entityName: string): string; /** Generated create helper name: `create`. */ export declare function createFnName(entityName: string): string; /** Generated insert-preserving helper name: `insertPreserving` (#203 — * the import/restore/replication escape hatch that writes @autoSet columns * verbatim). Emitted only for entities that declare @autoSet fields. */ export declare function insertPreservingFnName(entityName: string): string; /** Generated update helper name: `update`. */ export declare function updateFnName(entityName: string): string; /** Generated delete-by-PK helper name: `deleteById`. */ export declare function deleteByIdFnName(entityName: string): string; /** * Lower an FK field name to the `` segment of a reverse finder name: * PascalCase the field, then drop a single trailing `Id` if present. * E.g. `currentSceneId` → `CurrentScene`, `authorId` → `Author`, `scene` → `Scene`. */ export declare function reverseFinderFkSegment(fkFieldName: string): string; /** Generated reverse single-value finder name: `findBy`. */ export declare function reverseFinderFnName(sourceEntityName: string, fkFieldName: string): string; /** Generated reverse batched finder name: `findByIn`. */ export declare function reverseFinderInFnName(sourceEntityName: string, fkFieldName: string): string; /** * Generated Fastify route-registrar name: camelCase `Routes`. The routes * generator (templates/routes-file.ts) emits a single exported * `export async function Routes(fastify)` that mounts the entity's CRUD * verb set — this is the symbol an adopter imports to wire the endpoints. Kept * here as the single source of truth so the routes template and the api-docs * ApiModel builder derive the exact same spelling (no drift). */ export declare function routesHandlerName(entityName: string): string; export { toKebabCase }; //# sourceMappingURL=naming.d.ts.map