export type AppwriteAttributeType = 'string' | 'integer' | 'float' | 'boolean' | 'datetime' | 'email' | 'ip' | 'url' | 'enum'; export type TypeScriptType = 'string' | 'number' | 'integer' | 'float' | 'boolean' | 'Date' | 'datetime' | string[]; export interface DatabaseField { type: TypeScriptType; required?: boolean; default?: unknown; array?: boolean; size?: number; min?: number; max?: number; enum?: string[]; } export interface DatabaseSchema { [fieldName: string]: DatabaseField; } export interface TableDefinition { name: string; id?: string; schema: T; role?: Record; interface?: TInterface; indexes?: IndexDefinition[]; } export interface Database extends TableDefinition { } export interface ORMConfig { endpoint: string; projectId: string; databaseId: string; apiKey?: string; autoMigrate?: boolean; autoValidate?: boolean; development?: boolean; } export declare function validateRequiredConfig(config: ORMConfig): void; export interface ValidationError { field: string; message: string; value?: unknown; } export declare class ORMValidationError extends Error { errors: ValidationError[]; constructor(errors: ValidationError[]); } export declare class ORMMigrationError extends Error { constructor(message: string); } export type IndexType = 'key' | 'fulltext' | 'unique'; export interface IndexDefinition { key: string; type: IndexType; attributes: string[]; orders?: ('ASC' | 'DESC')[]; } export interface JoinOptions { foreignKey: string; referenceKey?: string; as?: string; } export interface JoinResult { [key: string]: T & { [joinAlias: string]: U | U[] | null; }; } //# sourceMappingURL=types.d.ts.map