import { Type, Entity, Repository, Module } from '@farris/devkit-vue';
import { BefSessionService } from './session/index';
import { BefRepositoryConfig } from './bef-repository-config';
import { BefProxy } from './bef-proxy';
import { BefVariableManager } from './bef-variable-manager';
/**
 * Bef实体仓库
 */
declare class BefRepository<T extends Entity> extends Repository<T> {
    /**
     * Bef代理
     */
    apiProxyType: Type<BefProxy>;
    /**
     * 注入器
     */
    private injector;
    /**
     * Bef会话管理
     */
    sessionService: BefSessionService;
    /**
     * API代理
     */
    apiProxy: BefProxy;
    /**
     * 分页信息
     */
    paginationInfo: any;
    /**
     * 变量管理器
     */
    variableManager: BefVariableManager;
    /**
     * 构造函数
     */
    constructor(module: Module);
    /**
     * 初始化
     */
    init(config: BefRepositoryConfig): void;
    /**
     * 初始化Proxy
     */
    private initApiProxy;
    /**
     * 初始化SessionService
     */
    private initSessionService;
    /**
     * 初始化分页信息
     */
    private initPaginationInfo;
    /**
     * 初始化变量变更
     */
    private initVariableManager;
    /**
     * 查询实体
     */
    getEntities(filters: any[], sorts: any[], pageSize?: number, pageIndex?: number): Promise<T[]>;
    /**
     * 获取实体
     */
    getEntityById(id: string): Promise<T>;
    /**
     * 加锁编辑数据
     * @param id 数据id
     * @returns
     */
    editEntityById(id: string): Promise<T | null>;
    /**
     * 创建新实体
     */
    createEntity(defaultValue?: any): Promise<T>;
    /**
     * 批量创建实体
     * @param defaultValues 实体字段默认值，keyvalue格式
     * @returns 实体数组
     */
    createEntities(defaultValues: Array<any>): Promise<T[]>;
    /**
     * 创建从表或从从表实体
     * @param path 实体路径
     * @param defaultValues 默认值，keyvalue格式
     * @returns
     */
    createEntityByPath(path: string, defaultValues?: Array<any>): Promise<T>;
    /**
     * 批量创建从表或从从表实体
     * @param path 实体路径，如/1/educations
     * @param defaultValues 默认值，keyvalue格式
     * @returns 实体数组
     */
    createEntitiesByPath(path: string, defaultValues: Array<any>): Promise<T[]>;
    /**
     * 删除实体
     */
    removeEntityById(id: string): Promise<boolean>;
    /**
     * 批量删除仓库数据
     * @param ids 实体id数组
     * @returns
     */
    removeEntitiesByIds(ids: string[]): Promise<boolean>;
    /**
     * 删除从表或从从表实体
     * @param fpath 实体路径
     * @param id 实体id
     * @returns
     */
    removeEntityByPath(fpath: string, id: string): Promise<boolean>;
    /**
     * 批量删除从表或从从表数据
     * @param fPath 实体路径
     * @param ids 实体id数组
     * @returns
     */
    removeEntitiesByPath(fPath: string, ids: string[]): Promise<boolean>;
    /**
     * 删除实体
     */
    removeAndSaveEntityById(id: string): Promise<boolean>;
    /**
     * 批量删除并保存
     * @param ids
     * @returns
     */
    removeEntitiesAndSave(ids: string[]): Promise<boolean>;
    /**
     * 保存实体变更
     */
    saveEntityChanges(): Promise<boolean>;
    /**
     * 撤销实体变更
     */
    cancelEntityChanges(): Promise<boolean>;
    /**
     * 是否有未保存的变更
     * @returns
     */
    hasChanges(): Promise<any>;
    /**
     * 构造EntityFilter
     */
    private buildEntityFilter;
}
export { BefRepository };
