/**
 * knex orm帮助模块
 * @date 2022-03
 * @author 何华东
 */
/**
 * 根据配置生成knex实例
 * @param config 配置
 * @returns
 */
export declare function generateMySqlKnexInstance(config: any): any;
/**
 * 仓储基类
 */
export declare abstract class RepositoryBase<T extends object> {
    abstract knexInstance: any;
    abstract tableName: string;
    /**
     * 返回一个knex可执行对象
     *
     * knex用法非常多，但可以从这里入手
     * @returns
     */
    execable(): any;
    /**
     * 插入实体
     * @param entity 要插入的实体
     */
    insert(entity: T): Promise<void>;
    /**
     * 批量插入实体
     * @param entities
     */
    batchInsert(entities: T[]): Promise<void>;
    /**
     * replace 会丢失数据，慎用
     * knex connection 需开启 multipleStatements: true
     * @param entity
     */
    replace(entity: T): Promise<void>;
    /**
     * replace 会丢失数据，慎用
     * knex connection 需开启 multipleStatements: true
     * @param entity
     */
    batchReplace(entities: T[]): Promise<void>;
}
/**
 * 实体仓储基类，需包含主键id
 */
export declare abstract class EntityRepositoryBase<T extends object & {
    id: any;
}> extends RepositoryBase<T> {
    delete(entity: T): Promise<any>;
    deleteById(id: any): Promise<any>;
    update(entity: T): Promise<any>;
    findById(id: any): Promise<T>;
    getById(id: any): Promise<T>;
}
