export interface DatabaseConnectionOptions {
    prisma?: {
        url: string;
        logQueries?: boolean;
        maxPoolSize?: number;
    };
    mongodb?: {
        uri: string;
        dbName?: string;
        options?: Record<string, any>;
    };
    synchronization?: {
        enabled: boolean;
        strategy: 'immediate' | 'scheduled' | 'event-based';
        direction: 'pg-to-mongo' | 'mongo-to-pg' | 'bidirectional';
        excludedCollections?: string[];
    };
}
export interface DualPersistableEntity {
    id: string;
    createdAt: Date;
    updatedAt: Date;
    prismaData?: Record<string, any>;
    mongoData?: Record<string, any>;
    isDeleted?: boolean;
    version: number;
}
export interface QueryOptions {
    select?: string[] | Record<string, boolean>;
    where?: Record<string, any>;
    orderBy?: Record<string, 'asc' | 'desc'>;
    skip?: number;
    take?: number;
    include?: Record<string, boolean | Record<string, any>>;
    distinct?: string[];
    dbSpecific?: {
        prisma?: Record<string, any>;
        mongodb?: Record<string, any>;
    };
    source?: 'primary' | 'secondary' | 'auto';
}
export interface Transaction {
    id: string;
    startedAt: Date;
    commit(): Promise<void>;
    rollback(): Promise<void>;
    query<T = any>(query: string, params?: any[]): Promise<T>;
    isActive(): boolean;
}
