import { Knex } from 'knex'; import { ColumnType, ForeignKey } from '@the-forgebase/common'; import { User } from '../types.js'; /** * Definition for a custom user field */ export interface UserFieldDefinition { name: string; type: ColumnType; nullable?: boolean; unique?: boolean; default?: any; description?: string; validation?: UserFieldValidation; foreignKeys?: ForeignKey; } /** * Validation rules for a user field */ export interface UserFieldValidation { required?: boolean; minLength?: number; maxLength?: number; pattern?: RegExp | string; isEmail?: boolean; isUrl?: boolean; isPhone?: boolean; min?: number; max?: number; custom?: (value: any) => boolean | Promise; customMessage?: string; } /** * Options for extending the user table */ export interface ExtendUserTableOptions { tableName?: string; fields: UserFieldDefinition[]; migrateExisting?: boolean; } /** * Extends the user table with custom fields * @param knex Knex instance * @param options Options for extending the user table * @returns Promise that resolves when the operation is complete */ export declare function extendUserTable(knex: Knex, options: ExtendUserTableOptions): Promise; /** * Validates user data against field definitions * @param userData User data to validate * @param fieldDefinitions Field definitions to validate against * @returns Validation result with errors if any */ export declare function validateUserData(userData: Partial, fieldDefinitions: UserFieldDefinition[]): { valid: boolean; errors: Record; }; /** * Generates TypeScript interface code for an extended user type * @param interfaceName Name of the interface * @param fields Custom field definitions * @returns TypeScript code as a string */ export declare function generateUserTypeInterface(interfaceName: string, fields: UserFieldDefinition[]): string; //# sourceMappingURL=user-extension.d.ts.map