import type { IdValue, Querier, QueryOptions, Repository, Type, QuerySearch, QueryOne, Query, QueryConflictPaths } from '../type/index.js';
export declare class GenericRepository<E> implements Repository<E> {
    readonly entity: Type<E>;
    readonly querier: Querier;
    constructor(entity: Type<E>, querier: Querier);
    findOneById(id: IdValue<E>, q?: QueryOne<E>): Promise<E>;
    findOne(q: QueryOne<E>): Promise<E>;
    findMany(q: Query<E>): Promise<E[]>;
    findManyAndCount(q: Query<E>): Promise<[E[], number]>;
    count(q?: QuerySearch<E>): Promise<number>;
    insertOne(payload: E): Promise<IdValue<E>>;
    upsertOne(conflictPaths: QueryConflictPaths<E>, payload: E): Promise<import("../type/query.js").QueryUpdateResult>;
    insertMany(payload: E[]): Promise<IdValue<E>[]>;
    updateOneById(id: IdValue<E>, payload: E): Promise<number>;
    updateMany(qm: QuerySearch<E>, payload: E): Promise<number>;
    saveOne(payload: E): Promise<IdValue<E>>;
    saveMany(payload: E[]): Promise<IdValue<E>[]>;
    deleteOneById(id: IdValue<E>, opts?: QueryOptions): Promise<number>;
    deleteMany(qm: QuerySearch<E>, opts?: QueryOptions): Promise<number>;
}
