import { FindManyOptions, FindOneOptions, getManager, QueryFailedError, RemoveOptions, Repository, SaveOptions, SelectQueryBuilder } from 'typeorm'; declare class SearchTerm { field: string; value: string; operator: string; static newSearchTerm(obj: { field?: string; value?: string; operator?: string }): SearchTerm; } declare interface ISearchQueryBuilderOptions { where: string; andWhere?: string[]; orWhere?: string[]; limit?: number; } declare class BaseRepository { private entityName: string; constructor(entityName: string); protected getQueryBuilder(): SelectQueryBuilder; executeRepositoryFunction(repositoryFunction: Promise): Promise; getAll(options?: FindManyOptions): Promise; findManyByFilter(options: FindManyOptions): Promise; findOneById(id: number): Promise; findOneByIdWithOptions(id: number, options?: FindOneOptions): Promise; findManyById(idList: number[], options?: FindOneOptions): Promise; findOneByFilter(options: FindOneOptions): Promise; save(record: T, options?: SaveOptions): Promise; saveAll(records: T[], options?: SaveOptions, resolveRelations?: boolean): Promise; updateOneById(id: number, record: T): Promise; delete(record: T, options?: RemoveOptions): Promise; deleteOneById( id: number, findOptions?: FindOneOptions, deleteOptions?: RemoveOptions ): Promise; deleteManyById(idList: number[], deleteOptions?: RemoveOptions): Promise; findOneWithQueryBuilder(options: ISearchQueryBuilderOptions): Promise; findManyWithQueryBuilder(options: ISearchQueryBuilderOptions): Promise; } declare class BaseService { constructor(repository: BaseRepository); preSaveHook(entity: T): void; preUpdateHook(entity: T): void; preDeleteHook(entity: T): void; preResultHook(entity: T): void; validId(id: number): boolean; isValid(entity: T): Promise; findAll(): Promise; findAllByFilter(filter: FindManyOptions): Promise; findOneById(id: number): Promise; findOneByFilter(filter: FindOneOptions): Promise; findOneWithQueryBuilder(options: ISearchQueryBuilderOptions): Promise; findManyWithQueryBuilder(options: ISearchQueryBuilderOptions): Promise; search(limit: number, searchTerms: SearchTerm[]): Promise; save(entity: T): Promise; saveAll(entities: T[]): Promise; update(entity: T, id: number): Promise; updateAll(entities: T[]): Promise; delete(id: number): Promise; softDelete(id: number): Promise; getSearchFilter(limit: number, searchTerms: SearchTerm[]): ISearchQueryBuilderOptions; } export { BaseRepository, BaseService, ISearchQueryBuilderOptions, SearchTerm };