import type { BaseRepositoryConfig, RepositoryPort, RepositoryModel } from './types';
export * from './types';
export declare abstract class BaseRepository<D extends object, I, O> implements RepositoryPort<RepositoryModel<D>, I, O> {
    private readonly adapter;
    private readonly ormType;
    get model(): RepositoryModel<D>;
    constructor(config: BaseRepositoryConfig<D>);
    isMongoose(): boolean;
    isSequelize(): boolean;
    initializeModel(): Promise<void>;
    toLean(input: unknown): O | null;
    findById(id: string): Promise<O | null>;
    findMany(filter?: Record<string, unknown>): Promise<O[]>;
    create(entity: I): Promise<O>;
    update(id: string, update: Partial<I>): Promise<O | null>;
    delete(id: string): Promise<O | null>;
    exists(id: string): Promise<boolean>;
}
//# sourceMappingURL=abstract.d.ts.map