import { IAbstractEntity } from '../../domain'; import { DeepPartial, EntityTarget, IRepositoryQueryOptions, ObjectLiteral } from './abstractions'; import { IPaginatedResult, IRepositoryPaginatedQueryOptions, IRepositoryOperationOptions, ITransaction } from './abstractions'; export interface ILaqusRepository { create(source: DeepPartial): T; createOfType(entityTargetType: EntityTarget, source: DeepPartial): Y; existsById(entityId: string): Promise; startTransaction(): Promise; getById(id: string, options?: IRepositoryQueryOptions): Promise; getAllPaginated(args: IRepositoryPaginatedQueryOptions): Promise>; getAll(args: IRepositoryPaginatedQueryOptions): Promise; save(entity: T, options?: IRepositoryOperationOptions): Promise; saveMany(entities: T[], options?: IRepositoryOperationOptions): Promise; updateByID(id: string, obj: T, options?: IRepositoryOperationOptions): Promise; merge(obj: T, existingObj: T): Promise; count(): Promise; }