/** * Canonical feature-owned managed-column requirements. * * This module deliberately contains no filesystem, process, network, or * user-module access. Callers supply the project facts that determine which * requirements apply to each discovered table. */ export declare const SCHEMA_ENGINE_VERSION = "2026-07-28.1"; export declare const SQLITE_EPOCH_SENTINEL = "'1970-01-01T00:00:00.000Z'"; export declare const SQLITE_ISO_NOW_FN = "() => new Date().toISOString()"; export type SchemaDialect = 'postgres' | 'sqlite'; export type ManagedColumnDialect = SchemaDialect; export type NamingConvention = 'snake_case' | 'camelCase'; export type ManagedRequirementKind = 'audit' | 'soft-delete' | 'id' | 'scope'; export declare const AUDIT_JS_NAMES: readonly ["createdAt", "modifiedAt", "createdBy", "modifiedBy"]; export declare const SOFT_DELETE_JS_NAMES: readonly ["deletedAt", "deletedBy"]; export type AuditJsName = (typeof AUDIT_JS_NAMES)[number]; export type SoftDeleteJsName = (typeof SOFT_DELETE_JS_NAMES)[number]; export type AuditManagedJsName = AuditJsName | SoftDeleteJsName; export interface ManagedColumnSpec { jsName: string; snakeName: string; kind: 'timestamp' | 'text'; notNull: boolean; /** Compatibility discriminator used by existing compiler consumers. */ audit: boolean; requirement: ManagedRequirementKind; } export declare const AUDIT_COLUMN_SPECS: ReadonlyArray; export declare const SOFT_DELETE_COLUMN_SPECS: ReadonlyArray; export declare const MANAGED_AUDIT_COLUMN_SPECS: ReadonlyArray; export declare const MANAGED_COLUMN_SPECS: readonly ManagedColumnSpec[]; export declare const MANAGED_AUDIT_JS_NAMES: ReadonlySet; export interface ManagedGroupRequirement { kind: 'audit' | 'soft-delete'; columns: ReadonlyArray; /** Canonical q-DSL spread helper, without the leading `...` or call. */ qHelper: 'audit' | 'softDelete'; } export interface ManagedPhysicalColumnRequirement { kind: 'id' | 'scope'; jsName: string; sqlName: string; /** Canonical q initializer, without `:`. */ qExpression: string; /** Canonical raw-Drizzle initializer, without `:`. */ rawExpression: string; /** * Additional exact expressions accepted as canonical. This is useful while * source-visible ID strategies are migrated without weakening validation. */ acceptedQExpressions?: ReadonlyArray; acceptedRawExpressions?: ReadonlyArray; } export type ManagedColumnRequirement = ManagedGroupRequirement | ManagedPhysicalColumnRequirement; export interface IdRequirementOptions { dialect: SchemaDialect; namingConvention?: NamingConvention; qExpression?: string; rawExpression?: string; acceptedQExpressions?: ReadonlyArray; acceptedRawExpressions?: ReadonlyArray; } export interface ScopeRequirementOptions { dialect: SchemaDialect; kind: string; jsName?: string; sqlName?: string; namingConvention?: NamingConvention; qExpression?: string; rawExpression?: string; acceptedQExpressions?: ReadonlyArray; acceptedRawExpressions?: ReadonlyArray; } export declare function managedSqlName(spec: Pick, convention: NamingConvention): string; export declare function managedColumnExpr(spec: ManagedColumnSpec, dialect: SchemaDialect, sqlName: string): string; export declare function managedColumnLine(spec: ManagedColumnSpec, dialect: SchemaDialect, convention: NamingConvention): string; export declare function auditRequirement(): ManagedGroupRequirement; export declare function softDeleteRequirement(): ManagedGroupRequirement; export declare function idRequirement(options: IdRequirementOptions): ManagedPhysicalColumnRequirement; export declare function scopeRequirement(options: ScopeRequirementOptions): ManagedPhysicalColumnRequirement; //# sourceMappingURL=managed-columns.d.ts.map