import { BaseAdapter } from '../core/application/adapter';
import { RepositoryImplementation } from '../core/application/repository';
import { Pagination } from '../core/common/pagination';
import { PaginationCriteria } from '../core/common/pagination-criteria';
import { Aggregate } from '../core/domain/aggregate';
import { WriteOptions } from '../core/domain/repository';
import { UnitOfWorkService } from './unit-of-work.service';
type IPrismaService = {
    $disconnect: () => Promise<any>;
};
export declare abstract class PrismaRepository<PrismaService extends IPrismaService, Domain extends Aggregate<any>, Persistence> extends RepositoryImplementation<any> {
    protected readonly prisma: PrismaService;
    protected readonly adapterToDomain: BaseAdapter<Persistence, Domain>;
    protected readonly adapterToPersistence: BaseAdapter<Domain, any>;
    protected readonly unitOfWorkService: UnitOfWorkService;
    constructor(prisma: PrismaService, adapterToDomain: BaseAdapter<Persistence, Domain>, adapterToPersistence: BaseAdapter<Domain, any>, unitOfWorkService: UnitOfWorkService);
    protected abstract findIncludes: any;
    protected abstract uniqueIncludes: any;
    protected abstract generateSearchQuery(search: string): any;
    protected getContext(options?: WriteOptions): PrismaService;
    protected generateFindQuery(criteria: PaginationCriteria): any;
    find(criteria: PaginationCriteria): Promise<Pagination<Domain>>;
    findById(id: string): Promise<Domain | null>;
    create(entity: Domain, options?: WriteOptions<unknown>): Promise<void>;
    update(entity: Domain, options?: WriteOptions<unknown>): Promise<void>;
    delete(entity: Domain, options?: WriteOptions<unknown>): Promise<void>;
    forceCloseConnection(): Promise<void>;
}
export declare function parseQueryWithDots(field: string, verb: string, value: any): {};
export {};
//# sourceMappingURL=prisma.repository.d.ts.map