import { QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity';
import { DeepPartial, FindManyOptions, FindOneOptions, FindOptionsWhere, InsertResult, ObjectLiteral, Repository } from 'typeorm';
import { Logger } from '@nestjs/common';
import { UpsertOptions } from 'typeorm/repository/UpsertOptions';
export declare abstract class BaseEntityService<T extends ObjectLiteral> {
    protected readonly repository: Repository<T>;
    protected logger: Logger;
    protected constructor(repository: Repository<T>);
    create(entity: T | DeepPartial<T>): T;
    save(entity: T | DeepPartial<T>): Promise<T>;
    save(entities: (T | DeepPartial<T>)[]): Promise<T[]>;
    update(id: number | number[] | string | string[] | FindOptionsWhere<T>, entity: T | DeepPartial<T>, options?: FindOneOptions<T>): Promise<T>;
    findOne(options: FindOneOptions<T>): Promise<T | null>;
    findOneBy(where: FindOptionsWhere<T>): Promise<T | null>;
    find(options?: FindManyOptions<T>): Promise<T[]>;
    findBy(where: FindOptionsWhere<T>): Promise<T[]>;
    findAll(): Promise<T[]>;
    findAndCount(options?: FindManyOptions<T>): Promise<[T[], number]>;
    delete(id: number | string | FindOptionsWhere<T>): Promise<void>;
    softDelete(id: number | string): Promise<void>;
    toKeyValue(data: T[], key: keyof T, value: keyof T): Map<string, T[keyof T]>;
    upsert(entityOrEntities: QueryDeepPartialEntity<T> | QueryDeepPartialEntity<T>[], conflictPathsOrOptions: string[] | UpsertOptions<T>): Promise<InsertResult>;
}
