import 'reflect-metadata'; type DeepPartial = { [P in keyof T]?: T[P] extends object ? DeepPartial : T[P]; }; type DeepRequired = { [P in keyof T]-?: T[P] extends object ? DeepRequired : T[P]; }; type EventHandlers> = { [K in keyof T as `on${Capitalize}`]: (event: T[K]) => void; }; interface Repository { findById(id: TId): Promise; findAll(): Promise; create(entity: Omit): Promise; update(id: TId, updates: DeepPartial): Promise; delete(id: TId): Promise; query(predicate: (entity: TEntity) => boolean): Promise; } declare abstract class BaseRepository implements Repository { protected abstract tableName: string; abstract findById(id: TId): Promise; abstract findAll(): Promise; create(entity: Omit): Promise; update(id: TId, updates: DeepPartial): Promise; delete(id: TId): Promise; query(predicate: (entity: TEntity) => boolean): Promise; } interface User { id: string; email: string; profile: { firstName: string; lastName: string; }; } declare class UserRepository extends BaseRepository { protected tableName: string; findById(id: string): Promise; findAll(): Promise; } declare function processData(data: string): string; declare function processData(data: number): number; type ApiResponse = { status: 'success'; data: T; } | { status: 'error'; error: string; code: number; }; declare function fetchWithRetry(url: string, options?: RequestInit, maxRetries?: number): Promise>; declare class BaseEntity { name: string; constructor(name: string); } declare const TimestampedIdentifiableEntity: { new (...args: any[]): { createdAt: Date; updatedAt: Date; updateTimestamp(): void; }; } & { new (...args: any[]): { id: string; }; } & typeof BaseEntity; export { Repository, BaseRepository, UserRepository, processData, fetchWithRetry, TimestampedIdentifiableEntity, type DeepPartial, type DeepRequired, type EventHandlers, type ApiResponse, }; //# sourceMappingURL=complex-typescript.d.ts.map