import { Entity, DataSource, Filter, Options, DeepPartial, EntityCrudRepository, DataObject, Where, Count, Command, NamedParameters, PositionalParameters, AnyObject } from "../repository";
import { Transaction } from "../interfaces/transaction";
export declare class MasEntityRepository<T extends Entity, ID> implements EntityCrudRepository<T, ID> {
    entityClass: typeof Entity & {
        prototype: T;
    };
    dataSource: DataSource;
    private connector;
    constructor(entityClass: typeof Entity & {
        prototype: T;
    }, dataSource: DataSource);
    private toModels;
    private toModel;
    create(entity: DataObject<T>, options?: Options): Promise<T>;
    createAll(entities: DataObject<T>[], options?: Options): Promise<T[]>;
    createOrUpdate(entity: DataObject<T>, options?: Options): Promise<T>;
    save(entity: DataObject<T>, options?: Options): Promise<T>;
    find(filter?: Filter<T>, options?: Options): Promise<T[]>;
    findById(id: ID, filter?: Filter<T>, options?: Options): Promise<T>;
    update(entity: DataObject<T>, options?: Options): Promise<void>;
    delete(entity: DataObject<T>, options?: Options): Promise<void>;
    updateAll(data: DataObject<T>, where?: Where<T>, options?: Options): Promise<Count>;
    updateById(id: ID, data: DataObject<T>, options?: Options): Promise<void>;
    replaceById(id: ID, data: DataObject<T>, options?: Options): Promise<void>;
    deleteAll(where?: Where<T>, options?: Options): Promise<Count>;
    deleteById(id: ID, options?: Options): Promise<void>;
    count(where?: Where<T>, options?: Options): Promise<Count>;
    exists(id: ID, options?: Options): Promise<boolean>;
    execute(command: Command, parameters: NamedParameters | PositionalParameters, options?: Options): Promise<AnyObject>;
    beginTransaction(): Promise<Transaction>;
    findOne(filter?: Filter<T>, options?: Options): Promise<T | DeepPartial<T>>;
}
