import { ClientSession, Db, ObjectId } from 'mongodb';
import { IBaseDocumentWithId } from '../documents/interfaces/IBaseDocumentWithId.js';
import { BaseRepository } from './BaseRepository.js';
export declare abstract class BaseRepositoryWithId<TDocument extends IBaseDocumentWithId> extends BaseRepository<TDocument> {
    protected constructor(db: Db);
    deleteById(id: ObjectId, currentSession?: ClientSession): Promise<boolean>;
    deleteDocumentById(document: TDocument, session?: ClientSession): Promise<boolean>;
    getById(id: ObjectId, currentSession?: ClientSession): Promise<TDocument | null>;
    saveById(document: TDocument, currentSession?: ClientSession): Promise<void>;
    updatePartialById(id: ObjectId, version: number, document: Partial<TDocument>, currentSession?: ClientSession): Promise<void>;
}
